wy1118 发表于 2011-2-27 13:36

请教matlab有关矩阵相乘的一个原理性问题!

我前几天在用matlab实现一个预报程序的过程中发现了matlab一个有趣神奇的现象,比如程序如下
a=*';
b=1*2.4+(-1.4)*0.25+(-1.4)*1+0.3*0.5;
a-b
ans =
1.1102e-016
b只是a的矩阵相乘展开形式而已,为什么还会和a存在误差呢?我很不解,由于初始产生了这样的误差,到后面积累很大,很想知道这个误差产生原因,以及如何避免

ChaChing 发表于 2011-2-27 14:32

help eps!!

rocwoods 发表于 2011-2-28 09:18

这不仅仅是MATLAB的“神奇现象”,而是所有采用浮点计算机制的语言的共同的“神奇现象”,包括C/C++/Fortran等等。
楼主找本计算机语言基础的书看看就知道了。

zhouyang664 发表于 2011-3-3 12:28

想要没有误差,用符号变量,不过那样速度就下去了!
如果不是必须,建议还是不用符号变量的好!

VibrationMaster 发表于 2011-3-3 18:24

这才神奇呢: 1/((1+10^-16)*10^16-10^16)-->Inf
理论上应该是1

ChaChing 发表于 2011-3-4 00:22

VibrationMaster 发表于 2011-3-3 18:24 static/image/common/back.gif
这才神奇呢: 1/((1+10^-16)*10^16-10^16)-->Inf
理论上应该是1

好例子! 原因是 eps=2.2204e-016 > (10^-16)/1 !!
页: [1]
查看完整版本: 请教matlab有关矩阵相乘的一个原理性问题!