我正在研究用 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++)
您没有显示 x
、upper
和 lower
之间的具体关系,因此可能需要调整,但您得到这个想法。
关于c - 中点集成优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45991780/