2支棒棒糖 发表于 2018-8-16 10:42:15

[Matlab数据分析]多项式及函数

本帖最后由 2支棒棒糖 于 2018-8-16 10:45 编辑

多项式及其函数
典型的多项式构成的函数如下所示:
p(x)=x2+4x+1其右项为多项式,在MATLAB中的表达为多项式系数矩阵,如下所示:p=所有的多项式及其函数都可以采用以上推广方式来进行表示。

多项式计算
MATLAB提供了polyval函数用于多项式的值的计算,该函数的调用格式如下:y=polyval(p,x)
=polyval(p,x,S)
y=polyval(p,x,[],mu)
=polyval(p,x,S,mu)其中,y为多项式求解得到的值;p为待计算的多项式向量;x为进行计算的自变量的值;S为可选输出结构设置选项;mu为由两个元素构成的向量构成,第一个为自变量的平均值,第二个为自变量的标准差;delta为估计误差范围。
例9-1,多项式计算示例:计算p(x)=x2+4x+1的值。
在命令行窗口输入:
p=
y=polyval(p,)输出结果如下:p=141
y=122-2
多项式方程求根
MATLAB提供了roots函数用于多项式的根的计算,该函数的调用格式如下:
r=roots(c)其中,c为系数向量,r为返回的根。
例9-2,多项式计算示例:计算x2+4x+1=0的值。
在命令行窗口输入:
p=
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函数,该函数的调用格式如下所示:
w=conv(u,v)其中,u、v为多项式系数向量。
(3)除法
多项式的除法采用向量解卷积的方式进行,使用的函数为deconv函数,该函数的调用格式如下所示:
=deconv(v,u)其中,u为除项、v为待除项,q为返回的向量,r为残余向量。
例9-3,多项式四则运算示例。
在命令行窗口输入:
u=
v=
w=
uplusv=u+
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)
=polyder(b,a)其中,p为多项式系数向量;b、a为用于相乘或相除的多项式系数向量;k为返回的导数系数向量;q为返回多项式向量的分子,d为分母。第一种格式直接求导,第二种格式为乘积求导,第三种格式为相除求导。
例9-4,多项式求导示例。
在命令行窗口输入:
a=;
b=;
k01=polyder(a)
k02=polyder(b)
k1=polyder(a,b)
k11=conv(k01,b)-conv(a,k02)
=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=14400polyint函数的调用格式如下所示:polyint(p,k)
polyint(p)其中,p为待积分多项式系数向量,k为积分后添加的常数。
例9-5,多项式积分示例。
在命令行窗口输入:
a=
b=polyint(a)
c=polyint(a,88)
a1=polyder(c)输出结果如下:a=369
b=1390
c=13988
a1=369
有理多项式展开
MATLAB提供了residue函数用于有理多项式的展开式,该函数的调用格式如下所示:=residue(b,a)
=residue(r,p,k)其中,p为多项式系数向量,b、a为用于相除的多项式系数向量,k为无分母项向量,q为返回多项式向量的分子,p为分母常数项向量,r为分子常数向量。
例9-6,求(5t3+3t2-2t+7)/(-4t3+8t+3)的展开式示例。
在命令行窗口输入:
b=
a=[-4083]
=residue(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

karstification 发表于 2018-12-18 14:00:47

:handshake

lf94726 发表于 2019-1-2 18:22:35

很不错噢

小明 发表于 2019-1-10 10:30:25

谢谢分享

karstification 发表于 2019-1-20 12:45:50

谢谢分享

爱之翼oo 发表于 2019-1-25 09:59:52

厉害:)
页: [1]
查看完整版本: [Matlab数据分析]多项式及函数