Matlab 教材:for 迴圈基本練習

這一節再多練習一些 for 迴圈的基本動作。

假如要做 <= 100 的奇數和,其實「正當」的 Matlab 作法是

sum(1:2:100)
但是也可以寫成 for 迴圈
s = 0;
for i=1:2:100, s = s+i; end
disp(s)
現在我們用這個簡單的例子,說明迴圈內的執行步驟可以不只一步。 同樣計算 <= 100 的奇數和,也可以寫成
s = 0;
for i=1:50, k=2*i-1; s = s+k; end
disp(s)
這就相當於讓 Matlab 執行
k = 2*i - 1;
s = s+k;
五十遍,每一遍依序代入 i 的數值是 1, 2, 3, ..., 50。 一此每一遍的 k 數值是 1, 3, 5, ..., 99。

一般而言,在 for 迴圈裡面可以有任意多步驟的計算, 一直做到 end 出現為止。

接著我們再利用以下簡單問題,示範一個技巧:

1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 - 1/8 + 1/9 - 1/10
這個問題可以輕易用 sum( ) 和點運算來解決:
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/2) + (1/3 - 1/4) + (1/5 - 1/6) + (1/7 - 1/8) + (1/9 - 1/10)

習題

  1. 用 for 迴圈計算以下連加:
    1 - 1/3 + 1/5 - 1/7 + ... + 1/97 - 1/99
  2. 令 n=10000,用 for 迴圈計算
    4 * (1 - 1/3 + 1/5 - 1/7 + ... - 1/(4*n-1))
  3. 若 v 和 w 是兩個維度是 n 的向量,寫一個 Matlab 的 for 迴圈程式, 計算它倆的內積。(您可以用 dot(v,w) 驗算。)
單維彰 (2003/04/16) --- [Prev] [Next] [Up]