Résolution d'une équation itérative

blalaa Messages postés 171 Statut Membre -  
blalaa Messages postés 171 Statut Membre -
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

2 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    1. blalaa Messages postés 171 Statut Membre
       
      merci pour votre reponse
      0
  2. Yoda
     
    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
    1. blalaa Messages postés 171 Statut Membre
       
      dacord
      merci pour votre reponse
      0
    2. blalaa Messages postés 171 Statut Membre
       
      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