Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multiplier spectra for projective morphisms #18443

Closed
sagetrac-gjorgenson mannequin opened this issue May 18, 2015 · 24 comments
Closed

Multiplier spectra for projective morphisms #18443

sagetrac-gjorgenson mannequin opened this issue May 18, 2015 · 24 comments

Comments

@sagetrac-gjorgenson
Copy link
Mannequin

sagetrac-gjorgenson mannequin commented May 18, 2015

Implement a function to compute the n multiplier spectra, the set of multipliers of periodic points of formal period n, of a projective morphism. This currently only makes sense for morphisms over projective space of dimension 1.

Depends on #18409

CC: @bhutz

Component: algebraic geometry

Author: Grayson Jorgenson

Branch/Commit: 6112c29

Reviewer: Ben Hutz

Issue created by migration from https://trac.sagemath.org/ticket/18443

@sagetrac-gjorgenson sagetrac-gjorgenson mannequin added this to the sage-6.7 milestone May 18, 2015
@sagetrac-gjorgenson
Copy link
Mannequin Author

sagetrac-gjorgenson mannequin commented May 20, 2015

Branch: u/gjorgenson/ticket/18443

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented May 20, 2015

Branch pushed to git repo; I updated commit sha1. New commits:

e50b84518443: added default values to documentation

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented May 20, 2015

Commit: e50b845

@sagetrac-gjorgenson sagetrac-gjorgenson mannequin modified the milestones: sage-6.7, sage-6.8 May 20, 2015
@bhutz
Copy link

bhutz commented May 25, 2015

Reviewer: Ben Hutz

@bhutz
Copy link

bhutz commented May 25, 2015

comment:4

A few things here, the big one is that the multiplier spectrum is defined with multiplicities. So if a perioidic point has multiplicity > 1 its multiplier should be repeated. Such as example should be added to the doc tests.

Other minor issues:

  • a positive integer, the period.

  • numberfield -> number field

  • n = int(n)

  • change_ring now works for QQbar, so this is not needed

if not PS.base_ring() is QQbar:
 emb = PS.base_ring().embeddings(QQbar)[0]
 f = self.change_ring(QQbar,embedding=emb) # to be able to find all periodic points
else:
 f = self
  • f.multiplier(P,n)[0][0] -> f.multiplier(P,n)[0,0]

  • multipliers.sort() -> not needed

  • sigma_invariants - 2nd senctence should say all periodic points. (same for INPUT)

  • from sage.combinat.sf.sf import SymmetricFunctions -> move to top

  • make len(multipliers) a constant in for loop

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented May 27, 2015

Branch pushed to git repo; I updated commit sha1. New commits:

cc8b73518443: Implemented changes from review.

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented May 27, 2015

Changed commit from e50b845 to cc8b735

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented May 27, 2015

Branch pushed to git repo; I updated commit sha1. New commits:

ab5c82e18443: Merged with latest beta
3333f6a18443: implemented last change from reivew

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented May 27, 2015

Changed commit from cc8b735 to 3333f6a

@bhutz
Copy link

bhutz commented May 30, 2015

comment:8

A couple things in multiplier_spectrum

  • you should check that the domain is projective space to avoid subschemes

  • K = f._number_field_from_algebraics() should be outside the if

  • if [1,0] is a point of multplicity you will miss this (You also only check if it is fixed not n-periodic). You could instead see if the poly F is of the form y^m*G(x,y) for some poly G, then m is the multplicity of [1,0].

  • it doesn't seem like your conversion to QQbar is working. Trying your number field example, when the map is actually defined over a number field

sage: set_verbose(None)
sage: z = QQ['z'].0
sage: K.<w> = NumberField(z^4 - 4*z^2 + 1)
sage: P.<x,y> = ProjectiveSpace(K,1)
sage: H = End(P)
sage: f = H([x^2 - w/4*y^2,y^2])
sage: f.multiplier_spectra(2,False)

Not sure exactly what you should do here. One option is to get change_ring for polynomials to deal with QQbar, by passing in and/or creating an embedding. If you look in schemes.generic.morphism.SchemeMorphism_polynomial.change_ring() it gives a simple way to construct a hom of polynomials given a hom of the base rings. It does appear that the change_ring of the parent is working, so you probably just need to create the hom between the poly rings and apply it to the element to be changed.

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Jun 8, 2015

