# 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)

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

add heights to integer.pyx and remove special case

homogenize(n)

Return the homogenization of self at the nth coordinate.

INPUT:

• n – integer between 0 and dimension of self, inclusive.

OUTPUT:

• A point in the projectivization of the codomain of self

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 – a SchemeMorphism_polynomial with self if f.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 self 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 – a SchemeMorphism_polynomial with self in f.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)

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)

class sage.schemes.affine.affine_point.SchemeMorphism_point_affine_finite_field(X, v, check=True)

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)

Every point is preperiodic over a finite field. This function returns the pair $$[m,n]$$ where $$m$$ is the preperiod and $$n$$ is the period of the point self by f.

INPUT:

• f – a ScemeMorphism_polynomial with self in f.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]


#### Previous topic

Affine $$n$$ space over a ring

#### Next topic

Morphisms on affine varieties