Closed 89af23a8-fe73-43ac-b3cf-b6969ad6e40f closed 4 years ago
Description changed:
---
+++
@@ -19,4 +19,6 @@
Additionally, we add _is_preperiodic and is_postcritically_finite to the DynamicalSystem_projective_finite_field class: every point is preperiodic over a finite field, so both functions should return True. If return_period=True in _is_preperiodic, we call orbit_structure.
In order to normalize output, we modify orbit_structure to return (m,n) as a tuple instead of a list.
+In doctests for multiplier_spectra, using field of definition instead of QQbar permuted multipliers in several outputs. We corrected this and hope to prevent similar issues by sorting the output.
+
These changes allow is_postcritically_finite and multiplier_spectra to work over finite fields as well.
Commit: b9f28bc
Reviewer: Meghan Grip, Talia Blum
sage -t --long --warn-long 49.7 src/sage/dynamics/arithmetic_dynamics/projective_ds.py
**********************************************************************
File "src/sage/dynamics/arithmetic_dynamics/projective_ds.py", line 264, in sage.dynamics.arithmetic_dynamics.projective_ds.?
Failed example:
fbar.is_postcritically_finite()
Exception raised:
Traceback (most recent call last):
File "/home/release/Sage/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 681, in _run
self.compile_and_execute(example, compiler, test.globs)
File "/home/release/Sage/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 1105, in compile_and_execute
exec(compiled, globs)
File "<doctest sage.dynamics.arithmetic_dynamics.projective_ds.?[32]>", line 1, in <module>
fbar.is_postcritically_finite()
File "/home/release/Sage/local/lib/python2.7/site-packages/sage/dynamics/arithmetic_dynamics/projective_ds.py", line 3105, in is_postcritically_finite
embedding = self.field_of_definition_critical(return_embedding=True)[1]
File "/home/release/Sage/local/lib/python2.7/site-packages/sage/dynamics/arithmetic_dynamics/generic_ds.py", line 412, in field_of_definition_critical
K = poly.splitting_field(names, map=return_embedding, simplify_all=simplify_all)
File "sage/rings/polynomial/polynomial_element.pyx", line 4548, in sage.rings.polynomial.polynomial_element.Polynomial.splitting_field (build/cythonized/sage/rings/polynomial/polynomial_element.c:38804)
raise NotImplementedError("splitting_field() is only implemented over number fields and finite fields")
NotImplementedError: splitting_field() is only implemented over number fields and finite fields
Changed branch from u/gh-leopoldmayer/enhance_is_postcritically_finitecritical_point_portraitand_multiplier_spectra_to_work_over_number_fields_and_finite_fields to u/gh-juliacai05/enhance_is_postcritically_finitecritical_point_portraitand_multiplier_spectra_to_work_over_number_fields_and_finite_fields
Modified is_postcritically_finite to check if base ring of f is algebraically closed before attempting to change ring.
Changed branch from u/gh-juliacai05/enhance_is_postcritically_finitecritical_point_portraitand_multiplier_spectra_to_work_over_number_fields_and_finite_fields to u/gh-leopoldmayer/enhance_is_postcritically_finitecritical_point_portraitand_multiplier_spectra_to_work_over_number_fields_and_finite_fields
Changed branch from u/gh-leopoldmayer/enhance_is_postcritically_finitecritical_point_portraitand_multiplier_spectra_to_work_over_number_fields_and_finite_fields to u/gh-juliacai05/enhance_is_postcritically_finitecritical_point_portraitand_multiplier_spectra_to_work_over_number_fields_and_finite_fields
Branch pushed to git repo; I updated commit sha1. New commits:
e649e4e | 28263 : Added a degree function for dynamical systems and affine morphisms. |
b504232 | Merge branch 8.9.beta4 of git://trac.sagemath.org/sage into 28263 |
5be01a9 | Merge branch 'u/gh-juliacai05/enhance_is_postcritically_finite__critical_point_portrait__and_multiplier_spectra_to_work_over_number_fields_and_finite_fields' of git://trac.sagemath.org/sage into change_28170 |
5c8e1f0 | 28170 - added embedding parameter to is_pcf over finite fields so that critical_point_portrait works over finite fields |
err...looks like you got the affine degree function mixed in with your code for this ticket. That needs to be removed.
Branch pushed to git repo; I updated commit sha1. New commits:
6878a90 | 28170 - remove affine degree function from code for ticket |
d1ff92a | Merge branch 'u/gh-juliacai05/enhance_is_postcritically_finite__critical_point_portrait__and_multiplier_spectra_to_work_over_number_fields_and_finite_fields' of git://trac.sagemath.org/sage into fix_28170 |
b684a71 | 28170: removed affine degree function code |
affine degree function code from 28163 removed
Changed reviewer from Meghan Grip, Talia Blum to Meghan Grip, Talia Blum, John Doyle
Merge conflict, please merge in the next beta...
Branch pushed to git repo; I updated commit sha1. New commits:
c877e68 | 28170: added option to use closure or splitting fields |
Changed author from Heidi Benham, Julia Cai, Leopold Mayer to Heidi Benham, Julia Cai, Leopold Mayer, Ben Hutz
Since it was often very slow over the splitting fielded made the default to be the algebraic closure with the option of using the splitting field. Added a number of examples.
Adjusted the field_of_definition functions to return the base if it is already the algebraic closure.
This is ready for another set of eyes.
Changed keywords from SI2019 to SI2019, sd104
Changed reviewer from Meghan Grip, Talia Blum, John Doyle to Meghan Grip, Talia Blum, John Doyle, Alexis Suki Dasher, John Michael Clark
The following code gives an error:
sage: P.<x,y> = ProjectiveSpace(GF(13),1)
sage: f = DynamicalSystem_projective([x^4 - x^2*y^2 + y^4, y^4])
sage: f.is_postcritically_finite(use_algebraic_closure=False)
TypeError: is_postcritically_finite() got an unexpected keyword argument 'use_algebraic_closure'
This should not give an error when giving the keyword 'use_algebraic_closure', and should instead return True regardless. Every point is postcritically finite in a finite field.
Branch pushed to git repo; I updated commit sha1. New commits:
321adf3 | 28170: fix from review comments |
All tests pass.
Changed branch from u/bhutz/28170 to 321adf3
The following code does not work as mentioned functions currently go to the algebraic closure:
We call field_of_definition_critical/field_of_definition_periodic on f to change ring to a finite extension instead of QQbar, so that functionality is preserved for number fields.
Additionally, we add _is_preperiodic and is_postcritically_finite to the DynamicalSystem_projective_finite_field class: every point is preperiodic over a finite field, so both functions should return True. If return_period=True in _is_preperiodic, we call orbit_structure. In order to normalize output, we modify orbit_structure to return (m,n) as a tuple instead of a list.
In doctests for multiplier_spectra, using field of definition instead of QQbar permuted multipliers in several outputs. We corrected this and hope to prevent similar issues by sorting the output.
These changes allow is_postcritically_finite and multiplier_spectra to work over finite fields as well.
Component: dynamics
Keywords: SI2019, sd104
Author: Heidi Benham, Julia Cai, Leopold Mayer, Ben Hutz
Branch/Commit:
321adf3
Reviewer: Meghan Grip, Talia Blum, John Doyle, Alexis Suki Dasher, John Michael Clark
Issue created by migration from https://trac.sagemath.org/ticket/28170