c - 中点集成优化

标签 c recursion optimization integration

我正在研究用 C 语言进行中点积分的近似积分,并尝试优化给定 n 的近似积分所需的时间。我在积分上使用递归,每次调用函数时将输入 n 一分为二(因此两个划分函数之一采用下界和中点,另一个函数采用中点和上界作为输入),直到上限和下界之间的差异变为 1。当差值为 1 时,我得到 f(x) 值并将所有内容相加。代码如下所示:

double integrate(function, range, lower, upper)
    if (upper - lower == 1)
        f(x)
    else
        integrate(function, range, lower, midpoint) +
        integrate(function, range, midpoint, upper)

从第一个直觉来看,如果每次调用函数时将递归分为四次而不是两次,我预计使用多个处理器会更快,但它只会减慢近似速度。所以现在我带着两次递归回来了,不知道该去哪里。我尝试使用最少的操作数。

任何相关文档或帮助将不胜感激!

最佳答案

由于您仅在 upper-lower == 1 时调用 f,因此您可以使用类似的迭代

for (x = lower; x < upper; x++)

您没有显示 xupperlower 之间的具体关系,因此可能需要调整,但您得到这个想法。

关于c - 中点集成优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45991780/

相关文章:

MySQL 分区选择未正确优化

algorithm - 如何找到字符串可能具有的对的最大值?

不应该循环的代码(带 fork )正在循环

将数组元素复制到新元素 - C

recursion - F# 中可以递归部分函数应用吗?

javascript - 使用递归的一维数组迭代

c - 如何在C中使用递归查找素数

c - 在 c 中使用 cmake 和宏自动包含头文件?

c - C 中的标志顺序

python - 如何使用数据集来拟合 3D 表面?