回 帖 发 新 帖 刷新版面

主题:[讨论]求助FORTRAN在运行中出现应用程序错误

用FORTRAN编程时,编译没有警告也没有错误,但是在运行中出现了应用程序错误,不知该如何解决,还请各位能帮帮忙,在下感激不尽啊。具体错误为:
   forrt1:severe<157>:Program Exception-access violation
  "ox005173e8"指令引用的"0x00000001"内存,该内存不能为"written".

回复列表 (共14个回复)

11 楼

这个是调用栈,代表的是下面的函数(子程序)调用了上面的函数(子程序)。
一般来说是最接近系统库的地方能直接看出问题,但产生问题的地方就不一定了。
是可以逐往下点,多看看,看看是哪儿产生的问题:)

12 楼

嗯嗯,谢谢您啊~~[em2]

13 楼

您好,我终于找到问题所在了,就是您所说的是开方出了问题,那个部分程序是这样的:
            DO I=1,N 
               DENOM=SCAL(I) 
               DYNO=DYNO+(Z1(I)/DENOM)**2+(Z2(I)/DENOM)**2 
     &          +(Z3(I)/DENOM)**2 
            END DO 
            DYNO=DSQRT(DYNO/N3) 

我查看变量,发现DENOM的值很小,量级是e-5, DYNO的值是NAN,我分析原因会不会是DENOM值太小,然后又在分母上,所以被近似为0了,导致除法出错了呢?我又查看了下前面定义的SCAL变量,它是real类型的。那也就是说DENOM也是real类型的。那为什么会出现这种错误呢?还期待您可以帮忙解决。。。谢谢您了。

14 楼

计算中要时刻避免大数除以小数,你真的会以为计算机中的浮点数表示范围是无限的么?

我来回复

您尚未登录,请登录后再回复。点此登录或注册