10/24/2006

While 迴圈

While迴圈
利用while...end是可以不確定執行次數下停止,利用if...end則可協助判斷。以求多項式之x²-2x-5之根為例,先確定可能根的範圍,例如:b>x>a,則可利用分段法逐漸迫近解:


% find root of athe polynormial f(x)=x^3-2x-5
a=0;fa=-Inf;
b=3;fb=Inf;
while b-a>eps*b
x=(a+b)/2;
fx=x^3-2*x-5;%polynormial
if sign(fx)==sign(fa)
a=x;fa=fx;
else
b=x;fb=fx;
end
end
x
-------------------------------------

上述之解法中,先設定a與b之值及其對應之f值,由於後者之第一次較難掌握,故只要使用正負無窮大之值作為起點。進入後,即進行二分法,求得新x值即可確定得到f的對應值。當然在這裡設定負無窮大在a=0這邊,也有點冒險。執行的結果如下:

>> format long
>> ex01

x =

2.09455148154233

沒有留言: