Merge branch 'master' of riemann.unizar.es:m.gonzalez/Steenbrink

This commit is contained in:
Edwin León 2024-09-20 16:46:47 +02:00
commit 6350a0e67a
12 changed files with 1047 additions and 85 deletions

View File

@ -354,7 +354,7 @@
], ],
"metadata": { "metadata": {
"kernelspec": { "kernelspec": {
"display_name": "SageMath 10.4.rc0", "display_name": "SageMath 10.4.rc1",
"language": "sage", "language": "sage",
"name": "sagemath-devel" "name": "sagemath-devel"
}, },

View File

@ -1838,7 +1838,7 @@
], ],
"metadata": { "metadata": {
"kernelspec": { "kernelspec": {
"display_name": "SageMath 10.4.rc3", "display_name": "SageMath 10.5.beta3",
"language": "sage", "language": "sage",
"name": "sagemath-devel" "name": "sagemath-devel"
}, },
@ -1852,7 +1852,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.12.4" "version": "3.12.5"
} }
}, },
"nbformat": 4, "nbformat": 4,

View File

@ -673,7 +673,7 @@
], ],
"metadata": { "metadata": {
"kernelspec": { "kernelspec": {
"display_name": "SageMath 10.3.rc4", "display_name": "SageMath 10.4.beta6",
"language": "sage", "language": "sage",
"name": "sagemath-devel" "name": "sagemath-devel"
}, },
@ -687,7 +687,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.11.1" "version": "3.12.3"
} }
}, },
"nbformat": 4, "nbformat": 4,

BIN
Mult3.pdf

Binary file not shown.

View File

