24小时热门版块排行榜    

查看: 4453  |  回复: 9

fish8900

金虫 (小有名气)

[求助] fortran中运行中出现无穷大的数怎么处理

在计算的过程中出现了无穷大的数(然后程序终止),我想进行以下几种尝试,不知如何进行
     1、当A变得无穷大后,我想对它进行赋值,令A=1.0E+10
     2、当A变得无穷大后,想用一个判据来进行后来的其他计算,这个判据该怎么设置
     3、如何判断A变得无穷大了
回复此楼

» 收录本帖的淘帖专辑推荐

北大科研分享

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mechaniclmw

木虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
程序语言中的每种数据类型都会有其所允许的取值范围,取其上限来作为无穷大的判据应该是可行的
2楼2013-03-03 14:28:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zeppe

金虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
fish8900: 金币+30, ★★★很有帮助 2013-04-07 11:14:16
您好,这是根据要求写的一点代码,希望对您有帮助。
LOGICAL ISLARGE !逻辑变量,是否是大数
REAL LARGENUM, A
PARAMETER(LARGENUM=1.0E10) !也可按需求设为其他大数
ISLARGE=.FALSE.
!判断A是否是大数,只考虑了正数情况,
IF(A.GE.LARGENUM)  !如果还要考虑负数情况则改为IF(ABS(A).GE.LARGENUM)
A=1.0E10                   !是大数则设定值为1.0E10
ISLARGE=.TRUE.
ENDIF
IF(ISLARGE)  
PRINT 'A is very large' !输出信息,判断A为大数之后的后续操作
ENDIF
3楼2013-04-03 15:37:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fish8900

金虫 (小有名气)

引用回帖:
3楼: Originally posted by zeppe at 2013-04-03 15:37:00
您好,这是根据要求写的一点代码,希望对您有帮助。
LOGICAL ISLARGE !逻辑变量,是否是大数
REAL LARGENUM, A
PARAMETER(LARGENUM=1.0E10) !也可按需求设为其他大数
ISLARGE=.FALSE.
!判断A是否是大数,只考虑 ...

万分谢谢,回的有点晚了,望见谅。还有想问一下,出现无穷大的可能原因是什么,我在计算过程显示的是开方时sqrt(A)出现错误,并且A的设置是一个正数,是否是因为迭代不收敛导致A变成了无穷大。(注明:是运行了一段时间后出现了这种问题,前面的时间步长内都没有问题,不知您是否明白我表达的意思)
4楼2013-04-07 11:20:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zeppe

金虫 (小有名气)

