使用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 struct.unpack
Sep 06 Python
python连接mysql调用存储过程示例
Mar 05 Python
python正则表达式re之compile函数解析
Oct 25 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
Nov 24 Python
pandas object格式转float64格式的方法
Apr 10 Python
Python对数据进行插值和下采样的方法
Jul 03 Python
Python数据抓取爬虫代理防封IP方法
Dec 23 Python
python把ipynb文件转换成pdf文件过程详解
Jul 09 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
Mar 09 Python
Python如何批量获取文件夹的大小并保存
Mar 31 Python
使用python实现微信小程序自动签到功能
Apr 27 Python
Python3利用openpyxl读写Excel文件的方法实例
Feb 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模块 Memcached功能多于Memcache
2011/06/14 PHP
PHP实现下载功能的代码
2012/09/29 PHP
Memcached常用命令以及使用说明详解
2013/06/27 PHP
Php无限级栏目分类读取的实现代码
2014/02/19 PHP
浅谈Laravel核心解读之Console内核
2018/12/02 PHP
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
了解一点js的Eval函数
2012/07/26 Javascript
javascript 获取模态窗口的滚动位置代码
2013/08/06 Javascript
js实现点小图看大图效果的思路及示例代码
2013/10/28 Javascript
window.onload和$(function(){})的区别介绍
2013/10/30 Javascript
jquery 获取dom固定元素 添加样式的简单实例
2014/02/04 Javascript
JavaScript表单通过正则表达式验证电话号码
2014/03/14 Javascript
分享10个原生JavaScript技巧
2015/04/20 Javascript
学习JavaScript设计模式之策略模式
2016/01/12 Javascript
WEB前端实现裁剪上传图片功能
2016/10/17 Javascript
常用原生js自定义函数总结
2016/11/20 Javascript
微信小程序之仿微信漂流瓶实例
2016/12/09 Javascript
基于Angular.js实现的触摸滑动动画实例代码
2017/02/19 Javascript
微信小程序实现移动端滑动分页效果(ajax)
2017/06/13 Javascript
vue将时间戳转换成自定义时间格式的方法
2018/03/02 Javascript
webpack中的热刷新与热加载的区别
2018/04/09 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
2018/06/14 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
改变layer confirm弹窗按钮的颜色方法
2019/09/12 Javascript
Python中atexit模块的基本使用示例
2015/07/08 Python
python2.7 mayavi 安装图文教程(推荐)
2017/06/22 Python
Flask框架web开发之零基础入门
2018/12/10 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
pandas数据筛选和csv操作的实现方法
2019/07/02 Python
ORM Django 终端打印 SQL 语句实现解析
2019/08/09 Python
Python异步编程之协程任务的调度操作实例分析
2020/02/01 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
2020/03/28 Python
奢华时尚的独特视角:La Garçonne
2018/06/07 全球购物
水上运动奥特莱斯:Wasterports Outlet
2018/08/08 全球购物
使用Springboot实现健身房管理系统
2021/07/01 Java/Android