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日志模块logging简介
Apr 13 Python
Python实现通过文件路径获取文件hash值的方法
Apr 29 Python
安装Python的教程-Windows
Jul 22 Python
Python实现运行其他程序的四种方式实例分析
Aug 17 Python
python实现朴素贝叶斯分类器
Mar 28 Python
10个Python小技巧你值得拥有
Sep 29 Python
解决每次打开pycharm直接进入项目的问题
Oct 28 Python
Django models filter筛选条件详解
Mar 16 Python
浅谈django 模型类使用save()方法的好处与注意事项
Mar 28 Python
Django-rest-framework中过滤器的定制实例
Apr 01 Python
Python函数的迭代器与生成器的示例代码
Jun 18 Python
Python&Matlab实现灰狼优化算法的示例代码
Mar 21 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怎样用正则抓取页面中的网址
2016/08/09 PHP
PHP中利用sleep函数实现定时执行功能实现代码
2016/08/25 PHP
PHP中define() 与 const定义常量的区别详解
2019/06/25 PHP
Highslide.js是一款基于js实现的网页中图片展示插件
2020/03/30 Javascript
JavaScript 应用类库代码
2008/06/02 Javascript
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
js 验证身份证信息有效性
2014/03/28 Javascript
自己用jQuery写了一个图片的马赛克消失效果
2014/05/04 Javascript
JavaScript使用focus()设置焦点失败的解决方法
2014/09/03 Javascript
使用node.js 制作网站前台后台
2014/11/13 Javascript
JS控制网页动态生成任意行列数表格的方法
2015/03/09 Javascript
第十章之巨幕页头缩略图与警告框组件
2016/04/25 Javascript
Javascript实现页面滚动时导航智能定位
2017/05/06 Javascript
关于Angular2 + node接口调试的解决方案
2017/05/28 Javascript
基于vue2框架的机器人自动回复mini-project实例代码
2017/06/13 Javascript
JS 验证密码 不能为空,必须含有数字、字母、特殊字符,长度在8-12位
2017/06/21 Javascript
深入浅析JSONAPI在PHP中的应用
2017/12/24 Javascript
Angular5中状态管理的实现
2018/09/03 Javascript
NVM安装nodejs的方法实用步骤
2019/01/16 NodeJs
JavaScript缓动动画函数的封装方法
2020/11/25 Javascript
node使用async_hooks模块进行请求追踪
2021/01/28 Javascript
[31:55]完美世界DOTA2联赛循环赛 IO vs GXR BO2第一场 11.04
2020/11/05 DOTA
Python守护进程(daemon)代码实例
2015/03/06 Python
python matplotlib画图库学习绘制常用的图
2019/03/19 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
Pytorch实现LSTM和GRU示例
2020/01/14 Python
Python 捕获代码中所有异常的方法
2020/08/03 Python
Python使用Turtle模块绘制国旗的方法示例
2021/02/28 Python
C/C++程序员常见面试题二
2015/11/19 面试题
abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
2012/10/15 面试题
教师自我评价范例
2013/09/24 职场文书
CSS实现多个元素在盒子内两端对齐效果
2021/03/30 HTML / CSS
vue2实现provide inject传递响应式
2021/05/21 Vue.js
MySQL 使用事件(Events)完成计划任务
2021/05/24 MySQL
实现一个简单得数据响应系统
2021/11/11 Javascript
mysql全面解析json/数组
2022/07/07 MySQL