[英]Adaptive Quadrature Algorithm - Recursive to Iterative
我想知道是否有可能使該算法迭代而不是遞歸,並且如果可行,有人可以幫助我嗎?
public static double adaptiveQuadrature(double a, double b) {
double h = b - a;
double c = (a + b) / 2.0;
double d = (a + c) / 2.0;
double e = (b + c) / 2.0;
double Q1 = h / 6 * (f(a) + 4 * f(c) + f(b));
double Q2 = h / 12 * (f(a) + 4 * f(d) + 2 * f(c) + 4 * f(e) + f(b));
if (Math.abs(Q2 - Q1) <= EPSILON)
return Q2 + (Q2 - Q1) / 15;
else
return adaptiveQuadrature(a, c) + adaptiveQuadrature(c, b);
}
static double f(double x) {
return Math.exp( - x * x / 2) / Math.sqrt(2 * Math.PI);
}
非常感謝你的幫助!
我不這么認為。 步驟的大小取決於在初始間隔的端點處進行的功能評估,然后在子間隔的端點處進行。 模式不是漸進式的,您無法組織一個循環來“猜測”提前的步驟。
當然,您可以通過顯式堆棧取消遞歸,但是從本質上講不會改變過程的性質。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.