python多项式拟合之np.polyfit 和 np.polyld详解


Posted in Python onFebruary 18, 2020

python数据拟合主要可采用numpy库,库的安装可直接用pip install numpy等。

1. 原始数据:假如要拟合的数据yyy来自sin函数,np.sin

import numpy as np
import matplotlib.pyplot as plt

xxx = np.arange(0, 1000) # x值,此时表示弧度
yyy = np.sin(xxx*np.pi/180) #函数值,转化成度

2. 测试不同阶的多项式,例如7阶多项式拟合,使用np.polyfit拟合,np.polyld得到多项式系数

z1 = np.polyfit(xxx, yyy, 7) # 用7次多项式拟合,可改变多项式阶数;
p1 = np.poly1d(z1) #得到多项式系数,按照阶数从高到低排列
print(p1) #显示多项式

3. 求对应xxx的各项拟合函数值

yvals=p1(xxx) # 可直接使用yvals=np.polyval(z1,xxx)

4. 绘图如下

plt.plot(xxx, yyy, '*',label='original values')
plt.plot(xxx, yvals, 'r',label='polyfit values')
plt.xlabel('x axis')
plt.ylabel('y axis')
plt.legend(loc=4) # 指定legend在图中的位置,类似象限的位置
plt.title('polyfitting')
plt.show()

5. np.polyfit函数:采用的是最小二次拟合,numpy.polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False),前三个参数是必须的

官方文档:https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.polyfit.html

6. np.polyld函数:得到多项式系数,主要有三个参数

A one-dimensional polynomial class.

  A convenience class, used to encapsulate "natural" operations on
  polynomials so that said operations may take on their customary
  form in code (see Examples).

  Parameters
  ----------
  c_or_r : array_like
    The polynomial's coefficients, in decreasing powers, or if
    the value of the second parameter is True, the polynomial's
    roots (values where the polynomial evaluates to 0). For example,
    ``poly1d([1, 2, 3])`` returns an object that represents
    :math:`x^2 + 2x + 3`, whereas ``poly1d([1, 2, 3], True)`` returns
    one that represents :math:`(x-1)(x-2)(x-3) = x^3 - 6x^2 + 11x -6`.
  r : bool, optional
    If True, `c_or_r` specifies the polynomial's roots; the default
    is False.
  variable : str, optional
    Changes the variable used when printing `p` from `x` to `variable`
    (see Examples).

参数1表示:在没有参数2(也就是参数2默认False时),参数1是一个数组形式,且表示从高到低的多项式系数项,例如参数1为[4,5,6]表示:

参数2表示:为True时,表示将参数1中的参数作为根来形成多项式,即参数1为[4,5,6]时表示:(x-4)(x-5)(x-6)=0,也就是:

参数3表示:换参数标识,用惯了x,可以用 t,s之类的

用法:

1. 直接进行运算,例如多项式的平方,分别得到

xx=np.poly1d([1,2,3])
print(xx)
yy=xx**2 #求平方,或者用 xx * xx
print(yy)

2. 求值:

yy(1) = 36

3. 求根:即等式为0时的未知数值

yy.r

4. 得到系数形成数组:

yy.c 为:array([ 1, 4, 10, 12, 9])

5. 返回最高次幂数:

yy.order = 4

6. 返回系数:

yy[0] —— 表示幂为0的系数

yy[1] —— 表示幂为1的系数

总结

以上所述是小编给大家介绍的python多项式拟合之np.polyfit 和 np.polyld详解,希望对大家有所帮助,也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
将图片文件嵌入到wxpython代码中的实现方法
Aug 11 Python
python实现基于SVM手写数字识别功能
May 27 Python
python读取文本绘制动态速度曲线
Jun 21 Python
python中cPickle类使用方法详解
Aug 27 Python
Python远程视频监控程序的实例代码
May 05 Python
python绘制多个子图的实例
Jul 07 Python
python使用if语句实现一个猜拳游戏详解
Aug 27 Python
详解Python3定时器任务代码
Sep 23 Python
Python warning警告出现的原因及忽略方法
Jan 31 Python
Python计算指定日期是今年的第几天(三种方法)
Mar 26 Python
python爬虫用mongodb的理由
Jul 28 Python
python 常用日期处理-- datetime 模块的使用
Sep 02 Python
tensorflow 分类损失函数使用小记
Feb 18 #Python
python如何把字符串类型list转换成list
Feb 18 #Python
python计算波峰波谷值的方法(极值点)
Feb 18 #Python
Python表达式的优先级详解
Feb 18 #Python
使用Tkinter制作信息提示框
Feb 18 #Python
Python中import导入不同目录的模块方法详解
Feb 18 #Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
Feb 18 #Python
You might like
通俗易懂的php防注入代码
2010/04/07 PHP
用PHP实现递归循环每一个目录
2010/08/08 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
PHP生成条形码大揭秘
2015/09/24 PHP
利用PHP实现一个简单的用户登记表示例
2017/04/25 PHP
基于jQuery的可用于选项卡及幻灯的切换插件
2011/03/28 Javascript
jquery中通过过滤器获取表单元素的实现代码
2011/07/05 Javascript
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
javascript定义类和类的实现实例详解
2015/12/01 Javascript
Bootstrap 粘页脚效果
2016/03/28 Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
2016/05/09 Javascript
使用jQuery实现WordPress中的Ctrl+Enter和@评论回复
2016/05/21 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
javascript中new Array()和var arr=[]用法区别
2017/12/01 Javascript
js 实现复选框只能选择一项的示例代码
2018/01/23 Javascript
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
python线程池的实现实例
2013/11/18 Python
python计数排序和基数排序算法实例
2014/04/25 Python
Python加pyGame实现的简单拼图游戏实例
2015/05/15 Python
Python常见格式化字符串方法小结【百分号与format方法】
2016/09/18 Python
Python使用try except处理程序异常的三种常用方法分析
2018/09/05 Python
浅谈解除装饰器作用(python3新增)
2018/10/15 Python
pygame游戏之旅 按钮上添加文字的方法
2018/11/21 Python
Python数据库小程序源代码
2019/09/15 Python
logging level级别介绍
2020/02/21 Python
基于python实现模拟数据结构模型
2020/06/12 Python
西班牙香水和化妆品网上商店:Douglas
2017/10/29 全球购物
英国领先品牌手动工具和电动工具供应商:Tooled Up
2018/11/24 全球购物
实体的生命周期
2013/08/31 面试题
学雷锋标兵事迹材料
2014/08/18 职场文书
公司搬迁通知
2015/04/20 职场文书
优秀团员主要事迹范文
2015/11/05 职场文书
《灰雀》教学反思
2016/02/19 职场文书
详解php中流行的rpc框架
2021/05/29 PHP
使用vue判断当前环境是安卓还是IOS
2022/04/12 Vue.js