题目

给定两个多项式 $A(x) = x + 2$ 与 $B(x) = 2x^2 + 3x + 1$。编写程序,使用卷积 <code>conv()</code> 计算它们的乘积多项式;随后使用反卷积 <code>deconv()</code> 计算多项式长除法的商式与余式。

输入格式:无需外部输入。

输出格式:输出相乘多项式与除法验算结果。

数据范围与约定:多项式卷积代数。

思路与算法

1. 多项式乘法即系数卷积
两个多项式相乘后的各项系数,在数学上严格等于两个系数向量的离散卷积(Convolution)。调用 conv(a, b) 计算。

2. 多项式除法 deconv
[q, r] = deconv(c, a),满足 $c = \text{conv}(a, q) + r$,其中 $q$ 是商多项式,$r$ 是余式多项式。

3. 信号与系统意义
线性时不变(LTI)系统冲激响应卷积即为多项式乘法,Z 变换乘除法直接对应 conv/deconv。

完整程序

% Octave / MATLAB 第83题:多项式乘除 conv 与 deconv
A = [1, 2];          % x + 2
B = [2, 3, 1];       % 2x^2 + 3x + 1

% 1. 多项式乘法: A * B
C = conv(A, B);

% 2. 多项式除法: C / A (应无余式,商为 B)
[Q, R] = deconv(C, A);

fprintf("多项式 A(x): %s\n", mat2str(A));
fprintf("多项式 B(x): %s\n", mat2str(B));
fprintf("乘积多项式 C(x) = conv(A, B): %s\n", mat2str(C));
fprintf("除法商式 Q(x) = deconv(C, A): %s\n", mat2str(Q));
fprintf("除法余式 R(x): %s\n", mat2str(R));

运行示例

输出:

多项式 A(x): [1 2]
多项式 B(x): [2 3 1]
乘积多项式 C(x) = conv(A, B): [2 7 7 2]
除法商式 Q(x) = deconv(C, A): [2 3 1]
除法余式 R(x): [0 0 0 0]