24小时热门版块排行榜    

Znn3bq.jpeg
查看: 570  |  回复: 9
当前主题已经存档。

gongxd325

至尊木虫 (文坛精英)

[交流] 【求助】一句Fortran语句出错问题(已解决)

编个小程序计算指前因子和速率常数,有个语句出错,向大家请教(kB/h=0..20827*10**11)
      A=0.20827*298.15*EXP(2-13.288/8.314)*10**11
程序计算结果是 0.113E+12,正确的结果应该是 9.28E+12
假如只计算 0.20827*298.15*EXP(2-13.288/8.314) 得到 92.8,乘以10**11结果就正确。
想不明白,不知道为什么?

[ Last edited by cadick on 2009-12-14 at 02:53 ]
回复此楼
一个人做点好事并不难难的是一辈子做好事!!!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)


小木虫(金币+0.5):给个红包,谢谢回帖交流
CODE:
A=0.20827*298.15*EXP(2-13.288/8.314)*10.0**11

其实改动很小,就是将 10 改成 10.0。如果不改的话,gfortran -Wall 会给出如下提示:
CODE:
      A=0.20827*298.15*EXP(2-13.288/8.314)*10**11
                                            1
Error: Arithmetic overflow at (1)

[ Last edited by snoopyzhao on 2009-6-1 at 11:26 ]
2楼2009-06-01 11:24:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gongxd325

至尊木虫 (文坛精英)

谢谢!
Compaq Visul Fortran不报错,但结果错误,搞了半天。
一个人做点好事并不难难的是一辈子做好事!!!
3楼2009-06-01 11:42:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjpm

金虫 (正式写手)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
q68(金币+2,VIP+0):多多指教! 6-1 18:32
你这样写程序会有问题的
建议改一下
A=0.20827d0*298.15d0*EXP(2.0d0-13.288d0/8.314d0)*10.0d0**11

如果是real*16的 就改d0成q0.
引用回帖:
Originally posted by gongxd325 at 2009-6-1 11:13:
编个小程序计算指前因子和速率常数,有个语句出错,向大家请教(kB/h=0..20827*10**11)
      A=0.20827*298.15*EXP(2-13.288/8.314)*10**11
程序计算结果是 0.113E+12,正确的结果应该是 9.28E+12
假如只计算  ...

4楼2009-06-01 16:37:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dlbrians

木虫 (著名写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
是不是算符的优先级问题?多加个括号试试看啊。
5楼2009-06-01 20:17:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gongxd325

至尊木虫 (文坛精英)

谢谢诸位,问题解决了,主要问题就是二楼snoopyzhao指出的,10改为10.0就行了。
一个人做点好事并不难难的是一辈子做好事!!!
6楼2009-06-01 20:30:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjpm

金虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
和那些没有关系
就是我上面说的那个原因。
你可以测试一下。
引用回帖:
Originally posted by dlbrians at 2009-6-1 20:17:
是不是算符的优先级问题?多加个括号试试看啊。

7楼2009-06-01 20:36:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjpm

金虫 (正式写手)

有兴趣的大家可以试试这个

program xxx
real*8 i
i=0.1
write(*,*) "i=",i
end program xxx

使用gfortran和ifort都是
输出i=0.00000001490116

[ Last edited by tjpm on 2009-6-1 at 20:56 ]
8楼2009-06-01 20:54:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)


小木虫(金币+0.5):给个红包,谢谢回帖交流
引用回帖:
Originally posted by tjpm at 2009-6-1 20:54:
有兴趣的大家可以试试这个

program xxx
real*8 i
i=0.1
write(*,*) "i=",i
end program xxx

使用gfortran和ifort都是
输出i=0.00000001490116

