Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

EQUATIONS DU TROISIÈME DEGRÉ


Information sur la source

Catégorie :Maths Classé sous : équations, résolution, troisieme degré Niveau : Débutant Date de création : 31/01/2008 Date de mise à jour : 02/02/2008 09:03:04 Vu / téléchargé: 5 666 / 391

Note :
Aucune note

Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

Description

Réponse à Abdelelansari qui a fait un post sur ce même sujet.
Voir le ZIP... J'ai fait les modifications du post de Abdelelansari et j'ai mis un habillage VB6 pour tester.

 

Source

  • Private Sub Command1_Click()
  • Dim PI As Double
  • PI = 4 * Atn(1)
  • Dim w As Variant
  • Dim e As Double
  • Dim f As Double
  • Dim g As Double
  • Dim p As Double
  • Dim q As Double
  • Dim k As Double
  • Dim x As Double
  • Dim t As Double
  • Dim s1 As Double
  • Dim s2 As Double
  • Dim s3 As Double
  • Dim s4 As Double
  • Dim s5 As Double
  • Dim s6 As Double
  • Dim a, b, c, d As Double
  • a = Val(Text1.Text)
  • b = Val(Text2.Text)
  • c = Val(Text3.Text)
  • d = Val(Text4.Text)
  • 'On Error Resume Next ... supprimé car s'il y a une erreur il vaud mieux le savoir et la traiter... surtout en maths!
  • If a = 0 Then w = MsgBox("C'est une équation du second degré!!.", vbCritical, "Trop facile!"): Exit Sub
  • e = b / (3 * a)
  • f = c / a
  • g = d / a
  • p = f - 3 * e * e
  • q = 2 * e * e * e - e * f + g
  • k = 4 * p * p * p / 27 + q * q
  • If Abs(k) < 0.000000001 Then k = 0 'à cause des erreurs machine, arrondi ..etc...
  • If k < 0 Then
  • x = 3 * q / (2 * p) * Sqr(-3 / p)
  • t = (Atn(-x / Sqr(-x * x + 1)) + PI / 2) / 3
  • s1 = Sqr(-4 * p / 3) * Cos(t) - e
  • s2 = Sqr(-4 * p / 3) * Cos(t + 2 * PI / 3) - e
  • s3 = Sqr(-4 * p / 3) * Cos(t + 4 * PI / 3) - e
  • Text5.Text = " Les trois solutions sont : " & s1 & " et " & s2 & " et " & s3
  • ElseIf k = 0 Then
  • s4 = -e - Rqbik(4 * q)
  • s5 = -e + Rqbik(q / 2)
  • Text5.Text = " Les deux solutions sont : " & s4 & " et " & s5
  • Else
  • s6 = -e + Rqbik(((Sqr(k) - q) / 2)) - Rqbik(((Sqr(k) + q) / 2))
  • Text5.Text = " La solution est : " & s6
  • End If
  • End Sub
Private Sub Command1_Click()
Dim PI As Double
PI = 4 * Atn(1)
Dim w As Variant

Dim e As Double
Dim f As Double
Dim g As Double
Dim p As Double
Dim q As Double
Dim k As Double
Dim x As Double
Dim t As Double
Dim s1 As Double
Dim s2 As Double
Dim s3 As Double
Dim s4 As Double
Dim s5 As Double
Dim s6 As Double

Dim a, b, c, d As Double


a = Val(Text1.Text)
b = Val(Text2.Text)
c = Val(Text3.Text)
d = Val(Text4.Text)

'On Error Resume Next ... supprimé car s'il y a une erreur il vaud mieux le savoir et la traiter... surtout en maths!

If a = 0 Then w = MsgBox("C'est une équation du second degré!!.", vbCritical, "Trop facile!"): Exit Sub

e = b / (3 * a)
f = c / a
g = d / a
p = f - 3 * e * e
q = 2 * e * e * e - e * f + g
k = 4 * p * p * p / 27 + q * q

If Abs(k) < 0.000000001 Then k = 0 'à cause des erreurs machine, arrondi ..etc...

If k < 0 Then
   x = 3 * q / (2 * p) * Sqr(-3 / p)
   t = (Atn(-x / Sqr(-x * x + 1)) + PI / 2) / 3
   s1 = Sqr(-4 * p / 3) * Cos(t) - e
   s2 = Sqr(-4 * p / 3) * Cos(t + 2 * PI / 3) - e
   s3 = Sqr(-4 * p / 3) * Cos(t + 4 * PI / 3) - e
   Text5.Text = " Les trois solutions sont : " & s1 & " et " & s2 & " et " & s3
ElseIf k = 0 Then
   s4 = -e - Rqbik(4 * q)
   s5 = -e + Rqbik(q / 2)
   Text5.Text = " Les deux solutions sont : " & s4 & " et " & s5
Else
   s6 = -e + Rqbik(((Sqr(k) - q) / 2)) - Rqbik(((Sqr(k) + q) / 2))
   Text5.Text = " La solution est : " & s6
