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é: 4 939 / 254

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

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 Redimensionner un formulaire access selon Résolution et taille écran [ par Biboune ] Bonjour,j'aimerais savoir ce qu'il faut faire pour redimensionner automatiquement mon formulaire sous access en fonction de la résolution et taille de APPLICATION DANS TOUTES LES RESOLUTIONS D'ECRAN [ par serge ] j'ai fait une application avec ma résolution écran 1024x768 mais lorsque je la visualise en 800x600, il me manque une grande partie d'écran et impossi Chgt de résolution et surtout de fréquence d'affichage [ par Bill ] Qqu'1 peut-il me renseigner ? Je cherche à faire un morceau de code pour pouvoir changer de résolution écran en 1024x768 (ça c'est fait) mais chaqu Changer la résolution de l'écran [ par Mathieu ] Salut à tous.Je cherche à changer ma résolution 800*600 en 720*480 et inversement en utilisant VB5...J'ai vu quelques post à ce sujet mais aucun ne me Résolution écran...MARCHE PO Screen.Height !! [ par ghiscool ] Je cherches à avoir la résolution actuelle de mon écran pour pouvoir positionner au mieux mes formulaires, notamment lors des changements de résolutio Comment savoir la résolution d'écran genre 1024x768 ???? [ par vbman ] Comment on fait pour savoir la résolution de l'écran ??? Prob. Résolution Ecran [ par dave ] bonjour à tous,mon but est de changer par programmation la résolution de l'écran.Lorsque j'utilise les modules disponibles sur ce site, si l'écran est Résolution d'ecran sur Excel et VBA [ par Quecks ] Slt,je crée des userform avec une résolution 800*600 mais lorsque je les envoie à ceux qui travail avec une résolution 1024*768, les userform ne couvr comment changer la résolution d'un écran ?????? [ par fred ] bonjour;je souhaiterais que la résolution de l'écran change (1024*768) lorssque l'application se lance et bien sûr lorsque elle se ferme remettre la r


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

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



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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,437 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é.