Rubio_de_francia/laberinto.ipynb

179 KiB

In [1]:
S.<z,w,t> = QQ[]
In [2]:
R.<z,w> = QQ[]
In [3]:
f = (4*z^3+12*z+3-w^2)^2-8*w-48*z+52
In [4]:
f
Out[4]:
16*z^6 - 8*z^3*w^2 + 96*z^4 + w^4 + 24*z^3 - 24*z*w^2 + 144*z^2 - 6*w^2 + 24*z - 8*w + 61
In [5]:
I = S.ideal([-z+t^4+2*t^2+2*t+1,-w+2*t^6+6*t^4+6*t^3+6*t^2+6*t+5])
In [6]:
g = I.elimination_ideal(t).gen(0)
g
Out[6]:
16*z^6 - 8*z^3*w^2 + 96*z^4 + w^4 + 24*z^3 - 24*z*w^2 + 144*z^2 - 6*w^2 + 24*z - 8*w + 61
In [7]:
f
Out[7]:
16*z^6 - 8*z^3*w^2 + 96*z^4 + w^4 + 24*z^3 - 24*z*w^2 + 144*z^2 - 6*w^2 + 24*z - 8*w + 61
In [8]:
g-f
Out[8]:
0
In [9]:
_.factor()
---------------------------------------------------------------------------
ArithmeticError                           Traceback (most recent call last)
<ipython-input-9-b24d63046d5c> in <module>()
----> 1 _.factor()

/home/mmarco/sage/local/lib/python3.7/site-packages/sage/rings/polynomial/multi_polynomial_libsingular.pyx in sage.rings.polynomial.multi_polynomial_libsingular.MPolynomial_libsingular.factor (build/cythonized/sage/rings/polynomial/multi_polynomial_libsingular.cpp:33243)()
   4353 
   4354         if p_IsConstant(self._poly, _ring):
-> 4355             return self.constant_coefficient().factor()
   4356 
   4357         if not self._parent._base.is_field():

/home/mmarco/sage/local/lib/python3.7/site-packages/sage/rings/rational.pyx in sage.rings.rational.Rational.factor (build/cythonized/sage/rings/rational.c:24593)()
   3101         """
   3102         from sage.structure.factorization import Factorization
-> 3103         return self.numerator().factor() * \
   3104            Factorization([(p, -e) for p, e in self.denominator().factor()])
   3105 

/home/mmarco/sage/local/lib/python3.7/site-packages/sage/rings/integer.pyx in sage.rings.integer.Integer.factor (build/cythonized/sage/rings/integer.c:25009)()
   3997 
   3998         if mpz_sgn(self.value) == 0:
-> 3999             raise ArithmeticError("factorization of 0 is not defined")
   4000 
   4001         if mpz_sgn(self.value) > 0:

ArithmeticError: factorization of 0 is not defined
In [ ]:
R(g)
In [10]:
_.factor()
---------------------------------------------------------------------------
ArithmeticError                           Traceback (most recent call last)
<ipython-input-10-b24d63046d5c> in <module>()
----> 1 _.factor()

/home/mmarco/sage/local/lib/python3.7/site-packages/sage/rings/polynomial/multi_polynomial_libsingular.pyx in sage.rings.polynomial.multi_polynomial_libsingular.MPolynomial_libsingular.factor (build/cythonized/sage/rings/polynomial/multi_polynomial_libsingular.cpp:33243)()
   4353 
   4354         if p_IsConstant(self._poly, _ring):
-> 4355             return self.constant_coefficient().factor()
   4356 
   4357         if not self._parent._base.is_field():

/home/mmarco/sage/local/lib/python3.7/site-packages/sage/rings/rational.pyx in sage.rings.rational.Rational.factor (build/cythonized/sage/rings/rational.c:24593)()
   3101         """
   3102         from sage.structure.factorization import Factorization
-> 3103         return self.numerator().factor() * \
   3104            Factorization([(p, -e) for p, e in self.denominator().factor()])
   3105 

/home/mmarco/sage/local/lib/python3.7/site-packages/sage/rings/integer.pyx in sage.rings.integer.Integer.factor (build/cythonized/sage/rings/integer.c:25009)()
   3997 
   3998         if mpz_sgn(self.value) == 0:
-> 3999             raise ArithmeticError("factorization of 0 is not defined")
   4000 
   4001         if mpz_sgn(self.value) > 0:

ArithmeticError: factorization of 0 is not defined
In [9]:
from sage.schemes.curves.zariski_vankampen import segments,braid_in_segment,discrim
In [10]:
discrim(f(w,z))
Out[10]:
[-18.84361109981263?,
 3.119596509456179?,
 -3.322028936993635? - 2.537820835040446?*I,
 -3.322028936993635? + 2.537820835040446?*I,
 -0.07819445009368601? - 0.2166887457075094?*I,
 -0.07819445009368601? + 0.2166887457075094?*I,
 3.512230682265546? - 2.102866430330456?*I,
 3.512230682265546? + 2.102866430330456?*I]
