Calcul de résultants en Sage

Bonjour,
Je cherche à résoudre en Sage l'exercice suivant:
Donner une valeur approchée des couples $(x,y) \in C^2$ vérifiant:
$x^2+y^2-xy+3x+4y-5=0$ et $x^3-x^2y-x^2+4y+3y^2-6=0$.

J'ai déjà fait ce genre d'exercices mais les solutions étaient dans $Q^2$.

Voilà ce que j'ai écrit:

R.<x,y>=PolynomialRing(QQ,2)
P=x^2+y^2-x*y+3*x+4*y-5
Q=x^3-x^2*y-x^2+4*y+3*y^2-6
r=P.resultant(Q,x)
r1=r.univariate_polynomial()
r1.roots()

Mon problème c'est que je ne vois pas comment conclure. Lorsque que les racines sont exactes, j'en déduis les $y$ possibles, puis en évaluant les polynômes en ces valeurs, j'en déduis les $x$ possibles. Ici, je voudrais calculer par exemple pour $\alpha$ une racine de $r$, le pgcd de $P$ évalué en $y=\alpha$ et de $Q$ évalué en $y=\alpha$ mais ce ne sont pas des valeurs exactes et donc je n'obtiens pas de bons résultats.

Merci de votre aide.

Réponses

  • Merci pour votre réponse, mais je n'ai pas de connaissances sur les bases de Groebner. Il n'y aurait pas quelque chose de plus simple?
  • C'est un tort de ne pas connaître les bases de Groebner, vu la question que tu te poses.
    Si on tient à les éviter, on peut calculer le pgcd de $P(x,a)$ et de $Q(x,a)$ au-dessus du corps de nombres engendré par $a$ de polynôme minimal le résultant de $P$ et $Q$ par rapport à $x$.74536
  • Je m'entraînais simplement sur des exercices de résultants.
    D'accord, merci ça marche bien. Du coup, on obtient une solution et j'ai du mal à voir comment obtenir les autres. J'ai essayé de me placer dans K, puis diviser le résultant recalculé dans K par u-a et prendre un nouveau corps de nombres mais ce n'est pas concluant.
  • Du coup, on obtient une solution et j'ai du mal à voir comment obtenir les autres.
    Non, on obtient toutes les solutions !!! (une pour chaque racine du résultant dans $\mathbb C$).
  • Le corrigé de l'exercice conclut qu'il y a 4 solutions, mais il n'a dû compter que les solutions réelles alors... Est-ce que mon raisonnement est correct svp?

    Soit $(x,y) \in C^2$ une solution du système.
    Posons $res=Res_x(P,Q)$. Alors $res(y)=0$. Or $res=y^6 + 13*y^5 + 83*y^4 + 261*y^3 - 320*y^2 - 610*y + 557$, donc admet $6$ racines complexes $y_1$,.., $y_6$ dans $C$ et il existe $i \in \{1,..,6\}$ tel que $y=y_i$.
    Soit $a \in C$ tel que $res(a)=0$ (à l'aide de NumberField(r)).
    Alors $pgcd(P(y=a),Q(y=a))=4467*x + (12*a^5 + 187*a^4 + 1355*a^3 + 6012*a^2 + 4246*a - 10993)$. On en déduit une unique valeur de $x$ en fonction de $a$.
    Comme les $y_i$ vérifie $res(y_i)=0$, on obtient $6$ solutions complexes.

    Et si on veut connaître le nombre de solutions réelles, il suffit de regarder le nombre de racines réelles de res, c'est bien ça?
  • Lunarie écrivait:

    > Soit $a \in C$ tel que $res(a)=0$ (à l'aide de NumberField(r)).

    Non, ce n'est pas vraiment ça. On fabrique le corps de nombre $\mathbb Q(a)=\mathbb Q[y]/\mathrm{Res}$, et on travaille ensuite sur ce corps de nombres. Le $a$ n'est pas un nombre complexe.
    On a du pot ici, le polynôme $\mathrm{Res}$ est irréductible sur $\mathbb Q$.
  • Du coup, pourquoi avec ce $a$ on aurait toutes les valeurs?
  • On obtient $x$ comme élément de $\mathbb Q(a)$, c.-à-d. comme polynôme en $a$ à coefficients rationnels de degré $<6$ (de degré de $\mathrm{Res}$, en calculant le pgcd de $P(x,a)$ et $Q(x,a)$ sur $\mathbb Q(a)$ : le pgcd est de degré 1.
    Quand on plonge $\mathbb Q(a)$ dans $\mathbb C$ en envoyant $a$ sur l'une des six racines de $\mathrm{Res}$, on obtient les six couples de nombres complexes solutions du système d'équations (4 solution réelles, 2 complexes conjuguées).
    J'ai l'impression que tu n'es pas très à l'aise avec cette notion de corps de nombres (extension finie de $\mathbb Q$). Me trompé-je ?
  • Merci pour votre patience!
    La construction du corps de rupture et le fait que $x$ soit élément de $Q(a)$ sont clairs pour moi, c'est plutôt le fait de passer d'un corps à un autre (ici plonger $Q(a)$ dans $C$) qui ne me paraît pas évident. Cela me fait penser au théorème qui dit que si $P \in k[X]$ est irréductible et si $K=k(a)$, $L=k(b)$ sont des corps de rupture de $P$ avec $a$ et $b$ des racines de $P$, alors il existe un unique isomorphisme de $K$ sur $L$ qui envoie $a$ sur $b$. Mais je n'arrive pas à faire le lien ici (s'il y en a un).
  • Ce qui t'échappe peut-être, c'est la propriété universelle du corps de rupture.

    Soit $P\in k[X]$ irréductible, $k(a)=k[X]/(P)$ le corps de rupture de $P$. Soit $L$ une $k$-algèbre.
    Pour tout morphisme de $k$-algèbres $f:k(a)\to L$, $f(a)$ est une racine de $P$ dans $L$.
    Pour toute racine $b$ de $P$ dans $L$, il existe un unique morphisme de $k$-algèbres $f:k(a)\to L$ tel que $f(a)=b$.

    (Cette propriété universelle a pour conséquence l'isomorphisme que tu cites.)
  • Plus generalement (mais on est bien au-dela de l'agreg si c'est le niveau de la question), la bonne notion pour resoudre ce genre de système c'est la representation rationnelle univariee, que l'on peut obtenir par appel de giac depuis sage (ou directement depuis Xcas bien sur)
    giac.gbasis([P,Q],[x,y],giac('rur'))
    
    On obtient
    [rur,y,-x^6-13*x^5-83*x^4-261*x^3+320*x^2+610*x-557,-6*x^5-65*x^4-332*x^3-783*x^2+640*x+610,x^4+400*x^3-162*x^2-62*x-50,13*x^5+166*x^4+783*x^3-1280*x^2-3050*x+3342]
    
    qui signifie que les solutions sont de la forme des 1/P'*2 dernieres composantes de la liste renvoyee, ou P' est la 4eme composante de la liste, dérivée du polynome annulateur de x (donne par la 3eme composante de la liste).
    La rur evite d'avoir a faire des PGCD pour trouver x une fois y calcule, avec le risque de devoir rajouter des extensions algebriques sur des extensions existantes (si pour un meme y on avait plusieurs x, cas non generique mais qui peut se produire, par exemple si on a une paire de x conjugues complexes correspondant a un meme y), on fait une extension et une seule (c'est encore le cas avec plus d'inconnues)
  • Merci GaBuZoMeu, je ne connaissais pas ce résultat, et je ne l'ai pas trouvé dans les livres que j'utilise sur ce sujet. J'ai bien compris la méthode. J'ai envoyé $a$ sur les racines du résultant successivement, et j'ai calculé $x$ avec ces valeurs. Mes résultats sont cohérents avec le graphique.
    Ma question était effectivement niveau agreg.
Connectez-vous ou Inscrivez-vous pour répondre.