jeanluct / pseudoanosov Goto Github PK
View Code? Open in Web Editor NEWMathematica and C++ files for testing polynomials of pseudo-Anosov maps.
License: GNU General Public License v3.0
Mathematica and C++ files for testing polynomials of pseudo-Anosov maps.
License: GNU General Public License v3.0
Things are a little murky right now:
ReciprocalPolynomialBoundedList
restricts to Perron root. Is this the best idea? Probably.PerronRoot
doesn't quite do that, since it returns the largest root (in magnitude), even if the polynomial is not Perron. Would it be better to call it LargestRoot
or MaximalRoot
?There are several notebooks in the root folder and subfolders:
Categorize them: some should be moved to subfolders. Keep a few that demonstrate the use of PA.
Right now Regular
takes a PerronRootSign
option, but the other "expert" functions Singular
, SingularPermutations
, and SingularStratum
take a prs
value of +1
or -1
.
One reason for this discrepancy, I think, is that the latter can't attempt to figure out the sign (i.e., can't take the Automatic
value for PerronRootSign
). Still, it's not very elegant to have these two different ways.
Possible solutions:
i
prefix.Automatic
. After that I'm tempted to stop labeling them as "expert" and just move them with the others.See also issue #3.
PseudoAnosovPerronRootQ[x^2 - 3 x + 1]
Abs::argx: Abs called with 0 arguments; 1 argument is expected. >>
True
Here the optional argument lmax should default to zero, but it doesn't. The argument list of the functions has lmax___:0
(three underscores). Why?
I'm not sure that StratumOrbits
deals with the torus s={{}}
in the right way. Ditto for marked points. Do some experiments, with things like StratumOrbits[{{}},p]
or StratumOrbits[{{0,2}},p]
. Then maybe expand help message to clarify that marked points can be used.
Check also that table works:
StratumOrbitsTable[#, 10] & /@ StratumOrbits[{{}}, p0]
First::nofirst: "{} has zero length and no first element."
stratatest.nb contains some really nice functions for making results tables. Add these to the core PseudoAnosov.m file, possibly in a new context? (`Results?)
Two ways of specifying stratum: with or without multiplicities. Easy to do. I think some functions already do it.
Several functions have the line
If[prs == Automatic, prs = Sign[Times @@ Take[L,-2]]];
which attempts to figure out the Perron root sign from the Lefschetz numbers (they eventually alternate). Make this a separate helper function.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.