@ -391,14 +391,17 @@ $$ \prod_{i=1}^n h_i^{2} \prod_{j=1}^m k_j^3 \left ( \prod_{i=1}^n h_i^{3n_i-2}
\begin{proposition} \begin{proposition}
The singular point is isolated if and only if the disciminant $D_zF$ is reduced. The singular point is isolated if and only if the discriminant $D_zF$ is reduced.
\end{proposition} \end{proposition}
\noindent \textcolor{red}{Proof. Ask Enrique.}
\begin{proposition}\label{prop.non-deg}
The monic Weierstrass polynomial $z^3 -3b_2z + 2b_3$ is non degenerate unless $M_1(c_1+A)$ and $b_3 = M_2(c_2 + B)$ with $M_1^3 = M_2^2$ and \textcolor{red}{$2c_1=3c_2$} \begin{proposition}\label{prop.non-deg} Let $b_2, b_3 \in \CC[[x, y]]$ with $b_2(0), b_3(0) = 0$. Let us write $b_2= M_2(c_2+A)$ and $b_3 = M_3(c_3 + B)$ with $M_2, M_3 \in \CC[x,y]$ (monic) monomials, $c_2, c_3 \in \CC^\ast$ and $A, B \in \CC[[x,y]]$ such that $A(0), B(0) = 0$.
The monic Weierstrass polynomial $z^3 -3b_2z + 2b_3$ is non degenerate unless $(c_2M_2)^3 = (c_3M_3)^2$.
\end{proposition} \end{proposition}
\noindent \textcolor{blue}{Proof. The Newton polyhedron of $z^3 -3b_2z + 2b_3$ can be 2-dimensional, polygonal with two segments or polygonal with a unique segment. In the two first cases, it is non degenerate. The compact faces of the Newton polyhedron of $z^3 -3b_2z + 2b_3$ lie on a segment if and only if $(M_2)^3 = (M_3)^2$. The condition of $z^3 -3b_2z + 2b_3$ being non degenerate is equivalent to $z^3 -3b_2z + 2b_3 \in \CC[z]$ having a double root. Notice a triple root is not possible because the degree 2 monomial is zero. Assume that $z^3 -3b_2z + 2b_3 =(z-a)^2(z-b)$ for some $a, b \in \CC^\ast$. Equivalently, we have $2a+b=0$, and therefor $c_2=(\frac{b}{2})^2}$ and $c_3=(\frac{-b}{2})^3$.}
\section{Jung´s method for power series of multiplicity three } \section{Jung´s method for power series of multiplicity three }
@ -585,8 +588,8 @@ N^\Delta_i& 25& {\bf 26}& {\bf 52}& {\bf 78}& {\bf 104}& {\bf 130}& {\bf 156}& {
\hline \hline
\hline \hline
\nu_i&2&3&5&7&9&11&13&6&11\\ \nu_i&2&3&5&7&9&11&13&6&11\\
\chi()&-11&1&-1&0&0&0&-2&1&-1\\ \chi()&-13&1&-1&0&0&0&-2&1&-1\\
E_i^2& -13& -2& -4& -2& -2& -2& -1&-2&-1\\ E_i^2& -11& -2& -4& -2& -2& -2& -1&-2&-1\\
\hline \hline
\end{array}$$ \end{array}$$
@ -967,8 +970,8 @@ In this case, the Newton polyhedra of $F$ contains a unique two dimensional comp
\item If $M_1^3 = M_2^2$, the point corresponding to the monomial $M_1z$ lies in the unique dimensional compact face of the Newton polyhedron of $F$. The face equation is equal to \item If $M_1^3 = M_2^2$, the point corresponding to the monomial $M_1z$ lies in the unique dimensional compact face of the Newton polyhedron of $F$. The face equation is equal to
$$z^3 + c_1z + c_2.$$ $$z^3 -3 c_1z + 2 c_2.$$
Therefore, $F$ is non degenerate with respect to its Newton polyhedron if and only if $3(c_1)^2 \ne 2(c_2)^3$. Therefore, $F$ is non degenerate with respect to its Newton polyhedron if and only if \textcolor{blue}{$(c_1)^3 \ne (c_2)^2$}.
\begin{tikzpicture} \begin{tikzpicture}
@ -1137,7 +1140,7 @@ $$J_{\check \tau_0}=\frac{2}{\nu_1(3m_2s + 2\nu_1+m_2)}$$
We remark that this case it is equivalent to $f=z(z^2 - x^{m_2})$. We remark that this case it is equivalent to $f=z(z^2 - x^{m_2})$.
\subsubsection{Third case $f= z^3 - x^{m_1}z^2 - x^{m_3}$ and $\omega = x^{\nu_1-1}dxdz$ such that $m_3 > m_1$} \subsubsection{Third case $f= z^3 - x^{m_1}z^2 - x^{m_3}$ and $\omega = x^{\nu_1-1}dxdz$ such that $m_3 > 3 m_1$}
Newton polyhedra has five compact faces: the 0-dimensional faces $\tau_0$ corresponding to the monomial $z^3$, $\tau_1$ corresponding to the monomial $x^{m_1}z^2$, and $\tau_2$ corresponding to the monomial $ x^{m_3}$, and the 1-dimensional faces $\sigma_1$ contained in the hyperplanes Newton polyhedra has five compact faces: the 0-dimensional faces $\tau_0$ corresponding to the monomial $z^3$, $\tau_1$ corresponding to the monomial $x^{m_1}z^2$, and $\tau_2$ corresponding to the monomial $ x^{m_3}$, and the 1-dimensional faces $\sigma_1$ contained in the hyperplanes
$$p + m_1r = 3m_1$$ $$p + m_1r = 3m_1$$
and $\sigma_2$ contained in the hyperplanes and $\sigma_2$ contained in the hyperplanes
@ -1179,9 +1182,9 @@ $$J_{\check \tau_0}=\frac{m_1}{\nu_1(3m_1s + \nu_1+m_1)}$$
Similarly we have Similarly we have
$$\zeta_f (t) = $$ $$\zeta_f (t) = \frac{(t^{3m_1}-1)(t^{m_3}-1) }{(t-1)(t^3-1)} $$
$$\zeta_f (t) = \frac{(t^{3m_1}-1)(t^{2m_3}-1) }{(t-1)(t^3-1)(t^{m_3}-1)}$$
We remark that this case is equivalent to $f=(z-x^{m_1})(z^2 - x^{m_3-m_2})$ We remark that this case is equivalent to $f=(z-x^{m_1})(z^2 - x^{m_3-m_1})$
\subsection{Trinomial forms for strata $E^\circ_{i,j}$} \subsection{Trinomial forms for strata $E^\circ_{i,j}$}
@ -1286,7 +1289,7 @@ $$Z(F_9, \omega_9)_{o_9}=Z(F_{9,31}, \omega_{9,31})_{o_{9,31}}= Z(F_{17}, \omega
$$f_7=f_{15}=z^3 - x^{78}, \quad f_{7,33}=f_{15,34}=z^3 - x^{52}z + x^{78}y,$$ $$f_7=f_{15}=z^3 - x^{78}, \quad f_{7,33}=f_{15,34}=z^3 - x^{52}z + x^{78}y,$$
and $$\omega_7=\omega_{15}=\omega_{7,33}=\omega_{15,34}= x^{13}yzdxdydz,$$ and $$\omega_7=\omega_{15}=\omega_{7,33}=\omega_{15,34}= x^{13}yzdxdydz,$$
From the formulas given in the previous section; we have From the formulas given in the previous section; we have
$$Z(F_7, \omega_7)_{o_7}=Z(F_{7,33}, \omega_{7,33})_{o_{7,33}}= Z(F_{15}, \omega_{15})_{o_{15}}=Z(F_{15,34}, \omega_{15,34})_{o_{15,34}} = \frac{1}{26(s^2 +3/2 s + 1/2}$$ $$Z(F_7, \omega_7)_{o_7}=Z(F_{7,33}, \omega_{7,33})_{o_{7,33}}= Z(F_{15}, \omega_{15})_{o_{15}}=Z(F_{15,34}, \omega_{15,34})_{o_{15,34}} = \frac{1}{26(s^2 +3/2 s + 1/2}.$$
\end{example} \end{example}
\subsection{Second reduction: Recursive elimination of exceptional $(-1)$-curve not intersecting the strict transform of the discrimiant} \subsection{Second reduction: Recursive elimination of exceptional $(-1)$-curve not intersecting the strict transform of the discrimiant}
@ -1296,6 +1299,9 @@ $$Z(F_7, \omega_7)_{o_7}=Z(F_{7,33}, \omega_{7,33})_{o_{7,33}}= Z(F_{15}, \omega
\begin{proposition}\label{red2} \begin{proposition}\label{red2}
\end{proposition} \end{proposition}
\begin{example} The Proposition \ref{red2} can be applied twice to eliminate the curves $E_9$ and $E_8$. First, $E_9$ is an exceptional $(-1)$-curve that does not intersect the strict transform of the discriminant, and $E_8$ is an exceptional with $E_8^2=-2$ After blowing down $E_9$, the exceptional curve $E_8$ becomes a $(-1)$-curve. It does not intersect the strict transform of the discriminant.
\end{example}
\subsection{Third reduction: $\QQ$-resolution of the discriminant} \subsection{Third reduction: $\QQ$-resolution of the discriminant}

View File

@ -18,8 +18,8 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 2, "execution_count": null,
"id": "cad50def-ecb8-403f-b50c-ce026fbd216d", "id": "fdc11d23-4114-49ef-828a-b7a165169c46",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
@ -28,8 +28,8 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 5, "execution_count": 14,
"id": "5ec9dd77-8118-4439-b8cb-4c475a2a645e", "id": "b67cebe5-4b5a-46be-9055-9ecbdecf96f1",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
@ -38,7 +38,7 @@
"((0, 0, 0, 0, 0, 0, 1), (0, 0, 4, 0, 0, 0, 0), (0, 0, 0, 0, 0, 0, 3))" "((0, 0, 0, 0, 0, 0, 1), (0, 0, 4, 0, 0, 0, 0), (0, 0, 0, 0, 0, 0, 3))"
] ]
}, },
"execution_count": 5, "execution_count": 14,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
@ -53,27 +53,53 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 6, "execution_count": 13,
"id": "dbf2120c-5214-48e1-a93f-a5079753d5f5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((0, 0, 0, 0, 1, 0, 0), (0, 0, 0, 1, 1, 0, 0), (0, 0, 0, 0, 1, 0, 2))"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Vfa, Vga, Vda = [vector(QQ, 7) for i in (1, 2, 3)]\n",
"Vfa[4] = Vga[3] = Vga[4] = Vda[4] = 1\n",
"Vda[6] = 2\n",
"Vfa, Vga, Vda"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "c5104650-44eb-4c9c-b016-c34994f72f38", "id": "c5104650-44eb-4c9c-b016-c34994f72f38",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"n, Nf, Ng, Nd, Nhs, Nks, euler, nus, pols = trinomiales_general(A, Vf, Vg, (), (), Vd, total=False)" "n, Nf, Ng, Nd, Nhs, Nks, euler, nus, pols = trinomiales_general(A, Vf, Vg, (), (), Vd, total=False)\n",
"na, Nfa, Nga, Nda, Nhsa, Nksa, eulera, nusa, polsa = trinomiales_general(A, Vfa, Vga, (), (), Vda, total=False)"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 7, "execution_count": 16,
"id": "8dccac88-2fa3-4365-990a-2571f643b9dc", "id": "8dccac88-2fa3-4365-990a-2571f643b9dc",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"zetatop, zetamon, dic = zetas(n, pols, info=True)" "zetatop, zetamon, dic = zetas(n, pols, info=True)\n",
"zetatopa, zetamona, dica = zetas(na, polsa, info=True)"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 8, "execution_count": 17,
"id": "097214a4-61e4-4939-bad0-4e5b3c8ac716", "id": "097214a4-61e4-4939-bad0-4e5b3c8ac716",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
@ -81,16 +107,16 @@
"data": { "data": {
"text/plain": [ "text/plain": [
"((-41/168) * (s + 16/21)^-1 * (s + 19/24)^-1 * (s + 1)^-1 * (s^2 - 283/123*s - 304/123),\n", "((-41/168) * (s + 16/21)^-1 * (s + 19/24)^-1 * (s + 1)^-1 * (s^2 - 283/123*s - 304/123),\n",
" {1: 1, 2: 1, 6: 1, 4: 1, 3: 1, 12: 1, 8: 1, 7: 1, 24: 1, 21: 1})" " (-43/175) * (s + 16/21)^-1 * (s + 4/5)^-1 * (s + 1)^-1 * (s^2 - 292/129*s - 320/129))"
] ]
}, },
"execution_count": 8, "execution_count": 17,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
], ],
"source": [ "source": [
"zetatop.factor(), dic" "zetatop.factor(), zetatopa.factor()"
] ]
}, },
{ {
@ -129,7 +155,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 25, "execution_count": 8,
"id": "558ef7c7-39cf-47bf-b224-479f1ff365d4", "id": "558ef7c7-39cf-47bf-b224-479f1ff365d4",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
@ -429,27 +455,6 @@
" print(\"=======================\")" " print(\"=======================\")"
] ]
}, },
{
"cell_type": "code",
"execution_count": 26,
"id": "8f5e2324-c385-4a99-a4a4-96cc9aa35c12",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(z^3 + x^8*z^2 + x^24*y, (11, 1, 1), 3)"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pols[6, 'd']"
]
},
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 27, "execution_count": 27,
@ -678,6 +683,377 @@
"dic, dic2" "dic, dic2"
] ]
}, },
{
"cell_type": "code",
"execution_count": 85,
"id": "1eda8668-939a-49ff-9741-eecb16b95c29",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 85,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"A2 = A1.matrix_from_rows_and_columns([0..5], [0..5])\n",
"A2[4, 5] = A2[5, 4] = 1\n",
"#A1[4, 6] = A1[6, 4] = A1[5, 6] = A1[6, 5] = 1\n",
"#A1[4, 4] = -3\n",
"A2[4, 4] = -2\n",
"A2[5, 5] = -1\n",
"A2.det()"
]
},
{
"cell_type": "code",
"execution_count": 86,
"id": "f79af679-b261-4e6f-9dcb-5775bccb1c8c",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((0, 0, 0, 0, 1, 0), (0, 0, 0, 1, 1, 0), (0, 0, 0, 0, 1, 2))"
]
},
"execution_count": 86,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Vf, Vg, Vd = [vector(QQ, 6) for i in (1, 2, 3)]\n",
"Vf[4] = Vg[3] = Vg[4] = Vd[4] = 1\n",
"Vd[5] = 2\n",
"Vf, Vg, Vd"
]
},
{
"cell_type": "code",
"execution_count": 87,
"id": "f4f2d497-55d6-42cc-a3c1-6ee815579be8",
"metadata": {},
"outputs": [],
"source": [
"n2b, Nf2b, Ng2b, Nd2b, Nhs2b, Nks2b, euler2b, nus2b, pols2b = trinomiales_general(A2, Vf, Vg, (), (), Vd, total=False)"
]
},
{
"cell_type": "code",
"execution_count": 88,
"id": "6d1f647d-c103-4ffc-97da-bdcac4e0625e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(2, 4, 6, 7, 14, 14)\n",
"(3, 6, 9, 11, 21, 21)\n",
"(6, 12, 18, 21, 42, 44)\n"
]
}
],
"source": [
"print(Nf2b)\n",
"print(Ng2b)\n",
"print(Nd2b)"
]
},
{
"cell_type": "code",
"execution_count": 89,
"id": "27a012cc-2e37-4545-98a4-7f1ffd7f8566",
"metadata": {},
"outputs": [],
"source": [
"zetatop2b, zetamon2b, dic2b = zetas(n2b, pols2b, info=True)"
]
},
{
"cell_type": "code",
"execution_count": 90,
"id": "696efeb0-7276-449a-903d-c2e02cdb16f9",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((-41/168) * (s + 16/21)^-1 * (s + 19/24)^-1 * (s + 1)^-1 * (s^2 - 283/123*s - 304/123),\n",
" (-39/161) * (s + 16/21)^-1 * (s + 18/23)^-1 * (s + 1)^-1 * (s^2 - 274/117*s - 32/13))"
]
},
"execution_count": 90,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"zetatop.factor(), zetatop2b.factor()"
]
},
{
"cell_type": "code",
"execution_count": 92,
"id": "7d299478-15d6-439a-a0ee-38557a6e303b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"({1: 1, 2: 1, 6: 1, 4: 1, 3: 1, 12: 1, 8: 1, 7: 1, 24: 1, 21: 1},\n",
" {1: 1, 7: 1, 21: 1, 23: 1})"
]
},
"execution_count": 92,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dic, dic2b"
]
},
{
"cell_type": "code",
"execution_count": 66,
"id": "d236b526-d636-455a-8030-301f39e27f96",
"metadata": {},
"outputs": [],
"source": [
"A = Matrix(8, [-2, 1, 0, 0, 0, 0, 0, 0, 1, -2, 1, 0, 0, 0, 0, 0, 0, 1, -3, 0, 1, 0, 0, 0, 0, 0, 0, -2, 1, 0, 0, 0, 0, 0, 1, 1, -2, 1, 0, 0, 0, 0, 0, 0, 1, -3, 0, 1, 0, 0, 0, 0, 0, 0, -2, 1, 0, 0, 0, 0, 0, 1, 1, -1])\n",
"A1 = A.matrix_from_rows_and_columns([0..6], [0..6])\n",
"A1[4, 5] = A1[5, 4] = 0\n",
"A1[4, 6] = A1[6, 4] = A1[5, 6] = A1[6, 5] = 1\n",
"A1[4, 4] = -3\n",
"A1[5, 5] = -2\n",
"A1[6, 6] = -1"
]
},
{
"cell_type": "code",
"execution_count": 73,
"id": "0f6ae8eb-46d6-4d8b-85ff-8b93432f88f5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((0, 0, 0, 0, 1, 0, 0), (0, 0, 0, 1, 1, 0, 0), (0, 0, 0, 0, 1, 0, 1))"
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Vf, Vg, Vd = [vector(QQ, 7) for i in (1, 2, 3)]\n",
"Vf[4] = Vg[3] = Vg[4] = Vd[4] = Vd[6] = 1\n",
"Vf, Vg, Vd"
]
},
{
"cell_type": "code",
"execution_count": 74,
"id": "5d18a75f-7a9b-4ada-b28f-f79e9fb69292",
"metadata": {},
"outputs": [],
"source": [
"n2a, Nf2a, Ng2a, Nd2a, Nhs2a, Nks2a, euler2a, nus2a, pols2a = trinomiales_general(A1, Vf, Vg, (), (), Vd, total=False)"
]
},
{
"cell_type": "code",
"execution_count": 79,
"id": "d3af6603-a5ca-45da-8122-5e0973563b88",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(2, 4, 6, 7, 14, 14, 28)\n",
"(3, 6, 9, 11, 21, 21, 42)\n",
"(6, 12, 18, 21, 42, 43, 86)\n"
]
}
],
"source": [
"print(Nf2a)\n",
"print(Ng2a)\n",
"print(Nd2a)"
]
},
{
"cell_type": "code",
"execution_count": 77,
"id": "4412f281-4696-4dc1-91ed-0069b58bffa0",
"metadata": {},
"outputs": [],
"source": [
"zetatop2a, zetamon2a, dic2a = zetas(n2a, pols2a, info=True)"
]
},
{
"cell_type": "code",
"execution_count": 78,
"id": "c39bf1b5-1ed0-4d84-8e81-5f4e4bf3fd9b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((-41/168) * (s + 16/21)^-1 * (s + 19/24)^-1 * (s + 1)^-1 * (s^2 - 283/123*s - 304/123),\n",
" (-37/154) * (s + 16/21)^-1 * (s + 17/22)^-1 * (s + 1)^-1 * (s^2 - 265/111*s - 272/111))"
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"zetatop.factor(), zetatop2a.factor()"
]
},
{
"cell_type": "code",
"execution_count": 80,
"id": "441864d8-5be6-4570-8a30-b9612c0ebcb1",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"({1: 1, 2: 1, 6: 1, 4: 1, 3: 1, 12: 1, 8: 1, 7: 1, 24: 1, 21: 1},\n",
" {1: 1, 2: 1, 7: 1, 22: 1, 11: 1, 21: 1})"
]
},
"execution_count": 80,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dic, dic2a"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "faed71a4-b703-4416-8c86-ce2d989999b0",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((0, 0, 0, 0, 1, 0, 0, 0), (0, 0, 0, 1, 1, 0, 0, 0), (0, 0, 0, 0, 1, 0, 0, 1))"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Vf, Vg, Vd = [vector(QQ, 8) for i in (1, 2, 3)]\n",
"Vf[4] = Vg[3] = Vg[4] = Vd[4] = Vd[7] = 1\n",
"Vf, Vg, Vd"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "aa0267bd-3f48-4167-94f4-b6079b77cc46",
"metadata": {},
"outputs": [],
"source": [
"n2, Nf2, Ng2, Nd2, Nhs2, Nks2, euler2, nus2, pols2 = trinomiales_general(A, Vf, Vg, (), (), Vd, total=False)"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "f819b1f2-2342-4951-99ee-c62a978d2308",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(6, 12, 18, 21, 42, 42, 42, 84)\n",
"(6, 12, 18, 22, 42, 42, 42, 84)\n",
"(6, 12, 18, 21, 42, 44, 45, 90)\n"
]
}
],
"source": [
"print(3 * Nf2)\n",
"print(2 * Ng2)\n",
"print(Nd2)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "1a340b4a-c984-46e1-a708-0c962a0912bc",
"metadata": {},
"outputs": [],
"source": [
"zetatop2, zetamon2, dic2 = zetas(n2, pols2, info=True)"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "e737e117-0285-429e-8800-eab63eff90fc",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((-41/168) * (s + 16/21)^-1 * (s + 19/24)^-1 * (s + 1)^-1 * (s^2 - 283/123*s - 304/123),\n",
" (-41/168) * (s + 16/21)^-1 * (s + 19/24)^-1 * (s + 1)^-1 * (s^2 - 283/123*s - 304/123))"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"zetatop.factor(), zetatop2.factor()"
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "535f3607-b56b-4557-b60b-28889a8795c4",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"({1: 1, 2: 1, 6: 1, 4: 1, 3: 1, 12: 1, 8: 1, 7: 1, 24: 1, 21: 1},\n",
" {1: 1, 2: 1, 6: 1, 4: 1, 3: 1, 12: 1, 8: 1, 7: 1, 24: 1, 21: 1})"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dic, dic2"
]
},
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 43, "execution_count": 43,
@ -768,24 +1144,24 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 48, "execution_count": 49,
"id": "0870be50-c79c-48c9-80b7-24bfd6914737", "id": "0870be50-c79c-48c9-80b7-24bfd6914737",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
"data": { "data": {
"text/plain": [ "text/plain": [
"((-41/168) * (s + 16/21)^-1 * (s + 19/24)^-1 * (s + 1)^-1 * (s^2 - 283/123*s - 304/123),\n", "((-5/21) * (s + 16/21)^-1 * (s + 1)^-1 * (s - 16/5),\n",
" (-5/21) * (s + 16/21)^-1 * (s + 1)^-1 * (s - 16/5))" " (-5/21) * (s + 16/21)^-1 * (s + 1)^-1 * (s - 16/5))"
] ]
}, },
"execution_count": 48, "execution_count": 49,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
], ],
"source": [ "source": [
"zetatop.factor(), zetatop3.factor()" "zetatop1.factor(), zetatop3.factor()"
] ]
}, },
{ {
@ -861,7 +1237,7 @@
], ],
"metadata": { "metadata": {
"kernelspec": { "kernelspec": {
"display_name": "SageMath 10.4.beta9", "display_name": "SageMath 10.4.rc1",
"language": "sage", "language": "sage",
"name": "sagemath-devel" "name": "sagemath-devel"
}, },

View File

@ -2,7 +2,7 @@
"cells": [ "cells": [
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 113, "execution_count": 1,
"id": "4778e32e-f561-4e4d-b63a-d4d60f91abde", "id": "4778e32e-f561-4e4d-b63a-d4d60f91abde",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
@ -12,7 +12,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 115, "execution_count": 2,
"id": "f042e81b-abf8-4e09-bc67-a19d778033e6", "id": "f042e81b-abf8-4e09-bc67-a19d778033e6",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
@ -22,7 +22,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 116, "execution_count": 7,
"id": "0733b364-bbf6-486c-a5d1-e72c7a5d48ca", "id": "0733b364-bbf6-486c-a5d1-e72c7a5d48ca",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
@ -34,7 +34,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 117, "execution_count": 8,
"id": "b81e1db9-883e-4a03-a38c-1ca296c9d25b", "id": "b81e1db9-883e-4a03-a38c-1ca296c9d25b",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
@ -45,7 +45,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 118, "execution_count": 9,
"id": "f97fbf75-4da5-45db-8f66-cdccdd052326", "id": "f97fbf75-4da5-45db-8f66-cdccdd052326",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
@ -60,7 +60,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 119, "execution_count": 10,
"id": "04072945-1ada-4d66-b44e-95318f073634", "id": "04072945-1ada-4d66-b44e-95318f073634",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
@ -70,7 +70,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 120, "execution_count": 11,
"id": "d9834ff4-e09f-4cf9-abd0-9b1eea6ca033", "id": "d9834ff4-e09f-4cf9-abd0-9b1eea6ca033",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
@ -88,16 +88,32 @@
}, },
"metadata": {}, "metadata": {},
"output_type": "display_data" "output_type": "display_data"
},
{
"data": {
"text/html": [
"<html>\\(\\displaystyle \\nu_{2}^{-1} \\cdot \\nu_{1}^{-1} \\cdot (3 \\mathit{ss} a_{2} + a_{2} + 3 \\nu_{2})^{-1} \\cdot (3 \\mathit{ss} a_{1} + a_{1} + 3 \\nu_{1})^{-1} \\cdot (3 \\mathit{ss} a_{1} a_{2} + a_{1} a_{2} + 3 a_{2} \\nu_{1} + 3 a_{1} \\nu_{2})\\)</html>"
],
"text/latex": [
"$\\displaystyle \\nu_{2}^{-1} \\cdot \\nu_{1}^{-1} \\cdot (3 \\mathit{ss} a_{2} + a_{2} + 3 \\nu_{2})^{-1} \\cdot (3 \\mathit{ss} a_{1} + a_{1} + 3 \\nu_{1})^{-1} \\cdot (3 \\mathit{ss} a_{1} a_{2} + a_{1} a_{2} + 3 a_{2} \\nu_{1} + 3 a_{1} \\nu_{2})$"
],
"text/plain": [
"nu2^-1 * nu1^-1 * (3*ss*a2 + a2 + 3*nu2)^-1 * (3*ss*a1 + a1 + 3*nu1)^-1 * (3*ss*a1*a2 + a1*a2 + 3*a2*nu1 + 3*a1*nu2)"
]
},
"metadata": {},
"output_type": "display_data"
} }
], ],
"source": [ "source": [
"vertical = cono3(e1, e2, e3, V1, nu) - cono3(Q1, Q2, e3, V1, nu)\n", "vertical = cono3(e1, e2, e3, V1, nu) - cono3(Q1, Q2, e3, V1, nu)\n",
"show(vertical.subs(sb).factor())" "show(vertical.subs(sb).factor())\n",
"show(vertical.factor())"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 121, "execution_count": 13,
"id": "fe5aa4f3-db61-4a38-a1d1-dd100d819937", "id": "fe5aa4f3-db61-4a38-a1d1-dd100d819937",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
@ -115,12 +131,28 @@
}, },
"metadata": {}, "metadata": {},
"output_type": "display_data" "output_type": "display_data"
},
{
"data": {
"text/html": [
"<html>\\(\\displaystyle \\left(9\\right) \\cdot (3 \\mathit{ss} a_{2} + a_{2} + 3 \\nu_{2})^{-1} \\cdot (3 \\mathit{ss} a_{1} + a_{1} + 3 \\nu_{1})^{-1}\\)</html>"
],
"text/latex": [
"$\\displaystyle \\left(9\\right) \\cdot (3 \\mathit{ss} a_{2} + a_{2} + 3 \\nu_{2})^{-1} \\cdot (3 \\mathit{ss} a_{1} + a_{1} + 3 \\nu_{1})^{-1}$"
],
"text/plain": [
"(9) * (3*ss*a2 + a2 + 3*nu2)^-1 * (3*ss*a1 + a1 + 3*nu1)^-1"
]
},
"metadata": {},
"output_type": "display_data"
} }
], ],
"source": [ "source": [
"horizontal = cono3(Q1, Q2, e3, V0, nu)\n", "horizontal = cono3(Q1, Q2, e3, V0, nu)\n",
"horizontal = (horizontal.numerator() / 9) / (horizontal.denominator() / 9)\n", "horizontal = (horizontal.numerator() / 9) / (horizontal.denominator() / 9)\n",
"show(horizontal.subs(sb).factor())" "show(horizontal.subs(sb).factor())\n",
"show(horizontal.factor())"
] ]
}, },
{ {
@ -151,7 +183,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 123, "execution_count": 14,
"id": "29605b7d-37f7-4f22-80bd-1694134cd9b7", "id": "29605b7d-37f7-4f22-80bd-1694134cd9b7",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
@ -161,7 +193,7 @@
"[9/(alpha1*alpha2), 3*a2/(alpha1*alpha2), (-3*a1)/(alpha1*alpha2)]" "[9/(alpha1*alpha2), 3*a2/(alpha1*alpha2), (-3*a1)/(alpha1*alpha2)]"
] ]
}, },
"execution_count": 123, "execution_count": 14,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
@ -172,7 +204,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 124, "execution_count": 15,
"id": "83121ff8-547c-424b-b3ce-860a80f0541e", "id": "83121ff8-547c-424b-b3ce-860a80f0541e",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
@ -182,7 +214,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 125, "execution_count": 16,
"id": "b3963226-7397-4cb5-bdff-5382f74df8df", "id": "b3963226-7397-4cb5-bdff-5382f74df8df",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
@ -192,7 +224,7 @@
"(3*a1/alpha1, 3*a1/alpha1, 3*a2/alpha2, 3*a2/alpha2, (a1 + 3*nu1)/alpha1)" "(3*a1/alpha1, 3*a1/alpha1, 3*a2/alpha2, 3*a2/alpha2, (a1 + 3*nu1)/alpha1)"
] ]
}, },
"execution_count": 125, "execution_count": 16,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
@ -203,7 +235,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 126, "execution_count": 17,
"id": "36201bc7-a7e2-4c9e-a8e9-5865cb9686f9", "id": "36201bc7-a7e2-4c9e-a8e9-5865cb9686f9",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
@ -214,7 +246,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 127, "execution_count": 18,
"id": "d77f48f5-2236-4cb6-a211-14f3623539c0", "id": "d77f48f5-2236-4cb6-a211-14f3623539c0",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
@ -241,7 +273,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 128, "execution_count": 19,
"id": "c18631c1-f18a-48a2-8e9a-727d347ef89a", "id": "c18631c1-f18a-48a2-8e9a-727d347ef89a",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
@ -259,12 +291,102 @@
}, },
"metadata": {}, "metadata": {},
"output_type": "display_data" "output_type": "display_data"
},
{
"data": {
"text/html": [
"<html>\\(\\displaystyle \\left(-1\\right) \\cdot \\nu_{2}^{-1} \\cdot \\nu_{1}^{-1} \\cdot (\\mathit{ss} + 1)^{-1} \\cdot (3 \\mathit{ss} a_{2} + a_{2} + 3 \\nu_{2})^{-1} \\cdot (3 \\mathit{ss} a_{1} + a_{1} + 3 \\nu_{1})^{-1} \\cdot (3 \\mathit{ss} \\nu_{1} \\nu_{2} \\mathit{cd}^{2} - 3 \\mathit{ss}^{2} a_{1} a_{2} - 4 \\mathit{ss} a_{1} a_{2} - 3 \\mathit{ss} a_{2} \\nu_{1} - 3 \\mathit{ss} a_{1} \\nu_{2} - 9 \\mathit{ss} \\nu_{1} \\nu_{2} - a_{1} a_{2} - 3 a_{2} \\nu_{1} - 3 a_{1} \\nu_{2} - 9 \\nu_{1} \\nu_{2})\\)</html>"
],
"text/latex": [
"$\\displaystyle \\left(-1\\right) \\cdot \\nu_{2}^{-1} \\cdot \\nu_{1}^{-1} \\cdot (\\mathit{ss} + 1)^{-1} \\cdot (3 \\mathit{ss} a_{2} + a_{2} + 3 \\nu_{2})^{-1} \\cdot (3 \\mathit{ss} a_{1} + a_{1} + 3 \\nu_{1})^{-1} \\cdot (3 \\mathit{ss} \\nu_{1} \\nu_{2} \\mathit{cd}^{2} - 3 \\mathit{ss}^{2} a_{1} a_{2} - 4 \\mathit{ss} a_{1} a_{2} - 3 \\mathit{ss} a_{2} \\nu_{1} - 3 \\mathit{ss} a_{1} \\nu_{2} - 9 \\mathit{ss} \\nu_{1} \\nu_{2} - a_{1} a_{2} - 3 a_{2} \\nu_{1} - 3 a_{1} \\nu_{2} - 9 \\nu_{1} \\nu_{2})$"
],
"text/plain": [
"(-1) * nu2^-1 * nu1^-1 * (ss + 1)^-1 * (3*ss*a2 + a2 + 3*nu2)^-1 * (3*ss*a1 + a1 + 3*nu1)^-1 * (3*ss*nu1*nu2*cd^2 - 3*ss^2*a1*a2 - 4*ss*a1*a2 - 3*ss*a2*nu1 - 3*ss*a1*nu2 - 9*ss*nu1*nu2 - a1*a2 - 3*a2*nu1 - 3*a1*nu2 - 9*nu1*nu2)"
]
},
"metadata": {},
"output_type": "display_data"
} }
], ],
"source": [ "source": [
"prueba = horizontal - arista + vertical\n", "prueba = horizontal - arista + vertical\n",
"# prueba.numerator().variables() + prueba.denominator().variables()\n", "# prueba.numerator().variables() + prueba.denominator().variables()\n",
"show(prueba.subs(sb).factor())" "show(prueba.subs(sb).factor())\n",
"show(prueba.factor())"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "5c36c8a4-f5f0-43d8-bbfc-35e889012f6e",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<html>\\(\\displaystyle 3 \\mathit{ss} \\nu_{1} \\nu_{2} \\mathit{cd}^{2} - 3 \\mathit{ss}^{2} a_{1} a_{2} - 4 \\mathit{ss} a_{1} a_{2} - 3 \\mathit{ss} a_{2} \\nu_{1} - 3 \\mathit{ss} a_{1} \\nu_{2} - 9 \\mathit{ss} \\nu_{1} \\nu_{2} - a_{1} a_{2} - 3 a_{2} \\nu_{1} - 3 a_{1} \\nu_{2} - 9 \\nu_{1} \\nu_{2}\\)</html>"
],
"text/latex": [
"$\\displaystyle 3 \\mathit{ss} \\nu_{1} \\nu_{2} \\mathit{cd}^{2} - 3 \\mathit{ss}^{2} a_{1} a_{2} - 4 \\mathit{ss} a_{1} a_{2} - 3 \\mathit{ss} a_{2} \\nu_{1} - 3 \\mathit{ss} a_{1} \\nu_{2} - 9 \\mathit{ss} \\nu_{1} \\nu_{2} - a_{1} a_{2} - 3 a_{2} \\nu_{1} - 3 a_{1} \\nu_{2} - 9 \\nu_{1} \\nu_{2}$"
],
"text/plain": [
"3*ss*nu1*nu2*cd^2 - 3*ss^2*a1*a2 - 4*ss*a1*a2 - 3*ss*a2*nu1 - 3*ss*a1*nu2 - 9*ss*nu1*nu2 - a1*a2 - 3*a2*nu1 - 3*a1*nu2 - 9*nu1*nu2"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"uuu= (ss + 1) * ((3 * ss + 1) * a1 * a2 + 3 * (nu1 * a2 + nu2 * a1 + 3 * nu1 * nu2)) - 3 * nu1 * nu2 * cd^2 *ss\n",
"show(-uuu)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "52254bac-4ce0-473f-a6c8-9853e4180df9",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-3 \\mathit{ss} \\nu_{1} \\nu_{2} \\mathit{cd}^{2} + 3 \\mathit{ss}^{2} a_{1} a_{2} + 4 \\mathit{ss} a_{1} a_{2} + 3 \\mathit{ss} a_{2} \\nu_{1} + 3 \\mathit{ss} a_{1} \\nu_{2} + 9 \\mathit{ss} \\nu_{1} \\nu_{2} + a_{1} a_{2} + 3 a_{2} \\nu_{1} + 3 a_{1} \\nu_{2} + 9 \\nu_{1} \\nu_{2}"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"latex(uuu)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "b4f731bf-7872-4e7f-a8dc-f1a7666fcd31",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<html>\\(\\displaystyle \\left(-1\\right) \\cdot \\nu_{1}^{-1} \\cdot (\\mathit{ss} + 1)^{-1} \\cdot (3 \\mathit{ss} a_{1} + a_{1} + 3 \\nu_{1})^{-1} \\cdot (\\mathit{ss} \\nu_{1} \\mathit{cd}^{2} - \\mathit{ss} a_{1} - 3 \\mathit{ss} \\nu_{1} - a_{1} - 3 \\nu_{1})\\)</html>"
],
"text/latex": [
"$\\displaystyle \\left(-1\\right) \\cdot \\nu_{1}^{-1} \\cdot (\\mathit{ss} + 1)^{-1} \\cdot (3 \\mathit{ss} a_{1} + a_{1} + 3 \\nu_{1})^{-1} \\cdot (\\mathit{ss} \\nu_{1} \\mathit{cd}^{2} - \\mathit{ss} a_{1} - 3 \\mathit{ss} \\nu_{1} - a_{1} - 3 \\nu_{1})$"
],
"text/plain": [
"(-1) * nu1^-1 * (ss + 1)^-1 * (3*ss*a1 + a1 + 3*nu1)^-1 * (ss*nu1*cd^2 - ss*a1 - 3*ss*nu1 - a1 - 3*nu1)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"show(prueba(a2=0, nu2=1).factor())"
] ]
}, },
{ {
@ -944,9 +1066,9 @@
], ],
"metadata": { "metadata": {
"kernelspec": { "kernelspec": {
"display_name": "SageMath 10.3.rc3", "display_name": "SageMath 10.4.beta6",
"language": "sage", "language": "sage",
"name": "sagemath-310" "name": "sagemath-devel"
}, },
"language_info": { "language_info": {
"codemirror_mode": { "codemirror_mode": {
@ -958,7 +1080,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.11.1" "version": "3.12.3"
} }
}, },
"nbformat": 4, "nbformat": 4,

View File

@ -723,7 +723,7 @@
], ],
"metadata": { "metadata": {
"kernelspec": { "kernelspec": {
"display_name": "SageMath 10.4.beta3", "display_name": "SageMath 10.4.rc1",
"language": "sage", "language": "sage",
"name": "sagemath-devel" "name": "sagemath-devel"
}, },
@ -737,7 +737,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.12.2" "version": "3.12.3"
} }
}, },
"nbformat": 4, "nbformat": 4,

View File

@ -488,7 +488,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.12.2" "version": "3.12.3"
} }
}, },
"nbformat": 4, "nbformat": 4,

View File

@ -468,7 +468,7 @@
], ],
"metadata": { "metadata": {
"kernelspec": { "kernelspec": {
"display_name": "SageMath 10.4.beta3", "display_name": "SageMath 10.4.beta6",
"language": "sage", "language": "sage",
"name": "sagemath-devel" "name": "sagemath-devel"
}, },
@ -482,7 +482,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.12.2" "version": "3.12.3"
} }
}, },
"nbformat": 4, "nbformat": 4,

View File

@ -987,7 +987,7 @@
], ],
"metadata": { "metadata": {
"kernelspec": { "kernelspec": {
"display_name": "SageMath 10.4.beta3", "display_name": "SageMath 10.4.beta4",
"language": "sage", "language": "sage",
"name": "sagemath-devel" "name": "sagemath-devel"
}, },

458
zetas_triples_trenzas.py Normal file
View File

@ -0,0 +1,458 @@
def trinomiales_general(A, Vf, Vg, Vhs, Vd, total=True):
r"""
Return data necessary to compute the zeta functions of
a triple singularity defined by
.. math::
z^3 -3 \prod_{i=1}^h h_i^{n_i} f z^2
+ \prod_{i=1}^h h_i g,
where :math:`f, g, h_i` are polynomials in two variables,
and :math:`n_i \geq 1`.
We consider an embedded resolution of :math:`fg(f^3 - g^2)` with
a stratification of the exceptional divisor:
- :math:`\check{E}_i`: the smooth part of the total divisor
- :math:`E_i\cap E_j`: the double points of the divisor
- :math:`E_i\cap \{f=0\}`: the intersections with the strict
transform of :math:`f`
- :math:`E_i\cap \{g=0\}`: the intersections with the strict
transform of :math:`g`
- :math:`E_i\cap \{f^3=g^2\}`: the intersections with the strict
transform of :math:`f^3-g^2`
It is also possible to forget the strict transforms of :math:`f, g`
and even to consider only resolutions of :math:`f^3 - g^2`.
INPUT:
- ``A`` -- the incidence matrix of a resolution
- ``Vf`` -- the vector with the intersection numbers of the strict
transform of :math:`f` with the divisors of the resolution
- ``Vg`` -- the vector with the intersection numbers of the strict
transform of :math:`g` with the divisors of the resolution
- ``Vhs`` -- a list of tuple whose elements are tuples `(h_i, n_i)`
- ``Vd`` -- the vector with the intersection numbers of the strict
transform of :math:`f^3 - g^2` with the divisors of the resolution
- ``total`` -- boolean (default: ``True``), whether we consider also
the strata corresponding to the strict transforms of :math:`f, g`.
OUTPUT:
Polynomials :math:`z^3 + M_1 z + M_0` or :math:`z^3 + M_2 z^2 + M_0` are
assigned to each strata. The monomials are of the form :math:`x^k` for the
smooth parts of the divisors and :math:`x^k y^l` for the double points.
Each variable is associated to a divisor or to a strict transform
- ``n`` -- the number of irreducible components of the exceptional divisor
- ``Nf`` -- the vector in :math:`\mathbb{Z}^n` of the multiplicities for
the total transform of :math:`f`
- ``Ng`` -- the vector in :math:`\mathbb{Z}^n` of the multiplicities for
the total transform of :math:`g`
- ``Nhs`` -- a list of tuple whose elements are tuples, the first element
is the vector in :math:`\mathbb{Z}^n` of the multiplicities for
the total transform of :math:`h_i` and the second is :math:`n_i`
- ``Nd`` -- the vector in :math:`\mathbb{Z}^n` of the multiplicities for
the total transform of :math:`f^3 - g^2`
- ``euler`` -- the vector in :math:`\mathbb{Z}^n` of the Euler
characteristic of the smooth part of the strata. If ``total=True`` this
smooth part does not contain the intersections with total transform
of :math:`f, g`
- ``nus`` -- the vector in :math:`\mathbb{Z}^n` of the canonical
multiplicities
- ``pols`` -- a dictionary with keys ``(i, )``, ``(i, j)``, ``(i, 'f')``
(if ``total=True``), ``(i, 'g')`` (if ``total=True``), and ``(i, 'd')``
assigning the polynomial of the stratum (non-degenerated with respect
to its Newton polytope), the weights ``(nui, nuj, 1)`` coding
the form
:math:`x^{\nu_i-1}y^{\nu_j-1}\operatorname{d}\! x \operatorname{d}\! y \operatorname{d}\! z`
EXAMPLES::
sage: R.<x, y, z> = QQ[]
sage: f, g = (x, y)
sage: A = Matrix(QQ, 3, [-3, 0, 1, 0, -2, 1, 1, 1, -1])
sage: Vf = vector(QQ, [1, 0, 0])
sage: Vg = vector(QQ, [0, 1, 0])
sage: Vd = vector(QQ, [0, 0, 1])
sage: trinomiales_general(A, Vf, Vg, (), Vd)
(3, (1, 1, 2), (1, 2, 3), (2, 3, 6), (0, 0, -1), (2, 3, 5),
{(0, 'f'): (x + x*y*z + z^3, (2, 1, 1), 1),
(0, 2): (z^3 + x*y^3 + x*y^2*z, (2, 5, 1), 1),
(1, 'g'): (x*z + x^2*y + z^3, (3, 1, 1), 1),
(1, 2): (z^3 + x*y^2*z + x^2*y^3, (3, 5, 1), 1),
(2, 'd'): (x*z^2 + z^3 + x^3*y, (5, 1, 1), 1),
0: (x + x*z + z^3, (2, 1, 1), 0),
1: (x^2 + x*z + z^3, (3, 1, 1), 0),
2: (x^3 + x^2*z + z^3, (5, 1, 1), -1)})
sage: trinomiales(A, Vf, Vg, Vd, (), total=False)
(3, (1, 1, 2), (1, 2, 3), (2, 3, 6), (1, 1, -1), (2, 3, 5),
{(0, 2): (z^3 + x*y^3 + x*y^2*z, (2, 5, 1), 1),
(1, 2): (z^3 + x*y^2*z + x^2*y^3, (3, 5, 1), 1),
(2, 'd'): (x*z^2 + z^3 + x^3*y, (5, 1, 1), 1),
0: (x + x*z + z^3, (2, 1, 1), 1),
1: (x^2 + x*z + z^3, (3, 1, 1), 1),
2: (x^3 + x^2*z + z^3, (5, 1, 1), -1)})
"""
R = PolynomialRing(QQ, 'x, y, z', order='negdeglex')
x, y, z = R.gens()
n = A.nrows()
A1 = -A ** -1
Nf, Ng, Nd = [A1 * N0 for N0 in (Vf, Vg, Vd)]
Nhs = [(A1 * N0, h) for N0, h in Vhs]
ch = len(Nhs)
NNf = Nf + sum(j * V0 for V0, j in Nhs)
NNg = Ng + sum(V0 for V0, j in Nhs)
NNd = Nd + 2 * sum(V0 for V0, j in Nhs)
diag = vector(A.diagonal())
unos = vector(n * [1])
if total:
VV = Vf + Vg
else:
VV = Vf.parent()(0)
resta = VV + Vd + sum(V0 for V0, m in Vhs)
euler = (-A + 2 * identity_matrix(n)) * unos + diag - resta
nus = A1 * (diag + 2 * unos) + unos
expos = {}
for j in range(n):
a, b = (NNf[j], NNg[j])
eq = 3 * a == 2 * NNg[j]
nnd = min(3 * a, 2 * b) == NNd[j]
if nnd:
expos[j] = ((a, b), (a / 2, b), nus[j], eq, nnd)
else:
expos[j] = ((a, b), (a / 2, NNd[j] - b), nus[j], eq, nnd)
cadenas = ('d', )
cadenash = tuple(('h', h) for h in range(ch))
if total:
expos['f'] = ((1, 0), (0, 0), 1, False, True)
expos['g'] = ((0, 1), (0, 0), 1, False, True)
cadenas = ('f', 'g') + cadenas
expos['d'] = ((0, 0), (0, 1), 1, True, False)
for h, V0 in enumerate(Vhs):
expos['h', h] = ((V0[1], 1), (0, 0), 1, False, True)
pols = {}
for j in range(n):
if expos[j][-1]:
a, b = expos[j][0]
pols[j] = (z ** 3 + x ** a * z + x ** b, (expos[j][2], 1, 1),
euler[j])
else:
a, b = expos[j][1]
pols[j] = (z ** 3 + x ** a * z ** 2 + x ** b,
(expos[j][2], 1, 1), euler[j])
interdiv = [(i, j) for i, j in Combinations(n, 2) if A[i, j] != 0]
interstrict = [(i, j) for i in range(n) for j in cadenas
if eval('V' + j)[i] != 0]
interh = [(i, j) for i in range(n) for j in cadenash if Vhs[j[1]][0][i] != 0]
for i, j in interdiv + interstrict + interh:
if isinstance(j, str):
ep = eval('V' + j)[i]
else:
ep = 1
eqi, nndi = expos[i][-2:]
eqj, nndj = expos[j][-2:]
nd = eqi and eqj and not (nndi and nndj)
if not nd:
ai, bi = expos[i][0]
aj, bj = expos[j][0]
pols[i, j] = (z ** 3 + x ** ai * y ** aj * z + x ** bi * y ** bj,
(expos[i][2], expos[j][2], 1), ep)
else:
ai, bi = expos[i][1]
aj, bj = expos[j][1]
pols[i, j] = (z ** 3 + x ** ai * y ** aj * z ** 2 +
x ** bi * y ** bj, (expos[i][2], expos[j][2], 1), ep)
return n, Nf, Ng, Nd, Nhs, euler, nus, pols
def exp_trenza_dis(tau):
B = tau.parent()
m = tau.exponent_sum()
a, b = m.quo_rem(6)
no = False
while not no:
no = bool(tau.conjugating_braid(B.delta()**(2 * a) * B.gen(0)**b))
if not no:
a, b = a - 1, b + 6
return (2 * a, None, 3 * a + b)
def exp_trenza(tau):
B = tau.parent()
m = tau.exponent_sum()
if m.gcd(6) == 1:
return exp_trenza_dis(tau)
elif m.gcd(6) == 3:
polo = bool(tau.conjugating_braid(B.delta()**(m / 3)))
if polo:
return (None, m / 3, None)
else:
return exp_trenza_dis(tau)
elif m.gcd(6) == 2:
cero = bool(tau.conjugating_braid(B([1, 2])**(m / 2)))
if cero:
return (None, None, m / 2)
else:
return exp_trenza_dis(tau)
else:
ct = bool(tau.conjugating_braid(B.delta()**(m / 3)))
if ct:
return (m / 6, m / 3, m / 2)
else:
return exp_trenza_dis(tau)
def trinomiales_trenza(A, trenzas, Vhs, Vd):
r"""
Return data necessary to compute the zeta functions of
a triple singularity defined by
.. math::
z^3 -3 \prod_{i=1}^h h_i^{n_i} f z^2
+ \prod_{i=1}^h h_i g,
where :math:`f, g, h_i` are polynomials in two variables,
and :math:`n_i \geq 1`.
We consider an embedded resolution of :math:`fg(f^3 - g^2)` with
a stratification of the exceptional divisor:
- :math:`\check{E}_i`: the smooth part of the total divisor
- :math:`E_i\cap E_j`: the double points of the divisor
- :math:`E_i\cap \{f=0\}`: the intersections with the strict
transform of :math:`f`
- :math:`E_i\cap \{g=0\}`: the intersections with the strict
transform of :math:`g`
- :math:`E_i\cap \{f^3=g^2\}`: the intersections with the strict
transform of :math:`f^3-g^2`
It is also possible to forget the strict transforms of :math:`f, g`
and even to consider only resolutions of :math:`f^3 - g^2`.
INPUT:
- ``A`` -- the incidence matrix of a resolution
- ``Vf`` -- the vector with the intersection numbers of the strict
transform of :math:`f` with the divisors of the resolution
- ``Vg`` -- the vector with the intersection numbers of the strict
transform of :math:`g` with the divisors of the resolution
- ``Vhs`` -- a list of tuple whose elements are tuples `(h_i, n_i)`
- ``Vd`` -- the vector with the intersection numbers of the strict
transform of :math:`f^3 - g^2` with the divisors of the resolution
- ``total`` -- boolean (default: ``True``), whether we consider also
the strata corresponding to the strict transforms of :math:`f, g`.
OUTPUT:
Polynomials :math:`z^3 + M_1 z + M_0` or :math:`z^3 + M_2 z^2 + M_0` are
assigned to each strata. The monomials are of the form :math:`x^k` for the
smooth parts of the divisors and :math:`x^k y^l` for the double points.
Each variable is associated to a divisor or to a strict transform
- ``n`` -- the number of irreducible components of the exceptional divisor
- ``Nf`` -- the vector in :math:`\mathbb{Z}^n` of the multiplicities for
the total transform of :math:`f`
- ``Ng`` -- the vector in :math:`\mathbb{Z}^n` of the multiplicities for
the total transform of :math:`g`
- ``Nhs`` -- a list of tuple whose elements are tuples, the first element
is the vector in :math:`\mathbb{Z}^n` of the multiplicities for
the total transform of :math:`h_i` and the second is :math:`n_i`
- ``Nd`` -- the vector in :math:`\mathbb{Z}^n` of the multiplicities for
the total transform of :math:`f^3 - g^2`
- ``euler`` -- the vector in :math:`\mathbb{Z}^n` of the Euler
characteristic of the smooth part of the strata. If ``total=True`` this
smooth part does not contain the intersections with total transform
of :math:`f, g`
- ``nus`` -- the vector in :math:`\mathbb{Z}^n` of the canonical
multiplicities
- ``pols`` -- a dictionary with keys ``(i, )``, ``(i, j)``, ``(i, 'f')``
(if ``total=True``), ``(i, 'g')`` (if ``total=True``), and ``(i, 'd')``
assigning the polynomial of the stratum (non-degenerated with respect
to its Newton polytope), the weights ``(nui, nuj, 1)`` coding
the form
:math:`x^{\nu_i-1}y^{\nu_j-1}\operatorname{d}\! x \operatorname{d}\! y \operatorname{d}\! z`
EXAMPLES::
sage: R.<x, y, z> = QQ[]
sage: f, g = (x, y)
sage: A = Matrix(QQ, 3, [-3, 0, 1, 0, -2, 1, 1, 1, -1])
sage: Vf = vector(QQ, [1, 0, 0])
sage: Vg = vector(QQ, [0, 1, 0])
sage: Vd = vector(QQ, [0, 0, 1])
sage: trinomiales_general(A, Vf, Vg, (), Vd)
(3, (1, 1, 2), (1, 2, 3), (2, 3, 6), (0, 0, -1), (2, 3, 5),
{(0, 'f'): (x + x*y*z + z^3, (2, 1, 1), 1),
(0, 2): (z^3 + x*y^3 + x*y^2*z, (2, 5, 1), 1),
(1, 'g'): (x*z + x^2*y + z^3, (3, 1, 1), 1),
(1, 2): (z^3 + x*y^2*z + x^2*y^3, (3, 5, 1), 1),
(2, 'd'): (x*z^2 + z^3 + x^3*y, (5, 1, 1), 1),
0: (x + x*z + z^3, (2, 1, 1), 0),
1: (x^2 + x*z + z^3, (3, 1, 1), 0),
2: (x^3 + x^2*z + z^3, (5, 1, 1), -1)})
sage: trinomiales(A, Vf, Vg, Vd, (), total=False)
(3, (1, 1, 2), (1, 2, 3), (2, 3, 6), (1, 1, -1), (2, 3, 5),
{(0, 2): (z^3 + x*y^3 + x*y^2*z, (2, 5, 1), 1),
(1, 2): (z^3 + x*y^2*z + x^2*y^3, (3, 5, 1), 1),
(2, 'd'): (x*z^2 + z^3 + x^3*y, (5, 1, 1), 1),
0: (x + x*z + z^3, (2, 1, 1), 1),
1: (x^2 + x*z + z^3, (3, 1, 1), 1),
2: (x^3 + x^2*z + z^3, (5, 1, 1), -1)})
"""
R = PolynomialRing(QQ, 'x, y, z', order='negdeglex')
x, y, z = R.gens()
n = A.nrows()
A1 = -A ** -1
Nd = A1 * Vd
Nhs = [(A1 * N0, h) for N0, h in Vhs]
ch = len(Nhs)
NNd = Nd + 2 * sum(V0 for V0, j in Nhs)
diag = vector(A.diagonal())
unos = vector(n * [1])
resta = Vd + sum(V0 for V0, m in Vhs)
euler = (-A + 2 * identity_matrix(n)) * unos + diag - resta
nus = A1 * (diag + 2 * unos) + unos
expos = {j: exp_trenza(trenzas[j]) for j in range(n)}
cadenas = ('d', )
cadenash = tuple(('h', h) for h in range(ch))
expos['d'] = (0, 0, 1)
for h, V0 in enumerate(Vhs):
expos['h', h] = (0, V0[1], 1)
pols = {}
for j in range(n):
p = z**3
for k, e in enumerate(expos[j]):
if e:
p += x**e * z**(2 - k)
pols[j] = (p, (nus[j], 1, 1), euler[j])
interdiv = [(i, j) for i, j in Combinations(n, 2) if A[i, j] != 0]
interstrict = [(i, j) for i in range(n) for j in cadenas
if eval('V' + j)[i] != 0]
interh = [(i, j) for i in range(n) for j in cadenash if Vhs[j[1]][0][i] != 0]
for i, j in interdiv + interstrict + interh:
if isinstance(j, str):
ep = eval('V' + j)[i]
nu = (nus[i], 1, 1)
else:
ep = 1
nu = (nus[i], nus[j], 1)
p = z**3
for k, (e1, e2) in enumerate(zip(expos[i], expos[j])):
if e1 and e2:
p += x**e1 * y**e2 * z**(2 - k)
pols[i, j] = (p, nu, ep)
return n, Nd, Nhs, euler, nus, pols
def estrato(pol, pesos, euler, info=False):
r"""
Return the topological and Igusa zeta functions associated to a stratum
INPUT:
- ``pol`` -- a trinomial non degenerated with respect to its Newton
polyhedron
- ``pesos`` -- the canonical weights :math:`\nu:i`
- `euler`` -- the Euler characteristic of the stratum
- ``info`` -- boolean (default: False), if ``True`` a dictionary giving
the powers of cyclotomic polynomials for the monodromy zeta function
is given
EXAMPLES::
sage: R.<x, y, z> = QQ[]
sage: F = z**3 + x**4 * y**6 * z + x**7 * y**9
sage: estrato(F, (1, 1, 1), 1, info=True)
((1/3*s**2 + 1/2*s + 2/9)/(s^3 + 35/18*s^2 + 7/6*s + 2/9), -t^3 + 1,
{1: 1, 3: 1})
"""
Z1 = ZetaFunctions(pol)
zetatop = euler * Z1.topological_zeta(local=True, weights=pesos)
zetamon = Z1.monodromy_zeta() ** euler
if info:
dic = {}
for p, j in zetamon.factor():
c = p.is_cyclotomic(certificate=True)
dic[c] = j
return zetatop, zetamon, dic
return zetatop, zetamon
def zetas(n, pols, info=False):
r"""
Return the topological and Igusa zeta functions from the data of
a stratification
INPUT:
- ``n`` -- the number of exceptional divisors
- ``pols`` -- a dictionary from ``trinomiales``
- ``info`` -- boolean (default: False), if ``True`` a dictionary giving
the powers of cyclotomic polynomials for the monodromy zeta function
is given
EXAMPLES::
sage: A = Matrix(QQ, 3, [-3, 0, 1, 0, -2, 1, 1, 1, -1])
sage: Vf = vector(QQ, [1, 0, 0])
sage: Vg = vector(QQ, [0, 1, 0])
sage: Vd = vector(QQ, [0, 0, 1])
sage: n, Nf, Ng, Nd, euler, nus, pols = trinomiales(A, Vf, Vg, Vd)
sage: zetas(n, pols, info=True)
(1/(s + 1), -t + 1, {1: 1})
"""
zetatop = 0
T = PolynomialRing(QQ, 't')
t = T.gen(0)
zetamon = 1 / (1 - t ** 3) ** n
for k in pols:
zt, zm = estrato(*pols[k])
zetatop += zt
zetamon *= zm
if info:
dic = {}
for p, j in zetamon.factor():
c = p.is_cyclotomic(certificate=True)
dic[c] = j
return zetatop, zetamon, dic
return zetatop, zetamon