R语言 如何把一个正方形矩阵提高到负半幂
奇异幂运算可以在方形矩阵本身上进行,其中指定的幂被应用于矩阵的每个元素。Base R有许多方法和例程来计算任何k>1的幂,其中k是整数值。然而,将矩阵提升到一个非整数幂是一个挑战,而且可用的解决方案数量有限。可以调用外部软件包,在R编程语言中以更可靠的方式进行功率计算。
方法1:使用 sqrtm方法
R语言中的expm包用于计算R语言中矩阵的指数幂、对数幂和平方根,该包需要首先通过执行以下命令安装到工作空间。
install.packages("expm")
该包有sqrtm()方法,用于在R中对平方矩阵进行矩阵平方根计算。
sqrtm (mat)
接下来是应用R中的solve()方法,一般来说,它可以解决x的方程a %*% x = b,其中b可以是一个向量或矩阵,也可以是一个实数值<0。这个方法在基础R中本身就有。
solve( mat , power)
如果幂值为空,则计算矩阵mat的逆值,即矩阵被提升到-1的幂值。 因此,总结起来,我们使用sqrtm()方法计算半幂值,并使用solve()方法对其进行否定。
代码
# loading the required libraries
library ("expm")
# declaring a data frame in R
mat <- matrix(1 : 9, ncol = 3)
print ("Original Matrix")
print (mat)
print ("Power matrix")
# computing -0.5 power of matrix
pow <- solve(sqrtm(mat))
print (pow)
输出
[1] "Original Matrix"
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
[1] "Power Matrix"
[,1] [,2] [,3]
[1,] 0- 6980476i 0+13960950i 0- 6980475i
[2,] 0+13960950i 0-27921901i 0+13960951i
[3,] 0- 6980475i 0+13960951i 0- 6980475i
方法2:使用 特征向量方法
^%^运算符可用于计算矩阵功率运算,其中对指定的矩阵进行特征值分解。其相应的向量以及数值都以数组的形式获得。然后,向量的转置与值向量一起被用来返回定制的函数值以计算矩阵功率。然而,这种方法被认为不适合随机平方矩阵的工作,因为它受到许多约束条件的指导,其中一些约束条件是 。
- 这个方法对没有特征值分解的矩阵不起作用。
- 此方法对没有对角线的矩阵不起作用。
- 矩阵最好是对称的。
代码
# creating data for matrix
vec <- c(0.088150041, 0.001017491 ,
0.001017491, 0.084634294)
# declaring matrix
mat <- matrix(vec , nrow = 2)
print ("Original Matrix")
print (mat)
"%^%" <- function(mat, power)
with(eigen(mat), vectors %*% (values^power * t(vectors)))
power <- -0.5
# raising matrix to -0.5 power
pow <- mat%^%(power)
print ("Modified Matrix")
print (pow)
输出
[1] "Original Matrix"
[,1] [,2]
[1,] 0.088150 0.001017
[2,] 0.001017 0.084634
[1] "Modified Matrix"
[,1] [,2]
[1,] 3.36830 -0.02004
[2,] -0.02004 3.43755