📜  将矩阵提升到 R 中的分数幂

📅  最后修改于: 2022-05-13 01:54:40.907000             🧑  作者: Mango

将矩阵提升到 R 中的分数幂

在 R 编程语言中,矩阵可以被提升为整数和非整数幂。矩阵的幂的计算涉及矩阵的同时乘法,次数与指定的幂整数相同。但是,在分数幂的情况下,我们需要使用内置的 R 函数来模拟此操作。

方法 1:在 R 中使用 expm 包

expm 包可用于执行各种类型的矩阵计算,如对数、指数等。此函数计算不可对角化的方阵的指数。 expm 包分别包含 logm 和 sqrtm 方法。但是,它不能用于负分数幂。可以使用以下命令将 expm 包安装在 R 目录中:

install.packages("expm)

该包包含在脚本中,然后可以使用具有以下语法的 expm 方法:

expm(x), where x is the matrix

代码:



R
require(expm)
library("expm")
  
mat <- matrix(c(1, 1, 1, 1), 2, 2)
print ("Original Matrix")
print (mat)
modified_matrix <- 1.1*logm(mat)
  
# computing power matrix 
powmat <- expm(modified_matrix)
  
# printing the power matrix 
print ("Power Matrix")
print (powmat)


R
# requiring the necessary package
require("powerplus")
  
# declaring a non diagonizable matrix
mat <- matrix(c(2, 0, 1, 1), ncol = 2) 
print ("Original Matrix")
print (mat)
  
# raising the matrix to a fractional 
# power 0.5
print ("Power Matrix")
Matpow(mat, 0.5)


R
# requiring the necessary package
require("powerplus")
  
# declaring a non diagonizable matrix
mat <- matrix(c(2, 0, 1, 1), ncol = 2) 
print ("Original Matrix")
print (mat)
  
# raising the matrix to a fractional power 0.5
print ("Power Matrix")
Matpow(mat, -2.1)


输出

[1] "Original Matrix"
    [,1]   [,2]    
[1,]   1      1
[2,]   1      1
[1] "Power Matrix"
         [,1]      [,2]    
[1,] 1.071773  1.071773
[2,] 1.071773  1.071773

方法 2:在 R 中使用 powerplus 包

可以使用 R 中的 powerplus 包将矩阵提升到负或正的非整数幂。它用于将有效矩阵提升到任何幂(甚至允许复数)。可以使用的矩阵是方矩阵或具有正特征值的可对角化矩阵。可以使用以下命令将 powerplus 包安装到 R 目录中:

install.packages("powerplus")

然后可以将该包包含在脚本中,然后可以使用 Matpow() 方法,该方法可用于方阵的指数幂计算。

示例 1:以下示例说明了 R 中的 Matpow() 方法。

电阻

# requiring the necessary package
require("powerplus")
  
# declaring a non diagonizable matrix
mat <- matrix(c(2, 0, 1, 1), ncol = 2) 
print ("Original Matrix")
print (mat)
  
# raising the matrix to a fractional 
# power 0.5
print ("Power Matrix")
Matpow(mat, 0.5)
[1] "Original Matrix" 
      [,1] [,2] 
[1,]    1    1 
[2,]    0    1 
[1] "Power Matrix" 
      [,1] [,2] 
[1,]    1  0.5
[2,]    0  1.0

示例 2:负积分幂。

Matpow() 方法也可用于计算负积分幂。如果结果为奇数,则输出为负矩阵,否则为偶数。

电阻

# requiring the necessary package
require("powerplus")
  
# declaring a non diagonizable matrix
mat <- matrix(c(2, 0, 1, 1), ncol = 2) 
print ("Original Matrix")
print (mat)
  
# raising the matrix to a fractional power 0.5
print ("Power Matrix")
Matpow(mat, -2.1)

输出

[1] "Original Matrix" 
     [,1]     [,2]
 [1,]    2    1
 [2,]    0    1 
[1] "Power Matrix" 
          [,1]       [,2] 
[1,] 0.2332582 -0.7667418 
[2,] 0.0000000  1.0000000