Fortran Coder

查看: 4572|回复: 4
打印 上一主题 下一主题

[微积分] 高斯积分 最后w出现负值 ,怎样才能找出因为哪步错误 而...

[复制链接]

12

帖子

8

主题

0

精华

入门

F 币
95 元
贡献
58 点
跳转到指定楼层
楼主
发表于 2018-1-8 14:34:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
[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

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

沙发
发表于 2018-1-8 14:54:30 | 只看该作者
本帖最后由 pasuka 于 2018-1-8 14:56 编辑

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

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

Excel计算结果

Excel计算结果

12

帖子

8

主题

0

精华

入门

F 币
95 元
贡献
58 点
板凳
 楼主| 发表于 2018-1-8 16:43:29 | 只看该作者
pasuka 发表于 2018-1-8 14:54
用Excel计算没有出现负值,注意需要把被积函数转化成

我的程序上用的是高斯积分 只不过是数不一样 我的程序上输出的w是负值 不知道为什么

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

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

5次循环的结果都贴出来了,挨个对照,自然就能找出问题所在

2033

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1641 元
贡献
709 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

5#
发表于 2018-1-11 18:07:54 | 只看该作者
你用的什么编译器?我这里可以得到结果,w也没有出现负值。
我用的IVF2015

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

QQ截图20180111180717.png
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-22 00:24

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表