Problème de résolution d'un "polynôme"

  • Initiateur de la discussion Initiateur de la discussion Djamana
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

Djamana

Guest
Bonjour,

J'ai quelques difficultés à résoudre l'équation suivante sur Excel à l'aide du solveur:

X² [ X - 296,8 ] = 3,581.10^6

Du coup pour simplifier je met sous la forme X² [ X - 296,8 ] - 3,581.10^6 = 0 afin de demander au solveur pour quelle(s) valeur(s) de X l'équation s'annule (mais sans grand succès).



Merci beaucoup de votre aide et conseils 🙂

Djamana
 
Dernière modification par un modérateur:
Re : Problème de résolution d'un "polynôme"

Bonjour,

Merci bien mais je recherche plutôt l'outil d'Excel qui permet de résoudre l'équation (type solveur qui va faire des boucles afin de trouver le résultat final). J'ai réussi à résoudre le problème avec la méthode de Cardan mais ça serai plus simple avec le solveur (cette méthode est un peu fastidieuse dans mon cas car j'ai plusieurs centaines d'équations de ce type à résoudre).

Merci bien et si d'autres personnes ont des tuyaux je suis preneur 😀

Djamana
 
Re : Problème de résolution d'un "polynôme"

Bonjour.

Code:
=PolyInv(3,581*10^6;{0;0;-296,8;1})
me trouve 329,736046556596 et effectivement
Code:
=Poly(329,736046556596;{0;0;-296,8;1})
trouve 3581000.
VB:
Function PolyInv(Y As Double, Kp As Variant, Optional XEsti) As Double
Dim X As Double, Yr As Double, Yd As Double
If IsMissing(XEsti) Then X = Y Else X = XEsti
Do
   Yr = Poly(X, Kp, 0)
   Yd = Poly(X, Kp, 1)
   X = (Y - Yr + Yd * X) / Yd
   Loop Until Abs(Yr - Y) < 0.0001
PolyInv = X
End Function
VB:
Function Poly(ByVal X As Double, Optional Kp As Variant, Optional ByVal Dériv As Long = 0) As Double
Dim XPui As Double, Y As Double, J As Long
If Not IsMissing(Kp) Then TableÀRendre(K) = Kp
While Dériv > 0: DériverK K: Dériv = Dériv - 1: Wend
While Dériv < 0: IntégrerK K: Dériv = Dériv + 1: Wend
XPui = 1: Y = K(1)
For J = 2 To UBound(K)
   XPui = XPui * X
   Y = Y + XPui * K(J)
   Next J
Poly = Y
End Function
 
Re : Problème de résolution d'un "polynôme"

C'est la méthode classique qui consiste à chercher le nouveau X' où la tangente à la courbe au point X estimé en cours et Y calculé coupe la valeur Y cherchée, jusqu'à ce que la différence entre celui ci et le Y calculé devient négligeable. Elle est connue pour converger très vite au voisinage du X cherché, d'où la possibilité de le préciser.
Ce code fait partie de mon module Polynôme que j'ai mis au point il y a de nombreuses années.
 
Dernière édition:
Re : Problème de résolution d'un "polynôme"

C'est la méthode classique qui consiste à chercher le nouveau X' où la tangente à la courbe au point X estimé en cours et Y calculé coupe la valeur Y cherchée, jusqu'à ce que la différence entre celui ci et le Y calculé devient négligeable. Elle est connue pour converger très vite au voisinage du X cherché, d'où la possibilité de le préciser.

C'est très clair, j'allais le dire...🙂😛
 
Re : Problème de résolution d'un "polynôme"

