矩阵功率和

时间:2013-09-19 09:10:42

标签: algorithm matrix matrix-multiplication exponent

计算矩阵之和的最佳方法是什么,例如A ^ i + A ^(i + 1)+ A ^ i + 2 ........ A ^ n用于非常大的n?

我想到了两种可能的方式:

1)对A ^ i使用对数矩阵求幂(LME),然后乘以A计算后续矩阵。

问题:我没有真正利用LME算法,因为我只使用最低功耗!!

2)使用LME查找A ^ n并记忆中间计算。

问题:大n需要太多空间。

还有第三种方法吗?

3 个答案:

答案 0 :(得分:10)

请注意:

A + A^2 = A(I + A)
A + A^2 + A^3 = A(I + A) + A^3
A + A^2 + A^3 + A^4 = (A + A^2)(I + A^2)
                    = A(I + A)(I + A^2)

B(n) = A + ... + A^n

我们有:

B(1) = A
B(n) = B(n / 2) * (I + A^(n / 2)) if n is even
B(n) = B(n / 2) * (I + A^(n / 2)) + A^n if n is odd

因此,您将执行对数步数,而无需计算反转。

虽然直接实施会产生(log n)^2因素,但您可以通过在计算log n时计算A的权力,将其保持在B

答案 1 :(得分:4)

您可以使用几何矩阵系列的n之和等于:

S_n = (I-A)^(-1) (I-A^n)

并且,由于你不是从0开始,你可以简单地计算:

result = S_n - S_i

其中i是您的起始索引。

答案 2 :(得分:1)

为什么不对矩阵进行对角化以使乘法便宜。

编辑:

只要矩阵是非奇异的,你就应该能够找到矩阵A的对角线表示D,使得A = PDP ^ -1,其中P由A的特征向量组成,D具有A的特征值对角线。得到D ^ m = D * D ^(m-1)是便宜的,因为它只是沿对角线乘以(即与矩阵的维数相同的乘法数)

获得S(m)= S(m-1)+ D ^ m也很便宜,因为你只是添加了对角元素。

然后你有

A ^ i + A ^(i + 1)+ A ^ i + 2 ........ A ^ n = P(D ^ i + D ^(i + 1)+ D ^ i + 2 ........ D ^ n)P ^ -1 = P(S(n) - S(i))P ^ -1

唯一困难的是找到P和P ^ -1

相关问题