这篇文章上次修改于 431 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

一·多项式及其运算:
MATLAB提供poly2sym函数用于将向量转化为多项式,例如

>> poly2sym([ 2 , -1 , 0 , 3 ])
ans =
2*x^3-x^2+3

四则运算:
1.加减运算:设计一个函数文件polyadd.m用于任意阶次对应系数向量的加减运算(自动为系数不足的的高次项补0)

function p = polyadd(p1,p2)
M=length(p1); N=length(p2);
if M>N
p2=[zeros(1,M-N), p2];
elseif M<N
p1=[zeros(1,N-M), p1];
end
p=p1+p2;
end

这样,计算两个不同阶次的多项式 2x3-x2+3 和 2x+1 的和、差

>> p1 = [ 2 , -1 , 0 , 3 ];
>> p2 = [ 2 , 1];
>> p = polyadd(p1,p2)
p =
2 -1 2 4
>> q = polyadd(p1,-p2)
q =
2 -1 -2 2

以上代码中,p2自动补零为[0,0,2,1],并与p1进行加减计算。

计算结果使用poly2sym函数转化为方程形式:

poly2sym(p)
ans = 
2*x^3-x^2+2*x+4

2.乘法运算:两个多项式的相乘,利用conv函数。
例如:
c = conv(a,b) % 相当于 c(x)=a(x)*b(x)

例如:运用卷积分析,已知两个多项式系数向量p1 = [ 2 , -1 , 0 , 3 ]和 p2 = [ 2 , 1],将p1正常排列,p2反转

       p1(1)  p1(2)  p1(3)  p1(4)
p2(2)  p2(1)

上下对应的系数相乘,p(1)=2*2=4,这是最高次项系数,之后将p2右移一位,继续计算:

p1(1)  p1(2)  p1(3)  p1(4)
p2(2)  p2(1)

p1(1)p2(2)+p1(2)p2(1)=21+(-1)2=0,这是次高项系数。以此类推,得到p的全部系数为p=[4,0,-1,6,3]

这时运用conv函数:

>> p = conv(p1,p2)
p =
4 0 -1 6 3
>> poly2sym(p)
ans =
4*x^4-x^2+6*x+3

3.除法运算:多项式相除,运用deconv函数做反卷积

[q,r] = deconv(x,y) %其中 q 为商(Quotient), r 为余子式(Remainder),即 x = conv(y,q) + r

多项式 2x3-x2+3 和 2x+1的商:

>> clear
>> p1 = [ 2 , -1 , 0 , 3 ];
>>  p2 = [ 2 , 1];
>> [q,r] = deconv(p1,p2)
q =

   1.00000  -1.00000   0.50000

r =

   0.00000   0.00000   0.00000   2.50000
>> poly2sym(q)
ans =
x^2-x+1/2

商为x^2-x+1/2,余数为2.5