Primera versión terminada
451
codigo/zariski_vankampen.py
Normal file
@ -0,0 +1,451 @@
|
||||
r"""
|
||||
Zariski-Van Kampen method implementation
|
||||
|
||||
This file contains functions to compute the fundamental group of
|
||||
the complement of a curve in the complex affine or projective plane,
|
||||
using Zariski-Van Kampen approach. It depends on the package ``sirocco``.
|
||||
|
||||
The current implementation allows to compute a presentation of the
|
||||
fundamental group of curves over the rationals or number fields with
|
||||
a fixed embedding on `\QQbar`.
|
||||
|
||||
Instead of computing a representation of the braid monodromy, we
|
||||
choose several base points and a system of paths joining them that
|
||||
generate all the necessary loops around the points of the discriminant.
|
||||
The group is generated by the free groups over these points, and
|
||||
braids over this paths gives relations between these generators.
|
||||
This big group presentation is simplified at the end.
|
||||
|
||||
.. TODO::
|
||||
|
||||
Implement the complete braid monodromy approach.
|
||||
|
||||
AUTHORS:
|
||||
|
||||
- Miguel Marco (2015-09-30): Initial version
|
||||
|
||||
EXAMPLES::
|
||||
|
||||
sage: from sage.schemes.curves.zariski_vankampen import fundamental_group # optional - sirocco
|
||||
sage: R.<x,y> = QQ[]
|
||||
sage: f = y^3 + x^3 -1
|
||||
sage: fundamental_group(f) # optional - sirocco
|
||||
Finitely presented group < x0 | >
|
||||
"""
|
||||
# ****************************************************************************
|
||||
# Copyright (C) 2015 Miguel Marco <mmarco@unizar.es>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
# https://www.gnu.org/licenses/
|
||||
# ****************************************************************************
|
||||
from __future__ import division, absolute_import
|
||||
|
||||
from sage.groups.braid import BraidGroup
|
||||
from sage.groups.perm_gps.permgroup_named import SymmetricGroup
|
||||
from sage.rings.rational_field import QQ
|
||||
from sage.rings.qqbar import QQbar
|
||||
from sage.rings.all import CC
|
||||
from sage.parallel.decorate import parallel
|
||||
from sage.misc.flatten import flatten
|
||||
from sage.groups.free_group import FreeGroup
|
||||
from sage.misc.misc_c import prod
|
||||
from sage.rings.complex_field import ComplexField
|
||||
from sage.rings.complex_interval_field import ComplexIntervalField
|
||||
from sage.combinat.permutation import Permutation
|
||||
from sage.functions.generalized import sign
|
||||
|
||||
|
||||
def braid_from_piecewise(strands):
|
||||
r"""
|
||||
Compute the braid corresponding to the piecewise linear curves strands.
|
||||
|
||||
INPUT:
|
||||
|
||||
- ``strands`` -- a list of lists of tuples ``(t, c)``, where ``t``
|
||||
is a number between 0 and 1, and ``c`` is a complex number
|
||||
|
||||
OUTPUT:
|
||||
|
||||
The braid formed by the piecewise linear strands.
|
||||
|
||||
EXAMPLES::
|
||||
|
||||
sage: from sage.schemes.curves.zariski_vankampen import braid_from_piecewise # optional - sirocco
|
||||
sage: paths = [[(0, I), (0.2, -1 - 0.5*I), (0.8, -1), (1, -I)],
|
||||
....: [(0, -1), (0.5, -I), (1, 1)],
|
||||
....: [(0, 1), (0.5, 1 + I), (1, I)]]
|
||||
sage: braid_from_piecewise(paths) # optional - sirocco
|
||||
s0*s1
|
||||
"""
|
||||
L = strands
|
||||
i = min(val[1][0] for val in L)
|
||||
totalpoints = [[[a[0][1].real(), a[0][1].imag()]] for a in L]
|
||||
indices = [1 for a in range(len(L))]
|
||||
cuts = [0,i]
|
||||
while i < 1:
|
||||
for j, val in enumerate(L):
|
||||
if val[indices[j]][0] > i:
|
||||
xaux = val[indices[j] - 1][1]
|
||||
yaux = val[indices[j]][1]
|
||||
aaux = val[indices[j] - 1][0]
|
||||
baux = val[indices[j]][0]
|
||||
interpola = xaux + (yaux - xaux) * (i - aaux) / (baux - aaux)
|
||||
totalpoints[j].append([interpola.real(), interpola.imag()])
|
||||
else:
|
||||
totalpoints[j].append([val[indices[j]][1].real(),
|
||||
val[indices[j]][1].imag()])
|
||||
indices[j] = indices[j] + 1
|
||||
i = min(val[indices[k]][0] for k, val in enumerate(L))
|
||||
cuts.append(i)
|
||||
for j, val in enumerate(L):
|
||||
totalpoints[j].append([val[-1][1].real(), val[-1][1].imag()])
|
||||
|
||||
|
||||
braid = []
|
||||
G = SymmetricGroup(len(totalpoints))
|
||||
|
||||
def sgn(x, y):
|
||||
if x < y:
|
||||
return 1
|
||||
if x > y:
|
||||
return -1
|
||||
return 0
|
||||
for i in range(len(totalpoints[0]) - 1):
|
||||
l1 = [totalpoints[j][i] for j in range(len(L))]
|
||||
l2 = [totalpoints[j][i + 1] for j in range(len(L))]
|
||||
M = [[l1[s], l2[s]] for s in range(len(l1))]
|
||||
M.sort()
|
||||
l1 = [a[0] for a in M]
|
||||
l2 = [a[1] for a in M]
|
||||
cruces = []
|
||||
for j in range(len(l2)):
|
||||
for k in range(j):
|
||||
if l2[j] < l2[k]:
|
||||
t = (l1[j][0] - l1[k][0])/(l2[k][0] - l1[k][0] + l1[j][0] - l2[j][0])
|
||||
s = sgn(l1[k][1]*(1 - t) + t*l2[k][1], l1[j][1]*(1 - t) + t*l2[j][1])
|
||||
cruces.append([t, k, j, s])
|
||||
if cruces:
|
||||
cruces.sort()
|
||||
P = G(Permutation([]))
|
||||
while cruces:
|
||||
# we select the crosses in the same t
|
||||
crucesl = [c for c in cruces if c[0] == cruces[0][0]]
|
||||
altura = cuts[i]*(1-cruces[0][0])+cuts[i+1]*cruces[0][0]
|
||||
crossesl = [(P(c[2] + 1) - P(c[1] + 1), c[1], c[2], c[3])
|
||||
for c in crucesl]
|
||||
cruces = cruces[len(crucesl):]
|
||||
while crossesl:
|
||||
crossesl.sort()
|
||||
c = crossesl.pop(0)
|
||||
braid.append((altura, c[3]*min(map(P, [c[1] + 1, c[2] + 1]))))
|
||||
P = G(Permutation([(c[1] + 1, c[2] + 1)])) * P
|
||||
crossesl = [(P(cr[2]+1) - P(cr[1]+1), cr[1], cr[2], cr[3])
|
||||
for cr in crossesl]
|
||||
|
||||
return braid
|
||||
|
||||
|
||||
def discrim(f):
|
||||
r"""
|
||||
Return the points in the discriminant of ``f``.
|
||||
|
||||
The result is the set of values of the first variable for which
|
||||
two roots in the second variable coincide.
|
||||
|
||||
INPUT:
|
||||
|
||||
- ``f`` -- a polynomial in two variables with coefficients in a
|
||||
number field with a fixed embedding in `\QQbar`
|
||||
|
||||
OUTPUT:
|
||||
|
||||
A list with the values of the discriminant in `\QQbar`.
|
||||
|
||||
EXAMPLES::
|
||||
|
||||
sage: from sage.schemes.curves.zariski_vankampen import discrim # optional - sirocco
|
||||
sage: R.<x,y> = QQ[]
|
||||
sage: f = (y^3 + x^3 - 1) * (x + y)
|
||||
sage: discrim(f) # optional - sirocco
|
||||
[1,
|
||||
-0.500000000000000? - 0.866025403784439?*I,
|
||||
-0.500000000000000? + 0.866025403784439?*I]
|
||||
"""
|
||||
x, y = f.variables()
|
||||
F = f.base_ring()
|
||||
poly = F[x](f.discriminant(y).resultant(f, y)).radical()
|
||||
return poly.roots(QQbar, multiplicities=False)
|
||||
|
||||
|
||||
def segments(points):
|
||||
"""
|
||||
Return the bounded segments of the Voronoi diagram of the given points.
|
||||
|
||||
INPUT:
|
||||
|
||||
- ``points`` -- a list of complex points
|
||||
|
||||
OUTPUT:
|
||||
|
||||
A list of pairs ``(p1, p2)``, where ``p1`` and ``p2`` are the
|
||||
endpoints of the segments in the Voronoi diagram.
|
||||
|
||||
EXAMPLES::
|
||||
|
||||
sage: from sage.schemes.curves.zariski_vankampen import discrim, segments # optional - sirocco
|
||||
sage: R.<x,y> = QQ[]
|
||||
sage: f = y^3 + x^3 - 1
|
||||
sage: disc = discrim(f) # optional - sirocco
|
||||
sage: segments(disc) # optional - sirocco # abs tol 1e-15
|
||||
[(-2.84740787203333 - 2.84740787203333*I,
|
||||
-2.14285714285714 + 1.11022302462516e-16*I),
|
||||
(-2.84740787203333 + 2.84740787203333*I,
|
||||
-2.14285714285714 + 1.11022302462516e-16*I),
|
||||
(2.50000000000000 + 2.50000000000000*I,
|
||||
1.26513881334184 + 2.19128470333546*I),
|
||||
(2.50000000000000 + 2.50000000000000*I,
|
||||
2.50000000000000 - 2.50000000000000*I),
|
||||
(1.26513881334184 + 2.19128470333546*I, 0.000000000000000),
|
||||
(0.000000000000000, 1.26513881334184 - 2.19128470333546*I),
|
||||
(2.50000000000000 - 2.50000000000000*I,
|
||||
1.26513881334184 - 2.19128470333546*I),
|
||||
(-2.84740787203333 + 2.84740787203333*I,
|
||||
1.26513881334184 + 2.19128470333546*I),
|
||||
(-2.14285714285714 + 1.11022302462516e-16*I, 0.000000000000000),
|
||||
(-2.84740787203333 - 2.84740787203333*I,
|
||||
1.26513881334184 - 2.19128470333546*I)]
|
||||
"""
|
||||
from numpy import array, vstack
|
||||
from scipy.spatial import Voronoi
|
||||
discpoints = array([(CC(a).real(), CC(a).imag()) for a in points])
|
||||
added_points = 3 * abs(discpoints).max() + 1.0
|
||||
configuration = vstack([discpoints, array([[added_points, 0],
|
||||
[-added_points, 0],
|
||||
[0, added_points],
|
||||
[0, -added_points]])])
|
||||
V = Voronoi(configuration)
|
||||
res = []
|
||||
for rv in V.ridge_vertices:
|
||||
if -1 not in rv:
|
||||
p1 = CC(list(V.vertices[rv[0]]))
|
||||
p2 = CC(list(V.vertices[rv[1]]))
|
||||
res.append((p1, p2))
|
||||
return res
|
||||
|
||||
|
||||
def followstrand(f, x0, x1, y0a, prec=53):
|
||||
r"""
|
||||
Return a piecewise linear approximation of the homotopy continuation
|
||||
of the root ``y0a`` from ``x0`` to ``x1``.
|
||||
|
||||
INPUT:
|
||||
|
||||
- ``f`` -- a polynomial in two variables
|
||||
- ``x0`` -- a complex value, where the homotopy starts
|
||||
- ``x1`` -- a complex value, where the homotopy ends
|
||||
- ``y0a`` -- an approximate solution of the polynomial `F(y) = f(x_0, y)`
|
||||
- ``prec`` -- the precision to use
|
||||
|
||||
OUTPUT:
|
||||
|
||||
A list of values `(t, y_{tr}, y_{ti})` such that:
|
||||
|
||||
- ``t`` is a real number between zero and one
|
||||
- `f(t \cdot x_1 + (1-t) \cdot x_0, y_{tr} + I \cdot y_{ti})`
|
||||
is zero (or a good enough approximation)
|
||||
- the piecewise linear path determined by the points has a tubular
|
||||
neighborhood where the actual homotopy continuation path lies, and
|
||||
no other root intersects it.
|
||||
|
||||
EXAMPLES::
|
||||
|
||||
sage: from sage.schemes.curves.zariski_vankampen import followstrand # optional - sirocco
|
||||
sage: R.<x,y> = QQ[]
|
||||
sage: f = x^2 + y^3
|
||||
sage: x0 = CC(1, 0)
|
||||
sage: x1 = CC(1, 0.5)
|
||||
sage: followstrand(f, x0, x1, -1.0) # optional - sirocco # abs tol 1e-15
|
||||
[(0.0, -1.0, 0.0),
|
||||
(0.7500000000000001, -1.015090921153253, -0.24752813818386948),
|
||||
(1.0, -1.026166099551513, -0.32768940253604323)]
|
||||
"""
|
||||
CIF = ComplexIntervalField(prec)
|
||||
CC = ComplexField(prec)
|
||||
G = f.change_ring(QQbar).change_ring(CIF)
|
||||
(x, y) = G.variables()
|
||||
g = G.subs({x: (1 - x) * CIF(x0) + x * CIF(x1)})
|
||||
coefs = []
|
||||
deg = g.total_degree()
|
||||
for d in range(deg + 1):
|
||||
for i in range(d + 1):
|
||||
c = CIF(g.coefficient({x: d - i, y: i}))
|
||||
cr = c.real()
|
||||
ci = c.imag()
|
||||
coefs += list(cr.endpoints())
|
||||
coefs += list(ci.endpoints())
|
||||
yr = CC(y0a).real()
|
||||
yi = CC(y0a).imag()
|
||||
from sage.libs.sirocco import contpath, contpath_mp
|
||||
try:
|
||||
if prec == 53:
|
||||
points = contpath(deg, coefs, yr, yi)
|
||||
else:
|
||||
points = contpath_mp(deg, coefs, yr, yi, prec)
|
||||
return points
|
||||
except Exception:
|
||||
return followstrand(f, x0, x1, y0a, 2 * prec)
|
||||
|
||||
|
||||
@parallel
|
||||
def braid_in_segment(f, x0, x1):
|
||||
"""
|
||||
Return the braid formed by the `y` roots of ``f`` when `x` moves
|
||||
from ``x0`` to ``x1``.
|
||||
|
||||
INPUT:
|
||||
|
||||
- ``f`` -- a polynomial in two variables
|
||||
- ``x0`` -- a complex number
|
||||
- ``x1`` -- a complex number
|
||||
|
||||
OUTPUT:
|
||||
|
||||
A braid.
|
||||
|
||||
EXAMPLES::
|
||||
|
||||
sage: from sage.schemes.curves.zariski_vankampen import braid_in_segment # optional - sirocco
|
||||
sage: R.<x,y> = QQ[]
|
||||
sage: f = x^2 + y^3
|
||||
sage: x0 = CC(1,0)
|
||||
sage: x1 = CC(1, 0.5)
|
||||
sage: braid_in_segment(f, x0, x1) # optional - sirocco
|
||||
s1
|
||||
|
||||
TESTS:
|
||||
|
||||
Check that :trac:`26503` is fixed::
|
||||
|
||||
sage: wp = QQ['t']([1, 1, 1]).roots(QQbar)[0][0]
|
||||
sage: Kw.<wp> = NumberField(wp.minpoly(), embedding=wp)
|
||||
sage: R.<x, y> = Kw[]
|
||||
sage: z = -wp - 1
|
||||
sage: f = y*(y + z)*x*(x - 1)*(x - y)*(x + z*y - 1)*(x + z*y + wp)
|
||||
sage: from sage.schemes.curves import zariski_vankampen as zvk
|
||||
sage: g = f.subs({x: x + 2*y})
|
||||
sage: p1 = QQbar(sqrt(-1/3))
|
||||
sage: p2 = QQbar(1/2+sqrt(-1/3)/2)
|
||||
sage: B = zvk.braid_in_segment(g,CC(p1),CC(p2)) # optional - sirocco
|
||||
sage: B.left_normal_form() # optional - sirocco
|
||||
(1, s5)
|
||||
"""
|
||||
CC = ComplexField(64)
|
||||
(x, y) = f.variables()
|
||||
I = QQbar.gen()
|
||||
X0 = QQ(x0.real()) + I * QQ(x0.imag())
|
||||
X1 = QQ(x1.real()) + I * QQ(x1.imag())
|
||||
F0 = QQbar[y](f(X0, y))
|
||||
y0s = F0.roots(multiplicities=False)
|
||||
strands = [followstrand(f, x0, x1, CC(a)) for a in y0s]
|
||||
complexstrands = [[(a[0], CC(a[1], a[2])) for a in b] for b in strands]
|
||||
centralbraid = braid_from_piecewise(complexstrands)
|
||||
|
||||
return centralbraid
|
||||
|
||||
|
||||
def fundamental_group(f, simplified=True, projective=False):
|
||||
r"""
|
||||
Return a presentation of the fundamental group of the complement of
|
||||
the algebraic set defined by the polynomial ``f``.
|
||||
|
||||
INPUT:
|
||||
|
||||
- ``f`` -- a polynomial in two variables, with coefficients in either
|
||||
the rationals or a number field with a fixed embedding in `\QQbar`
|
||||
|
||||
- ``simplified`` -- boolean (default: ``True``); if set to ``True`` the
|
||||
presentation will be simplified (see below)
|
||||
|
||||
- ``projective`` -- boolean (default: ``False``); if set to ``True``,
|
||||
the fundamental group of the complement of the projective completion
|
||||
of the curve will be computed, otherwise, the fundamental group of
|
||||
the complement in the affine plane will be computed
|
||||
|
||||
If ``simplified`` is ``False``, the returned presentation has as
|
||||
many generators as degree of the polynomial times the points in the
|
||||
base used to create the segments that surround the discriminant. In
|
||||
this case, the generators are granted to be meridians of the curve.
|
||||
|
||||
OUTPUT:
|
||||
|
||||
A presentation of the fundamental group of the complement of the
|
||||
curve defined by ``f``.
|
||||
|
||||
EXAMPLES::
|
||||
|
||||
sage: from sage.schemes.curves.zariski_vankampen import fundamental_group # optional - sirocco
|
||||
sage: R.<x,y> = QQ[]
|
||||
sage: f = x^2 + y^3
|
||||
sage: fundamental_group(f) # optional - sirocco
|
||||
Finitely presented group < ... >
|
||||
sage: fundamental_group(f, simplified=False) # optional - sirocco
|
||||
Finitely presented group < ... >
|
||||
|
||||
::
|
||||
|
||||
sage: from sage.schemes.curves.zariski_vankampen import fundamental_group # optional - sirocco
|
||||
sage: R.<x,y> = QQ[]
|
||||
sage: f = y^3 + x^3
|
||||
sage: fundamental_group(f) # optional - sirocco
|
||||
Finitely presented group < ... >
|
||||
|
||||
It is also possible to have coefficients in a number field with a
|
||||
fixed embedding in `\QQbar`::
|
||||
|
||||
sage: from sage.schemes.curves.zariski_vankampen import fundamental_group # optional - sirocco
|
||||
sage: zeta = QQbar['x']('x^2+x+1').roots(multiplicities=False)[0]
|
||||
sage: zeta
|
||||
-0.50000000000000000? - 0.866025403784439?*I
|
||||
sage: F = NumberField(zeta.minpoly(), 'zeta', embedding=zeta)
|
||||
sage: F.inject_variables()
|
||||
Defining zeta
|
||||
sage: R.<x,y> = F[]
|
||||
sage: f = y^3 + x^3 +zeta *x + 1
|
||||
sage: fundamental_group(f) # optional - sirocco
|
||||
Finitely presented group < x0 | >
|
||||
"""
|
||||
(x, y) = f.variables()
|
||||
F = f.base_ring()
|
||||
g = f.radical()
|
||||
d = g.degree(y)
|
||||
while not g.coefficient(y**d) in F or (projective and g.total_degree() > d):
|
||||
g = g.subs({x: x + y})
|
||||
d = g.degree(y)
|
||||
disc = discrim(g)
|
||||
segs = segments(disc)
|
||||
vertices = list(set(flatten(segs)))
|
||||
Faux = FreeGroup(d)
|
||||
F = FreeGroup(d * len(vertices))
|
||||
rels = []
|
||||
if projective:
|
||||
rels.append(prod(F.gen(i) for i in range(d)))
|
||||
braidscomputed = braid_in_segment([(g, seg[0], seg[1]) for seg in segs])
|
||||
for braidcomputed in braidscomputed:
|
||||
seg = (braidcomputed[0][0][1], braidcomputed[0][0][2])
|
||||
b = braidcomputed[1]
|
||||
i = vertices.index(seg[0])
|
||||
j = vertices.index(seg[1])
|
||||
for k in range(d):
|
||||
el1 = Faux([k + 1]) * b.inverse()
|
||||
el2 = k + 1
|
||||
w1 = F([sign(a) * d * i + a for a in el1.Tietze()])
|
||||
w2 = F([d * j + el2])
|
||||
rels.append(w1 / w2)
|
||||
G = F / rels
|
||||
if simplified:
|
||||
return G.simplified()
|
||||
else:
|
||||
return G
|
||||
BIN
cubos1.png
Normal file
|
After Width: | Height: | Size: 67 KiB |
BIN
cubos2.png
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
cubos3.png
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
cubos4.png
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
cubos5.png
Normal file
|
After Width: | Height: | Size: 84 KiB |
BIN
cubos6.png
Normal file
|
After Width: | Height: | Size: 87 KiB |
BIN
diagramarudolfhiperbola1.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
diagramarudolfhiperbola2.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
44
diagramarudolforevkov.svg
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
hiperbola.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
538
laberinto.ipynb
Normal file
BIN
laberinto0.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
1016
laberinto1.svg
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
monodtrenzas1.png
Normal file
|
After Width: | Height: | Size: 2.0 MiB |
BIN
monodtrenzas10.gif
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
monodtrenzas10.webm
Normal file
BIN
monodtrenzas2.png
Normal file
|
After Width: | Height: | Size: 2.0 MiB |
BIN
monodtrenzas3.png
Normal file
|
After Width: | Height: | Size: 2.0 MiB |
BIN
monodtrenzas4.gif
Normal file
|
After Width: | Height: | Size: 440 KiB |
BIN
monodtrenzas4.webm
Normal file
BIN
monodtrenzas5.gif
Normal file
|
After Width: | Height: | Size: 421 KiB |
BIN
monodtrenzas5.webm
Normal file
BIN
monodtrenzas6.gif
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
monodtrenzas6.webm
Normal file
BIN
monodtrenzas7.gif
Normal file
|
After Width: | Height: | Size: 490 KiB |
BIN
monodtrenzas7.webm
Normal file
BIN
monodtrenzas8.gif
Normal file
|
After Width: | Height: | Size: 2.8 MiB |
BIN
monodtrenzas8.webm
Normal file
BIN
monodtrenzas9.gif
Normal file
|
After Width: | Height: | Size: 585 KiB |
BIN
monodtrenzas9.webm
Normal file
615
orevkov.svg
Normal file
@ -0,0 +1,615 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Created with matplotlib (http://matplotlib.org/) -->
|
||||
<svg height="4440.85327pt" version="1.1" viewBox="0 0 5620.369759 4440.85327" width="5620.369759pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
*{stroke-linecap:butt;stroke-linejoin:round;}
|
||||
</style>
|
||||
</defs>
|
||||
<g id="figure_1">
|
||||
<g id="patch_1">
|
||||
<path d="M 0 4440.85327
|
||||
L 5620.369759 4440.85327
|
||||
L 5620.369759 0
|
||||
L 0 0
|
||||
z
|
||||
" style="fill:#ffffff;"/>
|
||||
</g>
|
||||
<g id="axes_1">
|
||||
<g id="patch_2">
|
||||
<path d="M 10.7 4430.15327
|
||||
L 256.945871 4430.15327
|
||||
L 256.945871 4170.75327
|
||||
L 10.7 4170.75327
|
||||
z
|
||||
" style="fill:#ffffff;"/>
|
||||
</g>
|
||||
<g id="PathCollection_1">
|
||||
<defs>
|
||||
<path d="M 0 1.581139
|
||||
C 0.419323 1.581139 0.821528 1.41454 1.118034 1.118034
|
||||
C 1.41454 0.821528 1.581139 0.419323 1.581139 0
|
||||
C 1.581139 -0.419323 1.41454 -0.821528 1.118034 -1.118034
|
||||
C 0.821528 -1.41454 0.419323 -1.581139 0 -1.581139
|
||||
C -0.419323 -1.581139 -0.821528 -1.41454 -1.118034 -1.118034
|
||||
C -1.41454 -0.821528 -1.581139 -0.419323 -1.581139 0
|
||||
C -1.581139 0.419323 -1.41454 0.821528 -1.118034 1.118034
|
||||
C -0.821528 1.41454 -0.419323 1.581139 0 1.581139
|
||||
z
|
||||
" id="C0_0_0e0d49823b"/>
|
||||
</defs>
|
||||
<g clip-path="url(#p16f2a2ec29)">
|
||||
<use style="fill:#0000ff;" x="130.433069" xlink:href="#C0_0_0e0d49823b" y="4300.45327"/>
|
||||
</g>
|
||||
<g clip-path="url(#p16f2a2ec29)">
|
||||
<use style="fill:#0000ff;" x="181.724784" xlink:href="#C0_0_0e0d49823b" y="4300.45327"/>
|
||||
</g>
|
||||
<g clip-path="url(#p16f2a2ec29)">
|
||||
<use style="fill:#0000ff;" x="121.291114" xlink:href="#C0_0_0e0d49823b" y="4313.924997"/>
|
||||
</g>
|
||||
<g clip-path="url(#p16f2a2ec29)">
|
||||
<use style="fill:#0000ff;" x="121.291114" xlink:href="#C0_0_0e0d49823b" y="4286.981542"/>
|
||||
</g>
|
||||
<g clip-path="url(#p16f2a2ec29)">
|
||||
<use style="fill:#0000ff;" x="126.031718" xlink:href="#C0_0_0e0d49823b" y="4329.014981"/>
|
||||
</g>
|
||||
<g clip-path="url(#p16f2a2ec29)">
|
||||
<use style="fill:#0000ff;" x="126.031718" xlink:href="#C0_0_0e0d49823b" y="4271.891558"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="matplotlib.axis_1"/>
|
||||
<g id="matplotlib.axis_2"/>
|
||||
<g id="patch_3">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 46.866756 4196.561645
|
||||
Q 46.785483 4192.419633 46.715177 4188.836531
|
||||
" style="fill:none;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 45.754605 4190.855764
|
||||
L 46.715177 4188.836531
|
||||
L 47.75422 4190.816528
|
||||
L 45.754605 4190.855764
|
||||
z
|
||||
" style="fill:#0000ff;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
</g>
|
||||
<g id="patch_4">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 78.054241 4187.664033
|
||||
Q 78.135514 4191.806045 78.20582 4195.389147
|
||||
" style="fill:none;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 79.166392 4193.369914
|
||||
L 78.20582 4195.389147
|
||||
L 77.166777 4193.40915
|
||||
L 79.166392 4193.369914
|
||||
z
|
||||
" style="fill:#0000ff;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
</g>
|
||||
<g id="patch_5">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 109.404242 4187.048897
|
||||
Q 109.485515 4191.190909 109.555821 4194.774011
|
||||
" style="fill:none;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 110.516393 4192.754778
|
||||
L 109.555821 4194.774011
|
||||
L 108.516778 4192.794014
|
||||
L 110.516393 4192.754778
|
||||
z
|
||||
" style="fill:#0000ff;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
</g>
|
||||
<g id="patch_6">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 140.754243 4186.433761
|
||||
Q 140.835516 4190.575772 140.905822 4194.158875
|
||||
" style="fill:none;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 141.866394 4192.139642
|
||||
L 140.905822 4194.158875
|
||||
L 139.866779 4192.178877
|
||||
L 141.866394 4192.139642
|
||||
z
|
||||
" style="fill:#0000ff;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
</g>
|
||||
<g id="patch_7">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 172.104244 4185.818624
|
||||
Q 172.185517 4189.960636 172.255823 4193.543738
|
||||
" style="fill:none;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 173.216395 4191.524505
|
||||
L 172.255823 4193.543738
|
||||
L 171.216779 4191.563741
|
||||
L 173.216395 4191.524505
|
||||
z
|
||||
" style="fill:#0000ff;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
</g>
|
||||
<g id="patch_8">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 82.784898 4338.653202
|
||||
Q 81.543241 4334.700841 80.46913 4331.281799
|
||||
" style="fill:none;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 80.114528 4333.489571
|
||||
L 80.46913 4331.281799
|
||||
L 82.022586 4332.890144
|
||||
L 80.114528 4333.489571
|
||||
z
|
||||
" style="fill:#0000ff;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
</g>
|
||||
<g id="patch_9">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 151.936891 4300.45327
|
||||
Q 156.0797 4300.45327 159.663492 4300.45327
|
||||
" style="fill:none;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 157.663492 4299.45327
|
||||
L 159.663492 4300.45327
|
||||
L 157.663492 4301.45327
|
||||
L 157.663492 4299.45327
|
||||
z
|
||||
" style="fill:#0000ff;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
</g>
|
||||
<g id="patch_10">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 176.121591 4367.183681
|
||||
Q 179.807903 4365.293187 182.996797 4363.65779
|
||||
" style="fill:none;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 180.760845 4363.680643
|
||||
L 182.996797 4363.65779
|
||||
L 181.673508 4365.460263
|
||||
L 180.760845 4363.680643
|
||||
z
|
||||
" style="fill:#0000ff;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
</g>
|
||||
<g id="patch_11">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 243.422727 4300.45327
|
||||
Q 247.565536 4300.45327 251.149328 4300.45327
|
||||
" style="fill:none;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 249.149328 4299.45327
|
||||
L 251.149328 4300.45327
|
||||
L 249.149328 4301.45327
|
||||
L 249.149328 4299.45327
|
||||
z
|
||||
" style="fill:#0000ff;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
</g>
|
||||
<g id="patch_12">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 176.121591 4233.722858
|
||||
Q 179.807903 4235.613352 182.996797 4237.248749
|
||||
" style="fill:none;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 181.673508 4235.446276
|
||||
L 182.996797 4237.248749
|
||||
L 180.760845 4237.225896
|
||||
L 181.673508 4235.446276
|
||||
z
|
||||
" style="fill:#0000ff;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
</g>
|
||||
<g id="patch_13">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 46.866756 4404.344894
|
||||
Q 46.785483 4408.486906 46.715177 4412.070008
|
||||
" style="fill:none;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 47.75422 4410.090011
|
||||
L 46.715177 4412.070008
|
||||
L 45.754605 4410.050775
|
||||
L 47.75422 4410.090011
|
||||
z
|
||||
" style="fill:#0000ff;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
</g>
|
||||
<g id="patch_14">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 78.054241 4413.242506
|
||||
Q 78.135514 4409.100494 78.20582 4405.517392
|
||||
" style="fill:none;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 77.166777 4407.497389
|
||||
L 78.20582 4405.517392
|
||||
L 79.166392 4407.536625
|
||||
L 77.166777 4407.497389
|
||||
z
|
||||
" style="fill:#0000ff;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
</g>
|
||||
<g id="patch_15">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 109.404242 4413.857642
|
||||
Q 109.485515 4409.71563 109.555821 4406.132528
|
||||
" style="fill:none;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 108.516778 4408.112525
|
||||
L 109.555821 4406.132528
|
||||
L 110.516393 4408.151761
|
||||
L 108.516778 4408.112525
|
||||
z
|
||||
" style="fill:#0000ff;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
</g>
|
||||
<g id="patch_16">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 140.754243 4414.472778
|
||||
Q 140.835516 4410.330767 140.905822 4406.747664
|
||||
" style="fill:none;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 139.866779 4408.727662
|
||||
L 140.905822 4406.747664
|
||||
L 141.866394 4408.766897
|
||||
L 139.866779 4408.727662
|
||||
z
|
||||
" style="fill:#0000ff;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
</g>
|
||||
<g id="patch_17">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 172.104244 4415.087915
|
||||
Q 172.185517 4410.945903 172.255823 4407.362801
|
||||
" style="fill:none;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 171.216779 4409.342798
|
||||
L 172.255823 4407.362801
|
||||
L 173.216395 4409.382034
|
||||
L 171.216779 4409.342798
|
||||
z
|
||||
" style="fill:#0000ff;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
</g>
|
||||
<g id="patch_18">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 82.784898 4262.253337
|
||||
Q 81.543241 4266.205698 80.46913 4269.62474
|
||||
" style="fill:none;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 82.022586 4268.016395
|
||||
L 80.46913 4269.62474
|
||||
L 80.114528 4267.416968
|
||||
L 82.022586 4268.016395
|
||||
z
|
||||
" style="fill:#0000ff;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
</g>
|
||||
<g id="patch_19">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 21.274845 4326.394568
|
||||
Q 25.407169 4326.689132 28.98189 4326.943949
|
||||
" style="fill:none;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 27.058055 4325.804275
|
||||
L 28.98189 4326.943949
|
||||
L 26.915849 4327.799213
|
||||
L 27.058055 4325.804275
|
||||
z
|
||||
" style="fill:#0000ff;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
</g>
|
||||
<g id="patch_20">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 129.353318 4286.342549
|
||||
Q 131.679585 4289.770573 133.691953 4292.73603
|
||||
" style="fill:none;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 133.396378 4290.519584
|
||||
L 133.691953 4292.73603
|
||||
L 131.741451 4291.642623
|
||||
L 133.396378 4290.519584
|
||||
z
|
||||
" style="fill:#0000ff;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
</g>
|
||||
<g id="patch_21">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 121.481751 4291.684218
|
||||
Q 123.808018 4295.112242 125.820387 4298.077699
|
||||
" style="fill:none;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 125.524812 4295.861253
|
||||
L 125.820387 4298.077699
|
||||
L 123.869885 4296.984291
|
||||
L 125.524812 4295.861253
|
||||
z
|
||||
" style="fill:#0000ff;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
</g>
|
||||
<g id="patch_22">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 20.339762 4261.394067
|
||||
Q 24.472085 4261.099503 28.046807 4260.844686
|
||||
" style="fill:none;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 25.980766 4259.989422
|
||||
L 28.046807 4260.844686
|
||||
L 26.122971 4261.98436
|
||||
L 25.980766 4259.989422
|
||||
z
|
||||
" style="fill:#0000ff;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
</g>
|
||||
<g id="patch_23">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 21.274845 4274.511971
|
||||
Q 25.407169 4274.217407 28.98189 4273.96259
|
||||
" style="fill:none;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 26.915849 4273.107326
|
||||
L 28.98189 4273.96259
|
||||
L 27.058055 4275.102264
|
||||
L 26.915849 4273.107326
|
||||
z
|
||||
" style="fill:#0000ff;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
</g>
|
||||
<g id="patch_24">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 22.209928 4287.629875
|
||||
Q 26.342252 4287.335311 29.916973 4287.080494
|
||||
" style="fill:none;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 27.850933 4286.22523
|
||||
L 29.916973 4287.080494
|
||||
L 27.993138 4288.220168
|
||||
L 27.850933 4286.22523
|
||||
z
|
||||
" style="fill:#0000ff;stroke:#0000ff;stroke-linecap:round;stroke-width:0.5;"/>
|
||||
</g>
|
||||
<g id="line2d_1">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 247.564762 4175.741731
|
||||
L 203.535502 4189.344726
|
||||
" style="fill:none;stroke:#008000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
<g id="line2d_2">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 247.564762 4425.164808
|
||||
L 203.535502 4411.561814
|
||||
" style="fill:none;stroke:#008000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
<g id="line2d_3">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 156.078926 4281.881272
|
||||
L 139.550716 4284.428264
|
||||
" style="fill:none;stroke:#008000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
<g id="line2d_4">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 15.435498 4193.035544
|
||||
L 23.53623 4247.981654
|
||||
" style="fill:none;stroke:#008000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
<g id="line2d_5">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 15.435498 4193.035544
|
||||
L 203.535502 4189.344726
|
||||
" style="fill:none;stroke:#008000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
<g id="line2d_6">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 139.550716 4316.478275
|
||||
L 115.936017 4300.45327
|
||||
" style="fill:none;stroke:#008000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
<g id="line2d_7">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 139.550716 4316.478275
|
||||
L 23.53623 4352.924885
|
||||
" style="fill:none;stroke:#008000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
<g id="line2d_8">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 156.078926 4281.881272
|
||||
L 156.078926 4319.025267
|
||||
" style="fill:none;stroke:#008000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
<g id="line2d_9">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 156.078926 4319.025267
|
||||
L 203.535502 4411.561814
|
||||
" style="fill:none;stroke:#008000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
<g id="line2d_10">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 247.564762 4175.741731
|
||||
L 247.564762 4425.164808
|
||||
" style="fill:none;stroke:#008000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
<g id="line2d_11">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 203.535502 4189.344726
|
||||
L 156.078926 4281.881272
|
||||
" style="fill:none;stroke:#008000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
<g id="line2d_12">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 15.435498 4407.870995
|
||||
L 203.535502 4411.561814
|
||||
" style="fill:none;stroke:#008000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
<g id="line2d_13">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 23.53623 4247.981654
|
||||
L 139.550716 4284.428264
|
||||
" style="fill:none;stroke:#008000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
<g id="line2d_14">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 156.078926 4319.025267
|
||||
L 139.550716 4316.478275
|
||||
" style="fill:none;stroke:#008000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
<g id="line2d_15">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 15.435498 4407.870995
|
||||
L 23.53623 4352.924885
|
||||
" style="fill:none;stroke:#008000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
<g id="line2d_16">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 23.53623 4352.924885
|
||||
L 27.276563 4300.45327
|
||||
" style="fill:none;stroke:#008000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
<g id="line2d_17">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 139.550716 4284.428264
|
||||
L 115.936017 4300.45327
|
||||
" style="fill:none;stroke:#008000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
<g id="line2d_18">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 23.53623 4247.981654
|
||||
L 27.276563 4300.45327
|
||||
" style="fill:none;stroke:#008000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
<g id="line2d_19">
|
||||
<path clip-path="url(#p16f2a2ec29)" d="M 115.936017 4300.45327
|
||||
L 27.276563 4300.45327
|
||||
" style="fill:none;stroke:#008000;stroke-linecap:square;"/>
|
||||
</g>
|
||||
<g id="text_1">
|
||||
<!-- 1 -->
|
||||
<defs>
|
||||
<path d="M 12.40625 8.296875
|
||||
L 28.515625 8.296875
|
||||
L 28.515625 63.921875
|
||||
L 10.984375 60.40625
|
||||
L 10.984375 69.390625
|
||||
L 28.421875 72.90625
|
||||
L 38.28125 72.90625
|
||||
L 38.28125 8.296875
|
||||
L 54.390625 8.296875
|
||||
L 54.390625 0
|
||||
L 12.40625 0
|
||||
z
|
||||
" id="DejaVuSans-31"/>
|
||||
</defs>
|
||||
<g transform="translate(43.604248 4195.179782)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-31"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_2">
|
||||
<!-- 2 -->
|
||||
<defs>
|
||||
<path d="M 19.1875 8.296875
|
||||
L 53.609375 8.296875
|
||||
L 53.609375 0
|
||||
L 7.328125 0
|
||||
L 7.328125 8.296875
|
||||
Q 12.9375 14.109375 22.625 23.890625
|
||||
Q 32.328125 33.6875 34.8125 36.53125
|
||||
Q 39.546875 41.84375 41.421875 45.53125
|
||||
Q 43.3125 49.21875 43.3125 52.78125
|
||||
Q 43.3125 58.59375 39.234375 62.25
|
||||
Q 35.15625 65.921875 28.609375 65.921875
|
||||
Q 23.96875 65.921875 18.8125 64.3125
|
||||
Q 13.671875 62.703125 7.8125 59.421875
|
||||
L 7.8125 69.390625
|
||||
Q 13.765625 71.78125 18.9375 73
|
||||
Q 24.125 74.21875 28.421875 74.21875
|
||||
Q 39.75 74.21875 46.484375 68.546875
|
||||
Q 53.21875 62.890625 53.21875 53.421875
|
||||
Q 53.21875 48.921875 51.53125 44.890625
|
||||
Q 49.859375 40.875 45.40625 35.40625
|
||||
Q 44.1875 33.984375 37.640625 27.21875
|
||||
Q 31.109375 20.453125 19.1875 8.296875
|
||||
z
|
||||
" id="DejaVuSans-32"/>
|
||||
</defs>
|
||||
<g transform="translate(74.954249 4194.564646)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-32"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_3">
|
||||
<!-- 3 -->
|
||||
<defs>
|
||||
<path d="M 40.578125 39.3125
|
||||
Q 47.65625 37.796875 51.625 33
|
||||
Q 55.609375 28.21875 55.609375 21.1875
|
||||
Q 55.609375 10.40625 48.1875 4.484375
|
||||
Q 40.765625 -1.421875 27.09375 -1.421875
|
||||
Q 22.515625 -1.421875 17.65625 -0.515625
|
||||
Q 12.796875 0.390625 7.625 2.203125
|
||||
L 7.625 11.71875
|
||||
Q 11.71875 9.328125 16.59375 8.109375
|
||||
Q 21.484375 6.890625 26.8125 6.890625
|
||||
Q 36.078125 6.890625 40.9375 10.546875
|
||||
Q 45.796875 14.203125 45.796875 21.1875
|
||||
Q 45.796875 27.640625 41.28125 31.265625
|
||||
Q 36.765625 34.90625 28.71875 34.90625
|
||||
L 20.21875 34.90625
|
||||
L 20.21875 43.015625
|
||||
L 29.109375 43.015625
|
||||
Q 36.375 43.015625 40.234375 45.921875
|
||||
Q 44.09375 48.828125 44.09375 54.296875
|
||||
Q 44.09375 59.90625 40.109375 62.90625
|
||||
Q 36.140625 65.921875 28.71875 65.921875
|
||||
Q 24.65625 65.921875 20.015625 65.03125
|
||||
Q 15.375 64.15625 9.8125 62.3125
|
||||
L 9.8125 71.09375
|
||||
Q 15.4375 72.65625 20.34375 73.4375
|
||||
Q 25.25 74.21875 29.59375 74.21875
|
||||
Q 40.828125 74.21875 47.359375 69.109375
|
||||
Q 53.90625 64.015625 53.90625 55.328125
|
||||
Q 53.90625 49.265625 50.4375 45.09375
|
||||
Q 46.96875 40.921875 40.578125 39.3125
|
||||
z
|
||||
" id="DejaVuSans-33"/>
|
||||
</defs>
|
||||
<g transform="translate(106.30425 4193.94951)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-33"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_4">
|
||||
<!-- 1 -->
|
||||
<g transform="translate(137.654251 4193.334373)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-31"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_5">
|
||||
<!-- 2 -->
|
||||
<g transform="translate(169.004251 4192.719237)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-32"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_6">
|
||||
<!-- 2 -->
|
||||
<g transform="translate(78.362223 4337.460955)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-32"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_7">
|
||||
<!-- 1 -->
|
||||
<g transform="translate(152.897676 4303.212645)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-31"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_8">
|
||||
<!-- 1 -->
|
||||
<g transform="translate(176.625964 4368.052915)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-31"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_9">
|
||||
<!-- 1 -->
|
||||
<g transform="translate(244.383512 4303.212645)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-31"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_10">
|
||||
<!-- 1 -->
|
||||
<g transform="translate(176.625964 4238.372374)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-31"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_11">
|
||||
<!-- 1 -->
|
||||
<g transform="translate(43.604248 4411.245507)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-31"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_12">
|
||||
<!-- 2 -->
|
||||
<g transform="translate(74.954249 4411.860643)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-32"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_13">
|
||||
<!-- 3 -->
|
||||
<g transform="translate(106.30425 4412.475779)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-33"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_14">
|
||||
<!-- 1 -->
|
||||
<g transform="translate(137.654251 4413.090916)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-31"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_15">
|
||||
<!-- 2 -->
|
||||
<g transform="translate(169.004251 4413.706052)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-32"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_16">
|
||||
<!-- 2 -->
|
||||
<g transform="translate(78.362223 4268.964334)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-32"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_17">
|
||||
<!-- 2 -->
|
||||
<g transform="translate(22.225146 4329.448452)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-32"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_18">
|
||||
<!-- 1 -->
|
||||
<g transform="translate(128.4979 4292.529307)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-31"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_19">
|
||||
<!-- 3 -->
|
||||
<g transform="translate(120.626334 4297.870976)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-33"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_20">
|
||||
<!-- 2 -->
|
||||
<g transform="translate(21.290063 4263.858933)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-32"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_21">
|
||||
<!-- 1 -->
|
||||
<g transform="translate(22.225146 4276.976837)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-31"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="text_22">
|
||||
<!-- 3 -->
|
||||
<g transform="translate(23.16023 4290.094741)scale(0.1 -0.1)">
|
||||
<use xlink:href="#DejaVuSans-33"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="p16f2a2ec29">
|
||||
<rect height="259.4" width="246.245871" x="10.7" y="4170.75327"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 21 KiB |
BIN
output.png
Normal file
|
After Width: | Height: | Size: 159 B |
@ -83,7 +83,7 @@ div.output_wrapper {
|
||||
border-radius: 25px;
|
||||
color: white;
|
||||
text-align: center;
|
||||
background: #223d71;
|
||||
background: #3333b3;
|
||||
}
|
||||
|
||||
.reveal h1.title {
|
||||
@ -110,7 +110,7 @@ div.output_wrapper {
|
||||
|
||||
.reveal h2 {
|
||||
margin-top: 0 !important;
|
||||
background: #223d71;
|
||||
background: #3333b3;
|
||||
margin-left: -16%;
|
||||
margin-right: 0;
|
||||
margin-bottom: 4%;
|
||||
@ -155,7 +155,7 @@ div.output_wrapper {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
display: block;
|
||||
max-height: 350px;
|
||||
max-height: 400px;
|
||||
}
|
||||
|
||||
.reveal li {
|
||||
@ -212,3 +212,54 @@ div.output_wrapper {
|
||||
.reveal th {
|
||||
font-size: 25px
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.reveal div.thm {
|
||||
|
||||
margin-right: 5%;
|
||||
margin-left:5%;
|
||||
margin-top: 2%;
|
||||
padding-left: 2%;
|
||||
padding-right: 2%;
|
||||
padding-top: 0%;
|
||||
padding-bottom: 2%;
|
||||
border-radius:15px;
|
||||
background: #eaeaf3;
|
||||
box-shadow: 5px 5px 10px grey;
|
||||
}
|
||||
|
||||
.reveal div.thm h3 {
|
||||
padding-top: 1%;
|
||||
padding-bottom: 1%;
|
||||
padding-right: 1%;
|
||||
padding-left: 3%;
|
||||
/* width: 100.8% !important; */
|
||||
margin-right: -2.4%;
|
||||
margin-left: -2.4%;
|
||||
margin-bottom: 0;
|
||||
border-radius: 15px 15px 0px 0px;
|
||||
/* font-size: 1.9em; */
|
||||
background: #3333b3;
|
||||
color: white;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.reveal div.thm p {
|
||||
|
||||
margin-top: 1%;
|
||||
margin-bottom: 1%;
|
||||
padding-top: 1%;
|
||||
|
||||
}
|
||||
|
||||
.reveal div.thm ul {
|
||||
display: contents;
|
||||
}
|
||||
|
||||
.reveal div.thm ul li {
|
||||
padding-left: 3%;
|
||||
padding-top: 0.5%;
|
||||
padding-bottom: 0.5%;
|
||||
}
|
||||
|
||||
902
seminario.ipynb
@ -117,11 +117,15 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"**Ejemplo**: $y^2= 1-x^2$"
|
||||
"## Ejemplo \n",
|
||||
"\n",
|
||||
"$y^2= x^2-1$\n",
|
||||
"\n",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -132,7 +136,720 @@
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"La proyección sobre el eje $x$ es $2:1$ excepto cuando $1-x^2=0$"
|
||||
"La proyección sobre el eje $x$ es $2:1$ excepto en $x=\\pm 1$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Ejemplo\n",
|
||||
"\n",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Ejemplo\n",
|
||||
"\n",
|
||||
"<video data-autoplay src=\"supriemannelev.mp4\"/>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Topología del encaje\n",
|
||||
"\n",
|
||||
"$C\\subseteq \\mathbb{C}^2$\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"Codimensión 2: situación análoga a los nudos"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"Uno de los invariantes principales es el grupo fundamental del complementario $\\pi_1(\\mathbb{C}^2\\setminus C)$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Monodromía de trenzas\n",
|
||||
"\n",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Monodromía de trenzas\n",
|
||||
"\n",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Monodromía de trenzas\n",
|
||||
"\n",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Monodromía de trenzas\n",
|
||||
"\n",
|
||||
"<video data-autoplay src=\"monodtrenzas4.webm\"/>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Monodromía de trenzas\n",
|
||||
"\n",
|
||||
"<video data-autoplay src=\"monodtrenzas5.webm\"/>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Monodromía de trenzas\n",
|
||||
"\n",
|
||||
"<video data-autoplay src=\"monodtrenzas6.webm\"/>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Monodromía de trenzas\n",
|
||||
"\n",
|
||||
"<video data-autoplay src=\"monodtrenzas7.webm\"/>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Monodromía de trenzas\n",
|
||||
"\n",
|
||||
"<video data-autoplay src=\"monodtrenzas8.webm\"/>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Monodromía de trenzas\n",
|
||||
"\n",
|
||||
"<div class=\"thm\">\n",
|
||||
" <h3>\n",
|
||||
" <b>Lema</b>\n",
|
||||
" </h3>\n",
|
||||
" <p>\n",
|
||||
" Esta construcción determina un morfismo de grupos $\\pi_1(\\mathbb{C}\\setminus \\Delta)\\longrightarrow B_d$.\n",
|
||||
" </p>\n",
|
||||
"</div>\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"<div class=\"thm\">\n",
|
||||
" <h3>\n",
|
||||
" <b>Definición</b>\n",
|
||||
" </h3>\n",
|
||||
" <p>\n",
|
||||
" Este morfismo recibe el nombre de <i>monodromía de trenzas</i> de la curva.\n",
|
||||
" </p>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"Se puede representar como una lista de trenzas correspondientes a una base geométrica de $\\pi_1(\\mathbb{C}\\setminus \\Delta)$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Monodromía de trenzas\n",
|
||||
"\n",
|
||||
"<video data-autoplay src=\"monodtrenzas9.webm\"/>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Monodromía de trenzas\n",
|
||||
"\n",
|
||||
"<video data-autoplay src=\"monodtrenzas10.webm\"/>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Monodromía de trenzas\n",
|
||||
"\n",
|
||||
"<div class=\"thm\">\n",
|
||||
" <h3>\n",
|
||||
" <b>Teorema</b> (Zariski-Van Kampen)\n",
|
||||
" </h3>\n",
|
||||
" <p>\n",
|
||||
" El grupo fundamental del complementario $\\pi_1(\\mathbb{C}^2\\setminus C)$ es el cociente del grupo libre $F_d$ por la acción de la monodromía de trenzas.\n",
|
||||
" </p>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"<div class=\"thm\">\n",
|
||||
" <h3>\n",
|
||||
" <b>Teorema</b>\n",
|
||||
" </h3>\n",
|
||||
" <p>\n",
|
||||
" La monodromía de trenzas determina completamente la topología del par $(\\mathbb{C}^2,C)$.\n",
|
||||
" </p>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Pares de Zariski\n",
|
||||
"\n",
|
||||
"La monodromía de trenzas es un objeto algebraico (morfismo de grupos) definido a partir de otro objeto algebraico (ideal en el anillo de polinomios)."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"<div class=\"thm\">\n",
|
||||
" <h3>\n",
|
||||
" <b>Definición</b>\n",
|
||||
" </h3>\n",
|
||||
" <p>\n",
|
||||
" Dos curvas algebraicas $C_1$ y $C_2$ forman un <i>par de Zariski aritmético</i> si\n",
|
||||
" <ul>\n",
|
||||
" <li class=\"fragment\">Los polinomios que las definen $f_1,f_2$ son conjugados de Galois.</li>\n",
|
||||
" <li class=\"fragment\">Los grupos fundamentales $\\pi_1(\\mathbb{C}^2\\setminus C_1)$ y $\\pi_1(\\mathbb{C}^2\\setminus C_1)$ son no isomorfos.</li>\n",
|
||||
" </ul>\n",
|
||||
" </p>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Pares de Zariski\n",
|
||||
"\n",
|
||||
"<div class=\"thm\">\n",
|
||||
" <h3>\n",
|
||||
" <b>Teorema</b> (ACG_)\n",
|
||||
" </h3>\n",
|
||||
" <p>\n",
|
||||
" Existen pares de Zariski aritméticos\n",
|
||||
" </p>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"Esto implica que la monodromía de trenzas (o el grupo fundamental) no se puede calcular de manera puramente algebraica."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"Se necesitan cálculos **numéricos**, pero **certificados**."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Cálculo de la monodromía de trenzas\n",
|
||||
"\n",
|
||||
"Primer paso: elegir los caminos\n",
|
||||
"\n",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Cálculo de la monodromía de trenzas\n",
|
||||
"\n",
|
||||
"Primer paso: elegir los caminos\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"El *Diagrama de Voronoi* nos da segmentos que rodean los puntos del discriminante, acercándose lo menos posible."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Cálculo de la trenza sobre un segmento\n",
|
||||
"\n",
|
||||
"Mediante cambio de variable, podemos normalizar a $[0,1]$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Cálculo de la trenza sobre un segmento\n",
|
||||
"\n",
|
||||
"Mediante cambio de variable, podemos normalizar a $[0,1]$\n",
|
||||
"\n",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Cálculo de la trenza sobre un segmento\n",
|
||||
"\n",
|
||||
"Mediante cambio de variable, podemos normalizar a $[0,1]$\n",
|
||||
"\n",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Aritmética intervalar\n",
|
||||
"\n",
|
||||
"<div class=\"thm\">\n",
|
||||
" <h3>\n",
|
||||
" <b>Definición</b>\n",
|
||||
" </h3>\n",
|
||||
" <p>\n",
|
||||
" Un <i>intervalo complejo</i> es un conjunto $$[r_0,r_1]+[i_0,i_1]\\cdot i:=\\{a+b\\cdot i \\mid a \\in [r_0,r_1], b\\in [i_0,i_1]\\}\\subseteq \\mathbb{C}$$\n",
|
||||
" </p>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"<div class=\"thm\">\n",
|
||||
" <h3>\n",
|
||||
" <b>Definición</b>\n",
|
||||
" </h3>\n",
|
||||
" <p>\n",
|
||||
" Dado $Y\\subseteq \\mathbb{C}$, su <i>clausura intervalar</i> $[Y]$ es el menor intervalo que lo contiene.\n",
|
||||
" </p>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"Se puede operar con intervalos tomando la clausura intervalar de las operaciones punto a punto."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"Los intervalos con estas operaciones **no** forman un anillo (pero para ciertos efectos, se puede operar como si lo fuera)."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Criterio del intervalo de Newton\n",
|
||||
"\n",
|
||||
"<div class=\"thm\">\n",
|
||||
" <h3>\n",
|
||||
" <b>Teorema</b>\n",
|
||||
" </h3>\n",
|
||||
" <p>\n",
|
||||
" Sea $Y$ un intervalo complejo, $y0\\in Y$. Sea $f: Y\\longrightarrow \\mathbb{C}$ una función holomorfa, tal que $0\\in [f'(Y)]$. Si\n",
|
||||
" $$\n",
|
||||
" N(f,y_0,Y):=y_0-\\frac{f(y_0)}{[f'(Y)]}\\subseteq Y\n",
|
||||
" $$\n",
|
||||
" entonces $f$ tiene un único cero en $Y$. Además, este cero está en $N(f,y_0,Y)$.\n",
|
||||
" </p>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"Podemos usar este teorema para asegurar que tenemos un entorno alrededor de una raíz aproximada, que contiene a la raíz auténtica, pero sin tocar a las demás raíces."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"Notar que, ya que estamos operando con intervalos, podemos usar intervalos en los propios coeficientes."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Ejemplo\n",
|
||||
"\n",
|
||||
"$$f = [0.9,1.1]\\cdot y^2-1-x$$\n",
|
||||
"$$y_0=1$$\n",
|
||||
"$$Y=[0.5,1.5]$$\n",
|
||||
"$$x_0=0$$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"$$N(f,y_0,Y)=1-\\frac{[0.9,1.1]-1}{2\\cdot[0.9,1.1][0.5,1.5]}=$$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"$$=1-\\frac{[-0.1,0.1]}{[0.9,3.3]}\\approx [0.888,1.111]$$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Ejemplo: extender $x$ a un intervalo\n",
|
||||
"\n",
|
||||
"$$f = [0.9,1.1]\\cdot y^2-1-x$$\n",
|
||||
"$$y_0=1$$\n",
|
||||
"$$Y=[0.5,1.5]$$\n",
|
||||
"$$x=[0,0.25]$$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"$$N(f,y_0,Y)=1-\\frac{[0.9,1.1]-1-[0,0.25]}{2\\cdot[0.9,1.1][0.5,1.5]}=$$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"$$=1-\\frac{[-0.35,0.1]}{[0.9,3.3]}\\approx [0.888,1.13888]$$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Cálculo numérico certificado de la trenza\n",
|
||||
"\n",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Cálculo numérico certificado de la trenza\n",
|
||||
"\n",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Cálculo numérico certificado de la trenza\n",
|
||||
"\n",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Cálculo numérico certificado de la trenza\n",
|
||||
"\n",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Cálculo numérico certificado de la trenza\n",
|
||||
"\n",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Cálculo numérico certificado de la trenza\n",
|
||||
"\n",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## SIROCCO: demostración"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -140,7 +857,184 @@
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
"source": [
|
||||
"A.<x,y> = AffineSpace(QQ,2)\n",
|
||||
"C = A.curve(y^2-x^3-x^2)\n",
|
||||
"C.plot((x,-3,3),(y,-3,3))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"show(C.fundamental_group())"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## SIROCCO: demostración"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"C2 = A.curve((x^2+y^2)^2+18*(x^2+y^2) - 27 -8*(x^3-3*x*y^2))\n",
|
||||
"C2.plot((x,-3,3),(y,-3,3))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"show(C2.fundamental_group())"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Diagramas de Rudolf\n",
|
||||
"\n",
|
||||
"Volviendo a las superficies de Riemann:\n",
|
||||
"\n",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Diagramas de Rudolf\n",
|
||||
"\n",
|
||||
"Volviendo a las superficies de Riemann:\n",
|
||||
"\n",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Diagramas de Rudolf\n",
|
||||
"\n",
|
||||
"<div class=\"thm\">\n",
|
||||
" <h3>\n",
|
||||
" <b>Definición</b> \n",
|
||||
" </h3>\n",
|
||||
" <p>\n",
|
||||
" Sea $f\\in\\mathbb{C}[x,y]$, su <i>diagrama de Rudolf</i> es el conjunto\n",
|
||||
" $$\\{x\\in\\mathbb{C} \\mid \\exists y_0\\neq y_1, Re(y_0)=Re(y_1), f(x,y_0)=f(x,y_1)=0\\}$$\n",
|
||||
" </p>\n",
|
||||
"</div>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"- Como conjunto de $\\mathbb{R}^2\\cong \\mathbb{C}$, es un conjunto semialgebraico"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"- En general, son difíciles de calcular"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Diagramas de Rudolf\n",
|
||||
"\n",
|
||||
"Diagrama de Rudolf de $(4z^3+12z+3-w^2)^2-8w-48z+52$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "fragment"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"<img src=\"diagramarudolforevkov.svg\" style=\"max-height:450px !important; height:450px;\"/>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Diagramas de Rudolf\n",
|
||||
"\n",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Diagramas de Rudolf\n",
|
||||
"\n",
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"slideshow": {
|
||||
"slide_type": "slide"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"# Muchas gracias"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
|
||||
BIN
supriemannelev-0.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
supriemannelev.avi
Normal file
BIN
supriemannelev.mp4
Normal file
BIN
trenzaentorno.png
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
trenzapoligonal.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
trenzasola.png
Normal file
|
After Width: | Height: | Size: 2.0 MiB |
BIN
voronoi.jpg
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
voronoi0.jpg
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
voronoi1.jpg
Normal file
|
After Width: | Height: | Size: 48 KiB |