我正在嘗試做以下練習:
定義一個遞回函式inteDef ,它使用復合梯形規則逼近函式f在區間[a,b]上的定積分。該函式將eps作為引數,它標記了區間[a,b]將被劃分為的子區間的最大長度。因此,如果[a,b]的長度小于或等于eps,則函式將回傳相應梯形的面積。否則,它將區間[a,b]分成兩個長度相同的子區間(原始區間的一半),并將遞回地逼近兩個區間的積分并回傳它們的總和。
我的解決方案嘗試是:
def inteDef(f: Double => Double, x: Double, y: Double, eps: Double): Double = {
if (abs(y - x) <= eps)
(y - x) * (f(x) f(y)) / 2.0
else
inteDef(f, x, (y-x)/2.0, eps) inteDef(f, (y-x)/2.0, y, eps)
}
它在eps大于或等于abs(y - x)時起作用,但否則會給出堆疊溢位錯誤。
uj5u.com熱心網友回復:
(y - x) / 2.0不在x和之間y。
(x y) / 2.0是。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/459753.html
