如:
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
◆◆
评论读取中....
请登录后再发表评论!
◆◆
修改失败,请稍后尝试