我正在尝试计算两种形式的指数对某些x,y数据的最佳拟合(数据文件可以从here下载)
这是代码:
from scipy.optimize import curve_fit
import numpy as np
# Get x,y data
data = np.loadtxt('data.txt', unpack=True)
xdata, ydata = data[0], data[1]
# Define first exponential function
def func(x, a, b, c):
return a * np.exp(b * x) + c
# Get parameters estimate
popt, pcov = curve_fit(func, xdata, ydata)
print popt
# Define second exponential function (one more parameter)
def func2(x, a, b, c, d):
return a * np.exp(b * x + c) + d
# Get parameters estimate
popt2, pcov2 = curve_fit(func2, xdata, ydata)
print popt2
对于popt,第一个指数给出与zunzun.com(PDF here)完全相同的值:
[ 7.67760545e-15 1.52175476e+00 2.15705939e-02]
但是第二个给出了popt2明显错误的值:
[ -1.26136676e+02 -8.13