4. 多项式
一元多项式类的构造:(注意系数按照次数从高次到低次排列)
class numpy.poly1d(c_or_r, r=0, variable=None)
c_or_r
:一个数组或者序列。其意义取决于r
r
:布尔值。如果为True
,则c_or_r
指定的是多项式的根;如果为False
,则c_or_r
指定的是多项式的系数variable
:一个字符串,指定了打印多项式时,用什么字符代表自变量。默认为x
多项式的属性有:
.coeffs
属性:多项式的系数.order
属性:多项式最高次的次数.variable
属性:自变量的代表字符
多项式的方法有:
.deriv(m=1)
方法:计算多项式的微分。可以通过参数m
指定微分次数.integ(m=1,k=0)
方法:计算多项式的积分。可以通过参数m
指定积分次数和k
积分常量
操作一元多项式类的函数:
- 多项式对象可以像函数一样,返回多项式的值
- 多项式对象进行加减乘除,相当于对应的多项式进行计算。也可以使用对应的
numpy.polyadd/polysub/polymul/polydiv/
函数。 numpy.polyder/numpy.polyint
:进行微分/积分操作numpy.roots
函数:求多项式的根(也可以通过p.r
方法)
使用
np.polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False)
函数可以对一组数据使用多项式函数进行拟合(最小均方误差)。其参数为:x
:数据点的x
坐标序列y
:数据点的y
坐标序列。如果某个x
坐标由两个点,你可以传入一个二维数组。deg
:拟合多项式的次数rcond
:指定了求解过程中的条件:当某个特征值/最大特征值<rcond
时,该特征值被抛弃full
:如果为False
,则仅仅返回拟合多项式的系数;如果为True
,则更多的结果被返回w
:权重序列。它对y
序列的每个位置赋予一个权重cov
:如果为True
,则返回相关矩阵。如果full
为True
,则不返回。
默认情况下,返回两个数组:一个是拟合多项式的系数;另一个是数据的相关矩阵
numpy
提供了更丰富的多项式函数类。注意其中的多项式的系数按照次数从小到大排列。numpy.polynomial.Polynomial
:一元多次多项式numpy.polynomial.Chebyshev
:切比雪夫多项式numpy.polynomial.Laguerre
:拉盖尔多项式numpy.polynomial.Legendre
:勒让德多项式numpy.polynomial.Hermite
:哈米特多项式numpy.polynomial.HermiteE
:HermiteE
多项式
所有的这些多项式的构造函数为:
XXX(coef, domain=None, window=None)
。其中XXX
为多项式类名。domain
为自变量取值范围,默认为[-1,1]
。window
指定了将domain
映射到的范围,默认为[-1,1]
。如切比雪夫多项式在
[-1,1]
上为正交多项式。因此只有在该区间上才能正确插值拟合多项式。为了使得对任何区域的目标函数进行插值拟合,所以在domain
指定拟合的目标区间。所有的这些多项式可以使用的方法为:
- 四则运行
.basis(deg[, domain, window])
:获取转换后的一元多项式.convert(domain=None, kind=None, window=None)
:转换为另一个格式的多项式。kind
为目标格式的多项式的类.degree()
:返回次数.fit(x, y, deg[, domain, rcond, full, w, window])
:拟合数据,返回拟合后的多项式.fromroots(roots[, domain, window])
:从根创建多项式.has_samecoef(other)
、.has_samedomain(other)
、.has_sametype(other)
、.has_samewindow(other)
:判断是否有相同的系数/domain
/类型/window
.roots()
:返回多项式的根.trim([tol])
:将系数小于tol
的项截掉- 函数调用的方式
切比雪夫多项式可以降低龙格现象。所谓龙格现象:等距离差值多项式在两个端点处有非常大的震荡,
n
越大,震荡越大。