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 装饰器功能以及函数参数使用介绍
Jan 27 Python
Python时区设置方法与pytz查询时区教程
Nov 27 Python
Python学习笔记之常用函数及说明
May 23 Python
python实现从字符串中找出字符1的位置以及个数的方法
Aug 25 Python
Python实现霍夫圆和椭圆变换代码详解
Jan 12 Python
使用Django和Python创建Json response的方法
Mar 26 Python
python对日志进行处理的实例代码
Oct 06 Python
利用Python将数值型特征进行离散化操作的方法
Nov 06 Python
python命令行参数用法实例分析
Jun 25 Python
python 根据字典的键值进行排序的方法
Jul 24 Python
PyCharm第一次安装及使用教程
Jan 08 Python
解决python3中os.popen()出错的问题
Nov 19 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测试程序运行时间的类
2012/02/05 PHP
php实现快速排序的三种方法分享
2014/03/12 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
php装饰者模式简单应用案例分析
2019/10/23 PHP
javascript 正则表达式相关应介绍
2012/11/27 Javascript
js算法中的排序、数组去重详细概述
2013/10/14 Javascript
jqplot通过ajax动态画折线图的方法及思路
2013/12/08 Javascript
JQuery教学之性能优化
2014/05/14 Javascript
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
javascript+canvas制作九宫格小程序
2014/12/28 Javascript
JavaScript面试题(指针、帽子和女朋友)
2016/11/23 Javascript
elementui的默认样式修改方法
2018/02/23 Javascript
jQuery.validate.js表单验证插件的使用代码详解
2018/10/22 jQuery
优雅的使用javascript递归画一棵结构树示例代码
2019/09/22 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
[02:24]DOTA2痛苦女王 英雄基础教程
2013/11/26 DOTA
python超简单解决约瑟夫环问题
2015/05/12 Python
Python中list列表的一些进阶使用方法介绍
2015/08/15 Python
pandas数值计算与排序方法
2018/04/12 Python
详解Python中pandas的安装操作说明(傻瓜版)
2019/04/08 Python
python基于SMTP协议发送邮件
2019/05/31 Python
Django中间件基础用法详解
2019/07/18 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
2019/08/07 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
2020/01/07 Python
django rest framework serializers序列化实例
2020/05/13 Python
美国男士西装打折店:Jos. A. Bank
2017/11/13 全球购物
企业优秀员工事迹材料
2014/05/28 职场文书
机电一体化专业毕业生自荐信
2014/06/19 职场文书
民事诉讼代理委托书
2014/10/08 职场文书
社区学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
医院科室评语
2015/01/04 职场文书
赔偿协议书怎么写
2015/01/28 职场文书
公司慰问信范文
2015/03/23 职场文书
2015年个人审计工作总结
2015/04/07 职场文书
TV动画《八十龟酱观察日记》第四季宣传PV公布
2022/04/06 日漫
Android自定义双向滑动控件
2022/04/19 Java/Android