Résolution d'une équation itérative

Fermé
blalaa Messages postés 167 Date d'inscription mercredi 18 avril 2018 Statut Membre Dernière intervention 24 mars 2020 - 9 mai 2018 à 13:49
blalaa Messages postés 167 Date d'inscription mercredi 18 avril 2018 Statut Membre Dernière intervention 24 mars 2020 - 18 mai 2018 à 09:23
bonjour

sil vous plait aidez moi dans ce probleme

je voudrais ressoude une équation itérative par la programmation vba
voici lequation que je voudrais résoudre (k) :

1/sqr(k)= (-2 * (Log((psi / (3.7 * d)) + (2.52 / (Sqr(k) * re))))

voici le programr que jai mis



Dim k As Currency, r As Currency
k = 0
r = 0
'--------------------------
Dim re As Double, psi As Double, d As Double


psi = 0.002
d = 0.007
re = 4046
'--------------------------
While r <= 1
k = k + 0.0001
r = (-2 * (Log((psi / (3.7 * d)) + (2.52 / (Sqr(k) * re)))) / (Log(10))) * Sqr(k)
Wend
MsgBox ("Pour re = " & re & vbCrLf & "k = " & Format(k, "0.0000"))
End Sub


le probleme c que ca marche pour les petites valeur de "psi" et les grandes valeures de "d" ( exemple psi =0.002, d=0,007 la ca marche ou psi = 0,002 , d= 7 ca marche ) mais pour les grandes valeurs de "psi" et les petites de valeures de "d" le programme bloque (psi = 0,03 d= 0,007 le programe bloque, ou encore si je mis psi = 0.002 , et que d= 0,000007 ca bloque aussi )
je ne sais pas ou est le probleme

sachant que d, re , et psi sont variable donc a chaque fois je les varies

merci davence pour votre aide
A voir également:

2 réponses

ccm81 Messages postés 10908 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 mai 2025 2 431
Modifié le 9 mai 2018 à 16:00
Bonjour

Peut être n'y a t'il pas de solution lorsque ça bloque
Une autre méthode qui ne bloque pas en l'absence de solution
https://www.cjoint.com/c/HEjnSgCYlnB
Donner les valeurs des constantes et les bornes pour la recherche
puis
Ctrl+k pour lancer la macro

RQ. IL manque une parenthèse fermante quelque part
1/sqr(k)= (-2 * (Log((psi / (3.7 * d)) + (2.52 / (Sqr(k) * re))))
je l'ai ajoutée à la fin ...

Cdlmnt
1
blalaa Messages postés 167 Date d'inscription mercredi 18 avril 2018 Statut Membre Dernière intervention 24 mars 2020
18 mai 2018 à 09:20
merci pour votre reponse
0
Bonjour
l'équation dans la boucle est incorrecte, c'est peut-être pour ça que "ça bloque"

équation de départ
1/sqr(k)= (-2 * (Log((psi / (3.7 * d)) + (2.52 / (Sqr(k) * re)))))

équation équivalente
1 = (-2 * (Log((psi / (3.7 * d)) + (2.52 / (Sqr(k) * re))))) * Sqr(k)

donc la boucle dans le programme:
While r <= 1 
k = k + 0.0001
r = (-2 * (Log((psi / (3.7 * d)) + (2.52 / (Sqr(k) * re))))) * Sqr(k)
Wend
1
blalaa Messages postés 167 Date d'inscription mercredi 18 avril 2018 Statut Membre Dernière intervention 24 mars 2020
18 mai 2018 à 09:21
dacord
merci pour votre reponse
0
blalaa Messages postés 167 Date d'inscription mercredi 18 avril 2018 Statut Membre Dernière intervention 24 mars 2020
18 mai 2018 à 09:23
mais dans lequation que vous venez me donner nas pas de log(10)
alors que il faut diviser par log(10)
c pas la meme chose ?
0