各位高手晚安~
小妹我剛剛在做一個矩陣乘法時,發現乘出的結果好難理解...
過程是這樣的:
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喔~
謝謝大家!