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

Alpes38 Messages postés 2 Date d'inscription vendredi 15 janvier 2010 Statut Membre Dernière intervention 27 janvier 2010 - 15 janv. 2010 à 16:02
Alpes38 Messages postés 2 Date d'inscription vendredi 15 janvier 2010 Statut Membre Dernière intervention 27 janvier 2010 - 27 janv. 2010 à 15:32
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

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 janv. 2010 à 17:55
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.
0
Alpes38 Messages postés 2 Date d'inscription vendredi 15 janvier 2010 Statut Membre Dernière intervention 27 janvier 2010
27 janv. 2010 à 15:32
Merci! finalement j'ai juste remplacé until par while, et j'ai rajouté un paramètre.. ET ça MARCHE!!
0
Rejoignez-nous