Points on affine varieties¶
Scheme morphism for points on affine varieties.
AUTHORS:
- David Kohel, William Stein
- Volker Braun (2011-08-08): Renamed classes, more documentation, misc cleanups.
- Ben Hutz (2013)
-
class
sage.schemes.affine.affine_point.
SchemeMorphism_point_affine
(X, v, check=True)¶ Bases:
sage.schemes.generic.morphism.SchemeMorphism_point
A rational point on an affine scheme.
INPUT:
X
– a subscheme of an ambient affine space over a ring \(R\).v
– a list/tuple/iterable of coordinates in \(R\).check
– boolean (optional, default:True
). Whether to check the input for consistency.
EXAMPLES:
sage: A = AffineSpace(2, QQ) sage: A(1, 2) (1, 2)
-
global_height
(prec=None)¶ Returns the logarithmic height of the point.
INPUT:
prec
– desired floating point precision (default: default RealField precision).
OUTPUT:
- a real number.
EXAMPLES:
sage: P.<x,y> = AffineSpace(QQ, 2) sage: Q = P(41, 1/12) sage: Q.global_height() 3.71357206670431
sage: P = AffineSpace(ZZ, 4, 'x') sage: Q = P(3, 17, -51, 5) sage: Q.global_height() 3.93182563272433
sage: R.<x> = PolynomialRing(QQ) sage: k.<w> = NumberField(x^2+5) sage: A = AffineSpace(k, 2, 'z') sage: A([3, 5*w+1]).global_height(prec=100) 2.4181409534757389986565376694
Todo
P-adic heights.
-
homogenize
(n)¶ Return the homogenization of the point at the
nth
coordinate.INPUT:
n
– integer between 0 and dimension of the map, inclusive.
OUTPUT:
- A point in the projectivization of the codomain of the map .
EXAMPLES:
sage: A.<x,y> = AffineSpace(ZZ, 2) sage: Q = A(2, 3) sage: Q.homogenize(2).dehomogenize(2) == Q True :: sage: A.<x,y> = AffineSpace(QQ, 2) sage: Q = A(2, 3) sage: P = A(0, 1) sage: Q.homogenize(2).codomain() == P.homogenize(2).codomain() True
-
nth_iterate
(f, n)¶ Returns the point \(f^n(self)\)
INPUT:
f
– aSchemeMorphism_polynomial
withself
iff.domain()
.n
– a positive integer.
OUTPUT:
- a point in
f.codomain()
.
EXAMPLES:
sage: A.<x,y> = AffineSpace(QQ, 2) sage: H = Hom(A, A) sage: f = H([(x-2*y^2)/x,3*x*y]) sage: A(9,3).nth_iterate(f, 3) (-104975/13123, -9566667)
sage: A.<x,y> = AffineSpace(ZZ, 2) sage: X = A.subscheme([x-y^2]) sage: H = Hom(X, X) sage: f = H([9*y^2, 3*y]) sage: X(9, 3).nth_iterate(f, 4) (59049, 243)
-
orbit
(f, N)¶ Returns the orbit of the point by \(f\).
If \(n\) is an integer it returns \([self,f(self), \ldots, f^{n}(self)]\).
If \(n\) is a list or tuple \(n=[m, k]\) it returns \([f^{m}(self), \ldots, f^{k}(self)]\).
INPUT:
f
– aSchemeMorphism_polynomial
with the point inf.domain()
.N
– a non-negative integer or list or tuple of two non-negative integers.
OUTPUT:
- a list of points in
f.codomain()
.
EXAMPLES:
sage: A.<x,y>=AffineSpace(QQ, 2) sage: H = Hom(A, A) sage: f = H([(x-2*y^2)/x, 3*x*y]) sage: A(9, 3).orbit(f, 3) [(9, 3), (-1, 81), (13123, -243), (-104975/13123, -9566667)]
sage: A.<x> = AffineSpace(QQ, 1) sage: H = Hom(A, A) sage: f = H([(x-2)/x]) sage: A(1/2).orbit(f,[1, 3]) [(-3), (5/3), (-1/5)]
sage: A.<x,y> = AffineSpace(ZZ, 2) sage: X = A.subscheme([x-y^2]) sage: H = Hom(X, X) sage: f = H([9*y^2, 3*y]) sage: X(9, 3).orbit(f, (0, 4)) [(9, 3), (81, 9), (729, 27), (6561, 81), (59049, 243)]
-
class
sage.schemes.affine.affine_point.
SchemeMorphism_point_affine_field
(X, v, check=True)¶ Bases:
sage.schemes.affine.affine_point.SchemeMorphism_point_affine
The Python constructor.
See
SchemeMorphism_point_affine
for details.TESTS:
sage: from sage.schemes.affine.affine_point import SchemeMorphism_point_affine sage: A3.<x,y,z> = AffineSpace(QQ, 3) sage: SchemeMorphism_point_affine(A3(QQ), [1, 2, 3]) (1, 2, 3)
-
intersection_multiplicity
(X)¶ Return the intersection multiplicity of the codomain of this point and
X
at this point.This uses the intersection_multiplicity implementations for projective/affine subschemes. This point must be a point on an affine subscheme.
INPUT:
X
– a subscheme in the same ambient space as that of the codomain of this point.
OUTPUT: Integer.
EXAMPLES:
sage: A.<x,y> = AffineSpace(GF(17), 2) sage: X = A.subscheme([y^2 - x^3 + 2*x^2 - x]) sage: Y = A.subscheme([y - 2*x + 2]) sage: Q1 = Y([1,0]) sage: Q1.intersection_multiplicity(X) 2 sage: Q2 = X([4,6]) sage: Q2.intersection_multiplicity(Y) 1
sage: A.<x,y,z,w> = AffineSpace(QQ, 4) sage: X = A.subscheme([x^2 - y*z^2, z - 2*w^2]) sage: Q = A([2,1,2,-1]) sage: Q.intersection_multiplicity(X) Traceback (most recent call last): ... TypeError: this point must be a point on an affine subscheme
-
multiplicity
()¶ Return the multiplicity of this point on its codomain.
Uses the subscheme multiplicity implementation. This point must be a point on an affine subscheme.
OUTPUT: an integer.
EXAMPLES:
sage: A.<x,y,z> = AffineSpace(QQ, 3) sage: X = A.subscheme([y^2 - x^7*z]) sage: Q1 = X([1,1,1]) sage: Q1.multiplicity() 1 sage: Q2 = X([0,0,2]) sage: Q2.multiplicity() 2
-
weil_restriction
()¶ Compute the Weil restriction of this point over some extension field.
If the field is a finite field, then this computes the Weil restriction to the prime subfield.
A Weil restriction of scalars - denoted \(Res_{L/k}\) - is a functor which, for any finite extension of fields \(L/k\) and any algebraic variety \(X\) over \(L\), produces another corresponding variety \(Res_{L/k}(X)\), defined over \(k\). It is useful for reducing questions about varieties over large fields to questions about more complicated varieties over smaller fields. This functor applied to a point gives the equivalent point on the Weil restriction of its codomain.
OUTPUT: Scheme point on the Weil restriction of the codomain of this point.
EXAMPLES:
sage: A.<x,y,z> = AffineSpace(GF(5^3, 't'), 3) sage: X = A.subscheme([y^2-x*z, z^2+y]) sage: Y = X.weil_restriction() sage: P = X([1, -1, 1]) sage: Q = P.weil_restriction();Q (1, 0, 0, 4, 0, 0, 1, 0, 0) sage: Q.codomain() == Y True
sage: R.<x> = QQ[] sage: K.<w> = NumberField(x^5-2) sage: R.<x> = K[] sage: L.<v> = K.extension(x^2+w) sage: A.<x,y> = AffineSpace(L, 2) sage: P = A([w^3-v,1+w+w*v]) sage: P.weil_restriction() (w^3, -1, w + 1, w)
-
-
class
sage.schemes.affine.affine_point.
SchemeMorphism_point_affine_finite_field
(X, v, check=True)¶ Bases:
sage.schemes.affine.affine_point.SchemeMorphism_point_affine_field
The Python constructor.
See
SchemeMorphism_point_affine
for details.TESTS:
sage: from sage.schemes.affine.affine_point import SchemeMorphism_point_affine sage: A3.<x,y,z> = AffineSpace(QQ, 3) sage: SchemeMorphism_point_affine(A3(QQ), [1, 2, 3]) (1, 2, 3)
-
orbit_structure
(f)¶ This function returns the pair \([m, n]\) where \(m\) is the preperiod and \(n\) is the period of the point by
f
.Every point is preperiodic over a finite field.
INPUT:
f
– aScemeMorphism_polynomial
with the point inf.domain()
.
OUTPUT:
- a list \([m, n]\) of integers.
EXAMPLES:
sage: P.<x,y,z> = AffineSpace(GF(5), 3) sage: H = Hom(P, P) sage: f = H([x^2 + y^2, y^2, z^2 + y*z]) sage: P(1, 1, 1).orbit_structure(f) [0, 6]
sage: P.<x,y,z> = AffineSpace(GF(7), 3) sage: X = P.subscheme(x^2 - y^2) sage: H = Hom(X, X) sage: f = H([x^2, y^2, z^2]) sage: X(1, 1, 2).orbit_structure(f) [0, 2]
sage: P.<x,y> = AffineSpace(GF(13), 2) sage: H = Hom(P, P) sage: f = H([x^2 - y^2, y^2]) sage: P(3, 4).orbit_structure(f) [2, 6]
-