将矩阵提升为分数幂

时间:2015-04-12 13:47:59

标签: r matrix

我试图在R中实现A ^ k,并进一步假设k不是整数(并且可能小于1)。 似乎%^%命令没有做正确的工作。即 - 使用此命令时A %^% (1.3) == A %^% 1

3 个答案:

答案 0 :(得分:2)

据推测,您正在讨论%^%包中的expm运算符:

  

计算矩阵的k次幂。而'x ^ k'计算   元素明智幂,'x%^%k'对应于k-1矩阵   乘法,'x%*%x%*%...%*%x'。

请注意k的定义:

  

k:整数,k> = 0.

我相信如果你想要分数幂,你可以做类似的事情:

z <- matrix(c(3,1,1,3),2,2)
expm(1.3*logm(z))
## Note ...

##              [,1]     [,2]
##     [1,] 4.262578 1.800289
##     [2,] 1.800289 4.262578

我认为这可能仅适用于正定矩阵。

答案 1 :(得分:1)

如果它仍然与您相关,并且已经指出,我自己的包裹称为&#39; powerplus&#39;有一个名为&#39; Matpow&#39;这使您可以将任何可对角化的矩阵提升到任何功率(即使是最近更新后的复杂功率)。 编辑:版本3.0也将功能扩展到(某些)不可对角化的矩阵。

答案 2 :(得分:0)

今天早上我遇到了同样的问题(遗憾的是logm仅适用于其日志存在的矩阵......显然不是我的情况)并经过一些研究后我找到了包matlib(函数mpower)和package powerplus(函数Matpow)。两者都接受非整数幂,但matlib具有输入矩阵必须对称的限制。所以我最终使用了包装powerplus中的Matpow,并且它完成了诀窍。希望它有所帮助!