如:
a =
1 2 3
0 2 3
3 3 3
>> m1=a^2
m1 =
10 15 18
9 13 15
12 21 27
>> m2=sqrtm(m1)
m2 =
1.9735 2.0838 2.2593
1.7326 2.1491 1.6818
1.1043 2.8369 4.4423
>> m2^2
ans =
10.0000 15.0000 18.0000
9.0000 13.0000 15.0000
12.0000 21.0000 27.0000
ans和a就不同,是精度的問題?還是它找到一個符合條件的矩陣就不找了?
另外,奇異矩陣的問題:
a =
0 0 1
0 0 1
0 0 1
b =
0 0 -1
0 0 -1
0 0 -1
>> a^2
ans =
0 0 1
0 0 1
0 0 1
>> m=b^2
m =
0 0 1
0 0 1
0 0 1
>> sqrtm(m)
Warning: Matrix is singular and may not have a square root.
> In sqrtm at 65
ans =
NaN NaN NaN
NaN NaN NaN
NaN NaN NaN
為什麼得不出結果?
matlab矩陣開方運算的思路是怎樣的?
我沒有足夠多的時間去研究家系龐大的源代碼,還請高人指點。
提問者: mayejane - 魔法學徒 一級
最佳答案
matlab中的sqrtm(Y)是找這樣的矩陣X,它滿足X*X=Y,并且X的特征值都具有非負實部,而如果X的特征值中有任意一個有負的實數根,結果将會很複雜,是以matlab隻執行并且顯示特征值均有非負實部的X。如果Y是一個奇異矩陣,它可能沒有方根。因而如果MATLAB探查到一個奇異矩陣,就會顯示warning.
1
◆◆
評論讀取中....
請登入後再發表評論!
◆◆
修改失敗,請稍後嘗試