Python有限域矩阵求幂

时间:2017-04-17 10:23:45

标签: python matrix modulo exponentiation arbitrary-precision

是否有一种简单的方法来计算(尤其是幂/指数)矩阵,其元素是有限域的整数,或者至少是任意整数精度矩阵,支持%运算符?

例如,假设我们有一个矩阵

A = 1 1
    1 0

并希望计算类似(A**100) % 1000的内容,如何实现这一目标?

我尝试了numpy,但问题是它使用固定的精度数据类型,因此它快速溢出...然后我尝试了sympy,因为它支持任意整数精度,但它似乎不支持有限字段操作(除了反过来)......

1 个答案:

答案 0 :(得分:0)

这可能是一种矫枉过正,但Sage拥有你想要的一切(以及更多)。它是一个基于python的软件,但非常大(~1.2GB下载)。您可以使用sage --preparse script.sage创建python文件。

甚至还有类似SO的QA网站https://ask.sagemath.org/questions/专门用于圣人。

您的代码示例可能是:

m = Matrix(GF(5), [[1, 1], [1, 0]])
power = m^100

我使用GF(5)因为GF(1000)不是有限字段。也存在一些差异,例如,取幂可以通过x**y或等效x^y来完成。