矩阵的平方根,请教
aa =
1.7901e+0021.7644e+0001.6210e-001
1.7508e+0027.3070e-001 -5.0900e-001
1.6720e+0022.5570e-001 -2.4600e-001
1.9887e+002 -8.4090e-001 -2.6070e-001
1.8432e+002 -1.4644e+0007.3300e-001
bb =
8.5460e+001 0 0 0 0
08.5360e+001 0 0 0
0 08.5360e+001 0 0
0 0 08.5360e+001 0
0 0 0 08.2970e+001
cc=aa'*bb*aa
再对cc求平方根,怎么sqrt(cc)和cc^0.5的运算结果不一样?
回复 secondye 的帖子
最好先搞清楚矩阵的平方根的意思,矩阵的平方根并不是每个元素开平方根,我觉得你的意思是每个元素开平方根吧,这个sqrt和0.5是一样的,如下>> a=magic(5)
a =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
>> b=sqrt(a)
b =
4.1231 4.8990 1.0000 2.8284 3.8730
4.7958 2.2361 2.6458 3.7417 4.0000
2.0000 2.4495 3.6056 4.4721 4.6904
3.1623 3.4641 4.3589 4.5826 1.7321
3.3166 4.2426 5.0000 1.4142 3.0000
>> c=a.^0.5
c =
4.1231 4.8990 1.0000 2.8284 3.8730
4.7958 2.2361 2.6458 3.7417 4.0000
2.0000 2.4495 3.6056 4.4721 4.6904
3.1623 3.4641 4.3589 4.5826 1.7321
3.3166 4.2426 5.0000 1.4142 3.0000 回复 secondye 的帖子
运算不同, 一个是针对矩阵, 一个是针对元素
s1=sqrt(cc); 等同cc.^0.5或
s1=zeros(size(cc)); for ii=1:size(cc,1), for jj=1:size(cc,2), s1(ii,jj)=sqrt(cc(ii,jj)) ; end; end (不建议如此用)
s2=cc^0.5; 等同s2=sqrtm(cc);
检查下
cc=s1.^2, cc=s2^2, cc=s2*s2; 矩阵的平方根是不可以这样求出来的。
只有各个元素的平方根才可以直接求出 回复 huangjinysf 的帖子
我基本明白了,a.^0.5=sqrt(a)是针对矩阵a里的每个元素,a^0.5=sqrtm(a)是针对矩阵a。
页:
[1]