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机器学习之神经网络(一)
Dec 20 Python
tensorflow 使用flags定义命令行参数的方法
Apr 23 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
Jul 31 Python
Python字符串处理的8招秘籍(小结)
Aug 13 Python
Django之模板层的实现代码
Sep 09 Python
Python socket实现的文件下载器功能示例
Nov 15 Python
浅析Python3 pip换源问题
Jan 06 Python
Python3搭建http服务器的实现代码
Feb 11 Python
keras实现基于孪生网络的图片相似度计算方式
Jun 11 Python
Python爬虫教程知识点总结
Oct 19 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
Nov 27 Python
Python 找出英文单词列表(list)中最长单词链
Dec 14 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生成二维码
2015/08/10 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
2016/08/08 PHP
CL vs ForZe BO5 第五场 2.13
2021/03/10 DOTA
Prototype使用指南之ajax
2007/01/10 Javascript
extjs实现选择多表自定义查询功能 前台部分(ext源码)
2011/12/20 Javascript
Javascript对象中关于setTimeout和setInterval的this介绍
2012/07/21 Javascript
利用forever和pm2部署node.js项目过程
2017/05/10 Javascript
Vue cli 引入第三方JS和CSS的常用方法分享
2018/01/20 Javascript
解决Mac node版本升级失败的问题
2018/05/16 Javascript
webpack+vue-cil中proxyTable处理跨域的方法
2018/07/20 Javascript
webpack css加载和图片加载的方法示例
2018/09/11 Javascript
vue router导航守卫(router.beforeEach())的使用详解
2019/04/19 Javascript
小试小程序云开发(小结)
2019/06/06 Javascript
微信用户访问小程序的登录过程详解
2019/09/20 Javascript
vue中实现回车键登录功能
2020/02/19 Javascript
javascript canvas实现简易时钟例子
2020/09/05 Javascript
[01:06]DOTA2小知识课堂 Ep.01 TP出门不要忘记帮队友灌瓶哦
2019/12/05 DOTA
Python中常见的异常总结
2018/02/20 Python
Gauss-Seidel迭代算法的Python实现详解
2019/06/29 Python
python使用tomorrow实现多线程的例子
2019/07/20 Python
快速解决docker-py api版本不兼容的问题
2019/08/30 Python
django框架两个使用模板实例
2019/12/11 Python
Python PIL库图片灰化处理
2020/04/07 Python
Python用类实现扑克牌发牌的示例代码
2020/06/01 Python
python接口自动化框架实战
2020/12/23 Python
写出二分查找算法的两种实现
2013/05/13 面试题
自荐信的禁忌和要点
2013/10/15 职场文书
法律工作求职自荐信
2013/10/31 职场文书
护士岗前培训自我评鉴
2014/02/28 职场文书
各营销点岗位职责范本
2014/03/05 职场文书
求职信内容怎么写
2014/05/26 职场文书
出生医学证明书
2014/09/15 职场文书
2015年试用期工作总结
2014/12/12 职场文书
向雷锋同志学习倡议书
2015/04/27 职场文书
网聊搭讪开场白
2015/05/28 职场文书
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python