第八章 多項式之應用
對於多項式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之次方。而a 1, a 2 ,…,a n , a n+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:
兩者相乘後,設為M,則M應為:
>>p=[1 5 3 4 1] %代表多項式X4+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
多項式乘法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