python曲线拟合为什么会失败_python – 曲线拟合失败,指数但zunzun正确

本文讨论了在Python中使用`scipy.optimize.curve_fit`进行指数曲线拟合时遇到的问题,即对于同样的数据,两个不同的指数函数得到的拟合结果相差较大。通过分析,发现是参数辨识性问题导致的。作者提出了使用随机起始值的方法来寻找更接近的参数估计,以改善拟合效果。
摘要由CSDN通过智能技术生成

我正在尝试计算两种形式的指数对某些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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值