使用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连接池实现示例程序
Nov 26 Python
python如何查看系统网络流量的信息
Sep 12 Python
详解python调度框架APScheduler使用
Mar 28 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
Feb 21 Python
Selenium鼠标与键盘事件常用操作方法示例
Aug 13 Python
Django migrations 默认目录修改的方法教程
Sep 28 Python
12个Python程序员面试必备问题与答案(小结)
Jun 24 Python
pybind11和numpy进行交互的方法
Jul 04 Python
django处理select下拉表单实例(从model到前端到post到form)
Mar 13 Python
在python image 中实现安装中文字体
May 16 Python
详解基于python的全局与局部序列比对的实现(DNA)
Oct 07 Python
python反编译教程之2048小游戏实例
Mar 03 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和ACCESS写聊天室(八)
2006/10/09 PHP
比较简单的百度网盘文件直链PHP代码
2013/03/24 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
2017/02/14 PHP
javascript实现的在当前窗口中漂浮框的代码
2010/03/15 Javascript
javascript基础知识大集锦(二) 推荐收藏
2011/01/13 Javascript
Safari5中alert的无限循环BUG
2011/04/07 Javascript
javascript生成随机大小写字母的方法
2014/02/20 Javascript
原生js与jQuery实现简单的tab切换特效对比
2015/07/30 Javascript
WEB前端开发都应知道的jquery小技巧及jquery三个简写
2015/11/15 Javascript
详解js跨域原理以及2种解决方案
2015/12/09 Javascript
使用jquery给指定的table动态添加一行、删除一行
2016/10/13 Javascript
Element UI 自定义正则表达式验证方法
2018/09/04 Javascript
angular4 获取wifi列表中文显示乱码问题的解决
2018/10/20 Javascript
微信小程序获取用户信息的两种方法wx.getUserInfo与open-data实例分析
2019/05/03 Javascript
利用vue3+ts实现管理后台(增删改查)
2020/10/30 Javascript
Python urllib模块urlopen()与urlretrieve()详解
2013/11/01 Python
Python字符串处理之count()方法的使用
2015/05/18 Python
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
详解Python下Flask-ApScheduler快速指南
2018/11/04 Python
Python高阶函数、常用内置函数用法实例分析
2019/12/26 Python
Python 实现Image和Ndarray互相转换
2020/02/19 Python
python操作链表的示例代码
2020/09/27 Python
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
javascript实现用户必须勾选协议实例讲解
2021/03/24 Javascript
自荐信怎么写好
2013/11/11 职场文书
工作中个人的自我评价
2013/12/31 职场文书
应届生求职自荐信范文
2014/04/07 职场文书
程序员求职信
2014/04/16 职场文书
商场促销活动策划方案
2014/08/18 职场文书
课程设计的心得体会
2014/09/03 职场文书
2014年幼儿园保育工作总结
2014/12/02 职场文书
运动会闭幕式致辞
2015/07/29 职场文书
解析MySQL binlog
2021/06/11 MySQL
JS创建或填充任意长度数组的小技巧汇总
2021/10/24 Javascript
Java Spring Lifecycle的使用
2022/05/06 Java/Android
springboot 全局异常处理和统一响应对象的处理方式
2022/06/28 Java/Android