Points for products of projective spaces¶
This class builds on the projective space class and its point and morphism classes.
EXAMPLES:
We construct products projective spaces of various dimensions over the same ring.:
sage: P1xP1.<x,y, u,v> = ProductProjectiveSpaces(QQ, [1, 1])
sage: P1xP1([2, 1, 3, 1])
(2 : 1 , 3 : 1)
-
class
sage.schemes.product_projective.point.
ProductProjectiveSpaces_point_field
(parent, polys, check=True)¶ Bases:
sage.schemes.product_projective.point.ProductProjectiveSpaces_point_ring
-
intersection_multiplicity
(X)¶ Return the intersection multiplicity of the codomain of this point and subscheme
X
at this point.This uses the subscheme implementation of intersection_multiplicity. This point must be a point on a subscheme of a product of projective spaces.
INPUT:
X
– a subscheme in the same ambient space as the codomain of this point.
OUTPUT: An integer.
EXAMPLES:
sage: PP.<x,y,z,u,v> = ProductProjectiveSpaces(QQ, [2,1]) sage: X = PP.subscheme([y^2*z^3*u - x^5*v]) sage: Y = PP.subscheme([u^3 - v^3, x - y]) sage: Q = X([0,0,1,1,1]) sage: Q.intersection_multiplicity(Y) 2
-
multiplicity
()¶ Return the multiplicity of this point on its codomain.
This uses the subscheme implementation of multiplicity. This point must be a point on a subscheme of a product of projective spaces.
OUTPUT: an integer.
EXAMPLES:
sage: PP.<x,y,z,w,u,v,t> = ProductProjectiveSpaces(QQ, [3,2]) sage: X = PP.subscheme([x^8*t - y^8*t + z^5*w^3*v]) sage: Q1 = X([1,1,0,0,-1,-1,1]) sage: Q1.multiplicity() 1 sage: Q2 = X([0,0,0,1,0,1,1]) sage: Q2.multiplicity() 5 sage: Q3 = X([0,0,0,1,1,0,0]) sage: Q3.multiplicity() 6
-
-
class
sage.schemes.product_projective.point.
ProductProjectiveSpaces_point_finite_field
(parent, polys, check=True)¶ Bases:
sage.schemes.product_projective.point.ProductProjectiveSpaces_point_field
-
class
sage.schemes.product_projective.point.
ProductProjectiveSpaces_point_ring
(parent, polys, check=True)¶ Bases:
sage.schemes.generic.morphism.SchemeMorphism_point
The class of points on products of projective spaces.
The components are projective space points.
EXAMPLES:
sage: T.<x,y,z,w,u> = ProductProjectiveSpaces([2, 1], QQ) sage: T.point([1, 2, 3, 4, 5]); (1/3 : 2/3 : 1 , 4/5 : 1)
-
change_ring
(R, **kwds)¶ Returns a new
ProductProjectiveSpaces_point
which is this point coerced toR
.If the keyword
check
isTrue
, then the initialization checks are performed. The user may specify the embedding intoR
with a keyword.INPUT:
R
– ring.
kwds:
check
– Boolean.embedding
– field embedding from the base ring of this point toR
.
OUTPUT:
ProductProjectiveSpaces_point
.EXAMPLES:
sage: T.<x,y,z,u,v,w> = ProductProjectiveSpaces([1, 1, 1], ZZ) sage: P = T.point([5, 3, 15, 4, 2, 6]); sage: P.change_ring(GF(3)) (1 : 0 , 0 : 1 , 1 : 0)
-
normalize_coordinates
()¶ Removes common factors (componentwise) from the coordinates of this point (including \(-1\)).
OUTPUT: None.
EXAMPLES:
sage: T.<x,y,z,u,v,w> = ProductProjectiveSpaces([2, 2], ZZ) sage: P = T.point([5, 10, 15, 4, 2, 6]); sage: P.normalize_coordinates() sage: P (1 : 2 : 3 , 2 : 1 : 3)
-
nth_iterate
(f, n, normalize=False)¶ For a map of this point and a point \(P\) in
self.domain()
this function returns the nth iterate of \(P\) by this point.If
normalize == True
, then the coordinates are automatically normalized.INPUT:
f
– a ProductProjectiveSpaces_morphism_ring withself
inf.domain()
.n
– a positive integer.normalize
– Boolean (optional Default:False
).
OUTPUT:
- A point in
self.codomain()
EXAMPLES:
sage: Z.<a,b,x,y> = ProductProjectiveSpaces([1, 1], ZZ) sage: f = DynamicalSystem_projective([a*b, b^2, x^3 - y^3, y^2*x], domain=Z) sage: P = Z([2, 6, 2, 4]) sage: P.nth_iterate(f, 2, normalize = True) doctest:warning ... (1 : 3 , 407 : 112)
Todo
Is there a more efficient way to do this?
-
orbit
(f, N, **kwds)¶ Returns the orbit this point by
f
.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 ifnormalize == True
. Perform the checks on point initialization ifcheck==True
INPUT:
f
– aProductProjectiveSpaces_morphism_ring
with the orbit of \(P\) inf.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> = ProductProjectiveSpaces([1, 1], ZZ) sage: f = DynamicalSystem_projective([a*b, b^2, x^3 - y^3, y^2*x], domain=Z) sage: P = Z([2, 6, 2, 4]) sage: P.orbit(f, 3, normalize = True) doctest:warning ... [(1 : 3 , 1 : 2), (1 : 3 , -7 : 4), (1 : 3 , 407 : 112), (1 : 3 , 66014215 : 5105408)]
-
scale_by
(t)¶ Scale the coordinates of the point by
t
, done componentwise.A
TypeError
occurs if the point is not in the base ring of the codomain after scaling.INPUT:
t
– a ring element
EXAMPLES:
sage: T.<x, y, z, u, v, w> = ProductProjectiveSpaces([1, 1, 1], ZZ) sage: P = T.point([5, 10, 15, 4, 2, 6]); sage: P.scale_by([2, 1, 1]) sage: P (10 : 20 , 15 : 4 , 2 : 6)
-