In [11]:
discrim(f)
Out[11]:
[0.5438713443812133?,
 4.224169871088594?,
 -0.1120849355442970? - 0.966627427027748?*I,
 -0.1120849355442970? + 0.966627427027748?*I,
 0.2280643278093934? - 2.049368526458496?*I,
 0.2280643278093934? + 2.049368526458496?*I]
In [12]:
D = QQ[z](f.discriminant(w)).roots(QQbar,multiplicities=False)
In [13]:
D
Out[13]:
[0.5438713443812133?,
 4.224169871088594?,
 -0.1120849355442970? - 0.966627427027748?*I,
 -0.1120849355442970? + 0.966627427027748?*I,
 0.2280643278093934? - 2.049368526458496?*I,
 0.2280643278093934? + 2.049368526458496?*I]
In [14]:
list_plot(D,axes=False)
Out[14]:
No description has been provided for this image
In [15]:
segs = segments(D)
In [16]:
segs
Out[16]:
[(8.94833974217719 + 8.94833974217719*I,
  5.78913908678074 + 7.97229360268126*I),
 (8.94833974217719 + 8.94833974217719*I,
  8.94833974217719 - 8.94833974217719*I),
 (5.78913908678074 + 7.97229360268126*I,
  2.38402060773490 + 1.33258353884415*I),
 (2.38402060773490 + 1.33258353884415*I,
  2.38402060773490 - 1.33258353884415*I),
 (2.38402060773490 - 1.33258353884415*I,
  5.78913908678074 - 7.97229360268126*I),
 (8.94833974217719 - 8.94833974217719*I,
  5.78913908678074 - 7.97229360268126*I),
 (-7.70746890458384 + 7.70746890458384*I,
  5.78913908678074 + 7.97229360268126*I),
 (-7.70746890458384 - 7.70746890458384*I,
  5.78913908678074 - 7.97229360268126*I),
 (-7.70746890458384 + 7.70746890458384*I,
  -7.12622272339856 + 3.76495909474697*I),
 (2.38402060773490 + 1.33258353884415*I,
  1.19808353306735 + 1.14983102529800*I),
 (-7.12622272339856 + 3.76495909474697*I,
  1.19808353306735 + 1.14983102529800*I),
 (1.19808353306735 - 1.14983102529800*I,
  -7.12622272339856 - 3.76495909474697*I),
 (1.19808353306735 - 1.14983102529800*I,
  -0.496325438254182 - 1.11022302462516e-16*I),
 (-0.496325438254182 - 1.11022302462516e-16*I,
  -6.85784523455789 - 1.11022302462516e-16*I),
 (-7.12622272339856 - 3.76495909474697*I,
  -6.85784523455789 - 1.11022302462516e-16*I),
 (-7.70746890458384 - 7.70746890458384*I,
  -7.12622272339856 - 3.76495909474697*I),
 (2.38402060773490 - 1.33258353884415*I,
  1.19808353306735 - 1.14983102529800*I),
 (1.19808353306735 + 1.14983102529800*I,
  -0.496325438254182 - 1.11022302462516e-16*I),
 (-7.12622272339856 + 3.76495909474697*I,
  -6.85784523455789 - 1.11022302462516e-16*I)]
In [17]:
dsegs = [(s,braid_in_segment(f,*s)) for s in segs]
In [18]:
PL = list_plot(D,axes=False)
In [19]:
for dseg in dsegs:
    s = dseg[0]
    cent = (s[0]+s[1])/2
    PL += arrow((s[0].real(),s[0].imag()),(s[1].real(),s[1].imag()),color='red',arrowsize=2,thickness=0.5)
    PL+=text(dseg[1].Tietze(), (cent.real(),cent.imag()),color='black')
In [20]:
PL.show(dpi=400,aspect_ratio=1)
No description has been provided for this image
In [21]:
B = BraidGroup(4)
b = B([-2,-1,2,1,3,2,-1])
In [22]:
b.left_normal_form()
Out[22]:
(s0^-1*s1^-1*s2^-1*s0^-1*s1^-1*s0^-1, s0*s2*s1, s1*s0*s2*s1)
In [24]:
c=b.conjugating_braid(B([1]))
In [27]:
c*B([1])/c
Out[27]:
s0*s2*(s1*s0)^2*s1^-1*s0^-1*s1^-1*s2^-1*s0^-1
In [28]:
_.left_normal_form()
Out[28]:
(s0^-1*s1^-1*s2^-1*s0^-1*s1^-1*s0^-1, s0*s2*s1, s1*s0*s2*s1)
In [29]:
c
Out[29]:
s0*s2*s1*s0*s1
In [ ]: