Résolution d'un système de 2 équations à 2 inconnues

Soyez le premier à donner votre avis sur cette source.

Vue 10 308 fois - Téléchargée 535 fois

Description

Il vous faut 6 TextBox ici nommé Text(0) à Text(5) et un CommandButton ici nommé Command1.

Utilisation du soft illustrée par un exemple :

L'équation de départ est :

x - y = 1 (1)
x + y = 2 (2)

Les variables sont donc les valeurs de x et y et le résultat (r) des équations.

Pour la première équation on a donc 3 variables :

x = 1 ; y = -1 et r = 1

A = x ; B = y et C = r

Text(0).Text = A ; Text(1).Text = B ; Text(2).Text = C

Pour la deuxième équation on a aussi 3 variables :

x = 1 ; y = 1 et r = 2

D = x ; E = y et F = r

Text(3).Text = D ; Text(4).Text = E ; Text(5).Text = F

La formule générale pour trouver y :

Si on part du principe que :

x - y = 1 alors x = 1 + y

et donc x = (C + (- By)) / A

alors :

x + y = 2 <=> (1 + y) + y = 2 <=> 2y + 1 = 2 alors 2y = 2 - 1 <=> y = 1 / 2

et donc y = ((D * C) - (F * A)) / ((- E * A) + (B * D))

Je pense que le code n'est pas trop compliqué mais si il vous faut un renseignement ou autre je suis là.

Source / Exemple :


Option Explicit     'J'indique que toutes les variables doivent être définies.
'##### Ici je définis toutes les variables #####
Dim a As Double, b As Double, c As Double, d As Double, e As Double, f As Double
Dim i As Integer
Dim r As Double, x As Double, y As Double
'##### Fin de la définition des variables #####

Private Sub Command1_Click()
'##### Ici j'ai créé un boucle qui vérifie si il y a bien quelque chose dans chaque TextBox #####
For i = 0 To 5
If Text(i).Text = "" Then       'Si le TextBox nommé Text(i).Text est vide alors il affiche un message d'erreur
                                'Dans Text(i).Text le i correspond à la valeur de i qui vaut donc 0 puis 1 puis 2 puis ... jusqu'a 5
MsgBox "Vous devez remplir tous les champs", vbInformation, "Erreur"        'Définition du message d'erreur
Text(i).SetFocus        'Sélection du TextBox vide
Exit Sub        'Fin de l'action car il y a un TextBox vide
End If      'Fin de la condition
Next i      'Relance la boucle tant que i n'égale pas 5
'##### Fin de la boucle #####
'
'##### On donne aux variables les valeurs entrées dans les TextBox #####
a = Text(0).Text
b = Text(1).Text
c = Text(2).Text
d = Text(3).Text
e = Text(4).Text
f = Text(5).Text
'##### Toutes les variables que l'utilisateur devait configurer se sont vu attribuer une valeur #####
r = (-e * a) + (b * d)      'On calcule le déterminant qui servira à trouver la valeur de y
If r = 0 Then       'Si le déterminant est égale à 0 le calcul est impossible car on ne sait pas diviser un nombre par 0 alors on affiche un message d'impossibilité
MsgBox "Impossible", vbInformation, "Erreur"        'Définition du message
Exit Sub    'Fin de l'action car r = 0
Else        'Sinon on continue
y = ((d * c) - (f * a)) / r     'On calcule la valeur de y
End If      'Fin de la condition
If a = 0 Then       'Si a = 0 on se retouve dans le même cas qu'avec r et on affiche aussi un message d'erreur
MsgBox "Impossible", vbInformation, "Erreur"        'Définition du message
Exit Sub    'Fin de l'action car a = 0
Else        'Sinon on continue
x = (c + (-b * y)) / a      'On calcule la valeur de x
x = Format(x, "#0.000")     'On arrondit x au millième
y = Format(y, "#0.000")     'On arrondit y au millième
End If      'Fin de la condition
MsgBox "x = " & x & Chr(13) & "y = " & y, vbInformation, "Résultat :"       'On affiche un message avec les résultats de x et de y
'##### Ici j'ai encore créé une boucle qui vide le contenu de chaque TextBox #####
For i = 0 To 5
Text(i).Text = ""       'Réinisialisation du TextBox qui correspond à la valeur de i
Next i
'##### Fin de la boucle #####
Text(0).SetFocus        'Sélectionne Text(0).Text pour une éventuelle nouvelle entrée
End Sub

'##### Ici j'interdis l'utilisation de toutes les touches sauf de celles qui sont utiles #####
Private Sub Text_KeyPress(Index As Integer, KeyAscii As Integer)
If KeyAscii = "8" Then Exit Sub     'La touche "Supprimer"
If KeyAscii = "44" Then Exit Sub    'La touche ","
If KeyAscii = "45" Then Exit Sub    'La touche "-"
'##### Ici seuls les chiffres sont pris en compte #####
If KeyAscii < "48" Then KeyAscii = 0
If KeyAscii > "57" Then KeyAscii = 0
'##### Donc si la touche pressée ne correspond pas à 0,1,2,...,7,8,9 elle n'est pas prise en compte #####
End Sub

Conclusion :


Voila un petit soft tout simple qui vous facilitera les devoirs lol.

C'est ma toute première contribution au site aussi je vous demande de bien vouloir me signaler tout manque, oubli ou autre pour que je puisse y remédier.

Merci d'avance,
Nicolas H.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
5
Date d'inscription
vendredi 3 juin 2005
Statut
Membre
Dernière intervention
6 juillet 2005

pour la lisibilité du code, tu devrais l'indenter ;)
c'est relativement bien expliqué, néanmoins, il n'est pas non plus nécessaire de commenter chaque ligne, surtout si c'est des instructions "End If" ou autres.

il aurait été bon de prendre en compte le cas particulier a = 0
en effet, ce n'est pas bien difficile à rajouter :
si a=0 : y = c/b et x = (f-e*y)/d
T'es & matheux toi!... Cé pô vraiment le cas chez moi!... Même si j'me défends pas mal, suis loin d'atteindre les sommets einsteiniens!!! ;-P
cool ton code nico
Désolé, j'ai oublié le aurez et donc J'espère qu'ainsi vous aurez encore une meilleure compréhension de mon petit programme.
Voila LTStart m'a conseillé de renseigner comment utiliser le programme et de commenter mes codes.

J'espère qu'ainsi vous encore une meilleure compréhension de mon petit programme.
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.