本文整理汇总了Python中sage.rings.polynomial.polynomial_ring_constructor.PolynomialRing.gen方法的典型用法代码示例。如果您正苦于以下问题:Python PolynomialRing.gen方法的具体用法?Python PolynomialRing.gen怎么用?Python PolynomialRing.gen使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sage.rings.polynomial.polynomial_ring_constructor.PolynomialRing
的用法示例。
在下文中一共展示了PolynomialRing.gen方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: mutate_initial
# 需要导入模块: from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing [as 别名]
# 或者: from sage.rings.polynomial.polynomial_ring_constructor.PolynomialRing import gen [as 别名]
def mutate_initial(self, k):
r"""
Mutate ``self`` in direction `k` at the initial cluster.
INPUT:
- ``k`` -- integer in between 0 and ``self.rk``
"""
n = self.rk
if k not in xrange(n):
raise ValueError('Cannot mutate in direction %s, please try a value between 0 and %s.'%(str(k),str(n-1)))
#modify self._path_dict using Nakanishi-Zelevinsky (4.1) and self._F_poly_dict using CA-IV (6.21)
new_path_dict = dict()
new_F_dict = dict()
new_path_dict[tuple(identity_matrix(n).column(k))] = []
new_F_dict[tuple(identity_matrix(n).column(k))] = self._U(1)
poly_ring = PolynomialRing(ZZ,'u')
h_subs_tuple = tuple([poly_ring.gen(0)**(-1) if j==k else poly_ring.gen(0)**max(-self._B0[k][j],0) for j in xrange(n)])
F_subs_tuple = tuple([self._U.gen(k)**(-1) if j==k else self._U.gen(j)*self._U.gen(k)**max(-self._B0[k][j],0)*(1+self._U.gen(k))**(self._B0[k][j]) for j in xrange(n)])
for g_vect in self._path_dict:
#compute new path
path = self._path_dict[g_vect]
if g_vect == tuple(identity_matrix(n).column(k)):
new_path = [k]
elif path != []:
if path[0] != k:
new_path = [k] + path
else:
new_path = path[1:]
else:
new_path = []
#compute new g-vector
new_g_vect = vector(g_vect) - 2*g_vect[k]*identity_matrix(n).column(k)
for i in xrange(n):
new_g_vect += max(sign(g_vect[k])*self._B0[i,k],0)*g_vect[k]*identity_matrix(n).column(i)
new_path_dict[tuple(new_g_vect)] = new_path
#compute new F-polynomial
h = 0
trop = tropical_evaluation(self._F_poly_dict[g_vect](h_subs_tuple))
if trop != 1:
h = trop.denominator().exponents()[0]-trop.numerator().exponents()[0]
new_F_dict[tuple(new_g_vect)] = self._F_poly_dict[g_vect](F_subs_tuple)*self._U.gen(k)**h*(self._U.gen(k)+1)**g_vect[k]
self._path_dict = new_path_dict
self._F_poly_dict = new_F_dict
self._B0.mutate(k)
示例2: DuadicCodeOddPair
# 需要导入模块: from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing [as 别名]
# 或者: from sage.rings.polynomial.polynomial_ring_constructor.PolynomialRing import gen [as 别名]
def DuadicCodeOddPair(F,S1,S2):
"""
Constructs the "odd pair" of duadic codes associated to the
"splitting" S1, S2 of n.
.. warning::
Maybe the splitting should be associated to a sum of
q-cyclotomic cosets mod n, where q is a *prime*.
EXAMPLES::
sage: from sage.coding.code_constructions import _is_a_splitting
sage: n = 11; q = 3
sage: C = Zmod(n).cyclotomic_cosets(q); C
[[0], [1, 3, 4, 5, 9], [2, 6, 7, 8, 10]]
sage: S1 = C[1]
sage: S2 = C[2]
sage: _is_a_splitting(S1,S2,11)
True
sage: codes.DuadicCodeOddPair(GF(q),S1,S2)
([11, 6] Cyclic Code over GF(3),
[11, 6] Cyclic Code over GF(3))
This is consistent with Theorem 6.1.3 in [HP2003]_.
"""
from .cyclic_code import CyclicCode
n = len(S1) + len(S2) + 1
if not _is_a_splitting(S1,S2,n):
raise TypeError("%s, %s must be a splitting of %s."%(S1,S2,n))
q = F.order()
k = Mod(q,n).multiplicative_order()
FF = GF(q**k,"z")
z = FF.gen()
zeta = z**((q**k-1)/n)
P1 = PolynomialRing(FF,"x")
x = P1.gen()
g1 = prod([x-zeta**i for i in S1+[0]])
g2 = prod([x-zeta**i for i in S2+[0]])
j = sum([x**i/n for i in range(n)])
P2 = PolynomialRing(F,"x")
x = P2.gen()
coeffs1 = [_lift2smallest_field(c)[0] for c in (g1+j).coefficients(sparse=False)]
coeffs2 = [_lift2smallest_field(c)[0] for c in (g2+j).coefficients(sparse=False)]
gg1 = P2(coeffs1)
gg2 = P2(coeffs2)
gg1 = gcd(gg1, x**n - 1)
gg2 = gcd(gg2, x**n - 1)
C1 = CyclicCode(length = n, generator_pol = gg1)
C2 = CyclicCode(length = n, generator_pol = gg2)
return C1,C2
示例3: DuadicCodeOddPair
# 需要导入模块: from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing [as 别名]
# 或者: from sage.rings.polynomial.polynomial_ring_constructor.PolynomialRing import gen [as 别名]
def DuadicCodeOddPair(F,S1,S2):
"""
Constructs the "odd pair" of duadic codes associated to the
"splitting" S1, S2 of n.
.. warning::
Maybe the splitting should be associated to a sum of
q-cyclotomic cosets mod n, where q is a *prime*.
EXAMPLES::
sage: from sage.coding.code_constructions import is_a_splitting
sage: n = 11; q = 3
sage: C = cyclotomic_cosets(q,n); C
[[0], [1, 3, 4, 5, 9], [2, 6, 7, 8, 10]]
sage: S1 = C[1]
sage: S2 = C[2]
sage: is_a_splitting(S1,S2,11)
(True, 2)
sage: DuadicCodeOddPair(GF(q),S1,S2)
(Linear code of length 11, dimension 6 over Finite Field of size 3,
Linear code of length 11, dimension 6 over Finite Field of size 3)
This is consistent with Theorem 6.1.3 in [HP]_.
"""
n = max(S1+S2)+1
if not(is_a_splitting(S1,S2,n)):
raise TypeError, "%s, %s must be a splitting of %s."%(S1,S2,n)
q = F.order()
k = Mod(q,n).multiplicative_order()
FF = GF(q**k,"z")
z = FF.gen()
zeta = z**((q**k-1)/n)
P1 = PolynomialRing(FF,"x")
x = P1.gen()
g1 = prod([x-zeta**i for i in S1+[0]])
g2 = prod([x-zeta**i for i in S2+[0]])
j = sum([x**i/n for i in range(n)])
P2 = PolynomialRing(F,"x")
x = P2.gen()
coeffs1 = [lift2smallest_field(c)[0] for c in (g1+j).coeffs()]
coeffs2 = [lift2smallest_field(c)[0] for c in (g2+j).coeffs()]
gg1 = P2(coeffs1)
gg2 = P2(coeffs2)
C1 = CyclicCodeFromGeneratingPolynomial(n,gg1)
C2 = CyclicCodeFromGeneratingPolynomial(n,gg2)
return C1,C2
示例4: conv
# 需要导入模块: from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing [as 别名]
# 或者: from sage.rings.polynomial.polynomial_ring_constructor.PolynomialRing import gen [as 别名]
def conv(N):
file = "data/%s"%N
if not os.path.exists(file):
raise RuntimeError, "Data for level %s does not exist."%N
F = open(file).read()
i = F.find(":=")
if i == -1:
raise RuntimeError, "Syntax error in file for level %s."%N
F = F[i+2:]
TRANS = [("[*", "["), ("*]", "]"), ("<","["), (">","]"), \
(";",""), ("\n",""), ("^","**")]
for z,w in TRANS:
F = F.replace(z,w)
X = []
# Define x so the eval below works.
R = PolynomialRing(RationalField())
x = R.gen()
print "starting eval."
#print "F = ", F
for f in eval(F):
print "creating object from f=",f[:4]
cp = {}
disc = 0
for z in f[5]:
g = R(z[1])
disc = GCD(disc,g.discriminant())
cp[z[0]] = g
X.append(ModularForm(f[0],f[1],f[2],f[3],f[4],cp,disc))
return X
示例5: comp_prod
# 需要导入模块: from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing [as 别名]
# 或者: from sage.rings.polynomial.polynomial_ring_constructor.PolynomialRing import gen [as 别名]
def comp_prod(P, Q):
n = Q.degree()
K = P.base_ring()
A = PolynomialRing(K, 'X')
X = A.gen()
AA = PolynomialRing(K, 'Y,Z')
Y, Z = AA.gens()
return P(Y).resultant(AA(Y**n * Q(Z/Y)), Y)(1,X)
示例6: DuadicCodeEvenPair
# 需要导入模块: from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing [as 别名]
# 或者: from sage.rings.polynomial.polynomial_ring_constructor.PolynomialRing import gen [as 别名]
def DuadicCodeEvenPair(F,S1,S2):
r"""
Constructs the "even pair" of duadic codes associated to the
"splitting" (see the docstring for ``_is_a_splitting``
for the definition) S1, S2 of n.
.. warning::
Maybe the splitting should be associated to a sum of
q-cyclotomic cosets mod n, where q is a *prime*.
EXAMPLES::
sage: from sage.coding.code_constructions import _is_a_splitting
sage: n = 11; q = 3
sage: C = Zmod(n).cyclotomic_cosets(q); C
[[0], [1, 3, 4, 5, 9], [2, 6, 7, 8, 10]]
sage: S1 = C[1]
sage: S2 = C[2]
sage: _is_a_splitting(S1,S2,11)
True
sage: codes.DuadicCodeEvenPair(GF(q),S1,S2)
([11, 5] Cyclic Code over GF(3),
[11, 5] Cyclic Code over GF(3))
"""
from .cyclic_code import CyclicCode
n = len(S1) + len(S2) + 1
if not _is_a_splitting(S1,S2,n):
raise TypeError("%s, %s must be a splitting of %s."%(S1,S2,n))
q = F.order()
k = Mod(q,n).multiplicative_order()
FF = GF(q**k,"z")
z = FF.gen()
zeta = z**((q**k-1)/n)
P1 = PolynomialRing(FF,"x")
x = P1.gen()
g1 = prod([x-zeta**i for i in S1+[0]])
g2 = prod([x-zeta**i for i in S2+[0]])
P2 = PolynomialRing(F,"x")
x = P2.gen()
gg1 = P2([_lift2smallest_field(c)[0] for c in g1.coefficients(sparse=False)])
gg2 = P2([_lift2smallest_field(c)[0] for c in g2.coefficients(sparse=False)])
C1 = CyclicCode(length = n, generator_pol = gg1)
C2 = CyclicCode(length = n, generator_pol = gg2)
return C1,C2
示例7: SiegelModularFormG2VVRepresentation
# 需要导入模块: from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing [as 别名]
# 或者: from sage.rings.polynomial.polynomial_ring_constructor.PolynomialRing import gen [as 别名]
class SiegelModularFormG2VVRepresentation ( SageObject ) :
def __init__(self, K) :
self.__K = K
self.__R = PolynomialRing(K, ['x', 'y'])
self.__x = self.__R.gen(0)
self.__y = self.__R.gen(1)
def from_module(self, R) :
assert R == PolynomialRing(R.base_ring(), ['x', 'y'])
return SiegelModularFormG2VVRepresentation(R.base_ring())
def base_ring(self) :
return self.__K
def codomain(self) :
return self.__R
def base_extend(self, L) :
if L.has_coerce_map_from(self.__K) :
return SiegelModularFormG2VVRepresentation( L )
raise ValueError, "Base extension of representation is not defined"
def extends(self, other) :
if isinstance(other, TrivialRepresentation) :
return self.__K.has_coerce_map_from(other.codomain())
elif type(self) != type(other) :
return False
return self.__K.has_coerce_map_from(other.__K)
def group(self) :
return "GL(2,ZZ)"
def _apply_function(self) :
return self.apply
def apply(self, g, a) :
return a(g[0]*self.__x + g[1]*self.__y, g[2]*self.__x + g[3]*self.__y)
def __cmp__(self, other) :
c = cmp(type(self), type(other))
if c == 0 :
c = cmp(self.__K, other.__K)
return c
def __hash__(self) :
return hash(self.__K)
def _repr_(self) :
return "Siegel modular form degree 2 vector valued representation on %s" % (self.__K)
def _latex_(self) :
return "Siegel modular form degree 2 vector valued representation on %s" % (latex(self.__K))
示例8: DuadicCodeEvenPair
# 需要导入模块: from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing [as 别名]
# 或者: from sage.rings.polynomial.polynomial_ring_constructor.PolynomialRing import gen [as 别名]
def DuadicCodeEvenPair(F,S1,S2):
r"""
Constructs the "even pair" of duadic codes associated to the
"splitting" (see the docstring for ``is_a_splitting``
for the definition) S1, S2 of n.
.. warning::
Maybe the splitting should be associated to a sum of
q-cyclotomic cosets mod n, where q is a *prime*.
EXAMPLES::
sage: from sage.coding.code_constructions import is_a_splitting
sage: n = 11; q = 3
sage: C = cyclotomic_cosets(q,n); C
[[0], [1, 3, 4, 5, 9], [2, 6, 7, 8, 10]]
sage: S1 = C[1]
sage: S2 = C[2]
sage: is_a_splitting(S1,S2,11)
(True, 2)
sage: DuadicCodeEvenPair(GF(q),S1,S2)
(Linear code of length 11, dimension 5 over Finite Field of size 3,
Linear code of length 11, dimension 5 over Finite Field of size 3)
"""
n = max(S1+S2)+1
if not(is_a_splitting(S1,S2,n)):
raise TypeError, "%s, %s must be a splitting of %s."%(S1,S2,n)
q = F.order()
k = Mod(q,n).multiplicative_order()
FF = GF(q**k,"z")
z = FF.gen()
zeta = z**((q**k-1)/n)
P1 = PolynomialRing(FF,"x")
x = P1.gen()
g1 = prod([x-zeta**i for i in S1+[0]])
g2 = prod([x-zeta**i for i in S2+[0]])
P2 = PolynomialRing(F,"x")
x = P2.gen()
gg1 = P2([lift2smallest_field(c)[0] for c in g1.coeffs()])
gg2 = P2([lift2smallest_field(c)[0] for c in g2.coeffs()])
C1 = CyclicCodeFromGeneratingPolynomial(n,gg1)
C2 = CyclicCodeFromGeneratingPolynomial(n,gg2)
return C1,C2
示例9: from_recurrence
# 需要导入模块: from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing [as 别名]
# 或者: from sage.rings.polynomial.polynomial_ring_constructor.PolynomialRing import gen [as 别名]
def from_recurrence(cls, coefficients, values):
"""
Create a C-finite sequence given the coefficients $c$ and starting values $a$
of a homogenous linear recurrence.
.. MATH::
a_{n+d} = c_0a_n + c_1a_{n+1} + \cdots + c_{d-1}a_{n+d-1}, \quad d\ge0.
INPUT:
- ``coefficients`` -- a list of rationals
- ``values`` -- start values, a list of rationals
OUTPUT:
- A CFiniteSequence object
EXAMPLES::
sage: R.<x> = QQ[]
sage: CFiniteSequence.from_recurrence([1,1],[0,1]) # Fibonacci numbers
C-finite sequence, generated by x/(-x^2 - x + 1)
sage: CFiniteSequence.from_recurrence([-1,2],[0,1]) # natural numbers
C-finite sequence, generated by x/(x^2 - 2*x + 1)
sage: r = CFiniteSequence.from_recurrence([-1],[1])
sage: s = CFiniteSequence.from_recurrence([-1],[1,-1])
sage: r == s
True
sage: r = CFiniteSequence(x^3/(1-x-x^2))
sage: s = CFiniteSequence.from_recurrence([1,1],[0,0,0,1,1])
sage: r == s
True
sage: CFiniteSequence.from_recurrence(1,1)
Traceback (most recent call last):
...
ValueError: Wrong type for recurrence coefficient list.
"""
if not isinstance(coefficients, list):
raise ValueError("Wrong type for recurrence coefficient list.")
if not isinstance(values, list):
raise ValueError("Wrong type for recurrence start value list.")
deg = len(coefficients)
co = coefficients[::-1]
co.extend([0] * (len(values) - deg))
R = PolynomialRing(QQ, 'x')
x = R.gen()
den = -1 + sum([x ** (n + 1) * co[n] for n in range(deg)])
num = -values[0] + sum([x ** n * (-values[n] + sum([values[k] * co[n - 1 - k] for k in range(n)])) for n in range(1, len(values))])
return cls(num / den)
示例10: logp
# 需要导入模块: from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing [as 别名]
# 或者: from sage.rings.polynomial.polynomial_ring_constructor.PolynomialRing import gen [as 别名]
def logp(p, p_prec):
"""
Returns the (integral) power series for log_p(1+z) as a polynomial in y over the rationals of degree < p_prec.
EXAMPLES::
sage: from sage.modular.pollack_stevens.families_util import logp
sage: logp(11, 5)
-1/4*y^4 + 1/3*y^3 - 1/2*y^2 + y
"""
SS = PolynomialRing(QQ, 'y')
y = SS.gen()
return sum([((-1) ** (m - 1)) * (y ** m) / m for m in range(1, p_prec)])
示例11: __init__
# 需要导入模块: from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing [as 别名]
# 或者: from sage.rings.polynomial.polynomial_ring_constructor.PolynomialRing import gen [as 别名]
def __init__(self,lambda_squared=None, field=None):
if lambda_squared==None:
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
R=PolynomialRing(ZZ,'x')
x = R.gen()
field=NumberField(x**3-ZZ(5)*x**2+ZZ(4)*x-ZZ(1), 'r', embedding=AA(ZZ(4)))
self._l=field.gen()
else:
if field is None:
self._l=lambda_squared
field=lambda_squared.parent()
else:
self._l=field(lambda_squared)
Surface.__init__(self,field, ZZ.zero(), finite=False)
示例12: F
# 需要导入模块: from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing [as 别名]
# 或者: from sage.rings.polynomial.polynomial_ring_constructor.PolynomialRing import gen [as 别名]
def F(z,level = 0,method = 'moments'):
R = PolynomialRing(z.parent(),'x,y').fraction_field()
Rx = PolynomialRing(z.parent(),'x1').fraction_field()
x1 = Rx.gen()
subst = R.hom([x1,z],codomain = Rx)
x,y = R.gens()
center = self.parent()._source._BT.find_containing_affinoid(z)
zbar = z.trace()-z
f = R(1)/(x-y)
k = self.parent()._n+2
V = [f]
for ii in range(order):
V = [v.derivative(y) for v in V]+[k/(y-zbar)*v for v in V]
k += 2
return sum([self.integrate(subst(v),center,level,method) for v in V])
示例13: F
# 需要导入模块: from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing [as 别名]
# 或者: from sage.rings.polynomial.polynomial_ring_constructor.PolynomialRing import gen [as 别名]
def F(z):
R=PolynomialRing(z.parent(),'x,y').fraction_field()
Rx=PolynomialRing(z.parent(),'x1').fraction_field()
x1=Rx.gen()
subst=R.hom([x1,z],codomain=Rx)
x,y=R.gens()
center=self._parent._X._BT.find_containing_affinoid(z)
zbar=z.trace()-z
f=R(1)/(x-y)
k=self._parent._k
V=[f]
for ii in range(order):
V=[v.derivative(y) for v in V]+[k/(y-zbar)*v for v in V]
k+=2
return sum([self.riemann_sum(subst(v),center,level) for v in V])
示例14: test_01
# 需要导入模块: from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing [as 别名]
# 或者: from sage.rings.polynomial.polynomial_ring_constructor.PolynomialRing import gen [as 别名]
def test_01(self):
order = 2**8
F = FiniteField(order, 'a')
P = PolynomialRing(F, 'x')
n = 7
deg = 2
poly = F.fetch_int(42)
for i in range(1, deg+1):
poly += F.random_element() * P.gen()**i
# evaluate polynomial at different points (shares)
print(poly)
points = [(F.fetch_int(i), poly(F.fetch_int(i))) for i in range(1, n+1)]
points[0] = (points[0][0], points[0][1] + F.fetch_int(9))
print(points)
assert poly == berlekamp_welsh(deg, points)
示例15: __init__
# 需要导入模块: from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing [as 别名]
# 或者: from sage.rings.polynomial.polynomial_ring_constructor.PolynomialRing import gen [as 别名]
def __init__(self,lambda_squared=None, field=None):
TranslationSurface_generic.__init__(self)
if lambda_squared==None:
from sage.rings.number_field.number_field import NumberField
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
R=PolynomialRing(ZZ,'x')
x = R.gen()
from sage.rings.qqbar import AA
self._field=NumberField(x**3-ZZ(5)*x**2+ZZ(4)*x-ZZ(1), 'r', embedding=AA(ZZ(4)))
self._l=self._field.gen()
else:
if field is None:
self._l=lambda_squared
self._field=lambda_squared.parent()
else:
self._field=field
self._l=field(lambda_squared)