|
本帖最后由 2支棒棒糖 于 2018-8-16 10:45 编辑
多项式及其函数
典型的多项式构成的函数如下所示:
其右项为多项式,在MATLAB中的表达为多项式系数矩阵,如下所示:所有的多项式及其函数都可以采用以上推广方式来进行表示。
多项式计算
MATLAB提供了polyval函数用于多项式的值的计算,该函数的调用格式如下:- y=polyval(p,x)
- [y,delta]=polyval(p,x,S)
- y=polyval(p,x,[],mu)
- [y,delta]=polyval(p,x,S,mu)
复制代码 其中,y为多项式求解得到的值;p为待计算的多项式向量;x为进行计算的自变量的值;S为可选输出结构设置选项;mu为由两个元素构成的向量构成,第一个为自变量的平均值,第二个为自变量的标准差;delta为估计误差范围。
例9-1,多项式计算示例:计算p(x)=x2+4x+1的值。
在命令行窗口输入:
- p=[141]
- y=polyval(p,[03-3])
复制代码 输出结果如下:
多项式方程求根
MATLAB提供了roots函数用于多项式的根的计算,该函数的调用格式如下:
其中,c为系数向量,r为返回的根。
例9-2,多项式计算示例:计算x2+4x+1=0的值。
在命令行窗口输入:
- p=[141]
- r=roots(p)
- zeros=polyval(p,r')
复制代码 输出结果如下:- p=141
- r=-3.7321
- -0.2679
- zeros=1.0e-15*
- -0.44410.1110
复制代码 验证结果近似为0,说明计算的根准确。
多项式四则运算
多项式可以进行四则运算,各种计算的方式如下所示:
(1)加减法
多项式的加减法为将不同多项式的相同项相加减,在进行计算时,首先将多项式系数向量通过补0的方法补齐到同样的长度,然后按MATLAB提供的加减法进行计算即可。
(2)乘法
多项式乘法采用向量卷积的方式进行,使用的函数为conv函数,该函数的调用格式如下所示:
其中,u、v为多项式系数向量。
(3)除法
多项式的除法采用向量解卷积的方式进行,使用的函数为deconv函数,该函数的调用格式如下所示:
其中,u为除项、v为待除项,q为返回的向量,r为残余向量。
例9-3,多项式四则运算示例。
在命令行窗口输入:
- u=[1234]
- v=[102030]
- w=[1040100160170120]
- uplusv=u+[0,v]
- umltpv=conv(u,v)
- wdivdu=deconv(w,u)
- x=1:2:9
- fu=polyval(u,x)
- fv=polyval(v,x)
- fw=polyval(w,x)
- fuplusv=polyval(uplusv,x)
- fuplusfv=fu+fv
- fumltpv=polyval(umltpv,x)
- fumltpfv=fu.*fv
- fwdivdu=polyval(wdivdu,x)
- fwdivdfu=fw./fu
- root1to3=roots(u)
- root4to5=roots(v)
- root1to5=roots(w)
复制代码 输出结果如下:- u=1234
- v=102030
- w=1040100160170120
- uplusv=1122334
- umltpv=1040100160170120
- wdivdu=102030
- x=13579
- fu=1058194466922
- fv=601803806601020
- fw=6001044073720307560940440
- fuplusv=7023857411261942
- fuplusfv=7023857411261942
- fumltpv=6001044073720307560940440
- fumltpfv=6001044073720307560940440
- fwdivdu=601803806601020
- fwdivdfu=601803806601020
- root1to3=-1.6506
- -0.1747+1.5469i
- -0.1747-1.5469i
- root4to5=-1.0000+1.4142i
- -1.0000-1.4142i
- root1to5=-1.6506
- -1.0000+1.4142i
- -1.0000-1.4142i
- -0.1747+1.5469i
- -0.1747-1.5469i
复制代码
多项式微积分
MATLAB提供了polyder函数用于求取多项式的解析导数,polyint函数用于求取多项式的解析积分。
polyder函数的调用格式如下所示:
- k=polyder(p)
- k=polyder(a,b)
- [q,d]=polyder(b,a)
复制代码 其中,p为多项式系数向量;b、a为用于相乘或相除的多项式系数向量;k为返回的导数系数向量;q为返回多项式向量的分子,d为分母。第一种格式直接求导,第二种格式为乘积求导,第三种格式为相除求导。
例9-4,多项式求导示例。
在命令行窗口输入:
- a=[369];
- b=[120];
- k01=polyder(a)
- k02=polyder(b)
- k1=polyder(a,b)
- k11=conv(k01,b)-conv(a,k02)
- [q,d]=polyder(a,b)
- q1=conv(k01,b)-conv(a,k02)
- d1=conv(b,b)
复制代码 输出结果如下:
- k01=66
- k02=22
- k1=12364218
- k11=00-18-18
- q=-18-18
- d=14400
- q1=00-18-18
- d1=14400
复制代码 polyint函数的调用格式如下所示:其中,p为待积分多项式系数向量,k为积分后添加的常数。
例9-5,多项式积分示例。
在命令行窗口输入:
- a=[369]
- b=polyint(a)
- c=polyint(a,88)
- a1=polyder(c)
复制代码 输出结果如下:- a=369
- b=1390
- c=13988
- a1=369
复制代码
有理多项式展开
MATLAB提供了residue函数用于有理多项式的展开式,该函数的调用格式如下所示:- [r,p,k]=residue(b,a)
- [b,a]=residue(r,p,k)
复制代码 其中,p为多项式系数向量,b、a为用于相除的多项式系数向量,k为无分母项向量,q为返回多项式向量的分子,p为分母常数项向量,r为分子常数向量。
例9-6,求(5t3+3t2-2t+7)/(-4t3+8t+3)的展开式示例。
在命令行窗口输入:
- b=[53-27]
- a=[-4083]
- [r,p,k]=residue(b,a)
- [b,a]=residue(r,p,k)
复制代码 输出结果如下:- b=53-27
- a=-4083
- r=-1.4167
- -0.6653
- 1.3320
- p=1.5737
- -1.1644
- -0.4093
- k=-1.2500
- b=-1.2500-0.75000.5000-1.7500
- a=1.0000-0.0000-2.0000-0.7500
复制代码
|
|