使用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探索之ModelForm代码详解
Oct 26 Python
Flask-Mail用法实例分析
Jul 21 Python
python处理RSTP视频流过程解析
Jan 11 Python
Python OpenCV实现测量图片物体宽度
May 27 Python
什么是Python中的匿名函数
Jun 02 Python
Python如何自动获取目标网站最新通知
Jun 18 Python
python和php哪个容易学
Jun 19 Python
PyTorch: Softmax多分类实战操作
Jul 07 Python
python 浮点数四舍五入需要注意的地方
Aug 18 Python
Python 使用Opencv实现目标检测与识别的示例代码
Sep 08 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
Oct 22 Python
python 获取字典键值对的实现
Nov 12 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 什么是PEAR?(第三篇)
2009/03/19 PHP
php实现图片压缩处理
2020/09/09 PHP
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
js 利用className得到对象的实现代码
2011/11/15 Javascript
node.js中使用node-schedule实现定时任务实例
2014/06/03 Javascript
innerHTML动态添加html代码和脚本兼容多个浏览器
2014/10/11 Javascript
纯javascript实现的小游戏《Flappy Pig》实例
2015/07/27 Javascript
根据user-agent判断蜘蛛代码黑帽跳转代码(js版与php版本)
2015/09/14 Javascript
判断js的Array和Object的实现方法
2016/08/29 Javascript
详解AngularJS中ng-src指令的使用
2016/09/07 Javascript
Angular.js初始化之ng-app的自动绑定与手动绑定详解
2017/07/31 Javascript
jQuery控制input只能输入数字和两位小数的方法
2019/05/16 jQuery
聊聊Vue 中 title 的动态修改问题
2019/06/11 Javascript
JavaScript数组及常见操作方法小结
2019/11/13 Javascript
node.js使用http模块创建服务器和客户端完整示例
2020/02/10 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
2020/02/24 Javascript
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
js异步接口并发数量控制的方法示例
2020/11/22 Javascript
[03:40]DOTA2英雄梦之声_第01期_炼金术士
2014/06/23 DOTA
Python爬虫抓取手机APP的传输数据
2016/01/22 Python
Python random模块用法解析及简单示例
2017/12/18 Python
python3 读写文件换行符的方法
2018/04/09 Python
Python3.6连接Oracle数据库的方法详解
2018/05/18 Python
python3解析库BeautifulSoup4的安装配置与基本用法
2018/06/26 Python
将Python字符串生成PDF的实例代码详解
2019/05/17 Python
keras用auc做metrics以及早停实例
2020/07/02 Python
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
会计与审计毕业生自荐信范文
2013/12/30 职场文书
酒店总经理岗位职责
2014/03/17 职场文书
车间核算员岗位职责
2014/07/01 职场文书
个人三严三实对照检查材料
2014/09/25 职场文书
开会通知短信大全
2015/04/20 职场文书
小数乘法教学反思
2016/02/22 职场文书
python 实现定时任务的四种方式
2021/04/01 Python
Pyqt5将多个类组合在一个界面显示的完整示例
2021/09/04 Python
Python装饰器的练习题
2021/11/23 Python