저는 아직 Python에 익숙하지 않고 커브 피팅에 문제가 있습니다. 다음 프로그램은 내가 만드는 더 큰 프로그램을 단순화 한 것인데, 내가 가진 문제를 나타냅니다.scipy.optimize.curve_fit : 커브 피팅을 수행 할 수 없습니다.
문제는 내가 커브에 맞지 않는 햄버거라는 기능이 있다는 것입니다. 이 줄은 y = np.sqrt (y) : 문제입니다. 제거 할 때 완벽하게 맞출 수 있지만 원하는 기능이 아닙니다.
어떻게이 함수 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()