使用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实现ID3决策树算法
Dec 20 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
Apr 12 Python
Gauss-Seidel迭代算法的Python实现详解
Jun 29 Python
django mysql数据库及图片上传接口详解
Jul 18 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
Aug 27 Python
Python多线程获取返回值代码实例
Feb 17 Python
Python读取表格类型文件代码实例
Feb 17 Python
Python集成开发工具Pycharm的安装和使用详解
Mar 18 Python
Python调用shell命令常用方法(4种)
May 11 Python
Pycharm连接gitlab实现过程图解
Sep 01 Python
python实现按日期归档文件
Jan 30 Python
Django项目如何正确配置日志(logging)
Apr 29 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
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
PHP 一个比较完善的简单文件上传
2010/03/25 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
2014/12/15 PHP
PHP快速推送微信模板消息
2017/04/14 PHP
JavaScript 学习笔记(十四) 正则表达式
2010/01/22 Javascript
JS 表单验证大全
2011/11/23 Javascript
javascript分页代码实例分享(js分页)
2013/12/13 Javascript
基于JavaScript实现定时跳转到指定页面
2016/01/01 Javascript
jQuery ready()和onload的加载耗时分析
2016/09/08 Javascript
jQuery向父辈遍历的简单方法
2016/09/18 Javascript
使用微信小程序开发前端【快速入门】
2016/12/05 Javascript
Angular实现跨域(搜索框的下拉列表)
2017/02/16 Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
2017/06/19 Javascript
浅谈原型对象的常用开发模式
2017/07/22 Javascript
如何利用@angular/cli V6.0直接开发PWA应用详解
2018/05/06 Javascript
解决ng-repeat产生的ng-model中取不到值的问题
2018/10/02 Javascript
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
Vue实现表格批量审核功能实例代码
2019/05/28 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
2020/04/17 Javascript
Python常用算法学习基础教程
2017/04/13 Python
详谈python3中用for循环删除列表中元素的坑
2018/04/19 Python
Pycharm使用之设置代码字体大小和颜色主题的教程
2019/07/12 Python
Django实现文件上传和下载功能
2019/10/06 Python
Python利用for循环打印星号三角形的案例
2020/04/12 Python
基于Python绘制个人足迹地图
2020/06/01 Python
css3中less实现文字长阴影(long shadow)
2020/04/24 HTML / CSS
2014年圣诞节倒计时网页的制作过程
2014/12/05 HTML / CSS
华为旗下电子商务平台:华为商城
2016/08/06 全球购物
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
小学运动会口号
2014/06/07 职场文书
工厂仓管员岗位职责范本
2014/07/17 职场文书
买房子个人收入证明
2014/10/12 职场文书
师范生教育见习总结
2015/06/23 职场文书
拔河比赛新闻稿
2015/07/17 职场文书
赞助商致辞
2015/07/30 职场文书
Axios代理配置及封装响应拦截处理方式
2022/04/07 Vue.js