繁体   English   中英

自适应正交算法-递归迭代

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM