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 实现数据库更新脚本的生成方法
Jul 09 Python
python实现猜拳小游戏
Apr 05 Python
解决python 3 urllib 没有 urlencode 属性的问题
Aug 22 Python
修改 CentOS 6.x 上默认Python的方法
Sep 06 Python
Python搭建代理IP池实现存储IP的方法
Oct 27 Python
python读写Excel表格的实例代码(简单实用)
Dec 19 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
Feb 12 Python
Python流程控制常用工具详解
Feb 24 Python
Python callable内置函数原理解析
Mar 05 Python
Python爬取阿拉丁统计信息过程图解
May 12 Python
python使用matplotlib:subplot绘制多个子图的示例
Sep 24 Python
python删除csv文件的行列
Apr 06 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
《超神学院》霸气归来, 天使彦上演维多利亚的秘密
2020/03/02 国漫
PHP如何得到当前页和上一页的地址?
2006/11/27 PHP
PHP 观察者模式的实现代码
2013/05/10 PHP
php获取网页请求状态程序示例
2014/06/17 PHP
php格式输出文件var_export函数实例
2014/11/15 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
PHP排序算法之快速排序(Quick Sort)及其优化算法详解
2018/04/21 PHP
JavaScript isPrototypeOf和hasOwnProperty使用区别
2010/03/04 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
使用原生JS实现弹出层特效
2014/12/22 Javascript
JavaScript中property和attribute的区别详细介绍
2015/03/03 Javascript
微信小程序 获取相册照片实例详解
2016/11/16 Javascript
jQuery Ajax File Upload实例源码
2016/12/12 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
2017/01/23 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
JavaScript与Java正则表达式写法的区别介绍
2017/08/15 Javascript
基于webpack4搭建的react项目框架的方法
2018/06/30 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
puppeteer实现html截图的示例代码
2019/01/10 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
2019/03/19 jQuery
[01:10]3.19DOTA2发布会 三代刀塔人第一代
2014/03/25 DOTA
Python logging模块学习笔记
2014/05/24 Python
使用Python制作获取网站目录的图形化程序
2015/05/04 Python
机器学习python实战之手写数字识别
2017/11/01 Python
flask-socketio实现WebSocket的方法
2018/07/31 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
浅谈matplotlib.pyplot与axes的关系
2020/03/06 Python
Python3利用openpyxl读写Excel文件的方法实例
2021/02/03 Python
new修饰符是起什么作用
2015/06/28 面试题
艺术爱好者的自我评价分享
2013/10/08 职场文书
大学生通用个人的自我评价
2014/02/10 职场文书
五分钟演讲稿
2014/04/30 职场文书
大学生找工作求职信
2014/07/09 职场文书
企业投资意向书
2015/05/09 职场文书
如何书写读后感?(附范文)
2019/07/26 职场文书