secondye 发表于 2010-9-17 00:47

矩阵的平方根,请教


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的运算结果不一样?

qibbxxt 发表于 2010-9-17 09:02

回复 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

Happy99 发表于 2010-9-17 09:21

回复 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 发表于 2010-9-18 12:59

矩阵的平方根是不可以这样求出来的。
只有各个元素的平方根才可以直接求出

secondye 发表于 2010-9-18 16:26

回复 huangjinysf 的帖子

我基本明白了,a.^0.5=sqrt(a)是针对矩阵a里的每个元素,a^0.5=sqrtm(a)是针对矩阵a。
页: [1]
查看完整版本: 矩阵的平方根,请教