Fortran Coder

楼主: 紫璇
打印 上一主题 下一主题

[编译器] CVF和IVF不同编译器运行程序导致的数值不相等问题

[复制链接]

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
5#
发表于 2015-4-9 09:00:58 | 只看该作者
本帖最后由 vvt 于 2015-4-9 09:05 编辑

我没办法解决。
就我个人来看,如果这么小的偏差都能带来致命的错误,这是你的算法稳定性问题。


请你理解:
1. 计算机浮点数计算永远有误差。这就是为什么浮点数一般不做相等判断( if a == b)。
2. CVF和IVF只是误差上还有差别而已。也就是他俩的结果都不是真值。
3. 牛顿迭代法本身就是近似解。


4

帖子

1

主题

0

精华

新人

F 币
22 元
贡献
7 点
地板
 楼主| 发表于 2015-4-9 08:39:36 | 只看该作者
chiangtp 发表于 2015-4-9 00:06
0.00000000000044 的差别, 可能是編譯環境不同的微小差異
"最后想要求解的参数值就不一样"我猜是程式有邏輯 ...

谢谢大家啊,我用的牛顿迭代算法,迭代次数多的话最终会导致结果相差的比较多,是不是没办法解决不同编译器的误差问题啊。

130

帖子

10

主题

0

精华

大师

F 币
617 元
贡献
372 点

贡献勋章管理勋章帅哥勋章元老勋章星光勋章规矩勋章

板凳
发表于 2015-4-9 00:06:41 | 只看该作者
0.00000000000044 的差别, 可能是編譯環境不同的微小差異
"最后想要求解的参数值就不一样"我猜是程式有邏輯上的錯誤



954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2015-4-8 16:41:15 | 只看该作者
0.00000000000044 的差别。
百分之 0.00000001 都不到的误差,如果你还是接受不了,那么数值计算可能不适合你。做解析解吧。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-6-11 11:34

Powered by Tencent X3.4

© 2013-2024 Tencent

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