R语言:计算矩阵的-1/2次幂

说明:用R软件对多元数据进行Fisher判别时,需要求样本所服从的分布的方差∑的-1/2次幂矩阵Σ为p*p的正交阵求矩阵Σ的逆:solve(Σ)求矩阵Σ的特征值和特征向量:eigen(Σ)输入:eigen(Σ)$values 可得到矩阵A的特征值,输入:eigen(Σ)$vectors 可到到一个矩阵,矩阵的列向量为列数所对应的特征值的特征向量;由于Λ=Q-1ΣQ 即Σ=QΛQ-1,其中Λ=diag{λ12,......,λp},其中λ12,......,λp为Σ的特征值,
程序:在这里以2*2的矩阵为例,Σ为矩阵:226.96104,44.75779
44.75779,155.91916
> lamda
             [,1]         [,2]
[1,] 2.485803e+02 1.421085e-14
[2,] 7.105427e-15 1.342999e+02
 R代码为: 
1 lamda <- solve(eigen(Sigma)$vectors)%*%Sigma%*%(eigen(Sigma)$vectors)
2 sqrt(diag(lamda))
3 lamda_sqrt <- matrix(c(sqrt(diag(lamda))[1],0,0,sqrt(diag(lamda)[2])),nrow = 2,ncol = 2)
4 Sigma_sqrt <- (eigen(Sigma)$vectors)%*%lamda_sqrt%*%solve(eigen(Sigma)$vectors)
5 solve(Sigma_sqrt)
 可以得到Σ的-1/2次幂:
> solve(Sigma_sqrt)
            [,1]        [,2]
[1,]  0.06775133 -0.00895483
[2,] -0.00895483  0.08196490
 与此同时,如果用matlab,可直接输入A^(-1/2)即可,其中A为上文所述Sigma。 

相关内容推荐