初學電腦程式語言的人,通常遇到的第一個概念難關,就是變數的數值置換。 例如我們先說
x = 1;然後說
x = 2*x數學敏感的讀者看到上面那條「等式」,立刻會想:x 勢必等於 0。 其實不是。
因為 = 是當「指派」指令,所以等號的右邊要先做計算, 計算之後的結果是 2,然後再把 2 指派給 x,所以執行之後, x 的值就從 1 變成了 2,這也就是變數的數值置換。 再來,如果現在 x 的數值是 2,執行了
x = x + 2之後 (數學敏感的讀者,直接反應或許是「無解」或「矛盾」),x 的值就換成了 4。
等號的左右兩邊不但可以出現同一個變數,在右邊還可以出現一次以上, 例如
x = 4;所有出現在等號右邊的 x 都取出舊的值,也就是 4。 計算得到結果之後,才指派給 x,也就是 8。
x = x * sqrt(x)
變數的置換技巧,可以拿來做許多有趣的計算。例如想要計算
x = 1;我們可以利用向上箭頭,重複呼叫一樣形式的指令, 每次只要修改一個數字即可重複執行上述計算,並且觀察計算的結果。 我得到的結果是 1.9844。
x = x + 1/2^1
x = x + 1/2^2
x = x + 1/2^3
x = x + 1/2^4
x = x + 1/2^5
x = x + 1/2^6
事實上,我們都知道以下無窮等比級數
再舉一個例子,若 f(x) 是一個可微函數,我們知道牛頓求根算法說的是
用個實際點的例子,譬如 f(x) = x2 - 2,
那麼我們可以利用牛頓法求他的一個正根,也就是 sqrt(2)。
將 f(x) 和 f'(x) 代入牛頓迭代過程,整理得
x = 1;就看到答案已經固定在 1.4142 不再改變。
x = x/2 + 1/x
x = x/2 + 1/x
x = x/2 + 1/x
x = x/2 + 1/x
習題