RESOLUTION D'UNE EQUATION DU TROISIEME DEGRE

RAPTISTA Messages postés 6 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 8 juin 2007 - 8 juin 2007 à 17:16
comemich Messages postés 39 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 23 août 2017 - 26 janv. 2008 à 18:31
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36166-resolution-d-une-equation-du-troisieme-degre

comemich Messages postés 39 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 23 août 2017
26 janv. 2008 à 18:31
Merci Abdelelansari
Abdelelansari Messages postés 21 Date d'inscription samedi 12 janvier 2008 Statut Membre Dernière intervention 29 mars 2008
26 janv. 2008 à 15:38
je suis un prof de math et voila mon programme pour la resolution d'equation du 3 degre'
Const PI As Single = 3.14159265358979
Dim e As Long
Dim f As Long
Dim g As Long
Dim p As Long
Dim q As Long
Dim k As Long
Dim x As Integer
Dim t As Integer
Dim s1 As Long
Dim s2 As Long
Dim s3 As Long
Dim s4 As Long
Dim s5 As Long
Dim s6 As Long
a = Val(Text1.Text)
b = Val(Text2.Text)
c = Val(Text3.Text)
d = Val(Text4.Text)
e = b / (3 * a)
f = c / a
g = d / a
p = (-3 * (e ^ 2)) + f
q = (2 * (e ^ 3)) - (e * f) + g
k = ((4 * (p ^ 3)) / 27) + (q ^ 2)
If k < 0 Then
x = ((3 * q) / (2 * p)) * Sqr(-3 / p)
t = (1 / 3) * (Atn(-x / Sqr(-x * x + 1)) + 2 * Atn(1))
s1 = -e + Sqr(-4 * p / 3) * Cos(t)
s2 = -e + Sqr(-4 * p / 3) * Cos(t + 2 * PI / 3)
s3 = -e + Sqr(-4 * p / 3) * Cos(t + 4 * PI / 3)
Text1.Text = " Les trois solutions sont : " & s1 & " et " & s2 & " et " & s3
Text2.Text = " "
Text3.Text = " "
Text4.Text = " "
ElseIf k = 0 Then
s4 = -e - ((4 * q) ^ (1 / 3))
s5 = -e + ((q / 2) ^ (1 / 3))
Text1.Text = " Les deux solutions sont : " & s4 & " et " & s5
Text2.Text = " "
Text3.Text = " "
Text4.Text = " "
Else
s6 = -e + (((-q + Sqr(k)) / 2) ^ (1 / 3)) - (((q + Sqr(k)) / 2) ^ (1 / 3))
Text1.Text = " La solution est : " & s6
Text2.Text = " "
Text3.Text = " "
Text4.Text = " "
End If
End Sub
je vous demande de faire analyse et me faire des remarques
Merci infiniment
eBulle68 Messages postés 5 Date d'inscription lundi 8 octobre 2007 Statut Membre Dernière intervention 17 octobre 2007
17 oct. 2007 à 17:43
UP
eBulle68 Messages postés 5 Date d'inscription lundi 8 octobre 2007 Statut Membre Dernière intervention 17 octobre 2007
10 oct. 2007 à 11:06
Non c'est pas trop pressé...
A vrai dire je cherche a faire une feuille de calcul me permettant a tout moment de connaitre la hauteur d'eau dans un bassin. J'ai une relation entre le volume et le temps, puis entre le volume et la hauteur d'eau, mais du fait du bassin bizarre (une sorte de lingot inversé), cette dernière est du 3eme degré, c'est à dire v=f(h) du type v=a*h^3 + b*h^2 + c*h + d

Voilà pourquoi je cherche une macro qui me permette de résoudre efficacement les polynômes du 3eme degré. Je suis pas très pressé, il s'agit d'un travail personnel avant tout. Me demandez pas trop pourquoi je fais ca, c'est plus un défi qu'autre chose... J'aimais bien les problèmes de vidange de baignoire quand j'étais petit ^^
comemich Messages postés 39 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 23 août 2017
10 oct. 2007 à 00:23
Oui
Bien sûr...
On peut tout faire...
Mais c'est une autre paire de manches.
Et puis, il y a longtemps que je n'écris plus en VB6. Je ne me souviens pas très bien.
Si j'ai le temps, je regarderai ce que je peux faire.
Ce n'est pas insurmontable.
Faut voir...
Si c'est pas trop pressé.
eBulle68 Messages postés 5 Date d'inscription lundi 8 octobre 2007 Statut Membre Dernière intervention 17 octobre 2007
9 oct. 2007 à 08:46
Mais pourtant ca doit bien être adaptable, non?
comemich Messages postés 39 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 23 août 2017
9 oct. 2007 à 00:27
Je pense que le VB.NET n'est pas reconnu comme language des macros Excel.
eBulle68 Messages postés 5 Date d'inscription lundi 8 octobre 2007 Statut Membre Dernière intervention 17 octobre 2007
8 oct. 2007 à 11:44
pour la ligne RacineDegré3 = New Collection il me met " agrument non facultatif" et pour les autres, il connait pas ces fonctions.. du coup je sais pas trop quoi faire, ai-je oublié de charger une référence ou quelque chose?
eBulle68 Messages postés 5 Date d'inscription lundi 8 octobre 2007 Statut Membre Dernière intervention 17 octobre 2007
8 oct. 2007 à 11:19
Perso, ca marche pas chez moi, Excel reconnait pas:

RacineDegré3 = New Collection (je sais pas par quoi le remplacer)
Math.Sqrt (remplacé par Math.Sqr)
Math.Sign (remplacé par Math.Sgn)
For k As Short = 0 To 2 (je sais pas par quoi le remplacer)
Math.Acos (marche pas, c'est inouï! J'ai créé une fonction trouvée ici: http://www.vbfrance.com/infomsg_FONCTION-ARCCOSINUS_603879.aspx )
Math.pi (pareil)
Math.pow (remplacé par ...^... )
comemich Messages postés 39 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 23 août 2017
6 oct. 2007 à 17:24
Oui, il serait judicieux de remplacer Pi par Math.Pi dans la ligne:
RacineDegré3.Add(2 * Math.Sqrt(-p / 3) * Math.Cos((Math.Acos(Cosinus) + 2 * k * Pi) / 3) + y)
ce qui donne
RacineDegré3.Add(2 * Math.Sqrt(-p / 3) * Math.Cos((Math.Acos(Cosinus) + 2 * k * Math.Pi) / 3) + y)
RAPTISTA Messages postés 6 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 8 juin 2007
8 juin 2007 à 17:16
Il te faut juste une petite declaration du nombre "pi=3.14..."
Rejoignez-nous