Improved README.md

This commit is contained in:
Miguel Marco 2017-02-25 21:45:13 +01:00
parent c5b5169e0f
commit 13fbfb0f88
Signed by: mmarco
GPG Key ID: DD0114EDB7410592

View File

@ -3,10 +3,10 @@
## General description. ## General description.
This is a library for computing homotopy continuation of a given root of one This is a library for computing homotopy continuation of a given root of one
dimensional sections of bivariate complex polynomials. The output is a dimensional sections of bivariate complex polynomials (of degree greater than 2).
piecewise linear aproximation of the path followed by the root, with the The output is a piecewise linear aproximation of the path followed by the root,
property that there is a tubular neighborhood, with square transversal section, with the property that there is a tubular neighborhood, with square transversal
that contains the actual path, and there is a three times thicker tubular section, that contains the actual path, and there is a three times thicker tubular
neigborhood guaranted to contain no other root of the polynomial. This second neigborhood guaranted to contain no other root of the polynomial. This second
property ensures that the piecewise linear approximation computed from all roots property ensures that the piecewise linear approximation computed from all roots
of a polynomial form a topologically correct deformation of the actual braid, of a polynomial form a topologically correct deformation of the actual braid,
@ -118,35 +118,71 @@ sage: R.<x,y>=QQ[]
sage: f = x^4*y - x^2*y - y^2 + y sage: f = x^4*y - x^2*y - y^2 + y
sage: followstrand(f, 0, 2, 1) sage: followstrand(f, 0, 2, 1)
[(0.0, 1.0, 0.0), [(0.0, 1.0, 0.0),
(0.08838834764831845, 0.9697265625, 0.0), (0.0625, 0.984619140625, 0.0),
(0.18495073095668707, 0.8818945614497176, 0.0), (0.12764635845490785, 0.9390733273680929, 0.0),
(0.2830354627446311, 0.7822431249849692, 0.0), (0.2052599190422273, 0.8598746563676689, 0.0),
(0.36442245301616083, 0.7509743697977961, 0.0), (0.2738388312761707, 0.7900196735949514, 0.0),
(0.4162134713480532, 0.7872237656367932, 0.0), (0.33595920835462223, 0.752354737862309, 0.0),
(0.460346631682259, 0.8708786602233393, 0.0), (0.37742976502219505, 0.7548738424164684, 0.0),
(0.5011524089991131, 1.0046362459291838, 0.0), (0.41234462235565617, 0.7824404587459047, 0.0),
(0.5406631526749315, 1.1979177532866128, 0.0), (0.44384260852985935, 0.8329353859054077, 0.0),
(0.5801060727487398, 1.465872049076292, 0.0), (0.4733854965730891, 0.907113389122892, 0.0),
(0.6203344167290801, 1.830059589826348, 0.0), (0.5018340661499732, 1.0074037381755196, 0.0),
(0.6620003579483648, 2.319953607100401, 0.0), (0.529765293818804, 1.137637068382814, 0.0),
(0.7056383582405797, 2.975174768739414, 0.0), (0.557600298953678, 1.3030485992155871, 0.0),
(0.7517106691371234, 3.848570611753438, 0.0), (0.5856659871973544, 1.5104164286992712, 0.0),
(0.8006345979664276, 5.010356224191542, 0.0), (0.6142284603481915, 1.7682957386440397, 0.0),
(0.8528001455202311, 6.553629601012362, 0.0), (0.6435127330480354, 2.0873408693121487, 0.0),
(0.908582197461905, 8.601688407025646, 0.0), (0.6737151554114301, 2.480720326965522, 0.0),
(0.9683494644216709, 11.317718460782247, 0.0), (0.7050116648058133, 2.964637418672337, 0.0),
(0.7375635167677792, 3.558975212506035, 0.0),
(0.7715214229939402, 4.288090367126086, 0.0),
(0.8070286452864655, 5.181786778567655, 0.0),
(0.8442233838690689, 6.276507417916129, 0.0),
(0.8832406761016618, 7.616791574925573, 0.0),
(0.9242139476600717, 9.257055380403543, 0.0),
(0.9672763120876258, 11.263766404273989, 0.0),
(1.0, 13.0, 0.0)] (1.0, 13.0, 0.0)]
sage: fundamental_group(f) sage: fundamental_group(f)
Finitely presented group < x0, x1 | x1*x0*x1^-1*x0^-1 > Finitely presented group < x0, x1 | x1*x0*x1^-1*x0^-1 >
``` ```
We can specify the precission as follows:
```
sage: load("sage-sirocco_interface.pyx")
Compiling ./sage-sirocco_interface.pyx...
sage: load("ZVK.py")
sage: R.<x,y>=QQ[]
sage: f = x^4*y - x^2*y - y^2 + y
sage: followstrand(f, 0, 2, 1, 64)
[(0.000000000000000000, 1.00000000000000000, 0.000000000000000000),
(0.0883883476483184405, 0.969726562500000000, 0.000000000000000000),
(0.184950730956687066, 0.881894561449717605, 0.000000000000000000),
(0.283035462744631192, 0.782243124984969131, 0.000000000000000000),
(0.364422453016160885, 0.750974369797796147, 0.000000000000000000),
(0.416213471348053255, 0.787223765636793229, 0.000000000000000000),
(0.460346631682259060, 0.870878660223339468, 0.000000000000000000),
(0.501152408999113160, 1.00463624592918436, 0.000000000000000000),
(0.540663152674931619, 1.19791775328661377, 0.000000000000000000),
(0.580106072748739940, 1.46587204907629284, 0.000000000000000000),
(0.620334416729080238, 1.83005958982634992, 0.000000000000000000),
(0.662000357948364900, 2.31995360710040316, 0.000000000000000000),
(0.705638358240579886, 2.97517476873941566, 0.000000000000000000),
(0.751710669137123514, 3.84857061175344128, 0.000000000000000000),
(0.800634597966427747, 5.01035622419154600, 0.000000000000000000),
(0.852800145520231329, 6.55362960101237132, 0.000000000000000000),
(0.908582197461905312, 8.60168840702565921, 0.000000000000000000),
(0.968349464421671190, 11.3177184607822591, 0.000000000000000000),
(1.00000000000000000, 13.0000000000000000, 0.000000000000000000)]
```
The command followstrand shows the path followed y the root y0=1 of f(x,y) when The command followstrand shows the path followed y the root y0=1 of f(x,y) when
x varies from 0 o 2. It accepts an optional argument called `prec`, for the precission x varies from 0 o 2. It accepts an optional argument called `prec`, for the precission
to use. By default it is set to 53 (and uses the double precission implementation). If to use. By default it is set to 53 (and uses the double precission implementation). If
the computation fails, it falls back to a bigger precission until it succeeds). the computation fails, it falls back to a bigger precission until it succeeds).
The command fundamental_group uses this approach to The command fundamental_group uses this approach to
compute the braid monodromy associated to this polynomial, and then uses it to compute the braid monodromy associated to this polynomial, and then uses it to
compute the fundamental group of its complement, using Zariski-VanKampen method. get a presentation of the fundamental group of its complement, using Zariski-VanKampen method.
At some point we expect to have this included in SageMath as an optional (or At some point we expect to have this included in SageMath as an optional (or
maybe even standard) package. When that happens, we will probably provide a maybe even standard) package. When that happens, we will probably provide a
@ -155,7 +191,7 @@ computation.
## Dependencies: ## Dependencies:
The deppendencies are: This library deppends on:
- autotools/libtools/autoconf if you want to generate the configuration - autotools/libtools/autoconf if you want to generate the configuration
scripts (only needed if you get the source code from a git repository) scripts (only needed if you get the source code from a git repository)