I am still new with python and I have a problem wit curve fitting. The following program is a simplification of a bigger program that I create but it represent the problem that I have.
The problem is that I have a function which I called burger that I cannot fit a curve. This line : y=np.sqrt(y) : is a problem. When I remove it, i can fit it perfectly but that not the function I want.
How Can I do a fitting of this function y=np.sqrt(y)?
# -*- coding: utf-8 -*- """ Created on Wed Dec 11 22:14:54 2013 @author: """ import numpy as np import matplotlib.pyplot as plt import pdb import scipy.optimize as optimization from math import * from scipy.optimize import curve_fit import math import moyenne ####################Function Burger############################### def burger(t, E1, E2, N,tau): nu=0.4 #Coefficient de Poisson P=50 #Peak force alpha=70.3 #Tip angle y=((((pi/2.)*P*(1.-nu**2.))/(tan(alpha)))*(1./E1 + 1./E2*(1.-np.exp(-t/tau)) + 1./((N)*(1.-nu))*t)) y=np.sqrt(y) return y #######exemple d'utilisation########## xlist=np.linspace(0,1,100) ylist=[ burger(t,3, 2,1,0.1) for t in xlist] #pdb.set_trace() pa,j = curve_fit(burger,xlist,ylist) yfit=[burger(x,*pa) for x in xlist] plt.figure() plt.plot(xlist,ylist,marker='o') plt.plot(xlist,yfit) plt.show()