全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
5710 6
2009-11-15
悬赏 4 个论坛币 未解决
如题,比如:A是个2*2的矩阵,怎么算A的K次方,因为题目要求不能用循环,所以想问问各位大大谁知道有什么命令可以实现啊。
谢谢了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2009-11-16 18:43:14
递归方法算不算没用循环? 上面的代码加个递归函数

Ak <- function(x, n=k) {
  n <- as.integer(n)
  if(n == 0) stop()
  if (n == 1)  {
      y <-  x %*% x
      return(y)}
  else {
     x <- x %*% x
     Ak(x,n=k-1)
   }
}

或者:
先对 A 进行 Cholskey 或 QR 分解.
B = qr(A)
再求 A  的逆
C = chol2inv(B)
然后
solve(A, C)
求得 A 的平方.
A * A * A = QRQRQR = Q[RQRQ] R 再用求逆法分别算

抱歉,没有跑程序验证。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-11-16 19:59:28
> matpow <- function(x, pow=2) {
+ y <- eigen(x)
+ y$vectors %*% diag( (y$values)^pow ) %*% t(y$vectors)
+ }
> matpow(diag(1:2)) # 矩阵((1, 0) , (0, 2))的2次幂
[,1] [,2]
[1,] 1 0
[2,] 0 4
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-11-17 10:24:34
king64 兄台的解决方案赞一个: 利用方阵的特征值分解求 n 次幂 是正解
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-11-17 22:11:11
king64 兄台的解决方案有限制,只能用于对角阵,一般的方阵结果不对。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-11-17 22:12:48
既然用计算机命令计算,又不用循环,真是那句话:女人何苦为难男人?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群