急,高手帮我看看这个fortran求积分的程序哪错了,为什么运行不出来结果。。。。。

programf915implicitnoneexternalf1,f2,f3doubleprecisiona,b,simpswrite(*,*)'a,b'read(*,... program f915
implicit none
external f1,f2,f3
double precision a,b,simps
write(*,*)'a,b'
read(*,*)a,b

write(*,*)simps(a,b,1d-7,f1)
write(*,*)simps(a,b,1d-7,f2)
write(*,*)simps(a,b,1d-7,f3)
end program

function simps(a,b,eps,f)
implicit none
double precision f
double precision a,b,simps,eps
double precision h,s1,s2,d,rc,rp
double precision x
integer m,i
h=(b-a)/2.0
s1=(f(a)+f(b)+4*f(a+h))*h/3.0
rc=f(a+h)
rp=f(a)+f(b)
m=2
do
rp=rp+2*rc
x=a-h/2.0
rc=0.0
do i=1,m
x=x+h
rc=rc+f(x)
enddo
s2=(rp+4.0*rc)*h/6.0
d=s2-s1
if(abs(s2)>=1.0)d=d/s2
if(abs(d)==0) s1=s2
h=h/2.0
m=m+m
enddo
simps=s2
end function simps

function f1(x)
implicit none
double precision x,f1
f1=1.0/(1.0+x)
end function f1

function f2(x)
implicit none
double precision x,y,f2
y=1.0/3.0
f2=0.5*((1.0+x*x)**y-(1.0-x*x)**y)
end function f2

function f3(x)
implicit none
double precision x,f3
f3=4.0/(1.0+x*x)
end function f3
展开
 我来答
Tmaaaaaasol
2012-02-24 · TA获得超过128个赞
知道答主
回答量:19
采纳率:0%
帮助的人:38万
展开全部
这是想写一维变步长Simpson积分吧
1、你给代码里有一个do后面什么都没有写啊,这肯定运行不出来的。
2、if(abs(s2)>=1.0)d=d/s2
if(abs(d)==0) s1=s2 这两句不太明白想表达什么。
我把simps(a,b,eps,f)修改了下,应该可以运行出来了,LZ看下
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
function simps(a,b,eps,f)
implicit none
double precision f
double precision a,b,simps,eps
double precision h,s1,s2,d,rc,rp
double precision x
integer m,i
h=(b-a)/2.0
s1=(f(a)+f(b)+4*f(a+h))*h/3.0
rc=f(a+h)
rp=f(a)+f(b)
m=2
d=eps+1.0
do while(d.ge.eps)
rp=rp+2*rc
x=a-h/2.0
rc=0.0
do i=1,m
x=x+h
rc=rc+f(x)
enddo
s2=(rp+4.0*rc)*h/6.0
d=abs(s2-s1)
s1=s2
h=h/2.0
m=m+m
enddo
simps=s2
end function simps
wwttbb2010
2012-02-21 · TA获得超过534个赞
知道小有建树答主
回答量:222
采纳率:0%
帮助的人:220万
展开全部
do
rp=rp+2*rc
x=a-h/2.0
rc=0.0
do i=1,m
x=x+h
rc=rc+f(x)
enddo
s2=(rp+4.0*rc)*h/6.0
d=s2-s1
if(abs(s2)>=1.0)d=d/s2
if(abs(d)==0) s1=s2
h=h/2.0
m=m+m
enddo
这一段是死循环,楼主自己先改了吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式