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


Posted in Python onJune 19, 2020

双指数函数

待拟合曲线为 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()

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

拟合

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()

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

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基于phantomjs实现导入图片
May 13 Python
Python 使用requests模块发送GET和POST请求的实现代码
Sep 21 Python
django启动uwsgi报错的解决方法
Apr 08 Python
详解Python3.6安装psutil模块和功能简介
May 30 Python
Python3随机漫步生成数据并绘制
Aug 27 Python
python GUI图形化编程wxpython的使用
Jul 19 Python
Python爬取视频(其实是一篇福利)过程解析
Aug 01 Python
python实现银行实战系统
Feb 26 Python
Django Form常用功能及代码示例
Oct 13 Python
15个Pythonic的代码示例(值得收藏)
Oct 29 Python
Python3.9.1中使用match方法详解
Feb 08 Python
python numpy中multiply与*及matul 的区别说明
May 26 Python
PyQT5 实现快捷键复制表格数据的方法示例
Jun 19 #Python
如何在keras中添加自己的优化器(如adam等)
Jun 19 #Python
详解pyinstaller生成exe的闪退问题解决方案
Jun 19 #Python
Python实现爬取并分析电商评论
Jun 19 #Python
keras 实现轻量级网络ShuffleNet教程
Jun 19 #Python
Python爬虫实现HTTP网络请求多种实现方式
Jun 19 #Python
Keras设置以及获取权重的实现
Jun 19 #Python
You might like
我的论坛源代码(四)
2006/10/09 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
php jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
PHP file_get_contents设置超时处理方法
2013/09/30 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
2014/09/29 PHP
微信公众平台实现获取用户OpenID的方法
2015/04/15 PHP
PHP链表操作简单示例
2016/10/15 PHP
很多人都是用下面的js刷新站IP和PV
2008/09/05 Javascript
初学JavaScript第二章
2008/09/30 Javascript
ExtJS 2.0实用简明教程 之获得ExtJS
2009/04/29 Javascript
JS URL传中文参数引发的乱码问题
2009/09/02 Javascript
json 入门基础教程 推荐
2009/10/31 Javascript
js中通过split函数分割字符串成数组小例子
2013/09/21 Javascript
javascript判断两个IP地址是否在同一个网段的实现思路
2013/12/13 Javascript
connect中间件session、cookie的使用方法分享
2014/06/17 Javascript
带你了解session和cookie作用原理区别和用法
2017/08/14 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
2017/12/27 Javascript
vue 项目中使用Loading组件的示例代码
2018/08/31 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
ES6 更易于继承的类语法的使用
2019/02/11 Javascript
原生JS实现京东查看商品点击放大
2020/12/21 Javascript
跟老齐学Python之关于类的初步认识
2014/10/11 Python
在Gnumeric下使用Python脚本操作表格的教程
2015/04/14 Python
Python3读取文件常用方法实例分析
2015/05/22 Python
使用python绘制常用的图表
2016/08/27 Python
hmac模块生成加入了密钥的消息摘要详解
2018/01/11 Python
如何使用pycharm连接Databricks的步骤详解
2020/09/23 Python
最新Python idle下载、安装与使用教程图文详解
2020/11/28 Python
哪些情况下不应该使用索引
2015/07/20 面试题
2015年世界卫生日活动总结
2015/02/09 职场文书
2015年行政执法工作总结
2015/05/23 职场文书
追悼会悼词大全
2015/06/23 职场文书
食品安全主题班会
2015/08/13 职场文书
创业计划书之美容店
2019/09/16 职场文书
Python 中random 库的详细使用
2021/06/03 Python