将矩阵提升到 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() 方法,该方法可用于方阵的指数幂计算。
Syntax: Matpow(M, power_number)
Arguments :
- M – A diagnosable square matrix
- power_number – The non-integral power factor of the matrix
Returns : A matrix raised to the power_number factor.
示例 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