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 29 Python
Python 多进程并发操作中进程池Pool的实例
Nov 01 Python
Python实现程序判断季节的代码示例
Jan 28 Python
对pandas处理json数据的方法详解
Feb 08 Python
python匿名函数的使用方法解析
Oct 10 Python
django ajax发送post请求的两种方法
Jan 05 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
Feb 28 Python
python简单的三元一次方程求解实例
Apr 02 Python
python实现斗地主分牌洗牌
Jun 22 Python
PyTorch实现重写/改写Dataset并载入Dataloader
Jul 14 Python
python实现mask矩阵示例(根据列表所给元素)
Jul 30 Python
Python中Selenium对Cookie的操作方法
Jul 09 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
世界第一个无线广播电台 KDKA
2021/03/01 无线电
PHP cron中的批处理
2008/09/16 PHP
PHP explode()函数用法、切分字符串
2012/10/03 PHP
php给图片添加文字水印方法汇总
2015/08/27 PHP
轻松掌握php设计模式之访问者模式
2016/09/23 PHP
PHP自定义错误用法示例
2016/09/28 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
jQuery对象和DOM对象的相互转化实现代码
2010/03/02 Javascript
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
2011/02/25 Javascript
基于jQuery的简单九宫格实现代码
2012/08/09 Javascript
包含中国城市的javascript对象实例
2015/08/03 Javascript
JS使用eval()动态创建变量的方法
2016/06/03 Javascript
微信小程序 swiper组件轮播图详解及实例
2016/11/16 Javascript
微信小程序日期时间选择器使用方法
2018/02/01 Javascript
Javascript通过控制类名更改样式
2019/05/24 Javascript
vue 插件的方法代码详解
2019/06/06 Javascript
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
python计算方程式根的方法
2015/05/07 Python
bpython 功能强大的Python shell
2016/02/16 Python
python3 property装饰器实现原理与用法示例
2019/05/15 Python
python 实现查找文件并输出满足某一条件的数据项方法
2019/06/12 Python
python pygame实现五子棋小游戏
2020/10/26 Python
Python sublime安装及配置过程详解
2020/06/29 Python
让ie浏览器成为支持html5的浏览器的解决方法(使用html5shiv)
2014/04/08 HTML / CSS
Html5 FileReader实现即时上传图片功能实例代码
2014/09/01 HTML / CSS
马来西亚太阳镜、眼镜和隐形眼镜网上商店:Focus Point
2018/12/13 全球购物
Linux操作面试题
2015/02/11 面试题
旅游项目开发策划书
2014/01/18 职场文书
大学生学习2014年全国两会心得体会
2014/03/12 职场文书
经典英文广告词
2014/03/18 职场文书
服装设计师求职信
2014/06/04 职场文书
2016护理专业求职自荐书
2016/01/28 职场文书
校园文化艺术节开幕词
2016/03/04 职场文书
导游词之凤凰古城
2019/10/22 职场文书
Spring Boot 底层原理基础深度解析
2022/04/03 Java/Android
Redis主从复制操作和配置详情
2022/09/23 Redis