Matlab中数值计算误差的问题

时间:2022-07-28 16:08:52
在C语言里面两个双精度型数据在计算的时候会出现误差,例如-9115536.832 + 9115535.478得到的结果是-1.35400000028312 ,而实际上应该为-1.354,那在Matlab里面是怎么处理这个误差的呢,也就是说计算的结果不是1.35400000028312,而是-1.354呢,请各位高手指点一下啊、、、

4 个解决方案

#1


你需要什么?是计算结果不对,还是要搞懂为什么?
前者要看你需要的tolerance,后者需要看计算机浮点数表示方法

#2


引用 1 楼 libralibra 的回复:
你需要什么?是计算结果不对,还是要搞懂为什么?
前者要看你需要的tolerance,后者需要看计算机浮点数表示方法

我的意思是在C语言中进行迭代算法,每一次迭代的结果是下一次的初值,每一次迭代的过程中都会有两个浮点型数据进行相减,相减的结果C语言会自动加上计算误差,带着这个计算误差作为下一次迭代的初值,那么反复多次就会有很大的误差出现,我是想计算的结果跟手算一样是多少就是多少,不要带有计算误差,我没有想到好的办法,所以想问问matlab软件里面是怎么样来处理这样的数据的?

#3


引用 2 楼 fengluchaying 的回复:
引用 1 楼 libralibra 的回复:你需要什么?是计算结果不对,还是要搞懂为什么?
前者要看你需要的tolerance,后者需要看计算机浮点数表示方法
我的意思是在C语言中进行迭代算法,每一次迭代的结果是下一次的初值,每一次迭代的过程中都会有两个浮点型数据进行相减,相减的结果C语言会自动加上计算误差,带着这个计算误差作为下一次迭代的初值,那么反复多次就会有很大……

浮点数在计算机中的表示方法大致相同,如果会*,看这个:http://goo.gl/nTE1d
否则自行搜索: IEEE 754

#4


取abs与浮点数

#1


你需要什么?是计算结果不对,还是要搞懂为什么?
前者要看你需要的tolerance,后者需要看计算机浮点数表示方法

#2


引用 1 楼 libralibra 的回复:
你需要什么?是计算结果不对,还是要搞懂为什么?
前者要看你需要的tolerance,后者需要看计算机浮点数表示方法

我的意思是在C语言中进行迭代算法,每一次迭代的结果是下一次的初值,每一次迭代的过程中都会有两个浮点型数据进行相减,相减的结果C语言会自动加上计算误差,带着这个计算误差作为下一次迭代的初值,那么反复多次就会有很大的误差出现,我是想计算的结果跟手算一样是多少就是多少,不要带有计算误差,我没有想到好的办法,所以想问问matlab软件里面是怎么样来处理这样的数据的?

#3


引用 2 楼 fengluchaying 的回复:
引用 1 楼 libralibra 的回复:你需要什么?是计算结果不对,还是要搞懂为什么?
前者要看你需要的tolerance,后者需要看计算机浮点数表示方法
我的意思是在C语言中进行迭代算法,每一次迭代的结果是下一次的初值,每一次迭代的过程中都会有两个浮点型数据进行相减,相减的结果C语言会自动加上计算误差,带着这个计算误差作为下一次迭代的初值,那么反复多次就会有很大……

浮点数在计算机中的表示方法大致相同,如果会*,看这个:http://goo.gl/nTE1d
否则自行搜索: IEEE 754

#4


取abs与浮点数