Python应用实现双指数函数及拟合代码实例

 更新时间:2020年06月19日 10:28:52   作者:kurrrr  
这篇文章主要介绍了Python应用实现双指数函数及拟合代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

双指数函数

待拟合曲线为 y(x) = bepx + ceqx

import matplotlib.pyplot as plt

x = ([0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5,
   0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0])
y = ([0.33, 0.26, 0.18, 0.16, 0.12, 0.09, 0.08, 0.07, 0.06, 0.06,
   0.06, 0.07, 0.09, 0.1, 0.15, 0.19, 0.25, 0.36, 0.47, 0.68])

plt.scatter(x, y)
plt.show()

拟合

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit


def double_exp(x, b, c, p, q):
  x = np.array(x)
  return b*np.exp(p*x) + c*np.exp(q*x)


x = ([0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5,
   0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0])
y = ([0.33, 0.26, 0.18, 0.16, 0.12, 0.09, 0.08, 0.07, 0.06, 0.06,
   0.06, 0.07, 0.09, 0.1, 0.15, 0.19, 0.25, 0.36, 0.47, 0.68])

popt, pcov = curve_fit(double_exp, x, y, [1, 1, 1, 1])
print(popt)

b = popt[0]
c = popt[1]
p = popt[2]
q = popt[3]

y_fit = double_exp(x, b, c, p, q)

plt.scatter(x, y)
plt.plot(x, y_fit, color='red', linewidth=1.0)

plt.show()

numpy 库,实现列表转矩阵,得以进行数学运算。matplotlib.pyplot 库,绘制图像。scipy.optimize 库,curve_fit() 函数,使用非线性最小二乘法拟合曲线。curve_fit()popt,拟合结果,在这里指b, c, p, q 的值。povc,该拟合结果对应的协方差。

拟合结果参数原函数拟合结果误差b0.00110.00110c0.42000.42420.42%p6.39986.49881.55%q-5.1551-5.21641.19%

误差可以满意。

经过测试,如果将初始参数设置为原函数参数(保留 4 位小数),拟合得到的结果并未发生变化。

经过测试,拟合使用的三种方法,"trf","lm" 和 "dogbox" 对该函数拟合结果影响微乎其微。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • python实现报表自动化详解

    python实现报表自动化详解

    这篇文章主要介绍了python实现报表自动化详解,涉及python读,写excel—xlwt常用功能,xlutils 常用功能,xlwt写Excel时公式的应用等相关内容,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • OpenCV之理解KNN邻近算法k-Nearest Neighbour

    OpenCV之理解KNN邻近算法k-Nearest Neighbour

    这篇文章主要为大家介绍了OpenCV之理解KNN邻近算法k-Nearest Neighbour,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 简单谈谈Python中的闭包

    简单谈谈Python中的闭包

    一般来说闭包这个概念在很多语言中都有涉及,简单说,闭包就是根据不同的配置信息得到不同的结果,下面我们来专门讲下在Python中的闭包
    2016-11-11
  • Django用户认证系统 组与权限解析

    Django用户认证系统 组与权限解析

    这篇文章主要介绍了Django用户认证系统 组与权限解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 如何将自己写的模块上传到pypi

    如何将自己写的模块上传到pypi

    这篇文章主要介绍了如何将自己写的模块上传到pypi,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-03-03
  • Pycharm设置去除显示的波浪线方法

    Pycharm设置去除显示的波浪线方法

    今天小编就为大家分享一篇Pycharm设置去除显示的波浪线方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • flask的orm框架SQLAlchemy查询实现解析

    flask的orm框架SQLAlchemy查询实现解析

    这篇文章主要介绍了flask的orm框架SQLAlchemy查询实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • 如何用pandas处理hdf5文件

    如何用pandas处理hdf5文件

    这篇文章主要介绍了如何用pandas处理hdf5文件,帮助大家更好的理解和学习使用python进行数据处理,感兴趣的朋友可以了解下
    2021-03-03
  • 在PyCharm中控制台输出日志分层级分颜色显示的方法

    在PyCharm中控制台输出日志分层级分颜色显示的方法

    今天小编就为大家分享一篇在PyCharm中控制台输出日志分层级分颜色显示的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • python进阶教程之动态类型详解

    python进阶教程之动态类型详解

    这篇文章主要介绍了python进阶教程之动态类型详解,动态类型是动态语言的特性,本文对多种动态类型应用做了讲解,需要的朋友可以参考下
    2014-08-08

最新评论