Résolution d'équation par vba
Fermé
blalaa
Messages postés
167
Date d'inscription
mercredi 18 avril 2018
Statut
Membre
Dernière intervention
24 mars 2020
-
Modifié le 18 avril 2018 à 15:57
blalaa Messages postés 167 Date d'inscription mercredi 18 avril 2018 Statut Membre Dernière intervention 24 mars 2020 - 9 mai 2018 à 13:51
blalaa Messages postés 167 Date d'inscription mercredi 18 avril 2018 Statut Membre Dernière intervention 24 mars 2020 - 9 mai 2018 à 13:51
3 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
18 avril 2018 à 17:05
18 avril 2018 à 17:05
Bonjour,
valeur de K non définie
on pourrait plutôt passer par une fonction
par ex:
valeur de K non définie
on pourrait plutôt passer par une fonction
par ex:
Function Calculer_equation(K As Currency)
Calculer_equation = (2 * (2 * Sqr(K)) - 0.8) ^ -1
End Function
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié le 19 avril 2018 à 15:00
Modifié le 19 avril 2018 à 15:00
Re,
modif : passer de currency à double ;o)
petite maquette
si X =10 je trouve 0,08€
modif : passer de currency à double ;o)
petite maquette
Function Calculer_equation(K As Double)
Calculer_equation = (2 * (2 * Sqr(K)) - 0.8) ^ -1
End Function
'-----------------------------------------------------
Sub calculer()
Dim X As Double
X = Range("G2") 'par exemple ( G2 est au format-nombre-currency)
MsgBox Format(Calculer_equation(X), "#,##0.00 $")
End Sub
si X =10 je trouve 0,08€
blalaa
Messages postés
167
Date d'inscription
mercredi 18 avril 2018
Statut
Membre
Dernière intervention
24 mars 2020
19 avril 2018 à 15:04
19 avril 2018 à 15:04
Re michel
ca marche tjr pas
au fait c une equation quil faut resoudre par methode iterative(par la calculatrice) , elle a la meme inconue dans les 2 partie de lequation , mais par vba je ne sais pas comment
k = (2 * (2 * Sqr(K)) - 0.8) ^ -1)
on voit bien K de cote droite et de cote gauche
ca marche tjr pas
au fait c une equation quil faut resoudre par methode iterative(par la calculatrice) , elle a la meme inconue dans les 2 partie de lequation , mais par vba je ne sais pas comment
k = (2 * (2 * Sqr(K)) - 0.8) ^ -1)
on voit bien K de cote droite et de cote gauche
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
20 avril 2018 à 08:25
20 avril 2018 à 08:25
au fait c une equation quil faut resoudre par methode iterative(par la calculatrice)
Pourquoi ne pas l'avoir précisé au départ ?
Pourquoi ne pas l'avoir précisé au départ ?
blalaa
Messages postés
167
Date d'inscription
mercredi 18 avril 2018
Statut
Membre
Dernière intervention
24 mars 2020
20 avril 2018 à 09:15
20 avril 2018 à 09:15
non c pas par calculatrice , c par vba
jai peut etre mal exprime desole et merci
jai peut etre mal exprime desole et merci
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié le 20 avril 2018 à 09:34
Modifié le 20 avril 2018 à 09:34
pas grave ! surtout que je ne suis pas un matheux
:o)
:o)
Bonjour
k = (2 * (2 * Sqr(k)) - 0.8) ^ -1
peut aussi s'ecrire
k= 1/(4*sqr(k)-0.8)
k*(4*sqr(k)-0.8) =1
(k*4*sqr(k))-(0.8*k) =1
avec k > 0 car sqr(k) est toujours positif
avec un programme de type force bute, on fait varier k avec un increment de 0.0001
et on trouve k = 0.4959
k = (2 * (2 * Sqr(k)) - 0.8) ^ -1
peut aussi s'ecrire
k= 1/(4*sqr(k)-0.8)
k*(4*sqr(k)-0.8) =1
(k*4*sqr(k))-(0.8*k) =1
avec k > 0 car sqr(k) est toujours positif
avec un programme de type force bute, on fait varier k avec un increment de 0.0001
et on trouve k = 0.4959
Sub test()
Dim k As Currency, r As Currency
k = 0
r = 0
While r <= 1
k = k + 0.0001
r = (k * 4 * Sqr(k)) - (0.8 * k)
Wend
MsgBox ("k = " & Format(k, "0.0000"))
End Sub
blalaa
Messages postés
167
Date d'inscription
mercredi 18 avril 2018
Statut
Membre
Dernière intervention
24 mars 2020
19 avril 2018 à 15:34
19 avril 2018 à 15:34
Bonjour
merci bcp effictivement c a marche
au fait je voudrais aussi faire varier le re =2 dans l'example precendent
je vais directement ecrire ce que je veux resourdre, si c possible
1/sqr(k)= (2*log * (re * Sqr(k)) - 0.8)
je ne sais pas si je peux remplacer directement le 2 avec (re) dans le programme qui vous mavez donne (qui marche bien )
si vous pouvez maider vraiment jen ai besoin
merci
merci bcp effictivement c a marche
au fait je voudrais aussi faire varier le re =2 dans l'example precendent
je vais directement ecrire ce que je veux resourdre, si c possible
1/sqr(k)= (2*log * (re * Sqr(k)) - 0.8)
je ne sais pas si je peux remplacer directement le 2 avec (re) dans le programme qui vous mavez donne (qui marche bien )
si vous pouvez maider vraiment jen ai besoin
merci
L'équation n'est pas la même
1/sqr(k) = 2*log(re * Sqr(k)) - 0.8
(2*log(re * Sqr(k)) - 0.8) * sqr(k) = 1
donc cette fois le programme est le suivant ( si j'ai bien interprété l'équation)
Pour re=2
k=1.3260
1/sqr(k) = 2*log(re * Sqr(k)) - 0.8
(2*log(re * Sqr(k)) - 0.8) * sqr(k) = 1
donc cette fois le programme est le suivant ( si j'ai bien interprété l'équation)
Sub test2()
Dim k As Currency, r As Currency
k = 0
r = 0
'--------------------------
Dim re As Double
' entrer une valeur pour re
re = 2
'--------------------------
While r <= 1
k = k + 0.0001
r = (2 * Log(re * Sqr(k)) - 0.8) * Sqr(k)
Wend
MsgBox ("Pour re = " & re & vbCrLf & "k = " & Format(k, "0.0000"))
End Sub
Pour re=2
k=1.3260
blalaa
Messages postés
167
Date d'inscription
mercredi 18 avril 2018
Statut
Membre
Dernière intervention
24 mars 2020
20 avril 2018 à 09:14
20 avril 2018 à 09:14
merci beaucoup ca a marche, pour les grnades valeurs par exemple de 10000 il ya une legere erreur mais c pas grave
merci encore
merci encore
blalaa
Messages postés
167
Date d'inscription
mercredi 18 avril 2018
Statut
Membre
Dernière intervention
24 mars 2020
20 avril 2018 à 11:27
20 avril 2018 à 11:27
merci pour tout
Modifié le 19 avril 2018 à 09:22
merci pour votre reponse, je viens de lessayer mais ca marche toujours pas
vous avez mis :
Calculer_equation = (2 * (2 * Sqr(K)) - 0.8) ^ -1
alors que
calculer_equation doit prendre la valeur de k
je ne sais pas comment y prendre
si vous pouvez maider ca serrai vraiment genial
merci davence