Peut être pas comme ça. Mieux, l'imaginer sur un graphique: On a une courbe dont on sait calculer la valeur Y pour une valeur X. On sait aussi calculer la droite tangente à la courbe en ce point, ça y est c'est imaginé ? Alors si la valeur Y trouvée pour ce point n'est pas bonne, il est facile de trouver la valeur X sur cette droite où Y vaut celle qu'on cherche à atteindre. Pour un polynôme, plus on est près du X qu'on cherche, plus, à la loupe, la courbe se rapproche en fait de l'allure de la droite, et plus on converge vite. C'est pourquoi je n'ai pas mis plus précis comme limite que 0.0001. Si on était encore en dehors mais de peu, on vient en général de calculer un X satisfaisant du point cherché où Y s'écarte des centaines de milliers de fois moins de celui qu'on cherche.
 
Re : Problème de résolution d'un "polynôme"

Bonsoir à tous.



La méthode de la tangente (dite aussi de Newton) donne en général de bons résultats. Elle peut parfois être mise en difficulté en cas de racines doubles (ou triples, mais on repère facilement ce cas car l'équation se résume à
a.(x[SUP]3[/SUP] - 3.x[SUP]2[/SUP] + 3.x - 1) = 0, a ≠ 0).

Dans le cas qui occupe Djamana, le "résoluteur" d'Excel fonctionne chez moi, et donne le résultat annoncé par Dranreb.

J'ai bien vu que notre ami ne souhaite pas utiliser la résolution directe par la méthode de Cardan ou la méthode trigonométrique, mais je donne malgré tout une formule dérivée de ces méthodes :
Code:
=SI(ESTERREUR(ACOS((b*ç/a^2/6-(b/a)^3/27-d/a/2)*RACINE(-27/(ç/a-(b/a)^2/3)^3)));
 (RACINE((ç/a-(b/a)^2/3)^3/27+(2*(b/a)^3/27-b*ç/a^2/3+d/a)^2/4)-(b/a)^3/27+b*ç/a^2/6-d/a/2)^(1/3)
-(RACINE((ç/a-(b/a)^2/3)^3/27+(2*(b/a)^3/27-b*ç/a^2/3+d/a)^2/4)+(b/a)^3/27-b*ç/a^2/6+d/a/2)^(1/3);
2*RACINE(((b/a)^2/3-ç/a)/3)*COS((ACOS((b*ç/a^2/6-(b/a)^3/27-d/a/2)*RACINE(-27/(ç/a-(b/a)^2/3)^3))+2*PI())/3))-b/a/3
Cette fonction renvoie une solution réelle de l'équation

a.x[SUP]3[/SUP] + b.x[SUP]2[/SUP] + ç.x + d = 0
(avec a, b, ç, d réels, a ≠ 0.)

Comme on n'utilise pas de cellules intermédiaires, elle n'est pas difficile à mettre en œuvre.


Une racine réelle x[SUB]1[/SUB] étant trouvées, on calcule les deux autres racines soit en résolvant l'équation du deuxième degré

(a.x[SUP]3[/SUP] + b.x[SUP]2[/SUP] + ç.x + d)/(x - x[SUB]1[/SUB]) = 0

soit en utilisant la résolution directe par les formules

