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中的类学习笔记
Sep 23 Python
python实现简单温度转换的方法
Mar 13 Python
Python删除空文件和空文件夹的方法
Jul 14 Python
PYTHON压平嵌套列表的简单实现
Jun 08 Python
浅析python中numpy包中的argsort函数的使用
Aug 30 Python
Python脚本按照当前日期创建多级目录
Mar 01 Python
python写日志文件操作类与应用示例
Jul 01 Python
pytorch自定义初始化权重的方法
Aug 17 Python
python多线程使用方法实例详解
Dec 30 Python
Python3 pywin32模块安装的详细步骤
May 26 Python
python自动从arxiv下载paper的示例代码
Dec 05 Python
Pillow图像处理库安装及使用
Apr 12 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
锁定年轻人的双倍活力 星巴克推出星倍醇即饮浓咖啡
2021/03/03 咖啡文化
用Php编写注册后Email激活验证的实例代码
2013/03/11 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
2013/07/03 PHP
zf框架的zend_cache缓存使用方法(zend框架)
2014/03/14 PHP
360搜索引擎自动收录php改写方案
2018/04/28 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
JS在IE和FF下attachEvent,addEventListener学习笔记
2009/11/26 Javascript
jQuery dialog 异步调用ashx,webservice数据的代码
2010/08/03 Javascript
动态加载外部javascript文件的函数代码分享
2011/07/28 Javascript
JS+CSS 制作的超级简单的下拉菜单附图
2013/11/22 Javascript
深入理解JavaScript中Ajax
2016/08/02 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
JS中的作用域链
2017/03/01 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
JS触摸事件、手势事件详解
2017/05/04 Javascript
js 获取json数组里面数组的长度实例
2017/10/31 Javascript
微信小程序倒计时功能实现代码
2017/11/09 Javascript
详解在React项目中安装并使用Less(用法总结)
2019/03/18 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
[02:58]献给西雅图的情书_高清
2014/05/29 DOTA
[03:52]显微镜下的DOTA2第三期——英雄在无聊的时候干什么
2014/06/20 DOTA
[50:05]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Python实现的弹球小游戏示例
2017/08/01 Python
python实现用户答题功能
2018/01/17 Python
在python中创建指定大小的多维数组方式
2019/11/28 Python
Python如何实现小程序 无限求和平均
2020/02/18 Python
python统计字符串中字母出现次数代码实例
2020/03/02 Python
美国演唱会订票网站:Ticketmaster美国
2017/10/05 全球购物
Hotels.com英国:全球领先的酒店住宿提供商
2019/01/24 全球购物
如何提高MySql的安全性
2014/06/19 面试题
有针对性的求职自荐信
2013/11/14 职场文书
电子商务专业推荐信范文
2013/12/02 职场文书
初中英语教学反思
2014/01/25 职场文书
python urllib库的使用详解
2021/04/13 Python
MySQL创建定时任务
2022/01/22 MySQL