使用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实现栈的方法
May 26 Python
python查询mysql,返回json的实例
Mar 26 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
May 25 Python
python 获得任意路径下的文件及其根目录的方法
Feb 16 Python
Tensorflow实现酸奶销量预测分析
Jul 19 Python
解决python有时候import不了当前的包问题
Aug 28 Python
python sqlite的Row对象操作示例
Sep 11 Python
Python多线程及其基本使用方法实例分析
Oct 29 Python
python 实现单通道转3通道
Dec 03 Python
python json load json 数据后出现乱序的解决方案
Feb 27 Python
Python实现扫码工具的示例代码
Oct 09 Python
python垃圾回收机制原理分析
Apr 13 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 利用AJAX获取网页并输出的实现代码(Zjmainstay)
2012/08/31 PHP
ThinkPHP CURD方法之data方法详解
2014/06/18 PHP
访问编码后的中文URL返回404错误的解决方法
2014/08/20 PHP
怎样搭建PHP开发环境
2015/07/28 PHP
php源码之将图片转化为data/base64数据流实例详解
2016/11/27 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
javascript sudoku 数独智力游戏生成代码
2010/03/27 Javascript
从jQuery.camelCase()学习string.replace() 函数学习
2011/09/13 Javascript
Jquery带搜索框的下拉菜单
2013/05/06 Javascript
解决Extjs4中form表单提交后无法进入success函数问题
2013/11/26 Javascript
5种处理js跨域问题方法汇总
2014/12/04 Javascript
jQuery判断对象是否存在的方法
2015/02/05 Javascript
javascript 应用小技巧方法汇总
2015/07/05 Javascript
jquery实现具有收缩功能的垂直导航菜单
2016/02/16 Javascript
Nodejs进阶:核心模块net入门学习与实例讲解
2016/11/21 NodeJs
详解微信小程序开发之下拉刷新 上拉加载
2016/11/24 Javascript
微信小程序新增的拖动组件movable-view使用教程
2017/05/20 Javascript
浅谈JavaScript的innerWidth与innerHeight
2017/10/12 Javascript
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
详解Python中的strftime()方法的使用
2015/05/22 Python
python利用datetime模块计算时间差
2015/08/04 Python
python多线程之事件Event的使用详解
2018/04/27 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
2020/07/03 Python
opencv 阈值分割的具体使用
2020/07/08 Python
HTML5 video 上传预览图片视频如何设置、预览视频某秒的海报帧
2018/08/28 HTML / CSS
世界第一曲奇连锁店:Mrs. Fields Cookies
2017/02/04 全球购物
澳大利亚手袋、珠宝和在线时尚精品店:The Way
2019/12/21 全球购物
应届生求职简历的自我评价怎么写
2013/10/23 职场文书
大学生优秀团员事迹材料
2014/01/30 职场文书
2014年端午节活动方案
2014/03/11 职场文书
四查四看自我剖析材料
2014/09/19 职场文书
滞留工资返还协议书
2014/10/19 职场文书
经验交流材料格式
2014/12/30 职场文书
南极大冒险观后感
2015/06/05 职场文书
nginx配置虚拟主机的详细步骤
2021/07/21 Servers