我试图将表格式给出的曲线下的区域划分为相等的区域段。我必须解决以下积分并找到一组点x_0,x_1,...,x_k,x_N
,其中包含以下内容
不幸的是,我真的不知道如何为表格功能做到这一点。对于解析线性或二次函数,上述结果解决了x_k的二次或三次方程。
我试图迭代x_k的值,直到积分小于k/N
。我从第一个固定值x_0开始,尝试找到积分为k/N
的x_1,然后使用x_1作为新的下限,并查找具有相同属性的x_2。
我认为存在一种更有效的方法,这就是为什么我决定在这里问专家。
我很感激你的想法。
答案 0 :(得分:2)
没有更多关于函数f(x)的知识,没有希望得到准确的正确答案。但是,我们可以使用f(x)的合理近似值并使用它,因此我们的答案也是合理的近似值。
积分中使用的一个常见近似是梯形规则,其中我们假设函数在x_i的连续值之间是线性的,因此这些值之间的区域是梯形并且易于计算。所以让我们对f(x)做出相同的近似。假设给定的点是(x [i],f(x [i])),我们正在寻找x坐标z [i]。
然后算法(伪代码):
Sort the values (x[i], f(x[i])) by the first coordinate
if any of the neighboring x[i] are equal but the corresponding f(x[i]) are not:
raise an error
Sum the trapezoidal areas to get the total area
Find the desired area between x-coordinates
Run through the x[i] and sum individual trapezoid areas
When the summed area are greater than the desired area,
Use interpolation to find z[i] between the x[i] that give the desired area
这应该足够清楚了。插值将是二次插值,应该足够简单。
答案 1 :(得分:2)
根据您的评论, f 被认为是非负的。此外,你给出的例子有连续的二阶导数。
假设您首先在 n 点( n 稍后确定)上列出您的函数, g 是积分的累积近似值根据{{3}}的 f 。由于 f 是非负的,因此 g 是单调非递减的。因此,您可以通过trapezoidal rule找到最接近 g max / k 值的 x 点,其复杂度为Θ(的log(n))。事实上,你可以这样做 k 次。
请注意,您所需的近似值是 g ,而不是 x 。但是,使 n 足够大,确保 x 的良好近似也是 g 的良好近似。要确定 n ,您可以使用binary search。