這一節再多練習一些 for 迴圈的基本動作。
假如要做 <= 100 的奇數和,其實「正當」的 Matlab 作法是
sum(1:2:100)但是也可以寫成 for 迴圈
s = 0;現在我們用這個簡單的例子,說明迴圈內的執行步驟可以不只一步。 同樣計算 <= 100 的奇數和,也可以寫成
for i=1:2:100, s = s+i; end
disp(s)
s = 0;這就相當於讓 Matlab 執行
for i=1:50, k=2*i-1; s = s+k; end
disp(s)
k = 2*i - 1;五十遍,每一遍依序代入 i 的數值是 1, 2, 3, ..., 50。 一此每一遍的 k 數值是 1, 3, 5, ..., 99。
s = s+k;
一般而言,在 for 迴圈裡面可以有任意多步驟的計算, 一直做到 end 出現為止。
接著我們再利用以下簡單問題,示範一個技巧:
sum( 1./(1:10) .* (-1).^(0:9) )或者,利用加減法的結合律:
sum( 1./(1:2:10) ) - sum( 1./(2:2:10) )答案都是 0.6456。 我們利用它來練習 for 迴圈的一種技巧:
s = 0;也就是說,我們一次迴圈做兩項,這樣就免去了加、減交替的麻煩。 因此這個迴圈相當於做了
for i=1:2:10, s = s+(1/i)-(1/(i+1)), end
習題
1 - 1/3 + 1/5 - 1/7 + ... + 1/97 - 1/99
4 * (1 - 1/3 + 1/5 - 1/7 + ... - 1/(4*n-1))