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 文件操作技巧(File operation) 实例代码分析
Aug 11 Python
Python实现感知器模型、两层神经网络
Dec 19 Python
详解Python核心对象类型字符串
Feb 11 Python
python使用Pycharm创建一个Django项目
Mar 05 Python
python 遍历目录(包括子目录)下所有文件的实例
Jul 11 Python
python实现自动网页截图并裁剪图片
Jul 30 Python
django DRF图片路径问题的解决方法
Sep 10 Python
python字典改变value值方法总结
Jun 21 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
Mar 24 Python
python将unicode和str互相转化的实现
May 11 Python
Python使用socketServer包搭建简易服务器过程详解
Jun 12 Python
浅谈python 类方法/静态方法
Sep 18 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
星际争霸 Starcraft 秘技补丁
2020/03/14 星际争霸
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
使用js声明数组,对象在jsp页面中(获得ajax得到json数据)
2013/11/05 Javascript
比较不错的JS/JQuery显示或隐藏文本的方法
2014/02/13 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
JavaScript中的类数组对象介绍
2014/12/30 Javascript
JS实用的动画弹出层效果实例
2015/05/05 Javascript
javascript限制文本框输入值类型的方法
2015/05/07 Javascript
jQuery插件Slider Revolution实现响应动画滑动图片切换效果
2015/06/05 Javascript
jQuery ajax提交Form表单实例(附demo源码)
2016/04/06 Javascript
详解Jquery Easyui的验证扩展
2017/01/09 Javascript
Bootstrap响应式导航由768px变成992px的实现代码
2017/06/15 Javascript
纯JavaScript实现实时反馈系统时间
2017/10/26 Javascript
vue .sync修饰符的使用详解
2018/06/15 Javascript
详解JSON Web Token 入门教程
2018/07/30 Javascript
快速解决处理后台返回json数据格式的问题
2018/08/07 Javascript
js限制input只能输入有效的数字(第一个不能是小数点)
2018/09/28 Javascript
vue实现微信分享链接添加动态参数的方法
2019/04/29 Javascript
JS中的函数与对象的创建方式
2019/05/12 Javascript
利用layer实现表单完美验证的方法
2019/09/26 Javascript
微信浏览器左上角返回按钮监听的实现
2020/03/04 Javascript
Vue Object 的变化侦测实现代码
2020/04/15 Javascript
[02:38]DOTA2亚洲邀请赛小组赛精彩集锦:Wings完美团击溃对手
2017/03/29 DOTA
python利用JMeter测试Tornado的多线程
2020/01/12 Python
记录模型训练时loss值的变化情况
2020/06/16 Python
python使用scapy模块实现ARP扫描的过程
2021/01/21 Python
方正Java笔试题
2014/07/03 面试题
汇源肾宝广告词
2014/03/20 职场文书
法制演讲稿
2014/09/10 职场文书
幼儿园感恩节活动方案
2014/10/06 职场文书
违反单位工作制度检讨书
2014/10/25 职场文书
2014社会治安综合治理工作总结
2014/12/04 职场文书
2014年财务个人工作总结
2014/12/08 职场文书
个人党性分析材料
2014/12/19 职场文书
python opencv人脸识别考勤系统的完整源码
2021/04/26 Python
JS + HTML 罗盘式时钟的实现
2021/05/21 Javascript