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 相关文章推荐
wxPython 入门教程
Oct 07 Python
Python使用redis pool的一种单例实现方式
Apr 16 Python
Python新手入门最容易犯的错误总结
Apr 24 Python
使用pandas对矢量化数据进行替换处理的方法
Apr 11 Python
使用 Python 实现微信群友统计器的思路详解
Sep 26 Python
padas 生成excel 增加sheet表的实例
Dec 11 Python
python2和python3在处理字符串上的区别详解
May 29 Python
浅析python 中大括号中括号小括号的区分
Jul 29 Python
在jupyter notebook 添加 conda 环境的操作详解
Apr 10 Python
python 日志模块 日志等级设置失效的解决方案
May 26 Python
keras打印loss对权重的导数方式
Jun 10 Python
Django Form常用功能及代码示例
Oct 13 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
PHP开发文件系统实例讲解
2006/10/09 PHP
PHPMYADMIN 简明安装教程 推荐
2010/03/07 PHP
php实现utf-8转unicode函数分享
2015/01/06 PHP
详解PHP错误日志的获取方法
2015/07/20 PHP
PHP7+Nginx的配置与安装教程详解
2016/05/10 PHP
php分页原理 分页代码 分页类制作教程
2016/09/23 PHP
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
加速IE的Javascript document输出的方法
2010/12/02 Javascript
JavaScript实现大数的运算
2014/11/24 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
JavaScrip常见的一些算法总结
2015/12/28 Javascript
javascript设计模式之中介者模式学习笔记
2017/02/15 Javascript
bootstrap table 多选框分页保留示例代码
2017/03/08 Javascript
vue 通过下拉框组件学习vue中的父子通讯
2017/12/19 Javascript
详解vue移动端日期选择组件
2018/02/22 Javascript
JS实现table表格内针对某列内容进行即时搜索筛选功能
2018/05/11 Javascript
vue项目中实现的微信分享功能示例
2019/01/21 Javascript
如何在JavaScript中优雅的提取循环内数据详解
2019/03/04 Javascript
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
在SAE上部署Python的Django框架的一些问题汇总
2015/05/30 Python
python判断数字是否是超级素数幂
2018/09/27 Python
python requests.post带head和body的实例
2019/01/02 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
2019/08/02 Python
python变量的作用域是什么
2020/05/26 Python
纬创Java面试题笔试题
2014/10/02 面试题
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
数学系毕业生的自我评价
2014/01/10 职场文书
全国文明单位申报材料
2014/05/31 职场文书
教师辞职信范文
2015/02/28 职场文书
求职信内容一般写什么?
2015/03/20 职场文书
社区敬老月活动总结
2015/05/07 职场文书
2016年教师节感恩寄语
2015/12/04 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
python运算符之与用户交互
2022/04/13 Python
Python测试框架pytest核心库pluggy详解
2022/08/05 Golang