引用回帖:
4楼: Originally posted by fish8900 at 2013-04-07 11:20:51
万分谢谢,回的有点晚了,望见谅。还有想问一下,出现无穷大的可能原因是什么,我在计算过程显示的是开方时sqrt(A)出现错误,并且A的设置是一个正数,是否是因为迭代不收敛导致A变成了无穷大。(注明:是运行了一段 ...

你可以先调试一下看看问题在哪一步,比如步长为多少时后A的值或者得出A的相关变量的值开始变得不合理。还有在计算过程中误差是否随步长增加而增长了。

» 本帖已获得的红花(最新10朵)

5楼2013-04-07 13:29:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fish8900

金虫 (小有名气)

送红花一朵
引用回帖:
5楼: Originally posted by zeppe at 2013-04-07 13:29:49
你可以先调试一下看看问题在哪一步,比如步长为多少时后A的值或者得出A的相关变量的值开始变得不合理。还有在计算过程中误差是否随步长增加而增长了。...

1、您说的误差随步长增加而增长了是什么意思呢?我在写程序过程中是规定了当前后的计算值(T-T1)/T<=1.0e-03时,认定计算结果达到收敛。而且我在调试过程中是将某些数值调大一点后才出现无穷大的情况。
2、当A的相关变量变得不合理时,我试着将它变成一个可以接受的值,但是发现还是会出现计算停止的现象(结果显示也还是出现sqrt的问题),想问一下您猜测原因可能是什么?
(可能有点凭空说了,不好意思哈,没具体程序给你看)
6楼2013-04-08 09:23:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zeppe

金虫 (小有名气)

引用回帖:
6楼: Originally posted by fish8900 at 2013-04-08 09:23:28
1、您说的误差随步长增加而增长了是什么意思呢?我在写程序过程中是规定了当前后的计算值(T-T1)/T<=1.0e-03时,认定计算结果达到收敛。而且我在调试过程中是将某些数值调大一点后才出现无穷大的情况。
2、当 ...

之前我猜测可能的原因之一是算法数值不稳定导致误差随步长增加而增长(有类似大数吃小数,相近数相减等情况导致数值误差),但不一定就是你的情况。
既然不能贴出具体代码,就得靠你自己调试找错了。
调试的时候可以看看相关变量的值在调函数和子程序之前和之后的变化情况是否合理,还可以试试用Excel按程序里的步骤代入算一遍,看是否得到相同的结果。

» 本帖已获得的红花(最新10朵)

7楼2013-04-08 13:10:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fish8900

金虫 (小有名气)

送红花一朵
引用回帖:
7楼: Originally posted by zeppe at 2013-04-08 13:10:39
之前我猜测可能的原因之一是算法数值不稳定导致误差随步长增加而增长(有类似大数吃小数,相近数相减等情况导致数值误差),但不一定就是你的情况。
既然不能贴出具体代码,就得靠你自己调试找错了。
调试的时候可 ...

嗯,好的,我试试看哈,不行再向你请教
8楼2013-04-09 09:24:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dfj2015

新虫 (初入文坛)

CALL get_command_argument(1, arg)
                Read (arg,*) p0       
刚接触fortran  不明白这是什么意思,求大家帮忙
9楼2015-07-13 20:44:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

安靖

银虫 (正式写手)

引用回帖:
9楼: Originally posted by dfj2015 at 2015-07-13 20:44:25
CALL get_command_argument(1, arg)
                Read (arg,*) p0       
刚接触fortran  不明白这是什么意思,求大家帮忙

get_command_argument是获得命令行参数用的,
然后将参数arg值赋给p0
10楼2015-07-15 10:51:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 fish8900 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[论文投稿] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 QTy3jDtz1uLt 2026-08-21 8/400 2026-08-22 23:51 by OEbVnUOu01ol
[硕博家园] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +4 QTy3jDtz1uLt 2026-08-21 10/500 2026-08-22 23:42 by OEbVnUOu01ol
[基金申请] 2026国自然函评费到账 +11 羊腰板 2026-08-21 11/550 2026-08-22 22:03 by lsbin3733
[论文投稿] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 2JOx3r2CYEgw 2026-08-22 3/150 2026-08-22 22:03 by OEbVnUOu01ol
[硕博家园] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 2JOx3r2CYEgw 2026-08-22 5/250 2026-08-22 21:42 by OEbVnUOu01ol
[考博] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 2JOx3r2CYEgw 2026-08-21 7/350 2026-08-22 21:39 by OEbVnUOu01ol
[基金申请] 范进中举一文的中心思想 +3 zjuhero 2026-08-22 4/200 2026-08-22 20:02 by mycsru
[教师之家] 跳槽后在研项目怎么办? +3 简单化xn 2026-08-22 7/350 2026-08-22 19:46 by 简单化xn
[基金申请] 什么时候开奖? +7 CrisMessi 2026-08-18 8/400 2026-08-22 18:29 by 淀粉搬运工
[基金申请] 只有每年这种时候来逛逛小木虫 +24 yaoyewhu2008 2026-08-20 26/1300 2026-08-22 17:43 by kammury
[基金申请] filecode,4个jtjc了 +13 ziyangfang 2026-08-19 16/800 2026-08-22 17:08 by WH3796
[基金申请] 人气不行了 +8 fansofjerry 2026-08-21 8/400 2026-08-22 16:30 by zyqchem
[基金申请] 时间戳今天,20号变了 +5 archvillain 2026-08-20 5/250 2026-08-22 06:12 by hui_daxiao
[基金申请] 看来今天不会放榜了? +8 chengyan1220 2026-08-21 11/550 2026-08-21 17:52 by dcqxinyang
[基金申请] 应该是下周三26日公布了吧? +4 哈哈蛤? 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
[论文投稿] 投稿咨询 +5 wwm09 2026-08-17 7/350 2026-08-21 10:11 by 期刊论文帮手
[基金申请] 估计是周四 +3 archvillain 2026-08-18 3/150 2026-08-21 01:48 by jnhyjjm
[基金申请] 今天系统多次维护,明天很可能放榜! +10 zju2000 2026-08-16 11/550 2026-08-20 20:02 by cl479861084
[基金申请] 今天放榜吗? +14 布布和一二 2026-08-19 15/750 2026-08-19 18:07 by gltch
[基金申请] 朋友圈看到的 +6 wangzilk 2026-08-18 8/400 2026-08-19 10:55 by Haru815
信息提示
请填处理意见