pour modéliser une fonction polynomiale on peut utiliser la fonction polyfit
comment peut-on faire pour modéliser une fonction exponentielle ?
je précise une modélisation à partir de valeurs contenues dans une liste
merci pour votre aide
pour modéliser une fonction polynomiale on peut utiliser la fonction polyfit
comment peut-on faire pour modéliser une fonction exponentielle ?
je précise une modélisation à partir de valeurs contenues dans une liste
merci pour votre aide
Salut,
Si vous partez d'une liste de points, vous aurez un polynome.... même si cette liste de points sort d'une exponentielle (qui peut être approchée par un polynome de Lagrange).
notez que polyfit a été remplacé par polynomial dans les versions récentes.... et que c'est à vous de choisir la méthode à utiliser (en fonction des données et du domaine).
- W
je vous copie le programme que j'utilise pour une régression linéaire
je récupère ainsi une équation du type y = ax + b.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 t=np.array(t) T=np.array(T) coeff=np.polyfit(t, T,1) Tmodel = coeff[0]*t+coeff[1] print(T={0:.1f}'.format(coeff[0]),'x t+{0:.1f}'.format(coeff[1]))
je veux savoir s'il est possible de faire (et comment) la même chose avec des valeurs qui suivent une fct exponentielle du type y = A.exp(k x) + B (bon le plus B je peux m'en passer si besoin)
le but est de récupérer l'équation de la modélisation
Si vos points sont alignés, le "modèle" sera une droite de la forme y = ax + b.
Mais si ce n'est pas le cas, forcer polyfit à retourner un polynôme de degré 1 est discutable.
A priori, vous ne savez pas quelle fonction a permis de générer vos points... puisque le but est d'en faire un approximation via un polynôme qui va passer par l'ensemble des points.
edit: prenez un nuage de points, le polynome de degré 1 retourné par polyfit sera une extrapolation linéaire... qui pourra être utilisé comme "modèle" modulo une erreur plus ou moins importante. La machine se contente de faire les calculs que vous lui demandez, à vous d'être assez intelligent pour évaluer la pertinence de ce qu'elle sort comme "modèle".
- W
Avec scipy.optimize.curve_fit, vous pouvez étant donné un nuage de point et une fonction que vous avez vous même défini, trouver les meilleurs paramètres de cette fonction pour qu'elle soit le plus proche possible de votre nuage de points. Vous pouvez donc en particulier lui demander un "fit" avec une fonction exponentielle.
Après comme dit précédemment, si vos données n'ont pas vraiment une forme exponentielle alors cette méthode va fournir un résultat, mais résultat qui sera très peu pertinent.
ok je m'approche de ce que je veux faire mais dans ce lien si j'ai bien compris (car je n'ai pas compris toutes les lignes) ils ont une idée de ce que qu'ils vont obtenir et les coefficients sont saisis (2.5 1.3 et 0.5) puis optimisés par Python
moi j'ai une série de valeur et je ne connais pas l'équation, je sais juste qu'elle est de la forme y = a x exp(bx) + c.
exemple
et je veux sortir l'équation modèle de ça sous la forme y = a x exp(bx) + c et que Python me calcule les coeff a ; b et c que je ne connais pas d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 x = np.array([1, 2, 3, 4]) y = np.array([34,223,1619,11929])
ici par exemple c'est de la forme y = 4 x exp(2x) +5.
les valeurs x et y sont bidons la vraie situation c'est un TP de physique où je mesure la température de refroidissement de l'eau en fonction du temps (loi phénoménologique de Newton)
Partager