[ Last edited by tjpm on 2009-6-1 at 20 ...

你就是用 i=0.1d0 得到的结果也不可能恰好等于 0.1 啊……
9楼2009-06-01 22:45:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjpm

金虫 (正式写手)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
q68(金币+2,VIP+0):有意思的程序 6-2 08:22
确实如你所说,0.1 转换成二进制时肯定有误差。
program xxx
real*8 di,dj
real*16 qi,qj
di=0.1
dj=0.1d0
qi=0.1
q1=0.1q0
write(*,*) "di=",di
write(*,*) "dj=",dj
write(*,*) "qi=",qi
write(*,*) "qj=",qj
end program xxx

执行结果:

di=  0.100000001490116     
dj=  0.100000000000000     
qi=  0.100000001490116119384765625000000      
qj=  0.000000000000000000000000000000000E+0000

如果不指定的话,默认是保存为real*4的,所以就出现这样的情况,因为LZ的10是取了10次方的,误差被放大了而已
引用回帖:
Originally posted by snoopyzhao at 2009-6-1 22:45:


你就是用 i=0.1d0 得到的结果也不可能恰好等于 0.1 啊……

10楼2009-06-02 00:08:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 gongxd325 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[论文投稿] Sci. Bull. 悲剧经验 +3 jyang1999 2026-05-16 3/150 2026-05-19 10:13 by a15735923522
[考博] 26/27申博自荐-锂/钠电池方向 5+3 狗头军师. 2026-05-15 4/200 2026-05-19 09:10 by moonboat
[考博] 26/27博士推荐 +4 1木头人13949 2026-05-13 4/200 2026-05-19 08:29 by zhyzzh
[基金申请] 面上本子正文33页,违规吗?会被低分嘛? +8 1234567wang 2026-05-17 10/500 2026-05-18 18:52 by zzahkj
[基金申请] 国自然上会要求 +5 无名者登山 2026-05-18 9/450 2026-05-18 17:50 by BlakeReary
[硕博家园] 考博自荐 +5 科研狗111 2026-05-13 6/300 2026-05-18 11:22 by 糊糊涂涂好
[基金申请] 青C资助名额大幅增加! +12 西葫芦炒鸡蛋 2026-05-13 16/800 2026-05-18 10:02 by Equinoxhua
[硕博家园] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +6 l7k6xnh0yc 2026-05-14 7/350 2026-05-17 19:42 by Equinoxhua
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 xx7gd5zq4e 2026-05-15 6/300 2026-05-17 19:36 by Equinoxhua
[公派出国] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 v9tggjlwd0 2026-05-15 5/250 2026-05-17 18:39 by Equinoxhua
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 v9tggjlwd0 2026-05-15 4/200 2026-05-17 08:11 by 11n4dfd8yn
[找工作] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 l7k6xnh0yc 2026-05-14 6/300 2026-05-17 07:31 by 11n4dfd8yn
[公派出国] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +6 l7k6xnh0yc 2026-05-14 6/300 2026-05-17 07:16 by 11n4dfd8yn
[考博] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +6 l7k6xnh0yc 2026-05-14 6/300 2026-05-17 07:11 by 11n4dfd8yn
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 k37jurhrau 2026-05-16 3/150 2026-05-17 01:25 by ue3ir18jc3
[公派出国] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 x0mp7owy2b 2026-05-15 4/200 2026-05-17 00:35 by ue3ir18jc3
[高分子] 本人最近太闲了,谁有问题可以提,每天会统一回复 +9 一切都是空工 2026-05-12 20/1000 2026-05-16 19:52 by Equinoxhua
[有机交流] 求有机合成大神指点三硫酸乙烯酯(CAS:2793408-99-6)的合成路线 30+3 Leekmid 2026-05-13 10/500 2026-05-16 16:37 by czyzsu
[硕博家园] 申请博士 +3 呃?呃 2026-05-15 3/150 2026-05-16 11:01 by a4742549
[考博] 26应届毕业生考博求助 +3 wo一定上岸 2026-05-13 3/150 2026-05-14 21:47 by 明海天涯
信息提示
请填处理意见