Fortran Coder

标题: 高斯积分 最后w出现负值 ,怎样才能找出因为哪步错误 而... [打印本页]

作者: ylw0710    时间: 2018-1-8 14:34
标题: 高斯积分 最后w出现负值 ,怎样才能找出因为哪步错误 而...
[Fortran] 纯文本查看 复制代码
Program Baidu_Thlws
Implicit None
Real*8 g
call FLRGS( 0.0D0 , 2.0D0 , F , 0.001D0 , g )
write( * , * ) g
Contains
Real*8 Function F( x )
Real*8 x
F = x ** 2.0D0
End Function F
Subroutine FLRGS(A,B,F,EPS,G)
Real*8 :: T(5),C(5)
Real*8 :: A,B,F,G,S,P,H,AA,BB,W,X,Q,EPS
DATA T/-0.9061798459,-0.5384693101,0.0,0.5384693101,0.9061798459/
DATA C/0.2369268851,0.4786286705,0.5688888889,0.4786286705,0.2369268851/
Integer :: M , I , J
M=1
S=(B-A)*0.001
P=0.0
10H=(B-A)/M
G=0.0
DO 30 I=1,M
AA=A+(I-1)*H
BB=A+I*H
W=0.0
DO 20 J=1,5
X=((BB-AA)*T(J)+(BB+AA))/2.0
W=W+F(X)*C(J)
20 CONTINUE
G=G+W
30CONTINUE
G=G*H/2.0
Q=ABS(G-P)/(1.0+ABS(G))
IF ((Q.GE.EPS).AND.(ABS(H).GT.ABS(S))) THEN
P=G
M=M+1
GOTO 10
END IF
RETURN
End Subroutine FLRGS
End Program Baidu_Thlws


作者: pasuka    时间: 2018-1-8 14:54
本帖最后由 pasuka 于 2018-1-8 14:56 编辑

用Excel计算没有出现负值,注意需要把被积函数转化成[latex](x+1)^2[/latex]

高斯积分.PNG (14.54 KB, 下载次数: 264)

Excel计算结果

Excel计算结果

作者: ylw0710    时间: 2018-1-8 16:43
pasuka 发表于 2018-1-8 14:54
用Excel计算没有出现负值,注意需要把被积函数转化成

我的程序上用的是高斯积分 只不过是数不一样 我的程序上输出的w是负值 不知道为什么
作者: pasuka    时间: 2018-1-8 17:45
ylw0710 发表于 2018-1-8 16:43
我的程序上用的是高斯积分 只不过是数不一样 我的程序上输出的w是负值 不知道为什么 ...

5次循环的结果都贴出来了,挨个对照,自然就能找出问题所在
作者: fcode    时间: 2018-1-11 18:07
你用的什么编译器?我这里可以得到结果,w也没有出现负值。
我用的IVF2015

QQ截图20180111180717.png (4.38 KB, 下载次数: 294)

QQ截图20180111180717.png





欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2