Polynomial morphisms for products of projective spaces¶
This class builds on the projective space class and its point and morphism classes.
EXAMPLES:
sage: P1xP1.<x,y,u,v> = ProductProjectiveSpaces(QQ, [1, 1])
sage: H = End(P1xP1)
sage: H([x^2*u, y^2*v, x*v^2, y*u^2])
Scheme endomorphism of Product of projective spaces P^1 x P^1 over Rational Field
Defn: Defined by sending (x : y , u : v) to
(x^2*u : y^2*v , x*v^2 : y*u^2).
-
class
sage.schemes.product_projective.morphism.
ProductProjectiveSpaces_morphism_ring
(parent, polys, check=True)¶ Bases:
sage.schemes.generic.morphism.SchemeMorphism_polynomial
The class of morphisms on products of projective spaces.
The components are projective space morphisms.
EXAMPLES:
sage: T.<x,y,z,w,u> = ProductProjectiveSpaces([2, 1], QQ) sage: H = T.Hom(T) sage: H([x^2, y^2, z^2, w^2, u^2]) Scheme endomorphism of Product of projective spaces P^2 x P^1 over Rational Field Defn: Defined by sending (x : y : z , w : u) to (x^2 : y^2 : z^2 , w^2 : u^2).
-
is_morphism
()¶ Returns
True
if this mapping is a morphism of products of projective spaces.For each component space of the codomain of this mapping we consider the subscheme of the domain of this map generated by the corresponding coordinates of the map. This map is a morphism if and only if each of these subschemes has no points.
OUTPUT: Boolean.
EXAMPLES:
sage: Z.<a,b,x,y,z> = ProductProjectiveSpaces([1, 2], ZZ) sage: H = End(Z) sage: f = H([a^2, b^2, x*z-y*z, x^2-y^2, z^2]) sage: f.is_morphism() False
sage: P.<x,y,z,u,v,w>=ProductProjectiveSpaces([2, 2], QQ) sage: H = End(P) sage: f = H([u, v, w, u^2, v^2, w^2]) sage: f.is_morphism() True
sage: P.<x,y,z,w,u> = ProductProjectiveSpaces([2, 1], QQ) sage: Q.<a,b,c,d,e> = ProductProjectiveSpaces([1, 2], QQ) sage: H = Hom(P, Q) sage: f = H([x^2, y^2, u^3, w^3, u^3]) sage: f.is_morphism() False
-
nth_iterate
(P, n, normalize=False)¶ For a map of this morphism and a point \(P\) in
self.domain()
this function returns the nth iterate of \(P\) by this morphism.If
normalize
isTrue
, then the coordinates are automatically normalized.Todo
Is there a more efficient way to do this?
INPUT:
P
– a point inself.domain()
.n
– a positive integer.normalize
- Boolean (optional Default:False
).
OUTPUT:
- A point in
self.codomain()
.
EXAMPLES:
sage: Z.<a,b,x,y,z> = ProductProjectiveSpaces([1, 2], QQ) sage: H = End(Z) sage: f = H([a^3, b^3 + a*b^2, x^2, y^2 - z^2, z*y]) sage: P = Z([1, 1, 1, 1, 1]) sage: f.nth_iterate(P, 3) (1/1872 : 1 , 1 : 1 : 0)
-
nth_iterate_map
(n)¶ This function returns the nth iterate of this morphsim as a function on
self.domain()
.ALGORITHM:
Uses a form of successive squaring to reduce computations.
Todo
This could be improved.
INPUT:
n
– a positive integer.
OUTPUT:
- A map between products of projective spaces.
EXAMPLES:
sage: Z.<a,b,x,y,z> = ProductProjectiveSpaces([1 , 2], QQ) sage: H = End(Z) sage: f = H([a^3, b^3, x^2, y^2, z^2]) sage: f.nth_iterate_map(3) Scheme endomorphism of Product of projective spaces P^1 x P^2 over Rational Field Defn: Defined by sending (a : b , x : y : z) to (a^27 : b^27 , x^8 : y^8 : z^8).
-
orbit
(P, N, **kwds)¶ Returns the orbit of \(P\) by this morphism.
If \(N\) is an integer it returns \([P,self(P),\ldots,self^N(P)]\).
If \(n\) is a list or tuple \(n = [m, k]\) it returns \([self^m(P),\ldots,self^k(P)]\). Automatically normalize the points if
normalize == True
. Perform the checks on point initialize ifcheck==True
.INPUT:
P
– a point inself.domain()
.n
– a non-negative integer or list or tuple of two non-negative integers.
kwds:
check
– boolean (optional - default:True
).normalize
– boolean (optional - default:False
).
OUTPUT:
- a list of points in
self.codomain()
.
EXAMPLES:
sage: Z.<a,b,x,y,z> = ProductProjectiveSpaces([1, 2], QQ) sage: H = End(Z) sage: f = H([a^3, b^3 + a*b^2, x^2, y^2 - z^2, z*y]) sage: P = Z([1, 1, 1, 1, 1]) sage: f.orbit(P, 3) [(1 : 1 , 1 : 1 : 1), (1/2 : 1 , 1 : 0 : 1), (1/12 : 1 , -1 : 1 : 0), (1/1872 : 1 , 1 : 1 : 0)]
-