各位高手晚安~
小妹我刚刚在做一个矩阵乘法时,发现乘出的结果好难理解...
过程是这样的:
H = 1e-14 * ones(4) (一个4*4, 每个元素皆为1e-14的方阵)
R = 1e-100 * eye(4) (一个对角矩阵,对角元素皆为1e-100)
t = H * H * transpose(H) + R
t = inv(t)
最后t的结果长这样:(一个4*4矩阵, 以下结果为求干净只显示到小数点后第3位)
row1: 5.629e+56 , -6.938e+24 , -6.25e+40 , -5.629e+56
row2: -6.938e+24 , 5.070e+72 , -5.629e+56 , -5.070e+72
row3: -6.25e+40 , -5.629e+56 , 4.567e+88 , -4.567e+88
row4: -5.629e+56 , -5.070e+72 , -4.567e+88 , 4.567e+88
之后我计算 H*t,
结果居然是个元素全都是0的4*4矩阵...
全都是0耶...好奇怪...看起来就不对阿
然后我尝试只算第一项,
也就是 H(1,1)*t(1,1) + H(1,2)*t(2,1) + H(1,3)*t(3,1) + H(1,4)*t(4,1)
正解应该是 (5.629e+56 -6.938e+24 -6.25e+40 -5.629e+56) * 1e-14 ,约为-6.25e+26
但matlab跑出结果 = 0
然后我还是不死心,改变加法顺序,
变成 H(1,1)*t(1,1) + H(1,4)*t(4,1) + H(1,2)*t(2,1) + H(1,3)*t(3,1)
跑出结果 = 6.1294e+26
疴.......交换加法顺序结果居然不一样! 而且都是错的!
后来再用java算 , 结果也是错的....
请问各位matlab高手有碰过类似的状况吗~~
p.s. 这些算术都没有overflow或underflow喔~
谢谢大家!