使用Python拟合函数曲线


Posted in Python onApril 14, 2022

使用Python拟合函数曲线需要用到一些第三方库:

  • numpy:科学计算的基础库(例如:矩阵)
  • matplotlib:绘图库
  • scipy:科学计算库

如果没有安装过这些库,需要在命令行中输入下列代码进行安装:

pip install numpy matplotlib scipy

拟合多项式

'''
Author: CloudSir
Date: 2021-08-01 13:40:50
LastEditTime: 2021-08-02 09:41:54
LastEditors: CloudSir
Description: Python拟合多项式
https://github.com/cloudsir
'''
import matplotlib.pyplot as plt
import numpy as np
 
x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [2.83, 9.53, 14.52, 21.57, 38.26, 53.92, 73.15, 101.56, 129.54, 169.75, 207.59]
z1 = np.polyfit(x, y, 3) #用3次多项式拟合,输出系数从高到0
p1 = np.poly1d(z1) #使用次数合成多项式
y_pre = p1(x)
 
plt.plot(x,y,'.')
plt.plot(x,y_pre)
plt.show()

使用Python拟合函数曲线

函数说明

np.polyfit(x, y, n)

功能:拟合曲线

参数:

  • x,y:x和y的原始数据
  • n:要拟合的次数

返回值:

  • 一个列表,拟合出的系数,顺序为从高到底

例: n=3时,会利用
a x 3 + b x 2 + c x + d 
拟合函数,并返回拟合出的系数 [a, b, c, d]​​​​

np.poly1d(li, r=False)

功能:生成多项式函数

参数:

li:

当没有r参数或 r=False 时,传入一个系数列表(次数从高到低),利用该列表生成多项式函数并返回

import numpy as np

f = np.poly1d([2, 3, 4])

“”" f ( x ) = 2 x 2 + 3 x + 4
"""

print(f(2)) # 18

当参数 r=True 时,传入一个根列表,利用该列表生成多项式函数并返回

import numpy as np

f = np.poly1d([2, 3, 4], True)

“”“ f ( x ) = ( x − 2 ) ∗ ( x − 3 ) ∗ ( x − 4 )
”""

print(f(0)) # -24

返回值:

见上

拟合任意函数

'''
Author: CloudSir
Date: 2021-08-03 15:01:17
LastEditTime: 2021-08-03 15:26:05
LastEditors: CloudSir
Description: Python拟合任意函数
https://github.com/cloudsir
'''
# 引用库函数

import numpy as np
import matplotlib.pyplot as plt
from scipy import optimize as op

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文
plt.rcParams['axes.unicode_minus'] = False    # 用来正常显示负号

# 需要拟合的函数
def f_1(x, A, B, C):
    return A * x**2 + B * x + C

# 需要拟合的数据组
x_group = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y_group = [2.83, 9.53, 14.52, 21.57, 38.26, 53.92, 73.15, 101.56, 129.54, 169.75, 207.59]

# 得到返回的A,B值
A, B, C = op.curve_fit(f_1, x_group, y_group)[0]

# 数据点与原先的进行画图比较
plt.scatter(x_group, y_group, marker='o',label='真实值')
x = np.arange(0, 15, 0.01)
y = A * x**2 + B *x + C
plt.plot(x, y,color='red',label='拟合曲线')
plt.legend() # 显示label

plt.show()

使用Python拟合函数曲线

函数说明

op.curve_fit(f, x, y)

功能:拟合任意函数

参数:

f:要拟合的函数类型

# 构建一个二次函数
def f(x, A, B, C):
    return A * x**2 + B * x + C

op.curve_fit(f, x, y) # 进行拟合

x, y:x和y的原始数据

返回值:一个元组 (popt,pcov)

  • popt是一个一维数组,表示得到的拟合方程的参数。
  • pcov是一个二维数组,是在popt参数下得到的协方差。

总结

到此这篇关于如何利用Python拟合函数曲线的文章就介绍到这了!

Python 相关文章推荐
python使用xpath中遇到:到底是什么?
Jan 04 Python
Java编程迭代地删除文件夹及其下的所有文件实例
Feb 10 Python
python跳过第一行快速读取文件内容的实例
Jul 12 Python
使用PM2+nginx部署python项目的方法示例
Nov 07 Python
对python的输出和输出格式详解
Dec 08 Python
解决python执行不输出系统命令弹框的问题
Jun 24 Python
python里运用私有属性和方法总结
Jul 08 Python
Python django搭建layui提交表单,表格,图标的实例
Nov 18 Python
Python实现微信好友的数据分析
Dec 16 Python
Python爬虫爬取、解析数据操作示例
Mar 27 Python
Python3爬虫中Ajax的用法
Jul 10 Python
变长双向rnn的正确使用姿势教学
May 31 Python
Python中生成随机数据安全性、多功能性、用途和速度方面进行比较
python中 .npy文件的读写操作实例
Apr 14 #Python
Python Matplotlib绘制等高线图与渐变色扇形图
python读取并查看npz/npy文件数据以及数据显示方法
Apr 14 #Python
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
Apr 14 #Python
Python中time标准库的使用教程
Apr 13 #Python
You might like
PHP实现取得HTTP请求的原文
2014/08/18 PHP
php计算两个整数的最大公约数常用算法小结
2015/03/05 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
2015/04/17 PHP
javascript XML数据显示为HTML一例
2008/12/23 Javascript
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
Jquery练习之表单验证实现代码
2010/12/14 Javascript
javascript string字符串优化问题
2011/07/31 Javascript
js实现鼠标经过时图片滚动停止的方法
2015/02/16 Javascript
JS获取和修改元素样式的实例代码
2016/08/06 Javascript
vue动态组件实现选项卡切换效果
2017/03/08 Javascript
AngularJS 打开新的标签页实现代码
2017/09/07 Javascript
javascript算法之二叉搜索树的示例代码
2017/09/12 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
对vue下点击事件传参和不传参的区别详解
2018/09/15 Javascript
Koa日志中间件封装开发详解
2019/03/09 Javascript
微信小程序登录数据解密及状态维持实例详解
2019/05/06 Javascript
Javascript基于OOP实实现探测器功能代码实例
2020/08/26 Javascript
JavaScript本地储存:localStorage、sessionStorage、cookie的使用
2020/10/13 Javascript
[01:03:03]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
py中的目录与文件判别代码
2008/07/16 Python
Hadoop中的Python框架的使用指南
2015/04/22 Python
Python 使用with上下文实现计时功能
2018/03/09 Python
解决python3 urllib 链接中有中文的问题
2018/07/16 Python
python批量修改图片大小的方法
2018/07/24 Python
基于Django框架利用Ajax实现点赞功能实例代码
2018/08/19 Python
python动态进度条的实现代码
2019/07/03 Python
解决Django连接db遇到的问题
2019/08/29 Python
python 负数取模运算实例
2020/06/03 Python
Python实现中英文全文搜索的示例
2020/12/04 Python
详解HTML5 LocalStorage 本地存储
2016/12/23 HTML / CSS
人力资源部经理的岗位职责
2014/03/04 职场文书
公司租房协议书
2014/10/14 职场文书
党组织领导班子整改方案
2014/10/25 职场文书
《巫师》是美食游戏?CDPR10月将推出《巫师》官方食谱
2022/04/03 其他游戏
前端canvas中物体边框和控制点的实现示例
2022/08/05 Javascript
nginx sticky实现基于cookie负载均衡示例详解
2022/12/24 Servers