使用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函数式编程指南(一):函数式编程概述
Jun 24 Python
分享python数据统计的一些小技巧
Jul 21 Python
用python写扫雷游戏实例代码分享
May 27 Python
django+xadmin+djcelery实现后台管理定时任务
Aug 14 Python
Python算法的时间复杂度和空间复杂度(实例解析)
Nov 19 Python
Python编程快速上手——正则表达式查找功能案例分析
Feb 28 Python
解决python调用自己文件函数/执行函数找不到包问题
Jun 01 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
Jul 03 Python
Python基于Serializer实现字段验证及序列化
Nov 04 Python
Flask-SocketIO服务端安装及使用代码示例
Nov 26 Python
Python基础详解之邮件处理
Apr 28 Python
Python数据分析入门之教你怎么搭建环境
May 13 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统计目录下的文件总数及代码行数(去除注释及空行)
2011/01/17 PHP
使用php显示搜索引擎来的关键词
2014/02/13 PHP
php mysql like 实现多关键词搜索的方法
2016/10/29 PHP
Laravel源码解析之路由的使用和示例详解
2018/09/27 PHP
Display SQL Server Version Information
2007/06/21 Javascript
javascript学习笔记(一) 在html中使用javascript
2012/06/18 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
2013/12/16 Javascript
使用AngularJS和PHP的Laravel实现单页评论的方法
2015/06/19 Javascript
JavaScript中this详解
2015/09/01 Javascript
js密码强度检测
2016/01/07 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
2016/10/08 Javascript
微信小程序模版渲染详解
2018/01/26 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
2018/05/16 jQuery
解决vue的 v-for 循环中图片加载路径问题
2018/09/03 Javascript
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
基于ant design日期控件使用_仅月份的操作
2020/10/27 Javascript
[44:47]Ti4 循环赛第三日 iG vs NaVi
2014/07/12 DOTA
[48:32]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs VG
2018/04/01 DOTA
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
2015/05/22 Python
Python正则表达式分组概念与用法详解
2017/06/24 Python
使用python实现CGI环境搭建过程解析
2020/04/28 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
2020/05/22 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
2020/05/22 Python
详解Python中的编码问题(encoding与decode、str与bytes)
2020/09/30 Python
Python 利用Entrez库筛选下载PubMed文献摘要的示例
2020/11/24 Python
css3实现画半圆弧线的示例代码
2017/11/06 HTML / CSS
萨克斯第五大道的折扣店:Saks Fifth Avenue OFF 5TH
2016/08/25 全球购物
设计师家具购买和委托在线市场:Viyet
2016/11/16 全球购物
伦敦哈德森鞋:Hudson Shoes
2018/02/06 全球购物
英国最受信任的在线眼镜商之一:Fashion Eyewear
2019/10/31 全球购物
态度决定一切演讲稿
2014/05/20 职场文书
python 实现的截屏工具
2021/05/08 Python
SQL 尚未定义空闲 CPU 条件 - OnIdle 作业计划将不起任何作用
2021/06/30 SQL Server
在项目中使用redis做缓存的一些思路
2021/09/14 Redis
JavaScript实现简单拖拽效果
2021/09/15 Javascript
sqlserver连接错误之SQL评估期已过的问题解决
2022/03/23 SQL Server