R语言 如何把一个正方形矩阵提高到负半幂

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程