#!/bin/env python # -*- coding: utf-8 -*- import matplotlib.pyplot as plt import numpy as np from scipy.optimize import curve_fit # on définit la fonction à fitter # en premier paramètre on doit avoir la variable # puis les valeurs à optimiser def func(x , a , b ): return a*x + b f=open('batt.txt') i=[] v=[] while 1 : s=f.readline() s=s.strip() if s=='': break if s[0]=='#': continue l=s.split(';') i.append(float(l[0])) v.append(float(l[1])) v=np.array(v) i=np.array(i) # on fitte en donnant la forme de la fonction et les points de mesures popt , pcov = curve_fit (func , i , v) (a,b) = popt print('a=',a,'b=',b) print(pcov) # recalcule les points avec les valeurs a,b,c fittées vcalc=func(i,a,b) plt.plot(i,v,'xb') # valeurs 'mesurées' plt.plot(i,vcalc,'r') # valeurs fittées plt.show()