龙空技术网

Python实现「指数函数+对数函数」复杂组合函数曲线的拟合

yishuihancheng 307

前言:

今天我们对“python拟合数据”都比较注意,各位老铁们都需要了解一些“python拟合数据”的相关知识。那么小编也在网络上网罗了一些关于“python拟合数据””的相关内容,希望咱们能喜欢,小伙伴们快快来了解一下吧!

在实际的应用中,我们经常会遇到一些曲线拟合得需求,尽管,实际上点对之间可能是没有绝对意义上的函数关系的,但是为了更好地量化表示和计算,我们往往期望于从原始的数据集中尽可能地挖掘出来可能的函数关系,今天我遇上了一个问题就是如何去拟合指数函数+对数函数这种组合型函数曲线,简单看一下具体的实现内容:

def logExpFunc(): ''' 【指数+对数】混合函数拟合 ''' x=np.linspace(1,2,15) y=[21.5,23.1,25.9,30,32.6,38,41.9,47.2,55,61,69,80,90,105,117.6] popt,pcov=curve_fit(lambda t,a,b,c,d,e: a+b*np.log(c*t)+d*np.exp(e*t),x,y) print('popt: ',popt) plt.figure() a,b,c,d,e=popt y_pre = a+b*np.log(c*x)+d*np.exp(e*x) plt.plot(x, y, 'ko', label="Original Data") plt.plot(x, y_pre, 'r-', label="Fitting Curve") plt.legend() plt.show()

这里我设置的函数原型为:

y = 4+2*np.exp(2*x)+3*np.log(2*x)

y为指数函数和对数函数的组合形式,其中,一共有5个参数。

结果如下所示:

popt: [ 5.19163529 -1.73152698 1.57951688 2.44883023 1.92488973]

从结果输出的5个参数上来看,a、b、c、d和e跟我们自己预设的函数原型中的参数是不一致的,但是不影响我们拟合得到所需要的曲线,这样的参数不一定会是唯一的,可能跟我们函数曲线拟合的时候所使用到的点数据过少有关系吧,毕竟函数本身还是比较复杂的。

标签: #python拟合数据 #python如何拟合曲线