10/30/2006

8.1多項式之根

令一多項式等於零,其x值即為其根。具有n階的多項式,應存在有n個根,但這些根可能為實數,也可能為複數或重根。若根為複數,只要其向量元素為實數,則其複數根常成對存在,或稱為共軛根,其型式為a±bi。

roots


求根的指令為roots(p),p為多項式之向量矩陣。如:


>>roots([2 -2 -1 0 1])
ans =
1.0000 + 0.0000i
1.0000 - 0.0000i
-0.5000 + 0.5000i
-0.5000 - 0.5000i

結果得到兩個相同的實根1及-5±0.5i。在多項式中,最簡單的二次式ax²+bx+c=0之根可利用公式得解,其型式如下:

x={(-b ±(b²-4ac)(1/2)}/2a

若二次之型式為ax²+2bx+c=0,則其根之型式可改變為:

x={(-b ±(b²-ac)(1/2)}/a

設a=5,b=10, 則上式根可以計算如下:


>>a=2;b=10;c=12;
>>x1=(-b+sqrt(b.*b-4*a.*c))/(2*a)
x1 = -2

>>x2=(-b-sqrt(b.*b-4*a.*c))/(2*a)
x2 = -3

若用roots指令求解,則


>>roots([2 10 12])
ans =
-3.0000
-2.0000

所得之答案相同。

poly


有根時,也可以利poly(r)指令將其轉回多項式之型式。以前面所得之兩個實根1及虛根 -5±0.5i為例,其對應多項式應為:


>>poly([1, 1, 0.5+0.5i, -0.5-0.5i])
ans =
1.0000 -1.0000 -0.5000 0 0.5000

其結果若分別乘以2後,應與前例之設定相同。由此可知,用根反求多項式係數時,其結果可能為整數倍數,其比例應一致的。而且,在poly(r)之輸入項r可為行向量或列向量,其結果應相同。

1 則留言:

Ryan 提到...

哈囉~~您好
當我執行你的範例時,都會出現這種錯誤


>> X = fzero(@sin,3)

??? Attempt to execute SCRIPT fzero as a function.

哪裡出問題了~?

張貼留言