这个积分fortran程序哪里有问题?求指导!

functiontrap(f,a,b,n)!梯形法求积分程序,F—被积函数,A、B—积分上下限,N—区间分划数h=(b-a)/n!子区间宽度s=0doi=1,ns=s+f... function trap(f, a, b, n) !梯形法求积分程序,F—被积函数,A、B—积分上下限,N—区间分划数
h=(b-a)/n !子区间宽度
s=0
do i=1, n
s=s+f(a+(i-1)*h)+f(a+i*h) !对每个子区间的积分采用梯形公式计算,并求和
end do
trap=s*h/2
end
function f(x)
f=3*x**2+x-15
end
function g(x)
g=1/(1+x**2)
end
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!上面是函数,下面是主程序,调用上面函数
program main
parameter(a=-1, b=1)
integer :: n
external f, g !定义作为实参的函数子程序名f、g的属性
write(*,*) "please input a number:"
read(*,*) n
write(*,*) trap(f, a, b, n), trap(g, a, b, n)
end
就是用fortran求积分的问题
展开
 我来答
huzi233
2013-06-17 · TA获得超过400个赞
知道小有建树答主
回答量:291
采纳率:100%
帮助的人:280万
展开全部
这个程序没什么问题啊!我把主程序修改了一下,n从100到一亿的积分结果都列了出来,给你贴出来第一个函数结果做个参考吧!
主程序这么写:
program main
parameter(a=-1, b=1)
integer :: n, m
external f, g !定义作为实参的函数子程序名f、g的属性
! write(*,*) "please input a number:"
! read(*,*) n
! write(*,*) trap(f, a, b, n), trap(g, a, b, n)
do n = 1, 7
m = 100*10**(n-1)
write(1,*) m, trap(f, a, b, m)
enddo
end
输出的结果是:
100 -27.99960
1000 -27.99997
10000 -28.00006
100000 -28.00539
1000000 -27.98183
10000000 -26.84355
100000000 -2.684355
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式