Code:
=COMPLEXE(SI(ESTERREUR(ACOS((b*ç/a^2/6-(b/a)^3/27-d/a/2)*RACINE(-27/(ç/a-(b/a)^2/3)^3)));
((RACINE((ç/a-(b/a)^2/3)^3/27+(2*(b/a)^3/27-b*ç/a^2/3+d/a)^2/4)-(b/a)^3/27+b*ç/a^2/6-d/a/2)^(1/3)
           -(RACINE((ç/a-(b/a)^2/3)^3/27+(2*(b/a)^3/27-b*ç/a^2/3+d/a)^2/4)+(b/a)^3/27-b*ç/a^2/6+d/a/2)^(1/3))/-2;
2*RACINE(((b/a)^2/3-ç/a)/3)*COS((ACOS((b*ç/a^2/6-(b/a)^3/27-d/a/2)*RACINE(-27/(ç/a-(b/a)^2/3)^3))-2*PI())/3))-b/a/3;
          SI(ESTERREUR(ACOS((b*ç/a^2/6-(b/a)^3/27-d/a/2)*RACINE(-27/(ç/a-(b/a)^2/3)^3)));
-RACINE(3)*((RACINE((ç/a-(b/a)^2/3)^3/27+(2*(b/a)^3/27-b*ç/a^2/3+d/a)^2/4)-(b/a)^3/27+b*ç/a^2/6-d/a/2)^(1/3)
+(RACINE((ç/a-(b/a)^2/3)^3/27+(2*(b/a)^3/27-b*ç/a^2/3+d/a)^2/4)+(b/a)^3/27-b*ç/a^2/6+d/a/2)^(1/3))/2;
0))
et​
Code:
=COMPLEXE(SI(ESTERREUR(ACOS((b*ç/a^2/6-(b/a)^3/27-d/a/2)*RACINE(-27/(ç/a-(b/a)^2/3)^3)));
          ((RACINE((ç/a-(b/a)^2/3)^3/27+(2*(b/a)^3/27-b*ç/a^2/3+d/a)^2/4)-(b/a)^3/27+b*ç/a^2/6-d/a/2)^(1/3)
-(RACINE((ç/a-(b/a)^2/3)^3/27+(2*(b/a)^3/27-b*ç/a^2/3+d/a)^2/4)+(b/a)^3/27-b*ç/a^2/6+d/a/2)^(1/3))/-2;
2*RACINE(((b/a)^2/3-ç/a)/3)*COS((ACOS((b*ç/a^2/6-(b/a)^3/27-d/a/2)*RACINE(-27/(ç/a-(b/a)^2/3)^3)))/3))-b/a/3;
          SI(ESTERREUR(ACOS((b*ç/a^2/6-(b/a)^3/27-d/a/2)*RACINE(-27/(ç/a-(b/a)^2/3)^3)));
RACINE(3)*((RACINE((ç/a-(b/a)^2/3)^3/27+(2*(b/a)^3/27-b*ç/a^2/3+d/a)^2/4)-(b/a)^3/27+b*ç/a^2/6-d/a/2)^(1/3)
          +(RACINE((ç/a-(b/a)^2/3)^3/27+(2*(b/a)^3/27-b*ç/a^2/3+d/a)^2/4)+(b/a)^3/27-b*ç/a^2/6+d/a/2)^(1/3))/2;
0))
Les résultats sont généralement satisfaisants. Par sécurité, on peut faire un contrôle en se souvenant que, les trois zéros du polynôme [a, b, ç, d] étant x[SUB]1[/SUB], x[SUB]2[/SUB] et x[SUB]3[/SUB], on a :
b = -a.(x[SUB]1[/SUB] + x[SUB]2[/SUB] + x[SUB]3[/SUB])
ç = a.(x[SUB]1[/SUB].x[SUB]2[/SUB] + x[SUB]2[/SUB].x[SUB]3[/SUB] + x[SUB]3[/SUB].x[SUB]1[/SUB])
d = -a.(x[SUB]1[/SUB].x[SUB]2[/SUB].x[SUB]3[/SUB])

On trouvera quelques exemples dans le classeur joint.
Remarque : les formules sont brutes de fonderie ; on peut probablement les optimiser.


Bonne nuit !


ℝOGER2327
#7534


Mercredi 25 Phalle 141 (Nativité apparente d’Artaud le Momo - fête Suprême Quarte)
18 Fructidor An CCXXII, 0,0564h - nerprun
2014-W36-4T00:08:07Z
 

Pièces jointes

Re : Problème de résolution d'un "polynôme"

Suite...


Les formules, issues d'un vieux classeur datant Excel 2003, voire Excel 97, sont effectivement simplifiables.

En voici une mouture, plus courte d'environ 20 %, valable avec Excel 2010 :

