[déplacé VB6 -> VBA] résolution d'équations par itération

Signaler
Messages postés
2
Date d'inscription
vendredi 15 janvier 2010
Statut
Membre
Dernière intervention
27 janvier 2010
-
Messages postés
2
Date d'inscription
vendredi 15 janvier 2010
Statut
Membre
Dernière intervention
27 janvier 2010
-
Bonjour,

Je souhaite résoudre deux équations à deux inconnues. Je souhaite réaliser un calcul itératif de ces deux équations.
Les résultats obtenus par ce code ne sont pas satisfaisants. Le calcul se fait en boucle mais ne s'arrête pas lorsqu'il trouve un résultat commun de Qs2 pour les 2 équations (de même pour Qs3).
Quelqu'un pourrai m'expliquer comment réaliser un calcul itératif?

Merci!!



Private Sub CommandButtonOK_Transfert2_Click()


Dim Z1, Z2, Z3, Q1e, Q2e, Q2s, Q3e, Q3s, K1, K2, K3, S1, S2, S3, eq1, eq2, eps As Double
Dim i As Integer
Dim j As Integer

Z3 = TextBoxTransfert2_2.Text
Z2 = TextBoxTransfert2_6.Text
Z1 = 998
Q3e = 5
Q2e = 2
Q1e = 1
eps = 1
K1 = 1
K2 = 2
K3 = 3
S1 = 6.29
S2 = 4.801
S3 = 7.772

i = 0
Q2s = 0
j=0
Q3s=0

Do
i = i + 1
Q2s = Q2s + i / 10

Do
j = j + 1
Q3s = Q3s + j / 10


eq1 = Z2 - Z3 + (1 / (2 * 9.81)) * ((Q2s - Q2e) ^ 2 / S2 ^ 2 - (Q3s - Q3e) ^ 2 / S3 ^ 2) - (1 / (2 * 9.81)) * (K2 * (Q2s / S2) ^ 2 - K3 * Q3s ^ 2 / S2 ^ 2)

eq2 = Z2 - Z1 + (1 / (2 * 9.81)) * ((Q2s - Q2e) ^ 2 / S2 ^ 2 - (Q2s + Q3s + Q1e) ^ 2 / S1 ^ 2) - (1 / (2 * 9.81)) * (K2 * (Q2s / S2) ^ 2 + K1 * ((Q2s + Q3s) / S1) ^ 2)



Loop Until j < 100 Or Abs(eq1) < eps And Abs(eq2) < eps
Loop Until i < 100 Or Abs(eq1) < eps And Abs(eq2) < eps



TextBox6 = Q3s
TextBox5 = Q2s

End Sub

2 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Bonjour,

je te propose ce minuscule exercice (il est oon ne peut plus "parlant" !):
i = 0
Do
  i = i + 1
  MsgBox i
Loop Until i < 100

ta boucle s'arrête bien évidemment dès son tout premier tour de manège !
Sais-tu ce que veut dire Until ? (jusqu'à ce que !)

____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Messages postés
2
Date d'inscription
vendredi 15 janvier 2010
Statut
Membre
Dernière intervention
27 janvier 2010

Merci! finalement j'ai juste remplacé until par while, et j'ai rajouté un paramètre.. ET ça MARCHE!!