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实现合并两个数组的方法
May 16 Python
Python实现的简单dns查询功能示例
May 24 Python
python基于ID3思想的决策树
Jan 03 Python
TensorFlow神经网络优化策略学习
Mar 09 Python
Python发送http请求解析返回json的实例
Mar 26 Python
python如何求解两数的最大公约数
Sep 27 Python
浅谈django的render函数的参数问题
Oct 16 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
Dec 24 Python
Python时间和字符串转换操作实例分析
Mar 16 Python
Pytorch加载部分预训练模型的参数实例
Aug 18 Python
用pytorch的nn.Module构造简单全链接层实例
Jan 14 Python
Python TypeError: ‘float‘ object is not subscriptable错误解决
Dec 24 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与javascript实现变量交互的示例代码
2013/07/23 PHP
PHP中执行cmd命令的方法
2014/10/11 PHP
PHP循环遍历数组的3种方法list()、each()和while总结
2014/11/19 PHP
php判断当前操作系统类型
2015/10/28 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
2016/11/20 PHP
PHP实现读取文件夹及批量重命名文件操作示例
2019/04/15 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
jquery中通过过滤器获取表单元素的实现代码
2011/07/05 Javascript
JavaScript+CSS控制打印格式示例介绍
2014/01/07 Javascript
JQuery中节点遍历方法实例
2015/05/18 Javascript
移除AngularJS下URL中的#字符的方法
2015/06/19 Javascript
页面内容排序插件jSort使用方法
2015/10/10 Javascript
Jquery和Js获得元素标签名称的方法总结
2016/10/08 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
2017/09/11 Javascript
react中fetch之cors跨域请求的实现方法
2018/03/14 Javascript
vue :src 文件路径错误问题的解决方法
2018/05/15 Javascript
js中位运算的运用实例分析
2018/12/11 Javascript
小程序input数据双向绑定实现方法
2019/10/17 Javascript
vue vant Area组件使用详解
2019/12/09 Javascript
微信小程序 flexbox layout快速实现基本布局的解决方案
2020/03/24 Javascript
js用正则表达式筛选年月日的实例方法
2021/01/04 Javascript
[01:14:31]Secret vs VG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
详解Python的Django框架中inclusion_tag的使用
2015/07/21 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
2016/04/27 Python
Python中装饰器高级用法详解
2017/12/25 Python
Windows 7下Python Web环境搭建图文教程
2018/03/20 Python
python3基于TCP实现CS架构文件传输
2018/07/28 Python
详解python pandas 分组统计的方法
2019/07/30 Python
Pytorch mask_select 函数的用法详解
2020/02/18 Python
python两个list[]相加的实现方法
2020/09/23 Python
西班牙网上书店:Casa del Libro
2016/11/01 全球购物
Missguided美国官网:英国时尚品牌
2018/01/18 全球购物
大二自我鉴定范文
2013/10/05 职场文书
仓库管理专业个人自我评价范文
2013/11/11 职场文书
教师对照四风自我剖析材料
2014/09/30 职场文书
Python网络编程之ZeroMQ知识总结
2021/04/25 Python