使用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 21 Python
Python中的rfind()方法使用详解
May 19 Python
详解 Python中LEGB和闭包及装饰器
Aug 03 Python
Python扩展内置类型详解
Mar 26 Python
浅谈pytorch和Numpy的区别以及相互转换方法
Jul 26 Python
Python图像处理之颜色的定义与使用分析
Jan 03 Python
Django项目中添加ldap登陆认证功能的实现
Apr 04 Python
Python实现制度转换(货币,温度,长度)
Jul 14 Python
详解python内置模块urllib
Sep 09 Python
如何基于Python爬虫爬取美团酒店信息
Nov 03 Python
OpenCV图像变换之傅里叶变换的一些应用
Jul 26 Python
总结三种用 Python 作为小程序后端的方式
May 02 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
11个PHP 分页脚本推荐
2011/08/15 PHP
php中常用的预定义变量小结
2012/05/09 PHP
php隐藏实际地址的文件下载方法
2015/04/18 PHP
PHP中header函数的用法及其注意事项详解
2016/06/13 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
2017/03/15 PHP
Laravel使用支付宝进行支付的示例代码
2017/08/16 PHP
javascript 动态添加表格行
2006/06/22 Javascript
javascript预览上传图片发现的问题的解决方法
2010/11/25 Javascript
jquery中的 $("#jb51")与document.getElementById("jb51") 的区别
2011/07/26 Javascript
关于JS数组追加数组采用push.apply的问题
2014/06/09 Javascript
在ASP.NET MVC项目中使用RequireJS库的用法示例
2016/02/15 Javascript
jquery 键盘事件的使用方法详解
2017/09/13 jQuery
js实现页面多个日期时间倒计时效果
2019/06/20 Javascript
vue开发中遇到的问题总结
2020/04/07 Javascript
vue中可编辑树状表格的实现代码
2020/10/31 Javascript
[32:56]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.11
2020/12/16 DOTA
巧用Python装饰器 免去调用父类构造函数的麻烦
2012/05/18 Python
pyqt4教程之widget使用示例分享
2014/03/07 Python
在Python中使用成员运算符的示例
2015/05/13 Python
Python决策树和随机森林算法实例详解
2018/01/30 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
2020/07/09 Python
Python 如何在字符串中插入变量
2020/08/01 Python
纯CSS3实现绘制各种图形实现代码详细整理
2012/12/26 HTML / CSS
CSS3盒子模型详解
2013/04/24 HTML / CSS
使用CSS3制作饼状旋转载入效果的实例
2015/06/23 HTML / CSS
HTML5地理定位实例
2014/10/15 HTML / CSS
2014年自我评价
2014/01/04 职场文书
行政助理工作职责范本
2014/03/04 职场文书
2014中考励志标语
2014/06/05 职场文书
主题团日活动总结
2014/06/25 职场文书
党支部承诺书
2015/01/20 职场文书
英语教师个人工作总结
2015/02/09 职场文书
2015年防灾减灾工作总结
2015/07/24 职场文书
高中生物教学反思
2016/02/20 职场文书
Python实现文本文件拆分写入到多个文本文件的方法
2021/04/18 Python
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS