wansq 发表于 2014-4-1 14:17:26

数值计算中开方出现无穷值

运行的时候,显示开方错误。我在调试的过程中找到了那一行,应该是出现了无穷值,导致开方错误。。。。但是找不出问题的根源是什么,求大神给我查查看啊,跪谢了!

fcode 发表于 2014-4-1 16:10:39

既然都找到错误行了,那么继续向上调试吧。看看是哪个变量无穷大,继续向上插入断点,追踪是在哪里出现了无穷大。

部分编译器也允许把浮点错误抛出,可以修改设置后运行,查看哪里出现了浮点数错误。

Debug 是基本功,希望你学会。

在我的编译器上,这段代码可以正常运行。其中的 TEST15.txt 部分内容为
   1   0.120E+03
   2   0.240E+03
   3   0.360E+03
   4   0.480E+03
   5   0.600E+03
   6   0.720E+03
   7   0.840E+03
   8   0.960E+03
   9   0.108E+04
10   0.120E+04
11   0.132E+04
12   0.144E+04
13   0.156E+04
14   0.168E+04
15   0.180E+04
16   0.192E+04
17   0.204E+04
18   0.216E+04
19   0.228E+04
20   0.240E+04
21   0.252E+04
22   0.264E+04
23   0.276E+04

wansq 发表于 2014-4-1 16:24:53

fcode 发表于 2014-4-1 16:10
既然都找到错误行了,那么继续向上调试吧。看看是哪个变量无穷大,继续向上插入断点,追踪是在哪里出现了无 ...

管理员大人,你好,请问一下,在你的编译器上,这段代码能运行不出错么?是什么编译器啊?
谢谢您的帮助,DEBUG不是不熟悉啊,只会一点点粗浅的内容

fcode 发表于 2014-4-1 17:18:28

我用的 IVFXE2013 ,能运行是能运行,但是有很多 NaN。
原因大概在 198 行附近。
DV2=((YY(J+1)-YY(J))/(XX(J+1)-XX(J))-(YY(J)-YY(J-1))/(XX(J)-XX(J-1)))*2/(XX(J+1)-XX(J-1))
这里大概是个微商求导。但是 XX 有相邻的点相等的,于是造成了除数为 0

页: [1]
查看完整版本: 数值计算中开方出现无穷值