Changed commit from 3333f6a to 71d1123

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Jun 8, 2015

Branch pushed to git repo; I updated commit sha1. New commits:

71d112318443: implemented changes from second review

@sagetrac-gjorgenson
Copy link
Mannequin Author

sagetrac-gjorgenson mannequin commented Jun 8, 2015

comment:10

For the formal==True case I used the technique in the morphism change_ring function to create the homomorphism between polynomial rings to use on F and this seems to have addressed the issues so far. For the formal==False case, the conversion already seemed to be working, but the _number_field_from_algebraics version of the map wasn't needed for finding roots.

I found another problem though:

P.<x,y> = ProjectiveSpace(QQ,1)
H = End(P)
f = H([x^2 - 3/4*y^2,y^2])
f.multiplier_spectra(2)

gives [1,1] back which isn't correct.

I didn’t catch this before, but multiplier_spectra should only return [1] here, because there is only one two cycle. The collapsing causes this two cycle to turn into a root of multiplicity 2 of the dynatomic polynomial, so the algorithm I use to pick representatives from cycles doesn’t work.

I will implement a fix attempt for this next, but I wanted to push up the current commit before doing so.

@bhutz
Copy link

bhutz commented Jun 9, 2015

comment:11

For x^2-3/4, what you have are no 2-cycles. There are 2 formal 2-periodic points, but they are a doubled fixed point. So, I'm not sure [1,1] is incorrect in this case. Why do you think this is wrong?

@sagetrac-gjorgenson
Copy link
Mannequin Author

sagetrac-gjorgenson mannequin commented Jun 9, 2015

comment:12

I thought getting [1,1] back was messing up the resulting elementary symmetric polynomial. For the other x^2 + c, the formal 2-multiplier spectra consists of one multiplier and so there is only one elementary symmetric polynomial, sigma_{1}^{(2)} = sigma_2 + 4. For x^2 - 3/4, if we use [1,1] we have an extra multiplier, and sigma_{1}^{(2)} = 1+1 = 2 when we expect sigma_{1}^{(2)} = sigma_2 + 4 = 1.

I was thinking that it might be better to treat the doubled fixed point as a single 2-cycle so that we only get one multiplier. Would that work?

@bhutz
Copy link

bhutz commented Jun 9, 2015

comment:13

hmm...yes I see your point. I think having the correct number of multipliers so that the elementary symmetric polynomials are continuous as they are supposed to be would be the correct approach.

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Jun 10, 2015

Changed commit from 71d1123 to 3aca932

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Jun 10, 2015

Branch pushed to git repo; I updated commit sha1. New commits:

3aca93218443: attempt to adapt algorithm for selecting cycle representatives

@sagetrac-gjorgenson
Copy link
Mannequin Author

sagetrac-gjorgenson mannequin commented Jun 10, 2015

comment:15

I modified the selection loop slightly so now there's no break when iterating points to find their cycles. I think this will address the issue of extra representative points for collapsed cycles, and shouldn't change anything for maps with no collapsing.

@bhutz
Copy link

bhutz commented Jun 11, 2015

comment:16

Just a couple very minor things here. You should actually convert n, not just check the conversion. ie. use n=int(n)

Also, I'd rather not have you accessing the ._polys list directly. Instead you can use G[0], G[1], etc.

Finally, I'd like to see an example with multiplicities.

I see you directly implemented the QQbar change ring for the dynatomic polynomial. I still think the .change_ring() should be fixed as well, but that can be done in a different ticket.

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Jun 12, 2015

Changed commit from 3aca932 to 6112c29

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Jun 12, 2015

Branch pushed to git repo; I updated commit sha1. New commits:

6112c2918443: minor changes and new example

@sagetrac-gjorgenson
Copy link
Mannequin Author

sagetrac-gjorgenson mannequin commented Jun 12, 2015

comment:18

I added an example using x^2 - 7/4 which has a collapsed 3-cycle. I left the x^2 -3/4 example in to illustrate that the doubled fixed point is treated as one 2-cycle, but I can remove it if it seems unnecessary.

@vbraun
Copy link
Member

vbraun commented Jun 17, 2015

Changed branch from u/gjorgenson/ticket/18443 to 6112c29

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants