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中的多线程实例教程
Aug 27 Python
采用Psyco实现python执行速度提高到与编译语言一样的水平
Oct 11 Python
Python中的装饰器用法详解
Jan 14 Python
Python面向对象编程中的类和对象学习教程
Mar 30 Python
python脚本替换指定行实现步骤
Jul 11 Python
Python实现的多项式拟合功能示例【基于matplotlib】
May 15 Python
numpy中矩阵合并的实例
Jun 15 Python
Python实现重建二叉树的三种方法详解
Jun 23 Python
Python获取、格式化当前时间日期的方法
Feb 10 Python
使用Python发现隐藏的wifi
Mar 04 Python
详解tf.device()指定tensorflow运行的GPU或CPU设备实现
Feb 20 Python
Python列表删除重复元素与图像相似度判断及删除实例代码
May 07 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去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
PHP设计模式之解释器模式的深入解析
2013/06/13 PHP
PHP四舍五入、取整、round函数使用示例
2015/02/06 PHP
PHP 7.1新特性的汇总介绍
2016/12/16 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
2020/07/08 PHP
javascript removeChild 使用注意事项
2009/04/11 Javascript
JavaScript 学习笔记(十四) 正则表达式
2010/01/22 Javascript
JavaScript中的property和attribute介绍
2011/12/26 Javascript
使用js检测浏览器是否支持html5中的video标签的方法
2014/03/12 Javascript
js获取指定日期周数以及星期几的小例子
2014/06/27 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
2014/10/20 Javascript
js实现漂浮回顶部按钮实例
2015/05/06 Javascript
JavaScript简单修改窗口大小的方法
2015/08/03 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
BootStrap入门教程(二)之固定的内置样式
2016/09/19 Javascript
angular实现IM聊天图片发送实例
2017/05/08 Javascript
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
2017/09/22 jQuery
JS实现的冒泡排序,快速排序,插入排序算法示例
2019/03/02 Javascript
JavaScript中Dom操作实例详解
2019/07/08 Javascript
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
jQuery实现动态操作table行
2020/11/23 jQuery
[03:31]DOTA2英雄基础教程 大地之灵
2013/12/17 DOTA
[48:47]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[01:29:17]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
Python构建XML树结构的方法示例
2017/06/30 Python
Python判断文件或文件夹是否存在的三种方法
2017/07/27 Python
如何基于Python实现自动扫雷
2020/01/06 Python
如何在Canvas中添加事件的方法示例
2019/05/21 HTML / CSS
迪卡侬比利时官网:Decathlon比利时
2019/12/28 全球购物
HR喜欢的自荐信格式
2013/10/08 职场文书
美丽人生观后感
2015/06/03 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书
高一作文之暖冬
2019/11/09 职场文书
nginx中proxy_pass各种用法详解
2021/11/07 Servers
JavaScript的Set数据结构详解
2022/02/18 Javascript