天天看点

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

◆◆

评论读取中....

请登录后再发表评论!

◆◆

修改失败,请稍后尝试