179 KiB
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]:
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)
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 [ ]: