Utilizo la siguiente versión de Maxima
Maxima 5.25.1 http://maxima.sourceforge.net
using Lisp GNU Common Lisp (GCL) GCL 2.6.8 (a.k.a. GCL)
Intento resolverlo utilizando una base de Groebner. Hago los cálculos utilizando un CAS ( Máxima ). El código fuente se puede encontrar aquí . $p1$ , $p2$ y $p3$ son los tres polinomios dados. $gb$ es una base de Groebner calculada por el CAS para estos tres polinomios. $gb$ es una lista de polinomios.
(%i3) load(grobner)$
Loading maxima-grobner $Revision: 1.6 $ $Date: 2009-06-02 07:49:49 $
(%i4) p1:-3\*x\*y+z+y+x$
(%i5) p2:-3\*y\*z+z^2+y^2+x^2$
(%i6) p3:-3\*x\*z+z^3+y^3+x^3$
(%i7) gb:poly\_reduced\_grobner(\[p1,p2,p3\],\[x,y,z\]);
(%o7) \[-4767660\*z^10-14511474\*z^9-2093445\*z^8+29411046\*z^7+17677242\*z^6
-15031881\*z^5-9650244\*z^4-1068394\*z^3+17405\*z^2+17405\*y\*z,
-81\*z^11-243\*z^10-27\*z^9+495\*z^8+279\*z^7-255\*z^6-148\*z^5-19\*z^4-z^3,
-266402844\*z^10-762512859\*z^9+18497646\*z^8+1631905623\*z^7+692505936\*z^6
-947985525\*z^5-361760418\*z^4-4404204\*z^3+261075\*z^2
-34810\*z-34810\*y-34810\*x,
-14391189\*z^10-42869331\*z^9-3828627\*z^8+88209945\*z^7+47711907\*z^6
-46704285\*z^5-25500816\*z^4-2610199\*z^3-10443\*z^2
-6962\*y^2\]
El segundo de los polinomios si la base de Groebner es un polinomio sólo en $z$ . Llamo a este polinomio $gbz$ y tratar de encontrar sus ceros. Maxima encuentra dos soluciones $z=0$ y $z=1$ y un polinomio de grado $6$ que yo llamo $pz$ .
(%i8) gbz:gb\[2\];
(%o8) -81\*z^11-243\*z^10-27\*z^9+495\*z^8+279\*z^7-255\*z^6-148\*z^5-19\*z^4-z^3
(%i9) ss:solve(gbz,z);
(%o9) \[z = 1,z = 0,0 = 81\*z^6+405\*z^5+756\*z^4+612\*z^3+189\*z^2+21\*z+1\]
(%i10) pz:rhs(ss\[3\]);
(%o10) 81\*z^6+405\*z^5+756\*z^4+612\*z^3+189\*z^2+21\*z+1
$pz$ contiene sólo raíces con multiplicidad $1$ porque $pz$ y su primera derivada son relativamente primos.
(%i11) dpz:diff(pz,z);
(%o11) 486\*z^5+2025\*z^4+3024\*z^3+1836\*z^2+378\*z+21
(%i12) gcd(pz,dpz);
(%o12) 1
Contiene dos raíces reales. "nroots" utiliza el método de las secuencias de Sturm.
(%i13) nroots(pz);
(%o13) 2
Para $z=0$ obtenemos la solución $x=0$ y $y=0$ . Para $z=1$ obtenemos $x=1$ y $y=1$ .
(%i14) ev(solve(gb,\[x,y\]),z = 0);
(%o14) \[\[x = 0,y = 0\]\]
(%i15) ev(solve(gb,\[x,y\]),z = 1);
(%o15) \[\[x = 1,y = 1\]\]
Así que estas son soluciones que no satisfacen $x \ne y \ne z \ne x$ . Estas son las únicas soluciones que satisfacen $x=y$ . Esto se demuestra con lo siguiente, donde la base de Groebner que contiene sólo la variable z tiene sólo los ceros $z=0$ y $z=1$ :
(%i16) gbeq:poly\_reduced\_grobner(\[p1,p2,p3,x-y\],\[x,y,z\])
(%o16) \[z^2-z^3,3\*z^2-z-2\*x,3\*z^2-z-2\*y\]
De forma similar se puede demostrar que no hay más soluciones con $y=z$ o $z=x$ .
(%i17) gbeq:poly\_reduced\_grobner(\[p1,p2,p3,y-z\],\[x,y,z\])
(%o17) \[y-z,z^2-z^3,3\*z^2-2\*z-x\]
(%i18) gbeq:poly\_reduced\_grobner(\[p1,p2,p3,z-x\],\[x,y,z\])
(%o18) \[z-x,z^3-z^2,3\*z^2-2\*z-y\]
Así que las soluciones de $pz(z)=0$ satisfacer $x \ne y \ne z \ne x$ .
En definitiva, hemos comprobado que hay dos soluciones que satisfacen los requisitos.
Hasta ahora, todos los cálculos se hacían en aritmética de números enteros y, por tanto, eran precisos, sin errores de redondeo. Para encontrar una aproximación de los ceros del polinomio tratamos de encontrar una solución de aproximación (algoritmo de Jenkins)
%i19) rr:allroots(pz)
(%o19) \[z = 0.059594592729233\*%i-0.077325282882167,
z = -0.059594592729233\*%i-0.077325282882167,z = -0.34384834895616,
z = -1.430213435919199,z = 0.52519906053201\*%i-1.535643824680153,
z = -0.52519906053201\*%i-1.535643824680153\]
La 3ª y la 4ª de las raíces encontradas son reales. Calculamos las correspondientes $x$ y $y$ valores de los dos polinomios de la base de Groebner
(%i20) ratprint:false
(%i21) ev(ss1:solve(\[gb\[1\],gb\[3\]\],\[x,y\]),rr\[3\],numer)
(%o21) \[\[x = 0.33672111094963,y = -0.7012677966684\]\]
(%i22) ev(ss2:solve(\[gb\[1\],gb\[3\]\],\[x,y\]),rr\[4\],numer)
(%o22) \[\[x = 0.68673203477216,y = -0.70126779745501\]\]
Así que finalmente obtenemos las siguientes aproximaciones para las otras soluciones reales:
(%i23) t1:endcons(rr\[3\],ss1\[1\])
(%o23) \[x = 0.33672111094963,y = -0.7012677966684,z = -0.34384834895616\]
(%i24) t2:endcons(rr\[4\],ss2\[1\])
(%o24) \[x = 0.68673203477216,y = -0.70126779745501,z = -1.430213435919199\]
Para comprobar las soluciones las sustituimos en los polinomios originales
(%i25) ev(\[p1,p2,p3\],t1)
(%o25) \[-1.9972772102860858E-8,-5.898479010779667E-9,-2.5471788220321478E-9\]
(%i26) ev(\[p1,p2,p3\],t2)
(%o26) \[-1.4202621745340593E-8,5.3206585803877715E-9,-1.4270534975935334E-8\]