使用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实现的NN神经网络算法完整示例
Jun 19 Python
Python 类的特殊成员解析
Jun 20 Python
详解Python使用Plotly绘图工具,绘制甘特图
Apr 02 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
Aug 29 Python
pytorch对梯度进行可视化进行梯度检查教程
Feb 04 Python
Pycharm中切换pytorch的环境和配置的教程详解
Mar 13 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
Jul 14 Python
使用Python pip怎么升级pip
Aug 11 Python
Pycharm无法打开双击没反应的问题及解决方案
Aug 17 Python
python中最小二乘法详细讲解
Feb 19 Python
详解tf.device()指定tensorflow运行的GPU或CPU设备实现
Feb 20 Python
Django中session进行权限管理的使用
Jul 09 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编码规范之注释和文件结构说明
2010/07/09 PHP
php利用curl抓取新浪微博内容示例
2014/04/27 PHP
Yii中创建自己的Widget实例
2016/01/05 PHP
非常经典的PHP文件上传类分享
2016/05/15 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
浅谈PHP封装CURL
2019/03/06 PHP
tangram框架响应式加载图片方法
2013/11/21 Javascript
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
2013/11/23 Javascript
JavaScript获取表单enctype属性的方法
2015/04/02 Javascript
DEDECMS如何为文章添加HOT NEW标志图片
2015/08/14 Javascript
Bootstrap实现各种进度条样式详解
2017/04/13 Javascript
vue进行图片的预加载watch用法实例讲解
2018/02/07 Javascript
微信小程序Flex布局用法深入浅出分析
2019/04/25 Javascript
基于elementUI使用v-model实现经纬度输入的vue组件
2019/05/12 Javascript
Vue仿微信app页面跳转动画效果
2019/08/21 Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
2019/08/27 Javascript
基于vue+echarts数据可视化大屏展示的实现
2020/12/25 Vue.js
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
Python常用的内置序列结构(列表、元组、字典)学习笔记
2016/07/08 Python
Python标准库sched模块使用指南
2017/07/06 Python
Django组件之cookie与session的使用方法
2019/01/10 Python
python实现字符串加密成纯数字
2019/03/19 Python
Python 绘制可视化折线图
2020/07/22 Python
Python使用socket模块实现简单tcp通信
2020/08/18 Python
html5本地存储_动力节点Java学院整理
2017/07/12 HTML / CSS
使用phonegap获取设备的一些信息方法
2017/03/31 HTML / CSS
可能这些是你想要的H5软键盘兼容方案(小结)
2019/04/23 HTML / CSS
猫途鹰英国网站:TripAdvisor英国(旅游社区和旅游评论)
2016/08/30 全球购物
意大利独特而优质的家居用品:Fazzini
2018/12/05 全球购物
战友聚会邀请函
2014/01/18 职场文书
党员干部形式主义个人整改措施
2014/09/17 职场文书
2014领导班子四风问题对照检查材料思想汇报
2014/09/21 职场文书
法律进社区活动总结
2015/05/07 职场文书
创业计划书介绍
2019/04/24 职场文书
Python中itertools库的四个函数介绍
2022/04/06 Python
mysql通过group by分组取最大时间对应数据的两种有效方法
2022/09/23 MySQL