Voila, j'ai effectué des mesures pour déterminer une loi de comportement.
J'ai 3 relevés dépendant de la vitesse de déformation plastique.
Mon but est de fitter les 3 courbes et d'obtenir un jeu de paramètre unique.
Je code cela en python.
Voici un programme qui permet de fitter un jeu de données. Mais je bloque pour faire les 3 à la fois...
Grrr les maths...
- Code: Tout sélectionner
#Importation des différents modules.
from scipy import *
from scipy.optimize import leastsq
import scipy.io.array_import
from pylab import *
import matplotlib.pyplot as ptt
import numpy as np
import Tkinter from math import *
#FONCTION COUT
#Notons que la fonction n'est pas au carré, c'est la fonction Leastsq
#qui élève au carré la fonction coût.
def residuals(p, y, x):
err = y-peval(x,p)
return err
#FONCTION A EVALUER
#Ici, la fonction à évaluer. A modifier, en fonction de l'allure de la courbe voulue
#p[0], p[1] et p[2] sont les paramètres de la fonction.
def peval(x, p):
return p[0]*(1-exp(-(p[2]*x)/p[3]))
#Import Data
#Importation d'un fichier .txt
filename=('mesure.dat')
data = scipy.io.array_import.numpy.loadtxt(filename)
#La colonne 0 du fichier sera les valeurs en x, et la colonne 1 sera celle des #y
y = data[:,1] x = data[:,0]
#Initialisation, nous entrons un jeu de paramètres "assez" proches des paramètres optimaux
A1_0=1
A2_0=1
k2_0=1
#Les paramètres sont classés dans un tableau
pname = (['A1','A2','k2'])
p0 = array([A1_0 , A2_0, k2_0])
#Appel de l'algorithme de Levenberg-Marquardt.
plsq = leastsq(residuals, p0, args=(y, x), maxfev=2000)
print plsq[0]
Merci d'avance de votre aide.
Cordialement
Exocius
