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根据出生日期返回年龄的方法
Mar 26 Python
Python实现的数据结构与算法之快速排序详解
Apr 22 Python
详解Django通用视图中的函数包装
Jul 21 Python
python文件与目录操作实例详解
Feb 22 Python
对Django中的权限和分组管理实例讲解
Aug 16 Python
Python使用matplotlib绘制Logistic曲线操作示例
Nov 28 Python
python 实现保存最新的三份文件,其余的都删掉
Dec 22 Python
python使用协程实现并发操作的方法详解
Dec 27 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
Jun 11 Python
Python3爬虫关于识别点触点选验证码的实例讲解
Jul 30 Python
python 对一幅灰度图像进行直方图均衡化
Oct 27 Python
Python如何批量生成和调用变量
Nov 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
批量修改RAR文件注释的php代码
2010/11/20 PHP
批量去除PHP文件中bom的PHP代码
2012/03/13 PHP
使用PHP计算两个路径的相对路径
2013/06/14 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
基于thinkphp6.0的success、error实现方法
2019/11/05 PHP
通过event对象的fromElement属性解决热区设置主实体的一个bug
2008/12/22 Javascript
js URL参数的拼接方法比较
2012/02/15 Javascript
jquery简单的拖动效果实现原理及示例
2013/07/26 Javascript
JS获取地址栏参数的小例子
2013/08/23 Javascript
JavaScript中的定时器之Item23的合理使用
2015/10/30 Javascript
JQuery点击行tr实现checkBox选中的简单实例
2016/05/26 Javascript
mvc中form表单提交的三种方式(推荐)
2016/08/10 Javascript
div实现自适应高度的textarea实现angular双向绑定
2017/01/08 Javascript
移动端基础事件总结与应用
2017/01/12 Javascript
基于Vue 实现一个中规中矩loading组件
2019/04/03 Javascript
uniapp与webview之间的相互传值的实现
2020/06/29 Javascript
jQuery实现简单飞机大战
2020/07/05 jQuery
python连接MySQL数据库实例分析
2015/05/12 Python
简单实现python爬虫功能
2015/12/31 Python
Python使用pyodbc访问数据库操作方法详解
2018/07/05 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
TensorFlow tf.nn.conv2d实现卷积的方式
2020/01/03 Python
Python 实现网课实时监控自动签到、打卡功能
2020/03/12 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
解决Python 写文件报错TypeError的问题
2020/10/23 Python
Artist Guitars新西兰:乐器在线商店
2017/09/17 全球购物
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
俄罗斯EPL钻石珠宝店:ЭПЛ
2019/10/22 全球购物
办公室文秘自我鉴定
2013/09/21 职场文书
艺术设计专业个人求职信
2013/09/21 职场文书
入团者的自我评价分享
2013/12/02 职场文书
责任书格式
2015/01/29 职场文书
2015年度女工工作总结
2015/10/22 职场文书
深度学习tensorflow基础mnist
2021/04/14 Python
MIME类型中application/xml与text/xml的区别介绍
2022/01/18 HTML / CSS
星际争霸:毕姥爷vs解冻01
2022/04/01 星际争霸