Code:
=SIERREUR(2*RACINE(((b/a)^2/3-ç/a)/3)*COS((ACOS((b*ç/a^2/6-(b/a)^3/27-d/a/2)*RACINE(27/((b/a)^2/3-ç/a)^3))+2*PI())/3);
 (RACINE((ç/a-(b/a)^2/3)^3/27+(2*(b/a/3)^3-b*ç/a^2/3+d/a)^2/4)-(b/a/3)^3+b*ç/a^2/6-d/a/2)^(1/3)
-(RACINE((ç/a-(b/a)^2/3)^3/27+(2*(b/a/3)^3-b*ç/a^2/3+d/a)^2/4)+(b/a/3)^3-b*ç/a^2/6+d/a/2)^(1/3))-b/a/3
Code:
=COMPLEXE(SIERREUR(
2*RACINE(((b/a)^2/3-ç/a)/3)*COS((ACOS((b*ç/a^2/6-(b/a/3)^3-d/a/2)*RACINE(27/((b/a)^2/3-ç/a)^3))-2*PI())/3);
((RACINE((ç/a-(b/a)^2/3)^3/27+(2*(b/a/3)^3-b*ç/a^2/3+d/a)^2/4)+(b/a/3)^3-b*ç/a^2/6+d/a/2)^(1/3)
-(RACINE((ç/a-(b/a)^2/3)^3/27+(2*(b/a/3)^3-b*ç/a^2/3+d/a)^2/4)-(b/a/3)^3+b*ç/a^2/6-d/a/2)^(1/3))/2)-b/a/3;
SIERREUR(-RACINE(3)*
((RACINE((ç/a-(b/a)^2/3)^3/27+(2*(b/a/3)^3-b*ç/a^2/3+d/a)^2/4)-(b/a/3)^3+b*ç/a^2/6-d/a/2)^(1/3)
+(RACINE((ç/a-(b/a)^2/3)^3/27+(2*(b/a/3)^3-b*ç/a^2/3+d/a)^2/4)+(b/a/3)^3-b*ç/a^2/6+d/a/2)^(1/3))/2;
0))
Code:
=COMPLEXE(SIERREUR(
2*RACINE(((b/a)^2/3-ç/a)/3)*COS((ACOS((b*ç/a^2/6-(b/a/3)^3-d/a/2)*RACINE(27/((b/a)^2/3-ç/a)^3)))/3);
((RACINE((ç/a-(b/a)^2/3)^3/27+(2*(b/a/3)^3-b*ç/a^2/3+d/a)^2/4)+(b/a/3)^3-b*ç/a^2/6+d/a/2)^(1/3)
-(RACINE((ç/a-(b/a)^2/3)^3/27+(2*(b/a/3)^3-b*ç/a^2/3+d/a)^2/4)-(b/a/3)^3+b*ç/a^2/6-d/a/2)^(1/3))/2)-b/a/3;
SIERREUR(RACINE(3)*
((RACINE((ç/a-(b/a)^2/3)^3/27+(2*(b/a/3)^3-b*ç/a^2/3+d/a)^2/4)-(b/a/3)^3+b*ç/a^2/6-d/a/2)^(1/3)
+(RACINE((ç/a-(b/a)^2/3)^3/27+(2*(b/a/3)^3-b*ç/a^2/3+d/a)^2/4)+(b/a/3)^3-b*ç/a^2/6+d/a/2)^(1/3))/2;
0))


ℝOGER2327
#7535


Mercredi 25 Phalle 141 (Nativité apparente d’Artaud le Momo - fête Suprême Quarte)
18 Fructidor An CCXXII, 6,2619h - nerprun
2014-W36-4T15:01:42Z
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

C
  • Question Question
Réponses
2
Affichages
895
Claudine chavassieux
C
Réponses
3
Affichages
1 K
J
Réponses
0
Affichages
800
Jonathan.uvs
J
A
Réponses
9
Affichages
1 K
adam_dali
A
J
Réponses
9
Affichages
3 K
joaoratao
J
N
Réponses
5
Affichages
3 K
Nicocotte125
N
Retour