Dynamical systems for products of projective spaces¶
This class builds on the prouct projective space class.
The main constructor functions are given by DynamicalSystem
and
DynamicalSystem_projective
. The constructors function can take either
polynomials or a morphism from which to construct a dynamical system.
The must be specified.
EXAMPLES:
sage: P1xP1.<x,y,u,v> = ProductProjectiveSpaces(QQ, [1, 1])
sage: DynamicalSystem_projective([x^2*u, y^2*v, x*v^2, y*u^2], domain=P1xP1)
Dynamical System 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.dynamics.arithmetic_dynamics.product_projective_ds.
DynamicalSystem_product_projective
(polys, domain)¶ Bases:
sage.dynamics.arithmetic_dynamics.generic_ds.DynamicalSystem
,sage.schemes.product_projective.morphism.ProductProjectiveSpaces_morphism_ring
The class of dynamical systems on products of projective spaces.
Warning
You should not create objects of this class directly because no type or consistency checking is performed. The preferred method to construct such dynamical systems is to use
DynamicalSystem_projective()
function.INPUT:
polys
– a list ofn_1 + \cdots + n_r
multi-homogeneous polynomials, all of which should have the same parentdomain
– a projective scheme embedded inP^{n_1-1} \times \cdots \times P^{n_r-1}
EXAMPLES:
sage: T.<x,y,z,w,u> = ProductProjectiveSpaces([2, 1], QQ) sage: DynamicalSystem_projective([x^2, y^2, z^2, w^2, u^2], domain=T) Dynamical System 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).
-
nth_iterate
(P, n, normalize=False)¶ Return the
n
-th iterate ofP
by this dynamical system.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 integernormalize
– (default:False
) boolean
OUTPUT: A point in
self.codomain()
EXAMPLES:
sage: Z.<a,b,x,y,z> = ProductProjectiveSpaces([1, 2], QQ) sage: f = DynamicalSystem_projective([a^3, b^3 + a*b^2, x^2, y^2 - z^2, z*y], domain=Z) sage: P = Z([1, 1, 1, 1, 1]) sage: f.nth_iterate(P, 3) (1/1872 : 1 , 1 : 1 : 0)
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: f.nth_iterate(P, 2, normalize = True) (1 : 3 , 407 : 112)
-
nth_iterate_map
(n)¶ Return the nth iterate of this dynamical system.
ALGORITHM:
Uses a form of successive squaring to reduce computations.
Todo
This could be improved.
INPUT:
n
– a positive integer
OUTPUT: A dynamical system of products of projective spaces
EXAMPLES:
sage: Z.<a,b,x,y,z> = ProductProjectiveSpaces([1 , 2], QQ) sage: f = DynamicalSystem_projective([a^3, b^3, x^2, y^2, z^2], domain=Z) sage: f.nth_iterate_map(3) Dynamical System 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)¶ Return the orbit of \(P\) by this dynamical system.
Let \(F\) be this dynamical system. If \(N\) is an integer return \([P,F(P),\ldots,F^N(P)]\).
If \(N\) is a list or tuple \(N = [m, k]\) return \([F^m(P),\ldots,F^k(P)]\). Automatically normalize the points if
normalize
isTrue
. Perform the checks on point initialize ifcheck
isTrue
.INPUT:
P
– a point inself.domain()
N
– a non-negative integer or list or tuple of two non-negative integers
kwds:
check
– (default:True
) booleannormalize
– (default:False
) boolean
OUTPUT: a list of points in
self.codomain()
EXAMPLES:
sage: Z.<a,b,x,y,z> = ProductProjectiveSpaces([1, 2], QQ) sage: f = DynamicalSystem_projective([a^3, b^3 + a*b^2, x^2, y^2 - z^2, z*y], domain=Z) 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)]
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: f.orbit(P, 3, normalize=True) [(1 : 3 , 1 : 2), (1 : 3 , -7 : 4), (1 : 3 , 407 : 112), (1 : 3 , 66014215 : 5105408)]
-
class
sage.dynamics.arithmetic_dynamics.product_projective_ds.
DynamicalSystem_product_projective_field
(polys, domain)¶ Bases:
sage.dynamics.arithmetic_dynamics.product_projective_ds.DynamicalSystem_product_projective
-
class
sage.dynamics.arithmetic_dynamics.product_projective_ds.
DynamicalSystem_product_projective_finite_field
(polys, domain)¶ Bases:
sage.dynamics.arithmetic_dynamics.product_projective_ds.DynamicalSystem_product_projective_field
-
cyclegraph
()¶ Return the digraph of all orbits of this morphism mod \(p\).
OUTPUT: a digraph
EXAMPLES:
sage: P.<a,b,c,d> = ProductProjectiveSpaces(GF(3), [1,1]) sage: f = DynamicalSystem_projective([a^2,b^2,c^2,d^2], domain=P) sage: f.cyclegraph() Looped digraph on 16 vertices
sage: P.<a,b,c,d> = ProductProjectiveSpaces(GF(5), [1,1]) sage: f = DynamicalSystem_projective([a^2,b^2,c,d], domain=P) sage: f.cyclegraph() Looped digraph on 36 vertices
sage: P.<a,b,c,d,e> = ProductProjectiveSpaces(GF(2), [1,2]) sage: f = DynamicalSystem_projective([a^2,b^2,c,d,e], domain=P) sage: f.cyclegraph() Looped digraph on 21 vertices
Todo
Dynamical systems for subschemes of product projective spaces needs work. Thus this is not implemented for subschemes.
-