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计数排序和基数排序算法实例
Apr 25 Python
python 打印出所有的对象/模块的属性(实例代码)
Sep 11 Python
教你用Python脚本快速为iOS10生成图标和截屏
Sep 22 Python
Python全排列操作实例分析
Jul 24 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
Sep 19 Python
python 对给定可迭代集合统计出现频率,并排序的方法
Oct 18 Python
Python实现 PS 图像调整中的亮度调整
Jun 28 Python
Python Django 页面上展示固定的页码数实现代码
Aug 21 Python
将python依赖包打包成window下可执行文件bat方式
Dec 26 Python
Django重设Admin密码过程解析
Feb 10 Python
Django-silk性能测试工具安装及使用解析
Nov 28 Python
分享Python获取本机IP地址的几种方法
Mar 17 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 函数使用方法与函数定义方法
2010/05/09 PHP
php中批量替换文件名的实现代码
2011/07/20 PHP
探讨各种PHP字符串函数的总结分析
2013/06/05 PHP
解析PHP中的正则表达式以及模式匹配
2013/06/19 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
PHP 数组遍历foreach语法结构及实例
2016/06/13 PHP
phpcms的分类名称和类别名称的调用
2017/01/05 PHP
JQuery 操作Javascript对象和数组的工具函数小结
2010/01/22 Javascript
js 中的switch表达式使用示例
2020/06/03 Javascript
分享一个自己动手写的jQuery分页插件
2014/08/28 Javascript
Javascript基础教程之比较操作符
2015/01/18 Javascript
jQuery实现文本展开收缩特效
2015/06/03 Javascript
理解Javascript的call、apply
2015/12/16 Javascript
javascript回到顶部特效
2016/07/30 Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
2017/05/24 Javascript
vue一步步实现alert功能
2017/07/05 Javascript
vue实现百度搜索功能
2020/12/28 Javascript
electron-vue开发环境内存泄漏问题汇总
2019/10/10 Javascript
[56:18]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
基于Python 装饰器装饰类中的方法实例
2018/04/21 Python
python中的数据结构比较
2019/05/13 Python
如何解决cmd运行python提示不是内部命令
2020/07/01 Python
基于HTML5+CSS3实现简单的时钟效果
2017/09/11 HTML / CSS
Fairyseason:为个人和批发商提供女装和配件
2017/03/01 全球购物
奇怪的鱼:Weird Fish
2018/03/18 全球购物
轻松制作精彩视频:Animoto
2018/09/19 全球购物
NOTINO英国:在线购买美容和香水
2020/02/25 全球购物
你常见到的runtime exception
2016/09/05 面试题
国贸专业的职业规划范文
2014/01/23 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书
基于Java的MathML转图片的方法(示例代码)
2021/06/23 Java/Android
Golang 链表的学习和使用
2022/04/19 Golang
win10更新失败无限重启解决方法
2022/04/19 数码科技
Go调用Rust方法及外部函数接口前置
2022/06/14 Golang