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 相关文章推荐
Python中的二叉树查找算法模块使用指南
Jul 04 Python
wxPython窗口的继承机制实例分析
Sep 28 Python
python实现通过代理服务器访问远程url的方法
Apr 29 Python
python使用pil生成图片验证码的方法
May 08 Python
Python爬虫辅助利器PyQuery模块的安装使用攻略
Apr 24 Python
qpython3 读取安卓lastpass Cookies
Jun 19 Python
django批量导入xml数据
Oct 16 Python
pandas对指定列进行填充的方法
Apr 11 Python
pandas Dataframe行列读取的实例
Jun 08 Python
Python操作redis实例小结【String、Hash、List、Set等】
May 16 Python
jupyter notebook 中输出pyecharts图实例
Apr 23 Python
Python编写万花尺图案实例
Jan 03 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
虹吸式咖啡探讨–研磨
2021/03/03 冲泡冲煮
php+mysqli实现批量执行插入、更新及删除数据的方法
2015/01/29 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
2019/01/17 PHP
tp5.1 框架join方法用法实例分析
2020/05/26 PHP
jQuery拖动图片删除示例
2013/05/10 Javascript
基于OO的动画附加插件,可以实现弹跳、渐隐等动画效果 分享
2013/06/24 Javascript
jQuery中eq()方法用法实例
2015/01/05 Javascript
Javascript基础教程之数据类型 (布尔型 Boolean)
2015/01/18 Javascript
jQuery判断指定id的对象是否存在的方法
2015/05/22 Javascript
基于jQuery全屏焦点图左右切换插件responsiveslides
2015/09/07 Javascript
JavaScript简单获取系统当前时间完整示例
2016/08/02 Javascript
JS之相等操作符详解
2016/09/13 Javascript
Angularjs中使用指令绑定点击事件的方法
2017/03/30 Javascript
JS判断时间段的实现代码
2017/06/14 Javascript
jQuery+HTML5实现WebGL高性能烟花绽放动画效果【附demo源码下载】
2017/08/18 jQuery
基于iScroll实现内容滚动效果
2018/03/21 Javascript
vue的token刷新处理的方法
2018/07/17 Javascript
element-ui 关于获取select 的label值方法
2018/08/24 Javascript
JS拖拽排序插件Sortable.js用法实例分析
2019/02/20 Javascript
vue路由传参页面刷新参数丢失问题解决方案
2019/10/08 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
[04:28]2014DOTA2国际邀请赛 采访小兔子LGD挺进钥匙体育馆
2014/07/14 DOTA
用Python实现一个简单的多线程TCP服务器的教程
2015/05/05 Python
谈谈Python进行验证码识别的一些想法
2016/01/25 Python
Python类的动态修改的实例方法
2017/03/24 Python
使用XML库的方式,实现RPC通信的方法(推荐)
2017/06/14 Python
python bmp转换为jpg 并删除原图的方法
2018/10/25 Python
python opencv pytesseract 验证码识别的实现
2020/08/28 Python
亚洲最大的眼镜批发商和零售商之一:Glasseslit
2018/10/08 全球购物
银河香水:Galaxy Perfume
2019/03/25 全球购物
岗位廉政承诺书
2014/03/27 职场文书
普通党员对照检查材料
2014/08/28 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书
2019年销售人员的职业生涯规划书
2019/03/25 职场文书
基于python的matplotlib制作双Y轴图
2021/04/20 Python