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的Tornado框架中session支持的实现代码
Aug 21 Python
Python正则表达式经典入门教程
May 22 Python
python实践项目之监控当前联网状态详情
May 23 Python
Python Pandas实现数据分组求平均值并填充nan的示例
Jul 04 Python
python yield和Generator函数用法详解
Feb 10 Python
jupyter notebook插入本地图片的实现
Apr 13 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
May 29 Python
如何卸载python插件
Jul 08 Python
Python3爬虫发送请求的知识点实例
Jul 30 Python
python爬虫使用requests发送post请求示例详解
Aug 05 Python
python如何绘制疫情图
Sep 16 Python
使用Pytorch实现two-head(多输出)模型的操作
May 28 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数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
CI框架简单邮件发送类实例
2016/05/18 PHP
ThinkPHP实现的rsa非对称加密类示例
2018/05/29 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
2007/04/12 Javascript
jquery 锁定弹出层实现代码
2010/02/23 Javascript
js怎么覆盖原有方法实现重写
2014/09/04 Javascript
JQuery实现简单的服务器轮询效果实例
2016/03/31 Javascript
基于BootStrap Metronic开发框架经验小结【五】Bootstrap File Input文件上传插件的用法详解
2016/05/12 Javascript
在windows上用nodejs搭建静态文件服务器的简单方法
2016/08/11 NodeJs
微信小程序三级联动地址选择器的实例代码
2017/07/12 Javascript
Nodejs调用WebService的示例代码
2017/09/29 NodeJs
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
Python、Javascript中的闭包比较
2015/02/04 Python
Python 3中print函数的使用方法总结
2017/08/08 Python
Anaconda多环境多版本python配置操作方法
2017/09/12 Python
Python中的 enum 模块源码详析
2019/01/09 Python
Pycharm如何打断点的方法步骤
2019/06/13 Python
Django实现auth模块下的登录注册与注销功能
2019/10/10 Python
python matplotlib中的subplot函数使用详解
2020/01/19 Python
Python实现Appium端口检测与释放的实现
2020/12/31 Python
简单整理HTML5的基本特性和语法
2016/02/18 HTML / CSS
Canvas实现贝赛尔曲线轨迹动画的示例代码
2019/04/25 HTML / CSS
html5 canvas手势解锁源码分享
2020/01/07 HTML / CSS
触发器(trigger)的功能都有哪些?写出一个触发器的例子
2012/09/17 面试题
村长贪污检举信
2014/04/04 职场文书
石油工程专业毕业生求职信
2014/04/13 职场文书
感恩老师演讲稿600字
2014/08/28 职场文书
公司租房协议书
2014/10/14 职场文书
关于五一放假的通知
2015/08/18 职场文书
《狼牙山五壮士》教学反思
2016/02/17 职场文书
小学语文教师竞聘演讲稿范文
2019/08/09 职场文书
导游词之山东八大关
2019/12/18 职场文书
spring 项目实现限流方法示例
2022/07/15 Java/Android
win10滚动条自动往上跑怎么办?win10滚动条自动往上跑的解决方法
2022/08/05 数码科技