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的迭代器和生成器使用实例
Jan 14 Python
详解Python 2.6 升级至 Python 2.7 的实践心得
Apr 27 Python
Python连接Mssql基础教程之Python库pymssql
Sep 16 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
Aug 05 Python
Python中常用的高阶函数实例详解
Feb 21 Python
Django数据结果集序列化并展示实现过程
Apr 22 Python
python有几个版本
Jun 17 Python
详解python方法之绑定方法与非绑定方法
Aug 17 Python
Django用户认证系统如何实现自定义
Nov 12 Python
python中如何对多变量连续赋值
Jun 03 Python
撤回我也能看到!教你用Python制作微信防撤回脚本
Jun 11 Python
python中 .npy文件的读写操作实例
Apr 14 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
ThinkPHP之getField详解
2014/06/20 PHP
php删除文本文件中重复行的方法
2015/04/28 PHP
PHP实现简单汉字验证码
2015/07/28 PHP
php实现微信扫码自动登陆与注册功能
2016/09/22 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
php readfile()修改文件上传大小设置
2017/08/11 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
深入研究PHP中的preg_replace和代码执行
2018/08/15 PHP
TNC vs BOOM BO3 第三场2.13
2021/03/10 DOTA
js函数setTimeout延迟执行的简单介绍
2013/07/17 Javascript
jquery 利用show和hidden实现级联菜单示例代码
2013/08/09 Javascript
jQuery绑定事件不执行但alert后可以正常执行
2014/06/03 Javascript
jQuery处理json数据返回数组和输出的方法
2015/03/11 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
2015/06/19 Javascript
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
2015/08/21 Javascript
Javascript之Math对象详解
2016/06/07 Javascript
Vuejs第十二篇之动态组件全面解析
2016/09/09 Javascript
vue不通过路由直接获取url中参数的方法示例
2017/08/24 Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
2017/11/10 Javascript
Vue 项目部署到服务器的问题解决方法
2017/12/05 Javascript
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
[01:07:15]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第二场 1月25日
2021/03/11 DOTA
解决win64 Python下安装PIL出错问题(图解)
2018/09/03 Python
基于PyQt4和PySide实现输入对话框效果
2019/02/27 Python
python爬虫 urllib模块url编码处理详解
2019/08/20 Python
Python实现非正太分布的异常值检测方式
2019/12/09 Python
基于TensorFlow的CNN实现Mnist手写数字识别
2020/06/17 Python
Python基于内置函数type创建新类型
2020/10/22 Python
高中生职业生涯规划书
2014/02/24 职场文书
房产继承公证书
2014/04/09 职场文书
2014年自愿离婚协议书范本
2014/09/25 职场文书
死者家属慰问信
2015/03/24 职场文书
聘任协议书(挂靠)
2015/09/21 职场文书
网络研修随笔感言
2015/11/18 职场文书
python tkinter实现定时关机
2021/04/21 Python