Sum
Sum 是求和的函式,內建Loop,寫成:
]Sum(k = a to b, f(k)) = Σ(k = a to b, f(k)) //其中a、b 為上下限,f(k) 為被加函式。
]
]Σ(k = 1 to 3, 2x) = 2x||x = 1|| + 2x||x = 2|| + 2x||x = 3|| = 2 + 4 + 6 = 12
]
]Σ(k = 2 to 5, a(k)||a(k) = {1, 10, 4, 6, 0.8}||) = a(2) + a(3) + a(4) + a(5) = 10 + 4 + 6 + 0.8 = 20.8
針對被加函式,若被加函式可拆為常數與變數相成,則常數可提出。
]Σ(k = a to b, C * f(k)) = C * Σ(k = a to b, f(k))
Sum 函式裡,並沒有規定上下線必須擺在前或後,從小到大、從大到小都是允許的。
]Σ(k = a to b, f(k)) = Σ(k = b to a, f(k))
上下線拆解規則:
]rule.. Σ(k = a to b||a < b||, f(k)) = stick(c, a) * Σ(k = a to c, f(k)) + stick(c, b) * Σ(k = c to b, f(k)) - stick(c, a) * stick(b, c) * which(0.5, a, b, c) //特別注意a 必須小於b。
拆解規則很長,基本上可以用理解的:
]rule.. Σ(k = a to b||a < b||, f(k))
]if (a < b < c) then..
]ans = Σ(k = a to c, f(k)) - Σ(k = b to c + 1, f(k))
]if (a < c < b) then..
]ans = Σ(k = a to c, f(k)) + Σ(k = c + 1 to b, f(k))
]if (c < a < b) then..
]ans = -Σ(k = c to a - 1, f(k)) + Σ(k = c to b, f(k))
