passagemath-schemes 10.8.1a4__cp314-cp314t-macosx_13_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- passagemath_schemes/.dylibs/libflint.22.0.dylib +0 -0
- passagemath_schemes/.dylibs/libgmp.10.dylib +0 -0
- passagemath_schemes/.dylibs/libgmpxx.4.dylib +0 -0
- passagemath_schemes/.dylibs/libmpfr.6.dylib +0 -0
- passagemath_schemes/__init__.py +3 -0
- passagemath_schemes-10.8.1a4.dist-info/METADATA +203 -0
- passagemath_schemes-10.8.1a4.dist-info/METADATA.bak +204 -0
- passagemath_schemes-10.8.1a4.dist-info/RECORD +312 -0
- passagemath_schemes-10.8.1a4.dist-info/WHEEL +6 -0
- passagemath_schemes-10.8.1a4.dist-info/top_level.txt +3 -0
- sage/all__sagemath_schemes.py +23 -0
- sage/databases/all__sagemath_schemes.py +7 -0
- sage/databases/cremona.py +1723 -0
- sage/dynamics/all__sagemath_schemes.py +2 -0
- sage/dynamics/arithmetic_dynamics/affine_ds.py +1083 -0
- sage/dynamics/arithmetic_dynamics/all.py +14 -0
- sage/dynamics/arithmetic_dynamics/berkovich_ds.py +1101 -0
- sage/dynamics/arithmetic_dynamics/dynamical_semigroup.py +1543 -0
- sage/dynamics/arithmetic_dynamics/endPN_automorphism_group.py +2426 -0
- sage/dynamics/arithmetic_dynamics/endPN_minimal_model.py +1169 -0
- sage/dynamics/arithmetic_dynamics/generic_ds.py +663 -0
- sage/dynamics/arithmetic_dynamics/product_projective_ds.py +339 -0
- sage/dynamics/arithmetic_dynamics/projective_ds.py +9556 -0
- sage/dynamics/arithmetic_dynamics/projective_ds_helper.cpython-314t-darwin.so +0 -0
- sage/dynamics/arithmetic_dynamics/projective_ds_helper.pyx +301 -0
- sage/dynamics/arithmetic_dynamics/wehlerK3.py +2578 -0
- sage/lfunctions/all.py +18 -0
- sage/lfunctions/dokchitser.py +727 -0
- sage/lfunctions/pari.py +971 -0
- sage/lfunctions/zero_sums.cpython-314t-darwin.so +0 -0
- sage/lfunctions/zero_sums.pyx +1847 -0
- sage/modular/abvar/abvar.py +5132 -0
- sage/modular/abvar/abvar_ambient_jacobian.py +414 -0
- sage/modular/abvar/abvar_newform.py +246 -0
- sage/modular/abvar/all.py +8 -0
- sage/modular/abvar/constructor.py +187 -0
- sage/modular/abvar/cuspidal_subgroup.py +371 -0
- sage/modular/abvar/finite_subgroup.py +896 -0
- sage/modular/abvar/homology.py +721 -0
- sage/modular/abvar/homspace.py +989 -0
- sage/modular/abvar/lseries.py +415 -0
- sage/modular/abvar/morphism.py +935 -0
- sage/modular/abvar/torsion_point.py +274 -0
- sage/modular/abvar/torsion_subgroup.py +741 -0
- sage/modular/all.py +43 -0
- sage/modular/arithgroup/all.py +20 -0
- sage/modular/arithgroup/arithgroup_element.cpython-314t-darwin.so +0 -0
- sage/modular/arithgroup/arithgroup_element.pyx +474 -0
- sage/modular/arithgroup/arithgroup_generic.py +1406 -0
- sage/modular/arithgroup/arithgroup_perm.py +2692 -0
- sage/modular/arithgroup/congroup.cpython-314t-darwin.so +0 -0
- sage/modular/arithgroup/congroup.pyx +334 -0
- sage/modular/arithgroup/congroup_gamma.py +361 -0
- sage/modular/arithgroup/congroup_gamma0.py +692 -0
- sage/modular/arithgroup/congroup_gamma1.py +659 -0
- sage/modular/arithgroup/congroup_gammaH.py +1491 -0
- sage/modular/arithgroup/congroup_generic.py +630 -0
- sage/modular/arithgroup/congroup_sl2z.py +266 -0
- sage/modular/arithgroup/farey_symbol.cpython-314t-darwin.so +0 -0
- sage/modular/arithgroup/farey_symbol.pyx +1067 -0
- sage/modular/arithgroup/tests.py +425 -0
- sage/modular/btquotients/all.py +4 -0
- sage/modular/btquotients/btquotient.py +3736 -0
- sage/modular/btquotients/pautomorphicform.py +2564 -0
- sage/modular/buzzard.py +100 -0
- sage/modular/congroup.py +29 -0
- sage/modular/congroup_element.py +13 -0
- sage/modular/cusps.py +1107 -0
- sage/modular/cusps_nf.py +1270 -0
- sage/modular/dims.py +571 -0
- sage/modular/dirichlet.py +3310 -0
- sage/modular/drinfeld_modform/all.py +2 -0
- sage/modular/drinfeld_modform/element.py +446 -0
- sage/modular/drinfeld_modform/ring.py +773 -0
- sage/modular/drinfeld_modform/tutorial.py +236 -0
- sage/modular/etaproducts.py +1076 -0
- sage/modular/hecke/algebra.py +725 -0
- sage/modular/hecke/all.py +19 -0
- sage/modular/hecke/ambient_module.py +994 -0
- sage/modular/hecke/degenmap.py +119 -0
- sage/modular/hecke/element.py +302 -0
- sage/modular/hecke/hecke_operator.py +736 -0
- sage/modular/hecke/homspace.py +185 -0
- sage/modular/hecke/module.py +1744 -0
- sage/modular/hecke/morphism.py +139 -0
- sage/modular/hecke/submodule.py +970 -0
- sage/modular/hypergeometric_misc.cpython-314t-darwin.so +0 -0
- sage/modular/hypergeometric_misc.pxd +4 -0
- sage/modular/hypergeometric_misc.pyx +166 -0
- sage/modular/hypergeometric_motive.py +2020 -0
- sage/modular/local_comp/all.py +2 -0
- sage/modular/local_comp/liftings.py +292 -0
- sage/modular/local_comp/local_comp.py +1070 -0
- sage/modular/local_comp/smoothchar.py +1825 -0
- sage/modular/local_comp/type_space.py +748 -0
- sage/modular/modform/all.py +30 -0
- sage/modular/modform/ambient.py +817 -0
- sage/modular/modform/ambient_R.py +177 -0
- sage/modular/modform/ambient_eps.py +306 -0
- sage/modular/modform/ambient_g0.py +120 -0
- sage/modular/modform/ambient_g1.py +199 -0
- sage/modular/modform/constructor.py +545 -0
- sage/modular/modform/cuspidal_submodule.py +708 -0
- sage/modular/modform/defaults.py +14 -0
- sage/modular/modform/eis_series.py +487 -0
- sage/modular/modform/eisenstein_submodule.py +663 -0
- sage/modular/modform/element.py +4105 -0
- sage/modular/modform/half_integral.py +154 -0
- sage/modular/modform/hecke_operator_on_qexp.py +247 -0
- sage/modular/modform/j_invariant.py +47 -0
- sage/modular/modform/l_series_gross_zagier.py +127 -0
- sage/modular/modform/l_series_gross_zagier_coeffs.cpython-314t-darwin.so +0 -0
- sage/modular/modform/l_series_gross_zagier_coeffs.pyx +177 -0
- sage/modular/modform/notes.py +45 -0
- sage/modular/modform/numerical.py +514 -0
- sage/modular/modform/periods.py +14 -0
- sage/modular/modform/ring.py +1257 -0
- sage/modular/modform/space.py +1859 -0
- sage/modular/modform/submodule.py +118 -0
- sage/modular/modform/tests.py +64 -0
- sage/modular/modform/theta.py +110 -0
- sage/modular/modform/vm_basis.py +380 -0
- sage/modular/modform/weight1.py +221 -0
- sage/modular/modform_hecketriangle/abstract_ring.py +1932 -0
- sage/modular/modform_hecketriangle/abstract_space.py +2527 -0
- sage/modular/modform_hecketriangle/all.py +30 -0
- sage/modular/modform_hecketriangle/analytic_type.py +590 -0
- sage/modular/modform_hecketriangle/constructor.py +416 -0
- sage/modular/modform_hecketriangle/element.py +351 -0
- sage/modular/modform_hecketriangle/functors.py +752 -0
- sage/modular/modform_hecketriangle/graded_ring.py +541 -0
- sage/modular/modform_hecketriangle/graded_ring_element.py +2225 -0
- sage/modular/modform_hecketriangle/hecke_triangle_group_element.py +3349 -0
- sage/modular/modform_hecketriangle/hecke_triangle_groups.py +1426 -0
- sage/modular/modform_hecketriangle/readme.py +1214 -0
- sage/modular/modform_hecketriangle/series_constructor.py +580 -0
- sage/modular/modform_hecketriangle/space.py +1037 -0
- sage/modular/modform_hecketriangle/subspace.py +423 -0
- sage/modular/modsym/all.py +17 -0
- sage/modular/modsym/ambient.py +3844 -0
- sage/modular/modsym/boundary.py +1420 -0
- sage/modular/modsym/element.py +336 -0
- sage/modular/modsym/g1list.py +178 -0
- sage/modular/modsym/ghlist.py +182 -0
- sage/modular/modsym/hecke_operator.py +73 -0
- sage/modular/modsym/manin_symbol.cpython-314t-darwin.so +0 -0
- sage/modular/modsym/manin_symbol.pxd +5 -0
- sage/modular/modsym/manin_symbol.pyx +497 -0
- sage/modular/modsym/manin_symbol_list.py +1291 -0
- sage/modular/modsym/modsym.py +400 -0
- sage/modular/modsym/modular_symbols.py +384 -0
- sage/modular/modsym/p1list_nf.py +1241 -0
- sage/modular/modsym/relation_matrix.py +591 -0
- sage/modular/modsym/relation_matrix_pyx.cpython-314t-darwin.so +0 -0
- sage/modular/modsym/relation_matrix_pyx.pyx +108 -0
- sage/modular/modsym/space.py +2468 -0
- sage/modular/modsym/subspace.py +455 -0
- sage/modular/modsym/tests.py +376 -0
- sage/modular/multiple_zeta.py +2635 -0
- sage/modular/multiple_zeta_F_algebra.py +789 -0
- sage/modular/overconvergent/all.py +6 -0
- sage/modular/overconvergent/genus0.py +1879 -0
- sage/modular/overconvergent/hecke_series.py +1187 -0
- sage/modular/overconvergent/weightspace.py +776 -0
- sage/modular/pollack_stevens/all.py +4 -0
- sage/modular/pollack_stevens/distributions.py +874 -0
- sage/modular/pollack_stevens/fund_domain.py +1572 -0
- sage/modular/pollack_stevens/manin_map.py +856 -0
- sage/modular/pollack_stevens/modsym.py +1590 -0
- sage/modular/pollack_stevens/padic_lseries.py +417 -0
- sage/modular/pollack_stevens/sigma0.py +534 -0
- sage/modular/pollack_stevens/space.py +1078 -0
- sage/modular/quasimodform/all.py +3 -0
- sage/modular/quasimodform/element.py +846 -0
- sage/modular/quasimodform/ring.py +826 -0
- sage/modular/quatalg/all.py +3 -0
- sage/modular/quatalg/brandt.py +1642 -0
- sage/modular/ssmod/all.py +8 -0
- sage/modular/ssmod/ssmod.py +827 -0
- sage/rings/all__sagemath_schemes.py +1 -0
- sage/rings/polynomial/all__sagemath_schemes.py +1 -0
- sage/rings/polynomial/binary_form_reduce.py +585 -0
- sage/schemes/all.py +41 -0
- sage/schemes/berkovich/all.py +6 -0
- sage/schemes/berkovich/berkovich_cp_element.py +2582 -0
- sage/schemes/berkovich/berkovich_space.py +700 -0
- sage/schemes/curves/affine_curve.py +2924 -0
- sage/schemes/curves/all.py +33 -0
- sage/schemes/curves/closed_point.py +434 -0
- sage/schemes/curves/constructor.py +397 -0
- sage/schemes/curves/curve.py +542 -0
- sage/schemes/curves/plane_curve_arrangement.py +1283 -0
- sage/schemes/curves/point.py +463 -0
- sage/schemes/curves/projective_curve.py +3203 -0
- sage/schemes/curves/weighted_projective_curve.py +106 -0
- sage/schemes/curves/zariski_vankampen.py +1931 -0
- sage/schemes/cyclic_covers/all.py +2 -0
- sage/schemes/cyclic_covers/charpoly_frobenius.py +320 -0
- sage/schemes/cyclic_covers/constructor.py +137 -0
- sage/schemes/cyclic_covers/cycliccover_finite_field.py +1309 -0
- sage/schemes/cyclic_covers/cycliccover_generic.py +310 -0
- sage/schemes/elliptic_curves/BSD.py +991 -0
- sage/schemes/elliptic_curves/Qcurves.py +592 -0
- sage/schemes/elliptic_curves/addition_formulas_ring.py +94 -0
- sage/schemes/elliptic_curves/all.py +49 -0
- sage/schemes/elliptic_curves/cardinality.py +609 -0
- sage/schemes/elliptic_curves/cm.py +1103 -0
- sage/schemes/elliptic_curves/constructor.py +1530 -0
- sage/schemes/elliptic_curves/ec_database.py +175 -0
- sage/schemes/elliptic_curves/ell_curve_isogeny.py +3971 -0
- sage/schemes/elliptic_curves/ell_egros.py +457 -0
- sage/schemes/elliptic_curves/ell_field.py +2837 -0
- sage/schemes/elliptic_curves/ell_finite_field.py +3249 -0
- sage/schemes/elliptic_curves/ell_generic.py +3760 -0
- sage/schemes/elliptic_curves/ell_local_data.py +1207 -0
- sage/schemes/elliptic_curves/ell_modular_symbols.py +775 -0
- sage/schemes/elliptic_curves/ell_number_field.py +4220 -0
- sage/schemes/elliptic_curves/ell_padic_field.py +107 -0
- sage/schemes/elliptic_curves/ell_point.py +4944 -0
- sage/schemes/elliptic_curves/ell_rational_field.py +7184 -0
- sage/schemes/elliptic_curves/ell_tate_curve.py +671 -0
- sage/schemes/elliptic_curves/ell_torsion.py +436 -0
- sage/schemes/elliptic_curves/ell_wp.py +352 -0
- sage/schemes/elliptic_curves/formal_group.py +760 -0
- sage/schemes/elliptic_curves/gal_reps.py +1459 -0
- sage/schemes/elliptic_curves/gal_reps_number_field.py +1663 -0
- sage/schemes/elliptic_curves/gp_simon.py +152 -0
- sage/schemes/elliptic_curves/heegner.py +7328 -0
- sage/schemes/elliptic_curves/height.py +2108 -0
- sage/schemes/elliptic_curves/hom.py +1788 -0
- sage/schemes/elliptic_curves/hom_composite.py +1084 -0
- sage/schemes/elliptic_curves/hom_fractional.py +544 -0
- sage/schemes/elliptic_curves/hom_frobenius.py +522 -0
- sage/schemes/elliptic_curves/hom_scalar.py +531 -0
- sage/schemes/elliptic_curves/hom_sum.py +681 -0
- sage/schemes/elliptic_curves/hom_velusqrt.py +1290 -0
- sage/schemes/elliptic_curves/homset.py +271 -0
- sage/schemes/elliptic_curves/isogeny_class.py +1523 -0
- sage/schemes/elliptic_curves/isogeny_small_degree.py +2797 -0
- sage/schemes/elliptic_curves/jacobian.py +247 -0
- sage/schemes/elliptic_curves/kodaira_symbol.py +344 -0
- sage/schemes/elliptic_curves/kraus.py +1014 -0
- sage/schemes/elliptic_curves/lseries_ell.py +915 -0
- sage/schemes/elliptic_curves/mod5family.py +105 -0
- sage/schemes/elliptic_curves/mod_poly.py +197 -0
- sage/schemes/elliptic_curves/mod_sym_num.cpython-314t-darwin.so +0 -0
- sage/schemes/elliptic_curves/mod_sym_num.pyx +3796 -0
- sage/schemes/elliptic_curves/modular_parametrization.py +305 -0
- sage/schemes/elliptic_curves/padic_lseries.py +1793 -0
- sage/schemes/elliptic_curves/padics.py +1816 -0
- sage/schemes/elliptic_curves/period_lattice.py +2234 -0
- sage/schemes/elliptic_curves/period_lattice_region.cpython-314t-darwin.so +0 -0
- sage/schemes/elliptic_curves/period_lattice_region.pyx +722 -0
- sage/schemes/elliptic_curves/saturation.py +716 -0
- sage/schemes/elliptic_curves/sha_tate.py +1158 -0
- sage/schemes/elliptic_curves/weierstrass_morphism.py +1117 -0
- sage/schemes/elliptic_curves/weierstrass_transform.py +200 -0
- sage/schemes/hyperelliptic_curves/all.py +6 -0
- sage/schemes/hyperelliptic_curves/constructor.py +369 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_finite_field.py +1948 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_g2.py +192 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_generic.py +936 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_padic_field.py +1332 -0
- sage/schemes/hyperelliptic_curves/hyperelliptic_rational_field.py +84 -0
- sage/schemes/hyperelliptic_curves/invariants.py +410 -0
- sage/schemes/hyperelliptic_curves/jacobian_endomorphism_utils.py +312 -0
- sage/schemes/hyperelliptic_curves/jacobian_g2.py +32 -0
- sage/schemes/hyperelliptic_curves/jacobian_generic.py +437 -0
- sage/schemes/hyperelliptic_curves/jacobian_homset.py +186 -0
- sage/schemes/hyperelliptic_curves/jacobian_morphism.py +878 -0
- sage/schemes/hyperelliptic_curves/kummer_surface.py +99 -0
- sage/schemes/hyperelliptic_curves/mestre.py +302 -0
- sage/schemes/hyperelliptic_curves/monsky_washnitzer.py +3863 -0
- sage/schemes/jacobians/abstract_jacobian.py +277 -0
- sage/schemes/jacobians/all.py +2 -0
- sage/schemes/overview.py +161 -0
- sage/schemes/plane_conics/all.py +22 -0
- sage/schemes/plane_conics/con_field.py +1296 -0
- sage/schemes/plane_conics/con_finite_field.py +158 -0
- sage/schemes/plane_conics/con_number_field.py +456 -0
- sage/schemes/plane_conics/con_rational_field.py +406 -0
- sage/schemes/plane_conics/con_rational_function_field.py +581 -0
- sage/schemes/plane_conics/constructor.py +249 -0
- sage/schemes/plane_quartics/all.py +2 -0
- sage/schemes/plane_quartics/quartic_constructor.py +71 -0
- sage/schemes/plane_quartics/quartic_generic.py +53 -0
- sage/schemes/riemann_surfaces/all.py +1 -0
- sage/schemes/riemann_surfaces/riemann_surface.py +4177 -0
- sage_wheels/share/cremona/cremona_mini.db +0 -0
- sage_wheels/share/ellcurves/rank0 +30427 -0
- sage_wheels/share/ellcurves/rank1 +31871 -0
- sage_wheels/share/ellcurves/rank10 +6 -0
- sage_wheels/share/ellcurves/rank11 +6 -0
- sage_wheels/share/ellcurves/rank12 +1 -0
- sage_wheels/share/ellcurves/rank14 +1 -0
- sage_wheels/share/ellcurves/rank15 +1 -0
- sage_wheels/share/ellcurves/rank17 +1 -0
- sage_wheels/share/ellcurves/rank19 +1 -0
- sage_wheels/share/ellcurves/rank2 +2388 -0
- sage_wheels/share/ellcurves/rank20 +1 -0
- sage_wheels/share/ellcurves/rank21 +1 -0
- sage_wheels/share/ellcurves/rank22 +1 -0
- sage_wheels/share/ellcurves/rank23 +1 -0
- sage_wheels/share/ellcurves/rank24 +1 -0
- sage_wheels/share/ellcurves/rank28 +1 -0
- sage_wheels/share/ellcurves/rank3 +836 -0
- sage_wheels/share/ellcurves/rank4 +10 -0
- sage_wheels/share/ellcurves/rank5 +5 -0
- sage_wheels/share/ellcurves/rank6 +5 -0
- sage_wheels/share/ellcurves/rank7 +5 -0
- sage_wheels/share/ellcurves/rank8 +6 -0
- sage_wheels/share/ellcurves/rank9 +7 -0
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-schemes
|
|
2
|
+
r"""
|
|
3
|
+
Dynamical systems for products of projective spaces
|
|
4
|
+
|
|
5
|
+
This class builds on the product projective space class.
|
|
6
|
+
The main constructor functions are given by ``DynamicalSystem`` and
|
|
7
|
+
``DynamicalSystem_projective``. The constructors function can take either
|
|
8
|
+
polynomials or a morphism from which to construct a dynamical system.
|
|
9
|
+
|
|
10
|
+
The must be specified.
|
|
11
|
+
|
|
12
|
+
EXAMPLES::
|
|
13
|
+
|
|
14
|
+
sage: P1xP1.<x,y,u,v> = ProductProjectiveSpaces(QQ, [1, 1])
|
|
15
|
+
sage: DynamicalSystem_projective([x^2*u, y^2*v, x*v^2, y*u^2], domain=P1xP1)
|
|
16
|
+
Dynamical System of Product of projective spaces P^1 x P^1 over Rational Field
|
|
17
|
+
Defn: Defined by sending (x : y , u : v) to
|
|
18
|
+
(x^2*u : y^2*v , x*v^2 : y*u^2).
|
|
19
|
+
"""
|
|
20
|
+
# ****************************************************************************
|
|
21
|
+
# Copyright (C) 2014 Ben Hutz <bn4941@gmail.com>
|
|
22
|
+
#
|
|
23
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
24
|
+
# as published by the Free Software Foundation; either version 2 of
|
|
25
|
+
# the License, or (at your option) any later version.
|
|
26
|
+
# https://www.gnu.org/licenses/
|
|
27
|
+
# ****************************************************************************
|
|
28
|
+
from copy import copy
|
|
29
|
+
from sage.dynamics.arithmetic_dynamics.generic_ds import DynamicalSystem
|
|
30
|
+
from sage.dynamics.arithmetic_dynamics.projective_ds import DynamicalSystem_projective
|
|
31
|
+
from sage.rings.integer_ring import ZZ
|
|
32
|
+
from sage.rings.quotient_ring import QuotientRing_generic
|
|
33
|
+
from sage.schemes.product_projective.morphism import ProductProjectiveSpaces_morphism_ring
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class DynamicalSystem_product_projective(DynamicalSystem,
|
|
37
|
+
ProductProjectiveSpaces_morphism_ring):
|
|
38
|
+
r"""
|
|
39
|
+
The class of dynamical systems on products of projective spaces.
|
|
40
|
+
|
|
41
|
+
.. WARNING::
|
|
42
|
+
|
|
43
|
+
You should not create objects of this class directly because
|
|
44
|
+
no type or consistency checking is performed. The preferred
|
|
45
|
+
method to construct such dynamical systems is to use
|
|
46
|
+
:func:`~sage.dynamics.arithmetic_dynamics.generic_ds.DynamicalSystem_projective`
|
|
47
|
+
function.
|
|
48
|
+
|
|
49
|
+
INPUT:
|
|
50
|
+
|
|
51
|
+
- ``polys`` -- list of `n_1 + \cdots + n_r` multi-homogeneous polynomials, all
|
|
52
|
+
of which should have the same parent
|
|
53
|
+
|
|
54
|
+
- ``domain`` -- a projective scheme embedded in
|
|
55
|
+
`P^{n_1-1} \times \cdots \times P^{n_r-1}`
|
|
56
|
+
|
|
57
|
+
EXAMPLES::
|
|
58
|
+
|
|
59
|
+
sage: T.<x,y,z,w,u> = ProductProjectiveSpaces([2, 1], QQ)
|
|
60
|
+
sage: DynamicalSystem_projective([x^2, y^2, z^2, w^2, u^2], domain=T)
|
|
61
|
+
Dynamical System of Product of projective spaces P^2 x P^1 over Rational Field
|
|
62
|
+
Defn: Defined by sending (x : y : z , w : u) to (x^2 : y^2 : z^2 , w^2 : u^2).
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
def __init__(self, polys, domain):
|
|
66
|
+
r"""
|
|
67
|
+
The Python constructor.
|
|
68
|
+
|
|
69
|
+
See :class:`DynamicalSystem` for details.
|
|
70
|
+
|
|
71
|
+
EXAMPLES::
|
|
72
|
+
|
|
73
|
+
sage: T.<x,y,w,u> = ProductProjectiveSpaces([1, 1], QQ)
|
|
74
|
+
sage: DynamicalSystem_projective([x^2, y^2, w^2, u^2], domain=T)
|
|
75
|
+
Dynamical System of Product of projective spaces P^1 x P^1 over Rational Field
|
|
76
|
+
Defn: Defined by sending (x : y , w : u) to
|
|
77
|
+
(x^2 : y^2 , w^2 : u^2).
|
|
78
|
+
"""
|
|
79
|
+
DynamicalSystem.__init__(self, polys, domain)
|
|
80
|
+
|
|
81
|
+
def _call_with_args(self, P, check=True):
|
|
82
|
+
r"""
|
|
83
|
+
Make dynamical systems of products of projective spaces callable.
|
|
84
|
+
|
|
85
|
+
INPUT:
|
|
86
|
+
|
|
87
|
+
- ``P`` -- a point in the domain
|
|
88
|
+
|
|
89
|
+
- ``check`` -- boolean (default: ``True``); whether or not to perform
|
|
90
|
+
the input checks on the image point
|
|
91
|
+
|
|
92
|
+
OUTPUT: the image point in the codomain
|
|
93
|
+
|
|
94
|
+
EXAMPLES::
|
|
95
|
+
|
|
96
|
+
sage: T.<x,y,z,w,u> = ProductProjectiveSpaces([2, 1], QQ)
|
|
97
|
+
sage: F = DynamicalSystem_projective([x^2*u, y^2*w, z^2*u, w^2, u^2], domain=T)
|
|
98
|
+
sage: F(T([2, 1, 3, 0, 1]))
|
|
99
|
+
(4/9 : 0 : 1 , 0 : 1)
|
|
100
|
+
"""
|
|
101
|
+
if check:
|
|
102
|
+
from sage.schemes.product_projective.point import ProductProjectiveSpaces_point_ring
|
|
103
|
+
if not isinstance(P, ProductProjectiveSpaces_point_ring):
|
|
104
|
+
try:
|
|
105
|
+
P = self.domain()(P)
|
|
106
|
+
except (TypeError, NotImplementedError):
|
|
107
|
+
raise TypeError("%s fails to convert into the map's domain %s, but a `pushforward` method is not properly implemented" % (P, self.domain()))
|
|
108
|
+
elif self.domain() != P.codomain():
|
|
109
|
+
raise TypeError("%s fails to convert into the map's domain %s, but a `pushforward` method is not properly implemented" % (P, self.domain()))
|
|
110
|
+
|
|
111
|
+
A = self.domain()
|
|
112
|
+
Q = list(P)
|
|
113
|
+
newP = [f(Q) for f in self.defining_polynomials()]
|
|
114
|
+
return A.point(newP, check)
|
|
115
|
+
|
|
116
|
+
def nth_iterate(self, P, n, normalize=False):
|
|
117
|
+
r"""
|
|
118
|
+
Return the ``n``-th iterate of ``P`` by this dynamical system.
|
|
119
|
+
|
|
120
|
+
If ``normalize`` is ``True``, then the coordinates are
|
|
121
|
+
automatically normalized.
|
|
122
|
+
|
|
123
|
+
.. TODO:: Is there a more efficient way to do this?
|
|
124
|
+
|
|
125
|
+
INPUT:
|
|
126
|
+
|
|
127
|
+
- ``P`` -- a point in ``self.domain()``
|
|
128
|
+
|
|
129
|
+
- ``n`` -- positive integer
|
|
130
|
+
|
|
131
|
+
- ``normalize`` -- boolean (default: ``False``)
|
|
132
|
+
|
|
133
|
+
OUTPUT: a point in ``self.codomain()``
|
|
134
|
+
|
|
135
|
+
EXAMPLES::
|
|
136
|
+
|
|
137
|
+
sage: Z.<a,b,x,y,z> = ProductProjectiveSpaces([1, 2], QQ)
|
|
138
|
+
sage: f = DynamicalSystem_projective([a^3, b^3 + a*b^2, x^2, y^2 - z^2, z*y],
|
|
139
|
+
....: domain=Z)
|
|
140
|
+
sage: P = Z([1, 1, 1, 1, 1])
|
|
141
|
+
sage: f.nth_iterate(P, 3)
|
|
142
|
+
(1/1872 : 1 , 1 : 1 : 0)
|
|
143
|
+
|
|
144
|
+
::
|
|
145
|
+
|
|
146
|
+
sage: Z.<a,b,x,y> = ProductProjectiveSpaces([1, 1], ZZ)
|
|
147
|
+
sage: f = DynamicalSystem_projective([a*b, b^2, x^3 - y^3, y^2*x], domain=Z)
|
|
148
|
+
sage: P = Z([2, 6, 2, 4])
|
|
149
|
+
sage: f.nth_iterate(P, 2, normalize=True)
|
|
150
|
+
(1 : 3 , 407 : 112)
|
|
151
|
+
"""
|
|
152
|
+
if P.codomain() != self.domain():
|
|
153
|
+
raise TypeError("point is not defined over domain of function")
|
|
154
|
+
n = ZZ(n)
|
|
155
|
+
if n < 0:
|
|
156
|
+
raise TypeError("must be a forward orbit")
|
|
157
|
+
if n == 0:
|
|
158
|
+
return self
|
|
159
|
+
else:
|
|
160
|
+
Q = self(P)
|
|
161
|
+
if normalize:
|
|
162
|
+
Q.normalize_coordinates()
|
|
163
|
+
for i in range(2,n+1):
|
|
164
|
+
Q = self(Q)
|
|
165
|
+
if normalize:
|
|
166
|
+
Q.normalize_coordinates()
|
|
167
|
+
return Q
|
|
168
|
+
|
|
169
|
+
def orbit(self, P, N, **kwds):
|
|
170
|
+
r"""
|
|
171
|
+
Return the orbit of `P` by this dynamical system.
|
|
172
|
+
|
|
173
|
+
Let `F` be this dynamical system. If `N` is an integer return `[P,F(P),\ldots,F^N(P)]`.
|
|
174
|
+
|
|
175
|
+
If `N` is a list or tuple `N = [m, k]` return
|
|
176
|
+
`[F^m(P),\ldots,F^k(P)]`. Automatically normalize the points
|
|
177
|
+
if ``normalize`` is ``True``. Perform the checks on point
|
|
178
|
+
initialize if ``check`` is ``True``.
|
|
179
|
+
|
|
180
|
+
INPUT:
|
|
181
|
+
|
|
182
|
+
- ``P`` -- a point in ``self.domain()``
|
|
183
|
+
|
|
184
|
+
- ``N`` -- nonnegative integer or list or tuple of two nonnegative integers
|
|
185
|
+
|
|
186
|
+
kwds:
|
|
187
|
+
|
|
188
|
+
- ``check`` -- boolean (default: ``True``)
|
|
189
|
+
|
|
190
|
+
- ``normalize`` -- boolean (default: ``False``)
|
|
191
|
+
|
|
192
|
+
OUTPUT: list of points in ``self.codomain()``
|
|
193
|
+
|
|
194
|
+
EXAMPLES::
|
|
195
|
+
|
|
196
|
+
sage: Z.<a,b,x,y,z> = ProductProjectiveSpaces([1, 2], QQ)
|
|
197
|
+
sage: f = DynamicalSystem_projective([a^3, b^3 + a*b^2, x^2, y^2 - z^2, z*y],
|
|
198
|
+
....: domain=Z)
|
|
199
|
+
sage: P = Z([1, 1, 1, 1, 1])
|
|
200
|
+
sage: f.orbit(P, 3)
|
|
201
|
+
[(1 : 1 , 1 : 1 : 1), (1/2 : 1 , 1 : 0 : 1),
|
|
202
|
+
(1/12 : 1 , -1 : 1 : 0), (1/1872 : 1 , 1 : 1 : 0)]
|
|
203
|
+
|
|
204
|
+
::
|
|
205
|
+
|
|
206
|
+
sage: Z.<a,b,x,y> = ProductProjectiveSpaces([1, 1], ZZ)
|
|
207
|
+
sage: f = DynamicalSystem_projective([a*b, b^2, x^3 - y^3, y^2*x], domain=Z)
|
|
208
|
+
sage: P = Z([2, 6, 2, 4])
|
|
209
|
+
sage: f.orbit(P, 3, normalize=True)
|
|
210
|
+
[(1 : 3 , 1 : 2), (1 : 3 , -7 : 4),
|
|
211
|
+
(1 : 3 , 407 : 112), (1 : 3 , 66014215 : 5105408)]
|
|
212
|
+
"""
|
|
213
|
+
if P.codomain() != self.domain():
|
|
214
|
+
raise TypeError("point is not defined over domain of function")
|
|
215
|
+
if not isinstance(N, (list,tuple)):
|
|
216
|
+
N = [0, N]
|
|
217
|
+
try:
|
|
218
|
+
N[0] = ZZ(N[0])
|
|
219
|
+
N[1] = ZZ(N[1])
|
|
220
|
+
except TypeError:
|
|
221
|
+
raise TypeError("orbit bounds must be integers")
|
|
222
|
+
if N[0] < 0 or N[1] < 0:
|
|
223
|
+
raise TypeError("orbit bounds must be nonnegative")
|
|
224
|
+
if N[0] > N[1]:
|
|
225
|
+
return []
|
|
226
|
+
|
|
227
|
+
Q = copy(P)
|
|
228
|
+
check = kwds.pop("check", True)
|
|
229
|
+
normalize = kwds.pop("normalize", False)
|
|
230
|
+
|
|
231
|
+
if normalize:
|
|
232
|
+
Q.normalize_coordinates()
|
|
233
|
+
for i in range(1, N[0]+1):
|
|
234
|
+
Q = self(Q, check)
|
|
235
|
+
if normalize:
|
|
236
|
+
Q.normalize_coordinates()
|
|
237
|
+
orb = [Q]
|
|
238
|
+
for i in range(N[0]+1, N[1]+1):
|
|
239
|
+
Q = self(Q, check)
|
|
240
|
+
if normalize:
|
|
241
|
+
Q.normalize_coordinates()
|
|
242
|
+
orb.append(Q)
|
|
243
|
+
return orb
|
|
244
|
+
|
|
245
|
+
def nth_iterate_map(self, n):
|
|
246
|
+
r"""
|
|
247
|
+
Return the ``n``-th iterate of this dynamical system.
|
|
248
|
+
|
|
249
|
+
ALGORITHM:
|
|
250
|
+
|
|
251
|
+
Uses a form of successive squaring to reduce computations.
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
.. TODO:: This could be improved.
|
|
255
|
+
|
|
256
|
+
INPUT:
|
|
257
|
+
|
|
258
|
+
- ``n`` -- positive integer
|
|
259
|
+
|
|
260
|
+
OUTPUT: a dynamical system of products of projective spaces
|
|
261
|
+
|
|
262
|
+
EXAMPLES::
|
|
263
|
+
|
|
264
|
+
sage: Z.<a,b,x,y,z> = ProductProjectiveSpaces([1 , 2], QQ)
|
|
265
|
+
sage: f = DynamicalSystem_projective([a^3, b^3, x^2, y^2, z^2], domain=Z)
|
|
266
|
+
sage: f.nth_iterate_map(3)
|
|
267
|
+
Dynamical System of Product of projective spaces P^1 x P^2 over
|
|
268
|
+
Rational Field
|
|
269
|
+
Defn: Defined by sending (a : b , x : y : z) to
|
|
270
|
+
(a^27 : b^27 , x^8 : y^8 : z^8).
|
|
271
|
+
"""
|
|
272
|
+
E = self.domain()
|
|
273
|
+
D = int(n)
|
|
274
|
+
if D < 0:
|
|
275
|
+
raise TypeError("iterate number must be a nonnegative integer")
|
|
276
|
+
F = list(self._polys)
|
|
277
|
+
Coord_ring = E.coordinate_ring()
|
|
278
|
+
if isinstance(Coord_ring, QuotientRing_generic):
|
|
279
|
+
PHI = [gen.lift() for gen in Coord_ring.gens()]
|
|
280
|
+
else:
|
|
281
|
+
PHI = list(Coord_ring.gens())
|
|
282
|
+
|
|
283
|
+
while D:
|
|
284
|
+
if D & 1:
|
|
285
|
+
PHI = [poly(*F) for poly in PHI]
|
|
286
|
+
if D > 1: # avoid extra iterate
|
|
287
|
+
F = [poly(*F) for poly in F] # 'square'
|
|
288
|
+
D >>= 1
|
|
289
|
+
return DynamicalSystem_projective(PHI, domain=self.domain())
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
class DynamicalSystem_product_projective_field(DynamicalSystem_product_projective):
|
|
293
|
+
pass
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
class DynamicalSystem_product_projective_finite_field(DynamicalSystem_product_projective_field):
|
|
297
|
+
|
|
298
|
+
def cyclegraph(self):
|
|
299
|
+
r"""
|
|
300
|
+
Return the digraph of all orbits of this morphism mod `p`.
|
|
301
|
+
|
|
302
|
+
OUTPUT: a digraph
|
|
303
|
+
|
|
304
|
+
EXAMPLES::
|
|
305
|
+
|
|
306
|
+
sage: P.<a,b,c,d> = ProductProjectiveSpaces(GF(3), [1,1])
|
|
307
|
+
sage: f = DynamicalSystem_projective([a^2, b^2, c^2, d^2], domain=P)
|
|
308
|
+
sage: f.cyclegraph() # needs sage.graphs
|
|
309
|
+
Looped digraph on 16 vertices
|
|
310
|
+
|
|
311
|
+
::
|
|
312
|
+
|
|
313
|
+
sage: P.<a,b,c,d> = ProductProjectiveSpaces(GF(5), [1,1])
|
|
314
|
+
sage: f = DynamicalSystem_projective([a^2, b^2, c, d], domain=P)
|
|
315
|
+
sage: f.cyclegraph() # needs sage.graphs
|
|
316
|
+
Looped digraph on 36 vertices
|
|
317
|
+
|
|
318
|
+
::
|
|
319
|
+
|
|
320
|
+
sage: P.<a,b,c,d,e> = ProductProjectiveSpaces(GF(2), [1,2])
|
|
321
|
+
sage: f = DynamicalSystem_projective([a^2, b^2, c, d, e], domain=P)
|
|
322
|
+
sage: f.cyclegraph() # needs sage.graphs
|
|
323
|
+
Looped digraph on 21 vertices
|
|
324
|
+
|
|
325
|
+
.. TODO:: Dynamical systems for subschemes of product projective spaces needs work.
|
|
326
|
+
Thus this is not implemented for subschemes.
|
|
327
|
+
"""
|
|
328
|
+
V = []
|
|
329
|
+
E = []
|
|
330
|
+
from sage.schemes.product_projective.space import ProductProjectiveSpaces_ring
|
|
331
|
+
if isinstance(self.domain(), ProductProjectiveSpaces_ring):
|
|
332
|
+
for P in self.domain():
|
|
333
|
+
V.append(str(P))
|
|
334
|
+
Q = self(P)
|
|
335
|
+
E.append([str(Q)])
|
|
336
|
+
else:
|
|
337
|
+
raise NotImplementedError("cyclegraph for product projective spaces not implemented for subschemes")
|
|
338
|
+
from sage.graphs.digraph import DiGraph
|
|
339
|
+
return DiGraph(dict(zip(V, E)), loops=True)
|