我试图在R中实现A ^ k,并进一步假设k不是整数(并且可能小于1)。
似乎%^%
命令没有做正确的工作。即 - 使用此命令时A %^% (1.3) == A %^% 1
。
答案 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,并且它完成了诀窍。希望它有所帮助!