天天看點

matlab 矩陣的開方,matlab 矩陣開方怎麼運算?

matlab 矩陣的開方,matlab 矩陣開方怎麼運算?

如:

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

◆◆

評論讀取中....

請登入後再發表評論!

◆◆

修改失敗,請稍後嘗試