这篇文章上次修改于 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
没有评论