本文整理汇总了Python中sage.rings.all.is_FiniteField函数的典型用法代码示例。如果您正苦于以下问题:Python is_FiniteField函数的具体用法?Python is_FiniteField怎么用?Python is_FiniteField使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了is_FiniteField函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: rational_points
def rational_points(self, F=None):
"""
Return the list of `F`-rational points on the affine space self,
where `F` is a given finite field, or the base ring of self.
EXAMPLES::
sage: A = AffineSpace(1, GF(3))
sage: A.rational_points()
[(0), (1), (2)]
sage: A.rational_points(GF(3^2, 'b'))
[(0), (2*b), (b + 1), (b + 2), (2), (b), (2*b + 2), (2*b + 1), (1)]
sage: AffineSpace(2, ZZ).rational_points(GF(2))
[(0, 0), (1, 0), (0, 1), (1, 1)]
TESTS::
sage: AffineSpace(2, QQ).rational_points()
Traceback (most recent call last):
...
TypeError: Base ring (= Rational Field) must be a finite field.
sage: AffineSpace(1, GF(3)).rational_points(ZZ)
Traceback (most recent call last):
...
TypeError: Second argument (= Integer Ring) must be a finite field.
"""
if F == None:
if not is_FiniteField(self.base_ring()):
raise TypeError, "Base ring (= %s) must be a finite field."%self.base_ring()
return [ P for P in self ]
elif not is_FiniteField(F):
raise TypeError, "Second argument (= %s) must be a finite field."%F
return [ P for P in self.base_extend(F) ]
开发者ID:dagss,项目名称:sage,代码行数:34,代码来源:affine_space.py
示例2: SU
def SU(n, R, var='a'):
"""
The special unitary group `SU( d, R )` consists of all `d \times d`
matrices that preserve a nondegenerate sequilinear form over the
ring `R` and have determinant one.
.. note::
For a finite field the matrices that preserve a sesquilinear
form over `F_q` live over `F_{q^2}`. So ``SU(n,q)`` for
integer ``q`` constructs the matrix group over the base ring
``GF(q^2)``.
.. note::
This group is also available via ``groups.matrix.SU()``.
INPUT:
- ``n`` -- a positive integer.
- ``R`` -- ring or an integer. If an integer is specified, the
corresponding finite field is used.
- ``var`` -- variable used to represent generator of the finite
field, if needed.
OUTPUT:
Return the special unitary group.
EXAMPLES::
sage: SU(3,5)
Special Unitary Group of degree 3 over Finite Field in a of size 5^2
sage: SU(3, GF(5))
Special Unitary Group of degree 3 over Finite Field in a of size 5^2
sage: SU(3,QQ)
Special Unitary Group of degree 3 over Rational Field
TESTS::
sage: groups.matrix.SU(2, 3)
Special Unitary Group of degree 2 over Finite Field in a of size 3^2
"""
degree, ring = normalize_args_vectorspace(n, R, var=var)
if is_FiniteField(ring):
q = ring.cardinality()
ring = GF(q ** 2, name=var)
name = 'Special Unitary Group of degree {0} over {1}'.format(degree, ring)
ltx = r'\text{{SU}}_{{{0}}}({1})'.format(degree, latex(ring))
if is_FiniteField(ring):
cmd = 'SU({0}, {1})'.format(degree, q)
return UnitaryMatrixGroup_gap(degree, ring, True, name, ltx, cmd)
else:
return UnitaryMatrixGroup_generic(degree, ring, True, name, ltx)
开发者ID:CETHop,项目名称:sage,代码行数:56,代码来源:unitary.py
示例3: Sp
def Sp(n, R, var='a'):
"""
Return the symplectic group of degree n over R.
.. note::
This group is also available via ``groups.matrix.Sp()``.
EXAMPLES::
sage: Sp(4,5)
Symplectic Group of rank 2 over Finite Field of size 5
sage: Sp(3,GF(7))
Traceback (most recent call last):
...
ValueError: the degree n (=3) must be even
TESTS::
sage: groups.matrix.Sp(2, 3)
Symplectic Group of rank 1 over Finite Field of size 3
"""
if n%2!=0:
raise ValueError, "the degree n (=%s) must be even"%n
if isinstance(R, (int, long, Integer)):
R = FiniteField(R, var)
if is_FiniteField(R):
return SymplecticGroup_finite_field(n, R)
else:
return SymplecticGroup_generic(n, R)
开发者ID:chos9,项目名称:sage,代码行数:29,代码来源:symplectic.py
示例4: SU
def SU(n, F, var='a'):
"""
Return the special unitary group of degree `n` over
`F`.
.. note::
This group is also available via ``groups.matrix.SU()``.
EXAMPLES::
sage: SU(3,5)
Special Unitary Group of degree 3 over Finite Field of size 5
sage: SU(3,QQ)
Traceback (most recent call last):
...
NotImplementedError: special unitary group only implemented over finite fields
TESTS::
sage: groups.matrix.SU(2, 3)
Special Unitary Group of degree 2 over Finite Field of size 3
"""
if isinstance(F, (int, long, Integer)):
F = GF(F,var)
if is_FiniteField(F):
return SpecialUnitaryGroup_finite_field(n, F, var=var)
else:
raise NotImplementedError, "special unitary group only implemented over finite fields"
开发者ID:chos9,项目名称:sage,代码行数:28,代码来源:unitary.py
示例5: points
def points(self, B=0):
"""
Return some or all rational points of a projective scheme.
INPUT:
- `B` -- integer (optional, default=0). The bound for the
coordinates.
OUTPUT:
A list of points. Over a finite field, all points are
returned. Over an infinite field, all points satisfying the
bound are returned.
EXAMPLES::
sage: P1 = ProjectiveSpace(GF(2),1)
sage: F.<a> = GF(4,'a')
sage: P1(F).points()
[(0 : 1), (1 : 0), (1 : 1), (a : 1), (a + 1 : 1)]
"""
from sage.schemes.generic.rational_point import enum_projective_rational_field
from sage.schemes.generic.rational_point import enum_projective_finite_field
R = self.value_ring()
if is_RationalField(R):
if not B > 0:
raise TypeError, "A positive bound B (= %s) must be specified."%B
return enum_projective_rational_field(self,B)
elif is_FiniteField(R):
return enum_projective_finite_field(self.extended_codomain())
else:
raise TypeError, "Unable to enumerate points over %s."%R
开发者ID:dagss,项目名称:sage,代码行数:33,代码来源:homset.py
示例6: GU
def GU(n, F, var='a'):
"""
Return the general unitary group of degree n over the finite field
F.
INPUT:
- ``n`` - a positive integer
- ``F`` - finite field
- ``var`` - variable used to represent generator of
quadratic extension of F, if needed.
.. note::
This group is also available via ``groups.matrix.GU()``.
EXAMPLES::
sage: G = GU(3,GF(7)); G
General Unitary Group of degree 3 over Finite Field of size 7
sage: G.gens()
[
[ a 0 0]
[ 0 1 0]
[ 0 0 5*a],
[6*a 6 1]
[ 6 6 0]
[ 1 0 0]
]
sage: G = GU(2,QQ)
Traceback (most recent call last):
...
NotImplementedError: general unitary group only implemented over finite fields
::
sage: G = GU(3,GF(5), var='beta')
sage: G.gens()
[
[ beta 0 0]
[ 0 1 0]
[ 0 0 3*beta],
[4*beta 4 1]
[ 4 4 0]
[ 1 0 0]
]
TESTS::
sage: groups.matrix.GU(2, 3)
General Unitary Group of degree 2 over Finite Field of size 3
"""
if isinstance(F, (int, long, Integer)):
F = GF(F,var)
if is_FiniteField(F):
return GeneralUnitaryGroup_finite_field(n, F, var)
else:
raise NotImplementedError, "general unitary group only implemented over finite fields"
开发者ID:sageb0t,项目名称:testsage,代码行数:59,代码来源:unitary.py
示例7: GL
def GL(n, R, var='a'):
"""
Return the general linear group of degree `n` over the ring
`R`.
EXAMPLES::
sage: G = GL(6,GF(5))
sage: G.order()
11064475422000000000000000
sage: G.base_ring()
Finite Field of size 5
sage: G.category()
Category of finite groups
sage: TestSuite(G).run()
sage: G = GL(6, QQ)
sage: G.category()
Category of groups
sage: TestSuite(G).run()
Here is the Cayley graph of (relatively small) finite General Linear Group::
sage: g = GL(2,3)
sage: d = g.cayley_graph(); d
Digraph on 48 vertices
sage: d.show(color_by_label=True, vertex_size=0.03, vertex_labels=False)
sage: d.show3d(color_by_label=True)
::
sage: F = GF(3); MS = MatrixSpace(F,2,2)
sage: gens = [MS([[0,1],[1,0]]),MS([[1,1],[0,1]])]
sage: G = MatrixGroup(gens)
sage: G.order()
48
sage: G.cardinality()
48
sage: H = GL(2,F)
sage: H.order()
48
sage: H == G # Do we really want this equality?
False
sage: H.as_matrix_group() == G
True
sage: H.gens()
[
[2 0]
[0 1],
[2 1]
[2 0]
]
"""
if isinstance(R, (int, long, Integer)):
R = FiniteField(R, var)
if is_FiniteField(R):
return GeneralLinearGroup_finite_field(n, R)
return GeneralLinearGroup_generic(n, R)
开发者ID:bgxcpku,项目名称:sagelib,代码行数:58,代码来源:general_linear.py
示例8: AffineSpace
def AffineSpace(n, R=None, names='x'):
r"""
Return affine space of dimension `n` over the ring `R`.
EXAMPLES:
The dimension and ring can be given in either order::
sage: AffineSpace(3, QQ, 'x')
Affine Space of dimension 3 over Rational Field
sage: AffineSpace(5, QQ, 'x')
Affine Space of dimension 5 over Rational Field
sage: A = AffineSpace(2, QQ, names='XY'); A
Affine Space of dimension 2 over Rational Field
sage: A.coordinate_ring()
Multivariate Polynomial Ring in X, Y over Rational Field
Use the divide operator for base extension::
sage: AffineSpace(5, names='x')/GF(17)
Affine Space of dimension 5 over Finite Field of size 17
The default base ring is `\ZZ`::
sage: AffineSpace(5, names='x')
Affine Space of dimension 5 over Integer Ring
There is also an affine space associated to each polynomial ring::
sage: R = GF(7)['x,y,z']
sage: A = AffineSpace(R); A
Affine Space of dimension 3 over Finite Field of size 7
sage: A.coordinate_ring() is R
True
"""
if is_MPolynomialRing(n) and R is None:
R = n
A = AffineSpace(R.ngens(), R.base_ring(), R.variable_names())
A._coordinate_ring = R
return A
if isinstance(R, (int, long, Integer)):
n, R = R, n
if R is None:
R = ZZ # default is the integers
if names is None:
if n == 0:
names = ''
else:
raise TypeError("You must specify the variables names of the coordinate ring.")
if R in _Fields:
if is_FiniteField(R):
return AffineSpace_finite_field(n, R, names)
else:
return AffineSpace_field(n, R, names)
return AffineSpace_generic(n, R, names)
开发者ID:CETHop,项目名称:sage,代码行数:55,代码来源:affine_space.py
示例9: SO
def SO(n, R, e=0, var="a"):
"""
Return the special orthogonal group of degree `n` over the
ring `R`.
INPUT:
- ``n`` - the degree
- ``R`` - ring
- ``e`` - a parameter for orthogonal groups only
depending on the invariant form
.. note::
This group is also available via ``groups.matrix.SO()``.
EXAMPLES::
sage: G = SO(3,GF(5))
sage: G.gens()
[
[2 0 0]
[0 3 0]
[0 0 1],
[3 2 3]
[0 2 0]
[0 3 1],
[1 4 4]
[4 0 0]
[2 0 4]
]
sage: G = SO(3,GF(5))
sage: G.as_matrix_group()
Matrix group over Finite Field of size 5 with 3 generators:
[[[2, 0, 0], [0, 3, 0], [0, 0, 1]], [[3, 2, 3], [0, 2, 0], [0, 3, 1]], [[1, 4, 4], [4, 0, 0], [2, 0, 4]]]
TESTS::
sage: groups.matrix.SO(2, 3, e=1)
Special Orthogonal Group of degree 2, form parameter 1, over the Finite Field of size 3
"""
if isinstance(R, (int, long, Integer)):
R = FiniteField(R, var)
if n % 2 != 0 and e != 0:
raise ValueError, "must have e = 0 for n even"
if n % 2 == 0 and e ** 2 != 1:
raise ValueError, "must have e=-1 or e=1 if n is even"
if is_FiniteField(R):
return SpecialOrthogonalGroup_finite_field(n, R, e)
else:
return SpecialOrthogonalGroup_generic(n, R, e)
开发者ID:pombredanne,项目名称:sage-1,代码行数:54,代码来源:orthogonal.py
示例10: SL
def SL(n, R, var='a'):
r"""
Return the special linear group of degree `n` over the ring
`R`.
EXAMPLES::
sage: SL(3,GF(2))
Special Linear Group of degree 3 over Finite Field of size 2
sage: G = SL(15,GF(7)); G
Special Linear Group of degree 15 over Finite Field of size 7
sage: G.category()
Category of finite groups
sage: G.order()
1956712595698146962015219062429586341124018007182049478916067369638713066737882363393519966343657677430907011270206265834819092046250232049187967718149558134226774650845658791865745408000000
sage: len(G.gens())
2
sage: G = SL(2,ZZ); G
Special Linear Group of degree 2 over Integer Ring
sage: G.gens()
[
[ 0 1]
[-1 0],
[1 1]
[0 1]
]
Next we compute generators for `\mathrm{SL}_3(\ZZ)`.
::
sage: G = SL(3,ZZ); G
Special Linear Group of degree 3 over Integer Ring
sage: G.gens()
[
[0 1 0]
[0 0 1]
[1 0 0],
[ 0 1 0]
[-1 0 0]
[ 0 0 1],
[1 1 0]
[0 1 0]
[0 0 1]
]
sage: TestSuite(G).run()
"""
if isinstance(R, (int, long, Integer)):
R = FiniteField(R, var)
if is_FiniteField(R):
return SpecialLinearGroup_finite_field(n, R)
else:
return SpecialLinearGroup_generic(n, R)
开发者ID:bgxcpku,项目名称:sagelib,代码行数:54,代码来源:special_linear.py
示例11: GO
def GO( n , R , e=0 ):
"""
Return the general orthogonal group.
EXAMPLES:
"""
if n%2!=0 and e!=0:
raise ValueError, "if e = 0, then n must be even."
if n%2 == 0 and e**2!=1:
raise ValueError, "must have e=-1 or e=1, if d is even."
if isinstance(R, (int, long, Integer)):
R = FiniteField(R)
if is_FiniteField(R):
return GeneralOrthogonalGroup_finite_field(n, R, e)
else:
return GeneralOrthogonalGroup_generic(n, R, e)
开发者ID:bgxcpku,项目名称:sagelib,代码行数:16,代码来源:orthogonal.py
示例12: rational_points
def rational_points(self, F=None):
"""
Return the list of `F`-rational points on the affine space self,
where `F` is a given finite field, or the base ring of self.
EXAMPLES::
sage: P = ProjectiveSpace(1, GF(3))
sage: P.rational_points()
[(0 : 1), (1 : 1), (2 : 1), (1 : 0)]
sage: P.rational_points(GF(3^2, 'b'))
[(0 : 1), (b : 1), (b + 1 : 1), (2*b + 1 : 1), (2 : 1), (2*b : 1), (2*b + 2 : 1), (b + 2 : 1), (1 : 1), (1 : 0)]
"""
if F == None:
return [ P for P in self ]
elif not is_FiniteField(F):
raise TypeError("Second argument (= %s) must be a finite field."%F)
return [ P for P in self.base_extend(F) ]
开发者ID:CETHop,项目名称:sage,代码行数:18,代码来源:projective_space.py
示例13: SU
def SU(n, F, var='a'):
"""
Return the special unitary group of degree `n` over
`F`.
EXAMPLES::
sage: SU(3,5)
Special Unitary Group of degree 3 over Finite Field of size 5
sage: SU(3,QQ)
Traceback (most recent call last):
...
NotImplementedError: special unitary group only implemented over finite fields
"""
if isinstance(F, (int, long, Integer)):
F = GF(F,var)
if is_FiniteField(F):
return SpecialUnitaryGroup_finite_field(n, F, var=var)
else:
raise NotImplementedError, "special unitary group only implemented over finite fields"
开发者ID:bgxcpku,项目名称:sagelib,代码行数:20,代码来源:unitary.py
示例14: Sp
def Sp(n, R, var='a'):
"""
Return the symplectic group of degree n over R.
EXAMPLES::
sage: Sp(4,5)
Symplectic Group of rank 2 over Finite Field of size 5
sage: Sp(3,GF(7))
Traceback (most recent call last):
...
ValueError: the degree n (=3) must be even
"""
if n%2!=0:
raise ValueError, "the degree n (=%s) must be even"%n
if isinstance(R, (int, long, Integer)):
R = FiniteField(R, var)
if is_FiniteField(R):
return SymplecticGroup_finite_field(n, R)
else:
return SymplecticGroup_generic(n, R)
开发者ID:bgxcpku,项目名称:sagelib,代码行数:21,代码来源:symplectic.py
示例15: normalize_args_e
def normalize_args_e(degree, ring, e):
"""
Normalize the arguments that relate the choice of quadratic form
for special orthogonal groups over finite fields.
INPUT:
- ``degree`` -- integer. The degree of the affine group, that is,
the dimension of the affine space the group is acting on.
- ``ring`` -- a ring. The base ring of the affine space.
- ``e`` -- integer, one of `+1`, `0`, `-1`. Only relevant for
finite fields and if the degree is even. A parameter that
distinguishes inequivalent invariant forms.
OUTPUT:
The integer ``e`` with values required by GAP.
TESTS::
sage: from sage.groups.matrix_gps.orthogonal import normalize_args_e
sage: normalize_args_e(2, GF(3), +1)
1
sage: normalize_args_e(3, GF(3), 0)
0
sage: normalize_args_e(3, GF(3), +1)
0
sage: normalize_args_e(2, GF(3), 0)
Traceback (most recent call last):
...
ValueError: must have e=-1 or e=1 for even degree
"""
if is_FiniteField(ring) and degree%2 == 0:
if e not in (-1, +1):
raise ValueError('must have e=-1 or e=1 for even degree')
else:
e = 0
return ZZ(e)
开发者ID:CETHop,项目名称:sage,代码行数:40,代码来源:orthogonal.py
示例16: finite_field_sqrt
def finite_field_sqrt(ring):
"""
Helper function.
INPUT:
A ring.
OUTPUT:
Integer q such that ``ring`` is the finite field with `q^2` elements.
EXAMPLES::
sage: from sage.groups.matrix_gps.unitary import finite_field_sqrt
sage: finite_field_sqrt(GF(4, 'a'))
2
"""
if not is_FiniteField(ring):
raise ValueError('not a finite field')
q, rem = ring.cardinality().sqrtrem()
if rem != 0:
raise ValueError('cardinatity not a square')
return q
开发者ID:CETHop,项目名称:sage,代码行数:24,代码来源:unitary.py
示例17: GO
def GO(n, R, e=0):
"""
Return the general orthogonal group.
.. note::
This group is also available via ``groups.matrix.GO()``.
EXAMPLES:
TESTS::
sage: groups.matrix.GO(2, 3, e=-1)
General Orthogonal Group of degree 2, form parameter -1, over the Finite Field of size 3
"""
if n % 2 != 0 and e != 0:
raise ValueError, "if e = 0, then n must be even."
if n % 2 == 0 and e ** 2 != 1:
raise ValueError, "must have e=-1 or e=1, if d is even."
if isinstance(R, (int, long, Integer)):
R = FiniteField(R)
if is_FiniteField(R):
return GeneralOrthogonalGroup_finite_field(n, R, e)
else:
return GeneralOrthogonalGroup_generic(n, R, e)
开发者ID:pombredanne,项目名称:sage-1,代码行数:24,代码来源:orthogonal.py
示例18: EllipticCurve
#.........这里部分代码省略.........
raise ValueError, "First parameter must be a ring containing %s"%j
else:
raise ValueError, "First parameter (if present) must be a ring when j is specified"
return EllipticCurve_from_j(j, minimal_twist)
if x is None:
raise TypeError, "invalid input to EllipticCurve constructor"
if is_SymbolicEquation(x):
x = x.lhs() - x.rhs()
if parent(x) is SR:
x = x._polynomial_(rings.QQ['x', 'y'])
if rings.is_MPolynomial(x) and y is None:
f = x
if f.degree() != 3:
raise ValueError, "Elliptic curves must be defined by a cubic polynomial."
if f.degrees() == (3,2):
x, y = f.parent().gens()
elif f.degree() == (2,3):
y, x = f.parent().gens()
elif len(f.parent().gens()) == 2 or len(f.parent().gens()) == 3 and f.is_homogeneous():
# We'd need a point too...
raise NotImplementedError, "Construction of an elliptic curve from a generic cubic not yet implemented."
else:
raise ValueError, "Defining polynomial must be a cubic polynomial in two variables."
try:
if f.coefficient(x**3) < 0:
f = -f
# is there a nicer way to extract the coefficients?
a1 = a2 = a3 = a4 = a6 = 0
for coeff, mon in f:
if mon == x**3:
assert coeff == 1
elif mon == x**2:
a2 = coeff
elif mon == x:
a4 = coeff
elif mon == 1:
a6 = coeff
elif mon == y**2:
assert coeff == -1
elif mon == x*y:
a1 = -coeff
elif mon == y:
a3 = -coeff
else:
assert False
return EllipticCurve([a1, a2, a3, a4, a6])
except AssertionError:
raise NotImplementedError, "Construction of an elliptic curve from a generic cubic not yet implemented."
if rings.is_Ring(x):
if rings.is_RationalField(x):
return ell_rational_field.EllipticCurve_rational_field(x, y)
elif rings.is_FiniteField(x) or (rings.is_IntegerModRing(x) and x.characteristic().is_prime()):
return ell_finite_field.EllipticCurve_finite_field(x, y)
elif rings.is_pAdicField(x):
return ell_padic_field.EllipticCurve_padic_field(x, y)
elif rings.is_NumberField(x):
return ell_number_field.EllipticCurve_number_field(x, y)
elif x in _Fields:
return ell_field.EllipticCurve_field(x, y)
return ell_generic.EllipticCurve_generic(x, y)
if isinstance(x, unicode):
x = str(x)
if isinstance(x, str):
return ell_rational_field.EllipticCurve_rational_field(x)
if rings.is_RingElement(x) and y is None:
raise TypeError, "invalid input to EllipticCurve constructor"
if not isinstance(x, (list, tuple)):
raise TypeError, "invalid input to EllipticCurve constructor"
x = Sequence(x)
if not (len(x) in [2,5]):
raise ValueError, "sequence of coefficients must have length 2 or 5"
R = x.universe()
if isinstance(x[0], (rings.Rational, rings.Integer, int, long)):
return ell_rational_field.EllipticCurve_rational_field(x, y)
elif rings.is_NumberField(R):
return ell_number_field.EllipticCurve_number_field(x, y)
elif rings.is_pAdicField(R):
return ell_padic_field.EllipticCurve_padic_field(x, y)
elif rings.is_FiniteField(R) or (rings.is_IntegerModRing(R) and R.characteristic().is_prime()):
return ell_finite_field.EllipticCurve_finite_field(x, y)
elif R in _Fields:
return ell_field.EllipticCurve_field(x, y)
return ell_generic.EllipticCurve_generic(x, y)
开发者ID:pombredanne,项目名称:sage-1,代码行数:101,代码来源:constructor.py
示例19: GO
def GO(n, R, e=0, var='a'):
"""
Return the general orthogonal group.
The general orthogonal group `GO(n,R)` consists of all `n\times n`
matrices over the ring `R` preserving an `n`-ary positive definite
quadratic form. In cases where there are muliple non-isomorphic
quadratic forms, additional data needs to be specified to
disambiguate.
In the case of a finite field and if the degree `n` is even, then
there are two inequivalent quadratic forms and a third parameter
``e`` must be specified to disambiguate these two possibilities.
.. note::
This group is also available via ``groups.matrix.GO()``.
INPUT:
- ``n`` -- integer. The degree.
- ``R`` -- ring or an integer. If an integer is specified, the
corresponding finite field is used.
- ``e`` -- ``+1`` or ``-1``, and ignored by default. Only relevant
for finite fields and if the degree is even. A parameter that
distinguishes inequivalent invariant forms.
OUTPUT:
The general orthogonal group of given degree, base ring, and
choice of invariant form.
EXAMPLES:
sage: GO( 3, GF(7))
General Orthogonal Group of degree 3 over Finite Field of size 7
sage: GO( 3, GF(7)).order()
672
sage: GO( 3, GF(7)).gens()
(
[3 0 0] [0 1 0]
[0 5 0] [1 6 6]
[0 0 1], [0 2 1]
)
TESTS::
sage: groups.matrix.GO(2, 3, e=-1)
General Orthogonal Group of degree 2 and form parameter -1 over Finite Field of size 3
"""
degree, ring = normalize_args_vectorspace(n, R, var=var)
e = normalize_args_e(degree, ring, e)
if e == 0:
name = 'General Orthogonal Group of degree {0} over {1}'.format(degree, ring)
ltx = r'\text{{GO}}_{{{0}}}({1})'.format(degree, latex(ring))
else:
name = 'General Orthogonal Group of degree' + \
' {0} and form parameter {1} over {2}'.format(degree, e, ring)
ltx = r'\text{{GO}}_{{{0}}}({1}, {2})'.format(degree, latex(ring), '+' if e == 1 else '-')
if is_FiniteField(ring):
cmd = 'GO({0}, {1}, {2})'.format(e, degree, ring.characteristic())
return OrthogonalMatrixGroup_gap(degree, ring, False, name, ltx, cmd)
else:
return OrthogonalMatrixGroup_generic(degree, ring, False, name, ltx)
开发者ID:CETHop,项目名称:sage,代码行数:66,代码来源:orthogonal.py
示例20: ProjectiveSpace
def ProjectiveSpace(n, R=None, names='x'):
r"""
Return projective space of dimension `n` over the ring `R`.
EXAMPLES: The dimension and ring can be given in either order.
::
sage: ProjectiveSpace(3, QQ)
Projective Space of dimension 3 over Rational Field
sage: ProjectiveSpace(5, QQ)
Projective Space of dimension 5 over Rational Field
sage: P = ProjectiveSpace(2, QQ, names='XYZ'); P
Projective Space of dimension 2 over Rational Field
sage: P.coordinate_ring()
Multivariate Polynomial Ring in X, Y, Z over Rational Field
The divide operator does base extension.
::
sage: ProjectiveSpace(5)/GF(17)
Projective Space of dimension 5 over Finite Field of size 17
The default base ring is `\ZZ`.
::
sage: ProjectiveSpace(5)
Projective Space of dimension 5 over Integer Ring
There is also an projective space associated each polynomial ring.
::
sage: R = GF(7)['x,y,z']
sage: P = ProjectiveSpace(R); P
Projective Space of dimension 2 over Finite Field of size 7
sage: P.coordinate_ring()
Multivariate Polynomial Ring in x, y, z over Finite Field of size 7
sage: P.coordinate_ring() is R
True
::
sage: ProjectiveSpace(3, Zp(5), 'y')
Projective Space of dimension 3 over 5-adic Ring with capped relative precision 20
::
sage: ProjectiveSpace(2,QQ,'x,y,z')
Projective Space of dimension 2 over Rational Field
::
sage: PS.<x,y>=ProjectiveSpace(1,CC)
sage: PS
Projective Space of dimension 1 over Complex Field with 53 bits of precision
Projective spaces are not cached, i.e., there can be several with
the same base ring and dimension (to facilitate gluing
constructions).
"""
if is_MPolynomialRing(n) and R is None:
A = ProjectiveSpace(n.ngens()-1, n.base_ring())
A._coordinate_ring = n
return A
if isinstance(R, (int, long, Integer)):
n, R = R, n
if R is None:
R = ZZ # default is the integers
if R in _Fields:
if is_FiniteField(R):
return ProjectiveSpace_finite_field(n, R, names)
if is_RationalField(R):
return ProjectiveSpace_rational_field(n, R, names)
else:
return ProjectiveSpace_field(n, R, names)
elif is_CommutativeRing(R):
return ProjectiveSpace_ring(n, R, names)
else:
raise TypeError("R (=%s) must be a commutative ring"%R)
开发者ID:CETHop,项目名称:sage,代码行数:82,代码来源:projective_space.py
注:本文中的sage.rings.all.is_FiniteField函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论