多形式的表示及基本运算

多项式的表示及基本运算

    • 多项式的表示方式
    • 多项式的四则运算
      • 多项式的加减
      • 多项式的乘法
      • 多项式的除法

多项式的表示方式

在 MATLAB 中,多项式用一个行向量进行表示,多项式的系数即为该行向量的元素,且按降序排列
例如, 3 x 3 + 2 x 2 + x + 1 3x^3+2x^2+x+1 3x3+2x2+x+1 就可以用向量p=[3 2 1 1]进行表示,当然也可以转化回来

p=[3 2 1 1];
Fx=poly2sym(p)
Fx =
 
3*x^3 + 2*x^2 + x + 1

如果遇到的多项式中,在x的降序过程中存在有些“级数”缺失的,就必须用零来补充,少了一个也不对,例如, 3 x 3 + x 3x^3+x 3x3+x 就可以用向量p=[3 0 1 0]来表示,转化一下便是

p=[3 0 1 0];
Fx=poly2sym(p)
Fx =
 
3*x^3 + x

多项式的四则运算

多项式的加减

由于多项式是利用向量来表示,所以多项式对应系数的加减,可以通过向量的加减来实现。但是在向量的加减中,两个向量需要有相同的长度,因此需要将短的补零
例如,f(x)= 5 x 4 − 3 x 3 + 2 x 2 + x + 1 5x^4-3x^3+2x^2+x+1 5x43x3+2x2+x+1, g(x)= 6 x 2 − x + 3 6x^2-x+3 6x2x+3
f(x)+g(x)为

Fx=[5 -3 2 1 1]
Gx=[6 -1 3]
Gx1=[0 0 6 -1 3]
FGS=poly2sym(Fx+Gx1)
FGS =
 
5*x^4 - 3*x^3 + 8*x^2 + 4

f(x)-g(x)为

Fx=[5 -3 2 1 1]
Gx=[6 -1 3]
Gx1=[0 0 6 -1 3]
FGT=poly2sym(Fx-Gx1)
FGT =
 
5*x^4 - 3*x^3 - 4*x^2 + 2*x - 2

多项式的乘法

实际上是多项式系数向量之间的卷积运算,可以通过 MATLAB 中的卷积函数 conv 来实现
例如,还是采用上面的例子,f(x)= 5 x 4 − 3 x 3 + 2 x 2 + x + 1 5x^4-3x^3+2x^2+x+1 5x43x3+2x2+x+1, g(x)= 6 x 2 − x + 3 6x^2-x+3 6x2x+3
则 f(x)g(x)为

Fx=[5 -3 2 1 1]
Gx=[6 -1 3]
FGC=poly2sym(conv(Fx,Gx))
FGC =
 
30*x^6 - 23*x^5 + 30*x^4 - 5*x^3 + 11*x^2 + 2*x + 3

多项式的除法

相当于乘法的逆运算,可以通过反卷积函数 deconv 来实现
对于f(x)/g(x)

Fx=[5 -3 2 1 1]
Gx=[6 -1 3]
FGD=poly2sym(deconv(Fx,Gx))
FGD =
 
(5*x^2)/6 - (13*x)/36 - 31/216

但是由于除法还牵扯到余数问题,所以,可以再在此基础上再进行一步运算

[p,q]=deconv(Fx,Gx)   %在这里,p是商,q是余数
p =
    0.8333   -0.3611   -0.1435
q =
    0         0         0    1.9398    1.4306
    

也可以将余数表达式写出来

qs=poly2sym(q)
qs =
 
(419*x)/216 + 103/72

你可能感兴趣的:(matlab,卷积)