如何使用 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)
目前我有一个关于 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)