Python Matrix Exponentiation

时间:2015-03-20 20:07:08

标签: python matrix fibonacci exponentiation

我想使用Python 2.x或3.x来提升最初

的2x2矩阵
0 1
1 1

指数10 19 或更低。 (也就是说,让M =我的矩阵,M 10 19

但是,我不想使用numpy

(顺便说一句,这个的斐波那契发生器)

1 个答案:

答案 0 :(得分:4)

好的,你提出这个问题的方式确实意味着你没有机会实现这个目标。我会解释;请不要被冒犯:

  1. Python是一个错误的工具,你试图排除那些会使错误更少的帮助程序。你正在尝试做的是最纯粹的数值计算 - 而python是一种脚本语言,在使用本机库时,它实际上只能利用数值效率。其中一个是numpy,但是你可能已经注意到了(但没有写)但是没有用,因为你的数字在实际计算M n 更大的n。
  2. 即使有一种神奇的方法可以在一个允许单个指令中的矩阵 - 矩阵乘法的情况下优化算法,并且您只需要另一条指令来计算并检查您是否仍然应该乘以要计算M n ,您的计算将需要2 * 10 19 指令。假设您有8个CPU,每秒可以处理40亿个CPU,那么它仍然需要不到20年的时间。你需要的是正确的数学。就像,真的很强的数学。你可以找到一个对角形式,使得M = U D U -1 ; U是单一的,D是对角矩阵。然后,使用matrix exponential e,您可以得到e M = U e D U.经典指数规则适用,因此您可以轻松计算e 中号 10 19 。这仍然很难看,但会在你认为更安全的时候终止。但是,如果没有数学数学学位,那就好了。