10/30/2006

第八章 多項式之應用

對於多項式MATLAB也提供許多指令可供運算,相關的指令如下表:

函數名稱 說明
conv(p,q) 兩多項式相乘
[q,r]=deconv (num,den) 兩多項式相除,q為商,r為餘數,num分子,den為分母
roots 求多項式之根
poly(r) 將根轉為多項式.
polyval(p,x) 計算多項式之值,p為多項式之係數矩陣,x為變數值,可為矩陣型式
polyvalm(p,X) 計算多項式之值,p為多項式之係數矩陣,X為變數值,為方矩陣型式
residue 部份展開式之餘數.
polyfit(X,Y,n) 多項式資料回歸,(X,Y)為對應資料,n多項式最高次方
polyder (p) 多項式微分
polyint(p,K) 多項式之積分,K為常數


多項式中,主要以其係數組成一向量作為運算之基礎。多項式之通式可表示如下:


F(x)=a1xn+a2xn-1+...+an-1x2+anx+an+1


其中x 為變數,n為其最高之階,為變數x之次方。而a1, a2 ,…,an , an+1等則分別係數,可以利用向量矩陣表示。以上項之通式為例,其向量p為:


p=[a1, a2 ,…,an , an+1]


代表F(x)這個多項式。多項式間之運算則以其p向量為代表。例如,兩多項式之相加,設其向量p=[20 -7 5 10],另一為q=[1 8 1 -6],則相加後應為m=[21 1 6 4],亦即其多項式和為21X³+X²+6X+4。此處若兩向量之大小不同,則較少的前面元素應以零補齊。兩多項式相減時亦同。多項式若乘以一個常數,則直接以常數乘上每項係數或向量中之每個元素即可。但若為兩個非常數之多項數相乘或相除,則必須藉助MATLAB之指令conv或 deconv來運算才行。這兩個指令均有兩項輸入,分別為兩多項式之向量。例如兩多項式之向量分別為p,q:


>>p=[1 5 3 4 1] %代表多項式X+5X3+3X 2+4X+1
p = 1 5 3 4 1

>>q=[8 3 -5 6] %代表多項式8X3+3X2-5X+6
q = 8 3 -5 6

兩者相乘後,設為M,則M應為:

多項式乘法conv



>>M=conv(p,q)
M =
8 43 34 22 35 1 19 6


此多項式為

8X7+43X6+34X5+22X4+35X3+X2+19X+6。


多項式除法deconv


今若將M除以q,利用deconv函數指令,其結果應為:


>>[s,r]=deconv(M,q)
s =
1 5 3 4 1
r =
0 0 0 0 0 0 0 0

此s向量與p向量相同,r則為除後之餘數,目前為零,因為完全除盡。例如:

>>[s,r]=deconv(p,q)
s =
0.1250 0.5781
r =
0 0 1.8906 6.1406 -2.4688

此時之商s為0.1250X + 0.5781;其餘項為

1.8906X3+ 6.1406X2 -2.4688


上述多項式相乘除之指令conv與deconv並不需要相同的向量長度。即使除法,其前項為分子,後項為分母,分子之長度通常比分母長,但並不必要如加法或減法,需在前面加零元素,以湊成相同的長度。

多項式求值polyval


其次為多項式值之計算可用polyval(p,x)指令計算多項式之值,其中p為多項式之係數向量,x為變數值,可為向量矩陣型式:


>>x=0:5,p=[1 -3 3 6]
x =
0 1 2 3 4 5
p =
1 -3 3 6

>>f=polyval(p,x)
f =
6 7 8 15 34 71


上式中p代表多項式f(x)之向量,其所得值為f(0)、f(1),…f(5)分別為f向量之元素值。運算時,亦可合併為一個指令執行,只要位置放對就行:


>>f=polyval([1 -3 3 6],[0:5])
f =
6 7 8 15 34 71