7-1 h[謆?

一個 n 次的多項式可以表示成

$$p(x) = a_n x^n + a_{n-1} x^{n-1} + \cdots + a_1 x + a_0$$

因此在 MATLAB 中,可以用一個長度為 n+1 的列向量來表示多項式 $p(x)$ 如下:

$$p = [a_n, a_{n-1}, \cdots, a_1, a_0]$$

舉例來說,我們可用 p = [1, 2, 3, 1] 來表示一個三次多項式 $p(x) = x^3 + 2 x^2 + 3 x + 1$。

多項式的加減,可直接由向量的加減而推出。若有兩多項式分別是 $p_1(x) = x^3+x+1$ 及 $p_2(x)= x^2-x+2$,則其和與差可計算如下:

Example 1: 07-多項式的處理與分析/polyPlus.mp1 = [1,0,1,1]; p2 = [0,1,-1,2]; p1 + p2 p1 - p2ans = 1 1 0 3 ans = 1 -1 2 -1

必須注意的是:矩陣 p1 與 p2 的長度要一致,否則 MATLAB 就會產生運算錯誤的訊息。

多項式的乘與除,可使用 conv 及 deconv 指令來達成,例如,欲求多項式 $p_1(x)$ 與 $p_2(x)$ 的乘積,可輸入如下:

Example 2: 07-多項式的處理與分析/conv01.mp1 = [1, 0, 1, 1]; p2 = [0, 1, -1, 2]; p3 = conv(p1, p2)p3 = 0 1 -1 3 0 1 2

上例中的 p1 與 p2 多項式的乘積結果是 p3,若改以多項式的表示法,即為 $p_3(x) = x^5-x^4+3x^2-x+2$。

若欲求 $p_1(x)$ 除以 $p_2(x)$ 所得的商式與餘式,可輸入:

Example 3: 07-多項式的處理與分析/deconv01.mp1 = [1, 0, 1, 1]; p2 = [1, -1, 2]; [q, r] = deconv(p1, p2)q = 1 1 r = 0 0 0 -1

此即代表 $p_1(x)$ 除以 $p_2(x)$ 後,得到的商式為 $q(x)=x+1$,餘式為 $r(x)=-1$。

以下列出如何使用 MATLAB 來進行多項式的加減乘除:

函數 說明
p1 + p2 多項式 $p_1(x)$ 與 $p_2(x)$ 的和
p1 - p2 多項式 $p_1(x)$ 與 $p_2(x)$ 的差
conv(p1, p2) 多項式 $p_1(x)$ 與 $p_2(x)$ 的乘積
[q, r] = deconv(p1, p2) 多項式 $p_1(x)$ 除以 $p_2(x)$ 後,得到商式為 $q(x)$,餘式為 $r(x)$
s


MATLAB程式設計:進階篇