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

学习 时间:2026-04-01 08:45:53 阅读:2707
急,高手帮我看看这个fortran求积分的程序哪错了,为什么运行不出来结果.program f915implicit noneexternal f1,f2,f3double precision a,b,simpswrite(*,*)'a,b'read(*,*)a,bwrite(*,*)simps(a,b,1d-7,f1)write(*,*)simps(a,b,1d-7,f2)write(*,*)simps(a,b,1d-7,f3)end programfunction simps(a,b,eps,f)implicit nonedouble precision fdouble precision a,b,simps,epsdouble precision h,s1,s2,d,rc,rpdouble precision xinteger m,ih=(b-a)/2.0s1=(f(a)+f(b)+4*f(a+h))*h/3.0rc=f(a+h)rp=f(a)+f(b)m=2dorp=rp+2*rcx=a-h/2.0rc=0.0do i=1,mx=x+hrc=rc+f(x)enddos2=(rp+4.0*rc)*h/6.0d=s2-s1if(abs(s2)>=1.0)d=d/s2if(abs(d)==0) s1=s2h=h/2.0m=m+menddosimps=s2end function simpsfunction f1(x)implicit nonedouble precision x,f1f1=1.0/(1.0+x)end function f1function f2(x)implicit nonedouble precision x,y,f2y=1.0/3.0f2=0.5*((1.0+x*x)**y-(1.0-x*x)**y)end function f2function f3(x)implicit nonedouble precision x,f3f3=4.0/(1.0+x*x)end function f3

最佳回答

无聊的鼠标

正直的星月

2026-04-01 08:45:53

这是想写一维变步长Simpson积分吧1、你给代码里有一个do后面什么都没有写啊,这肯定运行不出来的。2、if(abs(s2)>=1。0)d=d/s2if(abs(d)==0) s1=s2 这两句不太明白想表达什么。我把simps(a,b,eps,f)修改了下,应该可以运行出来了,LZ看下××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××function simps(a,b,eps,f)implicit nonedouble precision fdouble precision a,b,simps,epsdouble precision h,s1,s2,d,rc,rpdouble precision xinteger m,ih=(b-a)/2。0s1=(f(a)+f(b)+4*f(a+h))*h/3。0rc=f(a+h)rp=f(a)+f(b)m=2d=eps+1。0do while(d。ge。eps)rp=rp+2*rcx=a-h/2。0rc=0。0do i=1,mx=x+hrc=rc+f(x)enddos2=(rp+4。0*rc)*h/6。0d=abs(s2-s1)s1=s2h=h/2。0m=m+menddosimps=s2end function simps

最新回答共有2条回答

  • 愤怒的萝莉
    回复
    2026-04-01 08:45:53

    这是想写一维变步长Simpson积分吧1、你给代码里有一个do后面什么都没有写啊,这肯定运行不出来的。2、if(abs(s2)>=1。0)d=d/s2if(abs(d)==0) s1=s2 这两句不太明白想表达什么。我把simps(a,b,eps,f)修改了下,应该可以运行出来了,LZ看下××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××function simps(a,b,eps,f)implicit nonedouble precision fdouble precision a,b,simps,epsdouble precision h,s1,s2,d,rc,rpdouble precision xinteger m,ih=(b-a)/2。0s1=(f(a)+f(b)+4*f(a+h))*h/3。0rc=f(a+h)rp=f(a)+f(b)m=2d=eps+1。0do while(d。ge。eps)rp=rp+2*rcx=a-h/2。0rc=0。0do i=1,mx=x+hrc=rc+f(x)enddos2=(rp+4。0*rc)*h/6。0d=abs(s2-s1)s1=s2h=h/2。0m=m+menddosimps=s2end function simps

上一篇 读了《七律长征》和《菩萨蛮大柏地》的感受

下一篇 阶级的实质是什么,它是如何产生的