使用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之集合的关系
Sep 24 Python
pygame学习笔记(3):运动速率、时间、事件、文字
Apr 15 Python
python使用matplotlib绘制折线图教程
Feb 08 Python
Python标准库之collections包的使用教程
Apr 27 Python
Python实现全排列的打印
Aug 18 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
Aug 31 Python
Python 一句话生成字母表的方法
Jan 02 Python
Django使用redis缓存服务器的实现代码示例
Apr 28 Python
基于python实现高速视频传输程序
May 05 Python
Python正则表达式匹配日期与时间的方法
Jul 07 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
Jan 18 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
Apr 07 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 字符串正则替换函数preg_replace使用说明
2011/07/15 PHP
解析php中的escape函数
2013/06/29 PHP
php 判断服务器操作系统的类型
2014/02/17 PHP
php正则修正符用法实例详解
2016/12/29 PHP
PHP使用CURL实现下载文件功能示例
2019/06/03 PHP
让iframe自适应高度(支持XHTML,支持FF)
2007/07/24 Javascript
javascript parseInt 大改造
2009/09/27 Javascript
jquery插件制作 表单验证实现代码
2012/08/17 Javascript
JS实现点击按钮获取页面高度的方法
2015/11/02 Javascript
js解决movebox移动问题
2016/03/29 Javascript
js给table赋值的实例代码
2016/10/13 Javascript
浅析Node.js:DNS模块的使用
2016/11/23 Javascript
ES6中Generator与异步操作实例分析
2017/03/31 Javascript
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
AngularJS入门教程二:在路由中传递参数的方法分析
2017/05/27 Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
2017/07/18 jQuery
微信小程序从注册账号到上架(图文详解)
2019/07/17 Javascript
JavaScript简易计算器制作
2020/01/17 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
2020/03/08 Javascript
修改NPM全局模式的默认安装路径的方法
2020/12/15 Javascript
[27:02]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第三场
2014/05/24 DOTA
Pandas之drop_duplicates:去除重复项方法
2018/04/18 Python
Django 使用easy_thumbnails压缩上传的图片方法
2019/07/26 Python
Python2和Python3中@abstractmethod使用方法
2020/02/04 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
匡威比利时官网:Converse Belgium
2017/04/13 全球购物
Kent & Curwen:与大卫·贝克汉姆合作
2017/06/13 全球购物
Opodo英国旅游网站:预订廉价航班、酒店和汽车租赁
2018/07/14 全球购物
CAD制图人员的自荐信
2014/02/07 职场文书
宿舍管理制度范本
2015/08/07 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书
2016秋季田径运动会广播稿
2015/12/21 职场文书
Python+Selenium实现读取网易邮箱验证码
2022/03/13 Python
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
2022/04/24 Vue.js
HTML中实现音乐或视频自动播放案例详解
2022/05/30 HTML / CSS
JS轻量级函数式编程实现XDM二
2022/06/16 Javascript