【Python】Numpy处理多项式类Polynomial
文章目录
- 构造函数
- 求导和积分
- 求根和反演
- 采样与拟合
- 其他方法
构造函数
Numpy
中提供了多项式模块,里面封装了一些用以快速解决多项式问题的类和函数,其中最重要类的自然是Polynomial
,其构造函数为
class numpy.polynomial.polynomial.Polynomial(coef, domain=None, window=None, symbol='x')
其中coef
为多项式的系数,例如4+3x+2x2+x34+3x+2x^2+x^34+3x+2x2+x3可写为
from numpy.polynomial import polynomial as poly
p3 = poly.Polynomial(coef=[4,3,2,1])
print(p3)
# 输出为4.0 + 3.0 x**1 + 2.0 x**2 + 1.0 x**3
domian
为xxx的定义域,window
为定义域的放缩因子;symbol
为多项式的自变量符号,默认为x
。
求导和积分
Polynomial
支持简单的符号计算,比如可通过deriv(n)
求多项式的n
阶导数;通过integ(n)
可求n
阶积分。
>>> p3.deriv(1)
Polynomial([3., 4., 3.], domain=[-1., 1.], window=[-1., 1.])
>>> p3.deriv(3) # 3阶导数为6
Polynomial([6.], domain=[-1., 1.], window=[-1., 1.])
>>> p3.integ(2)
Polynomial([0. , 0. , 2. , 0.5 , 0.16666667, 0.05 ], domain=[-1., 1.], window=[-1., 1.])
求根和反演
roots
可用于求根,而fromroot
可根据根来生成多项式
rs = p3.roots()
print(rs)
# [-1.65062919+0.j
# -0.1746854 -1.54686889j
# -0.1746854 +1.54686889j]
pNew = p3.fromroots(rs)
print(pNew)
#(4.000000000000001-1.1102230246251565e-16j) +
#(3.0000000000000018+0j) x**1 + (1.9999999999999991+0j) x**2 + (1+0j) x**3
由于浮点计算会引入误差,所以fromroot
并不是严格意义上root
的逆过程,但这个误差是极小的。
采样与拟合
通过linspace
可以在定义域范围内对多项式进行采样,
import matplotlib.pyplot as plt
xs, ys = p3.linspace()
plt.plot(xs, ys)
plt.show()
效果为
linspace
有一个参数n
,表示在定义域范围内等间隔生成n
组x,yx,yx,y,默认为100。
Polynomial
类中最强大的函数非fit
莫属,其功能是基于最小二乘法的多项式拟合,定义为
Polynomial.fit(x, y, deg, domain=None, rcond=None, full=False, w=None, window=None, symbol='x')
其中domain
, window
, symbol
不必赘述,其中x,y
为待拟合多项式;deg
为多项式的阶数。rcond
表示截止误差。full
为False
时,只返回拟合系数,否则还返回拟合的标准差等。
>>> p3.fit(xs, ys, 3)
Polynomial([4., 3., 2., 1.], domain=[-1., 1.], window=[-1., 1.])
>>> p3.fit(xs, ys, 4)
Polynomial([ 4.0000000e+00, 3.0000000e+00, 2.0000000e+00, 1.0000000e+00,-9.6550042e-15], domain=[-1., 1.], window=[-1., 1.])
其他方法
degree
返回多项式的最高项次数,cutdeg
可以对多项式的次数做截断,例如
>>> p3.degree()
3
>>> p3.cutdeg(2)
Polynomial([4., 3., 2.], domain=[-1., 1.], window=[-1., 1.])
Polynomial
类提供了一些用于比较的函数,相当于是运算符重载的补充,包括
has_samecoef
has_samedomain
has_sametype
has_samewindow
其命名很直观,不必多言。
【Python】Numpy处理多项式类Polynomial相关推荐
- python numpy 随机构建类无向图邻接矩阵
不能保证能各个节点之间能完全走通,只是记录一下. import numpy as npdef structMatrix(n=11, low=1, high=10, num_base=10, num_m ...
- [Python] 多项式曲线拟合(Polynomial Curve Fitting)
多项式曲线拟合 Polynomial Curve Fitting 实验目标 实现过程 - Step 1 :生成观测集和目标函数 - Step 2 :比较不同阶数多项式的拟合效果 - Step 3 :通 ...
- pythonchar中的拟合方法_在python中利用numpy求解多项式以及多项式拟合的方法
构建一个二阶多项式:x^2 - 4x + 3 多项式求解 >>> p = np.poly1d([1,-4,3]) #二阶多项式系数 >>> p(0) #自变量为0时 ...
- python numpy 多项式函数 求导求根
python numpy 多项式函数 求导求根 """求出多项式的 导函数与根 """import numpy as np import m ...
- 【数据分析】使用numpy实现多项式的求导以及可视化
使用numpy函数的polyd()创建多项式:y=x^3+2x^2+3x+4并将该对象赋值给变量aPoly,求解该多项式的一阶导数bPoly和二阶导数cPoly.通过numpy的arange()函数创 ...
- dataframe,python,numpy 问题索引1
# 找出只有赌场数据的账户 gp=data.groupby(['查询账号','场景标签'],as_index=True) tj=gp.size().reset_index()按查询账号和场景标签分组并 ...
- python numpy np.lexsort()(使用键序列执行间接稳定排序)(具体没太搞懂区别?)
from numpy\core_multiarray_umath.py @array_function_from_c_func_and_dispatcher(_multiarray_umath.lex ...
- Python Numpy 笔记
这次机器学习的作业可以用第三方库了,果断抛弃 MATLAB 改用 Python 但是操作数组的 Numpy 之前一直没用过,今天先看看官方教程入个门 The Basics Numpy 中主要的对象是同 ...
- 高斯核函数python代码_单类SVM:SVDD
话接上文(SVM的简单推导),这篇文章我们来看单类SVM:SVDD.可能大家会觉得很奇怪,我们为什么需要单分类呢?有篇博客举了一个很有意思的例子. 花果山上的老猴子,一生阅猴无数,但是从来没有见过其它 ...
最新文章
- Coinbase宣布在以太坊经典上市前进行最终测试
- python下载软件-python下载工具
- 有云服务器还需要云虚拟主机吗,有云服务器还需要云虚拟主机吗
- SAP创建中国版免费在线课程openSAP
- C语言ATD1SC,2020-10-13_ATD(模数转换)模块介绍
- 创建SVN 本地服务器
- php copy array,ES6中Array.copyWithin()函数用法的详解
- SQL Server 之 在与SQLServer建立连接时出现与网络相关的或特定于实例的错误
- dede无法在这个位置找到head.html2,织梦搜索:DedeCMS 提示信息
- python read函数报错_python 使用read_csv读取 CSV 文件时报错
- Cocos2d-x移植Android 常见问题处理办法
- 老程序员如何避免沦落出局?
- 查找窗口隐藏了怎么办_百度地图这些不为人知的隐藏功能
- JAVA Number与Math类
- ubuntu安装libjasper.so.1,libpng12.so.0
- 《机器学习实战:基于Scikit-Learn、Keras和TensorFlow第2版》-学习笔记(1)
- Android--›键盘表情切换的终极解决方案(已重构)
- 使用shell脚本删除rabbitMq的exchange
- 交警对开车人的“真言”
- 加拿大计算机工程研究生,加拿大维多利亚大学电子与计算机工程系副教授诚招硕士研究生 - 导师招生 - 小木虫 - 学术 科研 互动社区...
热门文章
- 计算机技术应用读书心得,《多媒体环境下的教学设计和资源的应用》读书心得体会...
- elementUI表格树动态合并列问题处理(最终版,---新需求)
- airflow系列教程(二)Apache airflow完整安装流程
- 视觉SLAM十四讲 报错 Could not find a configuration file for package “OpenCV“ that is compatible with reques
- php手册下载打开没有内容,php pdf文件下载:无法加载PDF文档
- 亿百特E22 lora模块使用教程
- js中数组方法不会影响原数组的方法
- 学生买蓝牙耳机多少钱?平价蓝牙耳机排行榜10强!
- 单片机笔记(1)--单片机概述
- find name 模糊匹配_find命令简单总结