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

系统 1772 0

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

            
              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]
            
          

Python实现【指数函数+对数函数】复杂组合函数曲线的拟合_第1张图片

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

 

 


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论