celiocelio
Messages postés3Date d'inscriptionmardi 11 avril 2006StatutMembreDernière intervention30 mai 2006
-
30 mai 2006 à 13:59
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 2019
-
30 mai 2006 à 17:30
je cherche à résoudre cette équationsous vb6:
exp(-a*x)-exp(-b*x)=k avec a,b,x et k postifs et a<b dans tous les cas
a,b et k sont connus mais changent au cours de mon programme ils dérivent en fait d'autres calculs propres à moi
je cherche à trouver ce x à chaque fois que j'ais de nouvelles valeurs
de a,b et de k qui vérifieront toujours ces deux propriétés:
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 30 mai 2006 à 14:05
ça y est cette fois c'est le bon forum et le bon thème
encore que le titre est peu parlant et urgent ne plait pas trop.
soit a,b en Integer, Single, Double comme tu voudra
avec b > a
et la Fonction:
k = Exp(-a * X) - Exp(-b * X)
qui passe par un maximum pour une certaine valeur de x:
kM = Exp(-a * Max) - Exp(-b * Max)
il faut trouver Max
toutes les autres variables sont en Double (sauf n en Integer)
le principe c'est de découper par tranche de 10 pour augmenter la
vitesse, et de trouver la tranche qui contient le maximum, ensuite de
recommencer en augmentant la précision à chaque boucle.
c'est assez rapide avec une bonne précision à 9 décimales ça devrait être suffisant
si quelqu'un a mieux ???
Recherche du Maximum: pas 1: G 0
For n = 1 To 9
pas pas / 10: P 0
For M = G To 1 Step pas
R = Exp(-a * M) - Exp(-b * M)
If R < P Then Exit For
P = R
Next
G = M - pas - pas
Next
Max = M - pas
MsgBox "le Maximum est " & M
on peut déjà régler le problème, si k est trop
grand il n'y a pas de solution, ou si k = kM, il y a une racine
double:
pas = pas / 100
kM = Exp(-a * M) - Exp(-b * M)
If k - kM > pas Then
MsgBox "pas de solution": Exit Sub
End If
If Abs(k - kM) < pas Then
MsgBox "le Maximum est la solution": Exit Sub
End If
sinon, il y a 2 racines à trouver:
la première de 0 à Max (Fonction continue croissante)
la deuxième de Max à l'infini ... (Fonction continue décroissante)
par une recherche dichotomique classique c'est possible