如何使用 Polynomial 在 x**3 而不是 x 中编写多项式

How to write a polynomial in x**3 instead of x using Polynomial

目前我有一个关于 x 的多项式(伽罗华域的)。但我想在 x^3 中“评估”它。

有什么想法吗?

import galois 

GF = galois.GF(31) 
f = galois.Poly([1, 0, 0, 15], field=GF);
>> x^3 + 15

所以现在 f 是 x 的函数:f(x) 但我想要 f(x^3)

我是 galois 库的作者。将f(x)转化为g(x) = f(x^3)相当于f(x)的度数与non-zero的系数乘以3。在galois中是这样实现的

In [1]: import galois

In [2]: galois.__version__
Out[2]: '0.0.26'

In [3]: GF = galois.GF(31)

In [4]: f = galois.Poly([1, 0, 0, 15], field=GF); f
Out[4]: Poly(x^3 + 15, GF(31))

In [5]: f.nonzero_degrees
Out[5]: array([3, 0])

In [6]: f.nonzero_coeffs
Out[6]: GF([ 1, 15], order=31)

In [7]: g = galois.Poly.Degrees(3*f.nonzero_degrees, f.nonzero_coeffs); g
Out[7]: Poly(x^9 + 15, GF(31))

或者,如果您只想在某些 x^3 处计算 f(x),则可以改为这样做。

In [8]: x = GF.Random(4); x
Out[8]: GF([14,  8, 28, 17], order=31)

In [9]: f(x**3)
Out[9]: GF([19, 19, 17, 11], order=31)

In [10]: g(x)
Out[10]: GF([19, 19, 17, 11], order=31)