本文整理汇总了Python中sage.rings.all.ZZ.zero方法的典型用法代码示例。如果您正苦于以下问题:Python ZZ.zero方法的具体用法?Python ZZ.zero怎么用?Python ZZ.zero使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sage.rings.all.ZZ
的用法示例。
在下文中一共展示了ZZ.zero方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _inner_qq
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import zero [as 别名]
def _inner_qq(self, qelt1, qelt2):
"""
Symmetric form between two elements of the root lattice
associated to ``self``.
EXAMPLES::
sage: P = RootSystem(['F',4,1]).weight_lattice(extended=true)
sage: Lambda = P.fundamental_weights()
sage: V = IntegrableRepresentation(Lambda[0])
sage: alpha = V.root_lattice().simple_roots()
sage: Matrix([[V._inner_qq(alpha[i], alpha[j]) for j in V._index_set] for i in V._index_set])
[ 2 -1 0 0 0]
[ -1 2 -1 0 0]
[ 0 -1 2 -1 0]
[ 0 0 -1 1 -1/2]
[ 0 0 0 -1/2 1]
.. WARNING:
If ``qelt1`` or ``qelt1`` accidentally gets coerced into
the extended weight lattice, this will return an answer,
and it will be wrong. To make this code robust, parents
should be checked. This is not done since in the application
the parents are known, so checking would unnecessarily slow
us down.
"""
mc1 = qelt1.monomial_coefficients()
mc2 = qelt2.monomial_coefficients()
zero = ZZ.zero()
return sum(mc1.get(i, zero) * mc2.get(j, zero)
* self._cartan_matrix[i,j] / self._eps[i]
for i in self._index_set for j in self._index_set)
示例2: _inner_pp
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import zero [as 别名]
def _inner_pp(self, pelt1, pelt2):
"""
Symmetric form between an two elements of the weight lattice
associated to ``self``.
EXAMPLES::
sage: P = RootSystem(['G',2,1]).weight_lattice(extended=true)
sage: Lambda = P.fundamental_weights()
sage: V = IntegrableRepresentation(Lambda[0])
sage: alpha = V.root_lattice().simple_roots()
sage: Matrix([[V._inner_pp(Lambda[i],P(alpha[j])) for j in V._index_set] for i in V._index_set])
[ 1 0 0]
[ 0 1/3 0]
[ 0 0 1]
sage: Matrix([[V._inner_pp(Lambda[i],Lambda[j]) for j in V._index_set] for i in V._index_set])
[ 0 0 0]
[ 0 2/3 1]
[ 0 1 2]
"""
mc1 = pelt1.monomial_coefficients()
mc2 = pelt2.monomial_coefficients()
zero = ZZ.zero()
mc1d = mc1.get('delta', zero)
mc2d = mc2.get('delta', zero)
return sum(mc1.get(i,zero) * self._ac[i] * mc2d
+ mc2.get(i,zero) * self._ac[i] * mc1d
for i in self._index_set) \
+ sum(mc1.get(i,zero) * mc2.get(j,zero) * self._ip[ii,ij]
for ii, i in enumerate(self._index_set_classical)
for ij, j in enumerate(self._index_set_classical))
示例3: phi
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import zero [as 别名]
def phi(self, i):
r"""
Return `\varphi_i` of ``self``.
EXAMPLES::
sage: S = crystals.OddNegativeRoots(['A', [2,2]])
sage: mg = S.module_generator()
sage: [mg.phi(i) for i in S.index_set()]
[0, 0, 1, 0, 0]
sage: b = mg.f(0)
sage: [b.phi(i) for i in S.index_set()]
[0, 1, 0, 1, 0]
sage: b = mg.f_string([0,1,0,-1,0,-1]); b
{-e[-2]+e[1], -e[-2]+e[2], -e[-1]+e[1]}
sage: [b.phi(i) for i in S.index_set()]
[2, 0, 0, 1, 1]
TESTS::
sage: S = crystals.OddNegativeRoots(['A', [2,1]])
sage: def count_f(x, i):
....: ret = -1
....: while x is not None:
....: x = x.f(i)
....: ret += 1
....: return ret
sage: for x in S:
....: for i in S.index_set():
....: assert x.phi(i) == count_f(x, i)
"""
if i == 0:
return ZZ.zero() if (-1,1) in self.value else ZZ.one()
count = 0
ret = 0
if i < 0:
lst = sorted(self.value, key=lambda x: (x[1], -x[0]))
for val in reversed(lst):
# We don't have to check val[1] because this is an odd root
if val[0] == i:
if count == 0:
ret += 1
else:
count -= 1
elif val[0] == i - 1:
count += 1
else: # i > 0
lst = sorted(self.value, key=lambda x: (-x[0], -x[1]))
for val in lst:
# We don't have to check val[0] because this is an odd root
if val[1] == i:
if count == 0:
ret += 1
else:
count -= 1
elif val[1] == i + 1:
count += 1
return ret
示例4: iterator_fast
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import zero [as 别名]
def iterator_fast(n, l):
"""
Iterate over all ``l`` weighted integer vectors with total weight ``n``.
INPUT:
- ``n`` -- an integer
- ``l`` -- the weights in weakly decreasing order
EXAMPLES::
sage: from sage.combinat.integer_vector_weighted import iterator_fast
sage: list(iterator_fast(3, [2,1,1]))
[[1, 1, 0], [1, 0, 1], [0, 3, 0], [0, 2, 1], [0, 1, 2], [0, 0, 3]]
sage: list(iterator_fast(2, [2]))
[[1]]
Test that :trac:`20491` is fixed::
sage: type(list(iterator_fast(2, [2]))[0][0])
<type 'sage.rings.integer.Integer'>
"""
if n < 0:
return
zero = ZZ.zero()
one = ZZ.one()
if not l:
if n == 0:
yield []
return
if len(l) == 1:
if n % l[0] == 0:
yield [n // l[0]]
return
k = 0
cur = [n // l[k] + one]
rem = n - cur[-1] * l[k] # Amount remaining
while cur:
cur[-1] -= one
rem += l[k]
if rem == zero:
yield cur + [zero] * (len(l) - len(cur))
elif cur[-1] < zero or rem < zero:
rem += cur.pop() * l[k]
k -= 1
elif len(l) == len(cur) + 1:
if rem % l[-1] == zero:
yield cur + [rem // l[-1]]
else:
k += 1
cur.append(rem // l[k] + one)
rem -= cur[-1] * l[k]
示例5: __init__
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import zero [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)
示例6: s
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import zero [as 别名]
def s(self, n, i):
"""
Return the action of the ``i``-th simple reflection on the
internal representation of weights by tuples ``n`` in ``self``.
EXAMPLES::
sage: V = IntegrableRepresentation(RootSystem(['A',2,1]).weight_lattice(extended=true).fundamental_weight(0))
sage: [V.s((0,0,0),i) for i in V._index_set]
[(1, 0, 0), (0, 0, 0), (0, 0, 0)]
"""
ret = list(n) # This makes a copy
ret[i] += self._Lam._monomial_coefficients.get(i, ZZ.zero())
ret[i] -= sum(val * self._cartan_matrix[i,j] for j,val in enumerate(n))
return tuple(ret)
示例7: euclidean_degree
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import zero [as 别名]
def euclidean_degree(self):
r"""
Return the degree of this element as an element of a euclidean
domain.
In a field, this returns 0 for all but the zero element (for
which it is undefined).
EXAMPLES::
sage: QQ.one().euclidean_degree()
0
"""
if self.is_zero():
raise ValueError("euclidean degree not defined for the zero element")
from sage.rings.all import ZZ
return ZZ.zero()
示例8: Birkhoff_polytope
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import zero [as 别名]
def Birkhoff_polytope(self, n):
"""
Return the Birkhoff polytope with `n!` vertices.
The vertices of this polyhedron are the (flattened) `n` by `n`
permutation matrices. So the ambient vector space has dimension `n^2`
but the dimension of the polyhedron is `(n-1)^2`.
INPUT:
- ``n`` -- a positive integer giving the size of the permutation matrices.
.. SEEALSO::
:meth:`sage.matrix.matrix2.Matrix.as_sum_of_permutations` -- return
the current matrix as a sum of permutation matrices
EXAMPLES::
sage: b3 = polytopes.Birkhoff_polytope(3)
sage: b3.f_vector()
(1, 6, 15, 18, 9, 1)
sage: print b3.ambient_dim(), b3.dim()
9 4
sage: b3.is_lattice_polytope()
True
sage: p3 = b3.ehrhart_polynomial() # optional - latte_int
sage: p3 # optional - latte_int
1/8*t^4 + 3/4*t^3 + 15/8*t^2 + 9/4*t + 1
sage: [p3(i) for i in [1,2,3,4]] # optional - latte_int
[6, 21, 55, 120]
sage: [len((i*b3).integral_points()) for i in [1,2,3,4]]
[6, 21, 55, 120]
sage: b4 = polytopes.Birkhoff_polytope(4)
sage: print b4.n_vertices(), b4.ambient_dim(), b4.dim()
24 16 9
"""
from itertools import permutations
verts = []
for p in permutations(range(n)):
verts.append( [ZZ.one() if p[i]==j else ZZ.zero() for j in range(n) for i in range(n) ] )
return Polyhedron(vertices=verts, base_ring=ZZ)
示例9: _from_weight_helper
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import zero [as 别名]
def _from_weight_helper(self, mu, check=False):
r"""
Return the coefficients of a tuple of the weight ``mu`` expressed
in terms of the simple roots in ``self``.
The tuple ``n`` is defined as the tuple `(n_0, n_1, \ldots)`
such that `\mu = \sum_{i \in I} n_i \alpha_i`.
INPUT:
- ``mu`` -- an element in the root lattice
.. TODO::
Implement this as a section map of the inverse of the
coercion from `Q \to P`.
EXAMPLES::
sage: Lambda = RootSystem(['A',2,1]).weight_lattice(extended=true).fundamental_weights()
sage: V = IntegrableRepresentation(2*Lambda[2])
sage: V.to_weight((1,0,0))
-2*Lambda[0] + Lambda[1] + 3*Lambda[2] - delta
sage: delta = V.weight_lattice().null_root()
sage: V._from_weight_helper(2*Lambda[0] - Lambda[1] - 1*Lambda[2] + delta)
(1, 0, 0)
"""
mu = self._P(mu)
zero = ZZ.zero()
n0 = mu.monomial_coefficients().get('delta', zero)
mu0 = mu - n0 * self._P.simple_root(self._cartan_type.special_node())
ret = [n0] # This should be in ZZ because it is in the weight lattice
mc_mu0 = mu0.monomial_coefficients()
for ii, i in enumerate(self._index_set_classical):
# -1 for indexing
ret.append( sum(self._cminv[ii,ij] * mc_mu0.get(j, zero)
for ij, j in enumerate(self._index_set_classical)) )
if check:
return all(x in ZZ for x in ret)
else:
return tuple(ZZ(x) for x in ret)
示例10: _inner_pq
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import zero [as 别名]
def _inner_pq(self, pelt, qelt):
"""
Symmetric form between an element of the weight and root lattices
associated to ``self``.
.. WARNING:
If ``qelt`` accidentally gets coerced into the extended weight
lattice, this will return an answer, and it will be wrong. To make
this code robust, parents should be checked. This is not done
since in the application the parents are known, so checking would
unnecessarily slow us down.
EXAMPLES::
sage: P = RootSystem(['F',4,1]).weight_lattice(extended=true)
sage: Lambda = P.fundamental_weights()
sage: V = IntegrableRepresentation(Lambda[0])
sage: alpha = V.root_lattice().simple_roots()
sage: Matrix([[V._inner_pq(P(alpha[i]), alpha[j]) for j in V._index_set] for i in V._index_set])
[ 2 -1 0 0 0]
[ -1 2 -1 0 0]
[ 0 -1 2 -1 0]
[ 0 0 -1 1 -1/2]
[ 0 0 0 -1/2 1]
sage: P = RootSystem(['G',2,1]).weight_lattice(extended=true)
sage: P = RootSystem(['G',2,1]).weight_lattice(extended=true)
sage: Lambda = P.fundamental_weights()
sage: V = IntegrableRepresentation(Lambda[0])
sage: alpha = V.root_lattice().simple_roots()
sage: Matrix([[V._inner_pq(Lambda[i],alpha[j]) for j in V._index_set] for i in V._index_set])
[ 1 0 0]
[ 0 1/3 0]
[ 0 0 1]
"""
mcp = pelt.monomial_coefficients()
mcq = qelt.monomial_coefficients()
zero = ZZ.zero()
return sum(mcp.get(i, zero) * mcq[i] / self._eps[i] for i in mcq)
示例11: an_element
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import zero [as 别名]
def an_element(self):
"""
Return a point of the set
OUTPUT:
A real number. ``ValueError`` if the set is empty.
EXAMPLES::
sage: RealSet.open_closed(0, 1).an_element()
1
sage: RealSet(0, 1).an_element()
1/2
sage: RealSet(-oo,+oo).an_element()
0
sage: RealSet(-oo,7).an_element()
6
sage: RealSet(7,+oo).an_element()
8
"""
from sage.rings.infinity import AnInfinity
if len(self._intervals) == 0:
raise ValueError('set is empty')
i = self._intervals[0]
if isinstance(i.lower(), AnInfinity):
if isinstance(i.upper(), AnInfinity):
return ZZ.zero()
else:
return i.upper() - 1
if isinstance(i.upper(), AnInfinity):
return i.lower() + 1
if i.lower_closed():
return i.lower()
if i.upper_closed():
return i.upper()
return (i.lower() + i.upper())/ZZ(2)
示例12: dimension_new_cusp_forms
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import zero [as 别名]
def dimension_new_cusp_forms(self, k=2, p=0):
r"""
Return the dimension of the space of new (or `p`-new)
weight `k` cusp forms for this congruence subgroup.
INPUT:
- `k` -- an integer (default: 2), the weight. Not fully
implemented for `k = 1`.
- `p` -- integer (default: 0); if nonzero, compute the
`p`-new subspace.
OUTPUT: Integer
ALGORITHM:
This comes from the formula given in Theorem 1 of
http://www.math.ubc.ca/~gerg/papers/downloads/DSCFN.pdf
EXAMPLES::
sage: Gamma0(11000).dimension_new_cusp_forms()
240
sage: Gamma0(11000).dimension_new_cusp_forms(k=1)
0
sage: Gamma0(22).dimension_new_cusp_forms(k=4)
3
sage: Gamma0(389).dimension_new_cusp_forms(k=2,p=17)
32
TESTS::
sage: L = [1213, 1331, 2169, 2583, 2662, 2745, 3208,
....: 3232, 3465, 3608, 4040, 4302, 4338]
sage: all(Gamma0(N).dimension_new_cusp_forms(2)==100 for N in L)
True
"""
from sage.arith.all import moebius
from sage.functions.other import floor
N = self.level()
k = ZZ(k)
if not(p == 0 or N % p):
return (self.dimension_cusp_forms(k) -
2 * self.restrict(N // p).dimension_new_cusp_forms(k))
if k < 2 or k % 2:
return ZZ.zero()
factors = list(N.factor())
def s0(q, a):
# function s_0^#
if a == 1:
return 1 - 1/q
elif a == 2:
return 1 - 1/q - 1/q**2
else:
return (1 - 1/q) * (1 - 1/q**2)
def vinf(q, a):
# function v_oo^#
if a % 2:
return 0
elif a == 2:
return q - 2
else:
return q**(a/2 - 2) * (q - 1)**2
def v2(q, a):
# function v_2^#
if q % 4 == 1:
if a == 2:
return -1
else:
return 0
elif q % 4 == 3:
if a == 1:
return -2
elif a == 2:
return 1
else:
return 0
elif a in (1, 2):
return -1
elif a == 3:
return 1
else:
return 0
def v3(q, a):
# function v_3^#
if q % 3 == 1:
if a == 2:
return -1
else:
return 0
elif q % 3 == 2:
if a == 1:
#.........这里部分代码省略.........
示例13: __init__
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import zero [as 别名]
#.........这里部分代码省略.........
::
sage: Cusp(oo,oo)
Traceback (most recent call last):
...
TypeError: unable to convert (+Infinity, +Infinity) to a cusp
::
sage: Cusp(Cusp(oo),oo)
Traceback (most recent call last):
...
TypeError: unable to convert (Infinity, +Infinity) to a cusp
"""
if parent is None:
parent = Cusps
Element.__init__(self, parent)
if not check:
self.__a = a
self.__b = b
return
if b is None:
if isinstance(a, Integer):
self.__a = a
self.__b = ZZ.one()
elif isinstance(a, Rational):
self.__a = a.numer()
self.__b = a.denom()
elif is_InfinityElement(a):
self.__a = ZZ.one()
self.__b = ZZ.zero()
elif isinstance(a, Cusp):
self.__a = a.__a
self.__b = a.__b
elif isinstance(a, integer_types):
self.__a = ZZ(a)
self.__b = ZZ.one()
elif isinstance(a, (tuple, list)):
if len(a) != 2:
raise TypeError("unable to convert %r to a cusp" % a)
if ZZ(a[1]) == 0:
self.__a = ZZ.one()
self.__b = ZZ.zero()
return
try:
r = QQ((a[0], a[1]))
self.__a = r.numer()
self.__b = r.denom()
except (ValueError, TypeError):
raise TypeError("unable to convert %r to a cusp" % a)
else:
try:
r = QQ(a)
self.__a = r.numer()
self.__b = r.denom()
except (ValueError, TypeError):
raise TypeError("unable to convert %r to a cusp" % a)
return
if is_InfinityElement(b):
if is_InfinityElement(a) or (isinstance(a, Cusp) and a.is_infinity()):
raise TypeError("unable to convert (%r, %r) to a cusp" % (a, b))
self.__a = ZZ.zero()
示例14: integer_vectors_nk_fast_iter
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import zero [as 别名]
def integer_vectors_nk_fast_iter(n, k):
"""
A fast iterator for integer vectors of ``n`` of length ``k`` which
yields Python lists filled with Sage Integers.
EXAMPLES::
sage: from sage.combinat.integer_vector import integer_vectors_nk_fast_iter
sage: list(integer_vectors_nk_fast_iter(3, 2))
[[3, 0], [2, 1], [1, 2], [0, 3]]
sage: list(integer_vectors_nk_fast_iter(2, 2))
[[2, 0], [1, 1], [0, 2]]
sage: list(integer_vectors_nk_fast_iter(1, 2))
[[1, 0], [0, 1]]
We check some corner cases::
sage: list(integer_vectors_nk_fast_iter(5, 1))
[[5]]
sage: list(integer_vectors_nk_fast_iter(1, 1))
[[1]]
sage: list(integer_vectors_nk_fast_iter(2, 0))
[]
sage: list(integer_vectors_nk_fast_iter(0, 2))
[[0, 0]]
sage: list(integer_vectors_nk_fast_iter(0, 0))
[[]]
"""
# "bad" input
if n < 0 or k < 0:
return
# Check some corner cases first
if not k:
if not n:
yield []
return
n = Integer(n)
if k == 1:
yield [n]
return
zero = ZZ.zero()
one = ZZ.one()
k = int(k)
pos = 0 # Current position
rem = zero # Amount remaining
cur = [n] + [zero] * (k - 1) # Current list
yield list(cur)
while pos >= 0:
if not cur[pos]:
pos -= 1
continue
cur[pos] -= one
rem += one
if not rem:
yield list(cur)
elif pos == k - 2:
cur[pos + 1] = rem
yield list(cur)
cur[pos + 1] = zero
else:
pos += 1
cur[pos] = rem # Guaranteed to be at least 1
rem = zero
yield list(cur)
示例15: number_of_SSRCT
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import zero [as 别名]
def number_of_SSRCT(content_comp, shape_comp):
r"""
The number of semi-standard reverse composition tableaux.
The dual quasisymmetric-Schur functions satisfy a left Pieri rule
where `S_n dQS_\gamma` is a sum over dual quasisymmetric-Schur
functions indexed by compositions which contain the composition
`\gamma`. The definition of an SSRCT comes from this rule. The
number of SSRCT of content `\beta` and shape `\alpha` is equal to
the number of SSRCT of content `(\beta_2, \ldots, \beta_\ell)`
and shape `\gamma` where `dQS_\alpha` appears in the expansion of
`S_{\beta_1} dQS_\gamma`.
In sage the recording tableau for these objects are called
:class:`~sage.combinat.composition_tableau.CompositionTableaux`.
INPUT:
- ``content_comp``, ``shape_comp`` -- compositions
OUTPUT:
- An integer
EXAMPLES::
sage: from sage.combinat.ncsf_qsym.combinatorics import number_of_SSRCT
sage: number_of_SSRCT(Composition([3,1]), Composition([1,3]))
0
sage: number_of_SSRCT(Composition([1,2,1]), Composition([1,3]))
1
sage: number_of_SSRCT(Composition([1,1,2,2]), Composition([3,3]))
2
sage: all(CompositionTableaux(be).cardinality()
....: == sum(number_of_SSRCT(al,be)*binomial(4,len(al))
....: for al in Compositions(4))
....: for be in Compositions(4))
True
"""
if len(content_comp) == 1:
if len(shape_comp) == 1:
return ZZ.one()
else:
return ZZ.zero()
s = ZZ.zero()
cond = lambda al,be: all(al[j] <= be_val
and not any(al[i] <= k and k <= be[i]
for k in range(al[j], be_val)
for i in range(j))
for j, be_val in enumerate(be))
C = Compositions(content_comp.size()-content_comp[0],
inner=[1]*len(shape_comp),
outer=list(shape_comp))
for x in C:
if cond(x, shape_comp):
s += number_of_SSRCT(Composition(content_comp[1:]), x)
if shape_comp[0] <= content_comp[0]:
C = Compositions(content_comp.size()-content_comp[0],
inner=[min(val, shape_comp[0]+1)
for val in shape_comp[1:]],
outer=shape_comp[1:])
Comps = Compositions()
for x in C:
if cond([shape_comp[0]]+list(x), shape_comp):
s += number_of_SSRCT(Comps(content_comp[1:]), x)
return s