End If
End Sub

Conclusion

  
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

02 février 2008 09:03:05 :
modifications du code de Abdelelansari pour tenir compte du fait que VB ne veut pas de nombres négatifs dans le calcul des racines impaires (fonction Rqbik) debuggage pour le cas où k=0 voir ligne If Abs(k) < 0.000000001 Then k = 0 Suppression de parenthèses inutiles.

Commentaires et avis

signaler à un administrateur
Commentaire de betamu le 05/02/2008 16:17:49

Dans le cas ou n > 0 l'extraction classique
de racines carrées ne marche pas.
Si n > on a deux racines
    N1 = sqr(n)
    N2 = -sqr(n)
Si n < 0 on peut écrire
  n = |n| e^[i (2 k + 1) Pi]
  avec k = ... -3,-2,-1,0,1,2,3,...
dans l'ensemble des nombres complexes (C).
Et dans ce cas :
sqr(n) = sqr(|n|) e^(i k Pi) e^(i Pi/2)
on a deux racines carrées imaginaires pures
    N1 =  i sqr(|n|)
    N2 = -i sqr(|n|)
Le problème est traité incomplètement.
----------------------
D'autre part :
Une équation de degré 3 à coefficients réels
a toujours 3 racines.
Cas 1 : 3 racines réelles distinctes
    P(x) = a (x - x1) (x - x2) (x - x3) = 0
cas 2 : 1 racine réelle et 1 racine double
    P(x) = a (x - x1) (x- x2)^2 = 0
cas 3 : une racine triple
    P(x) = a (x - x1)^3 = 0
cas 3 : 1 racine réelle et 2 racines complexes
    P(x) = a (x - x1) (x - (m + i n)) (x - (p + i q)) = 0
    ( ces racines sont d'ailleurs conjuguées
      m=p et n=-q )
-------------------
Mais que se passe-t-il si les coefficients a,b,c et
l'inconnue sont toutes complexes ?
-------------------
C'est CARDAN qui avait résolu définitivement les
équations du 3-ième degré introduisant ainsi les
calculs des nombres imaginaires ou complexes.

signaler à un administrateur
Commentaire de CFCTABLE le 06/02/2008 10:17:34

Je comprend ton soucis de précision. Sur ce cas, je ne fais que répondre du point de vue programmation à Abdelelansari . Je pense qu'il avait l' intention de traiter uniquement les solutions réelles et des coefficients rééls. Pour le coté maths, je lui laisse le soin de répondre.

Sinon je suis d'accord avec toi sur ces remarques.

signaler à un administrateur
Commentaire de Abdelelansari le 07/02/2008 16:14:24

  Abdelelansari:
Je remercie fort bien BETAMU et CFCTABLE et je vous dit que je suis un prof de math mais debutant en programation plus precisement en math.D'autre part je vous dit que vous avez raison seulement et comme a dit CFCTABLE je m'interesse aus equations a coefficients reéls.
                           Merci

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

résolution d'équations style "lnx=arctgx+cste" [ par guillaume ] je cherche comment résoudre en V B une équation du genre " ln(x) = arctg(x) + cste ", pour une macro Excel, afin de récupérer la valeur de x ( même si Résolution d'un système d'équations à l'aide de matrices [ par Xam44 ] Bonjour tout le monde je recherche des cours sur la gestion des matrices pouvant gérer plusieurs équations, ou un module pouvant m'aider à assimiler l résolution d'écran [ par izzabel ] bonsoir (le thème est le 1e de la liste, alors comme j'y connais rien...) hier je téléchargeais un jeu quand d'un seul coup les icônes deviennent imme Résolution d'écran ( Urgent !!! ) [ par Ronald ] Bonjour,Je voudrais savoir comment faire pour que mes programmes fonctionnent dans toutes les résolutions d'écran sans avoir à une fenêtre trop grande Résolution d'écran ( Urgent !!! ) [ par Ronald ] Bonjour,Je voudrais savoir comment faire pour que mes programmes fonctionnent dans toutes les résolutions d'écran sans avoir à une fenêtre trop grande URGENT!! je recherche un moyen pour changer la résolution de windows!! [ par alex ] URGENT!! je recherche un moyen pour changer la résolution de windows!!il y a une source sur ce site! mais elle ne marche pas!! ou alors je ne sais pas esolution de systeme lineaire [ par debill ] BonjourJe suis actuellement confronté à un problème de résolution de système linéaire à 17 équations et 17 inconnues. Si quelqu'un pouvait me donner u résolution affichage en cours? [ par Nico ] Je souhaite récupérer la résolution de l'affichage en cours WinNT4.0.par le biais d'une fonction de l'API?C'est pour une application en Access97, donc Changer la résolution du bureau... [ par Akhilleus ] Hello !J'aimerais savoir comment faire pour changer les paramêtres du bureau et notamment la définition...Je veux créer une routine qui permettrait à


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,624 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.