algorithm - 如何将曲线下的面积分成相等的段

标签 algorithm math nonlinear-functions

我正在尝试划分以表格形式给出的曲线下的面积 分成相等的面积段。我必须求解以下积分并找到一组点 x_0,x_1,...,x_k,x_N 满足以下条件

不幸的是,我真的不知道如何为表格函数执行此操作。对于解析线性或二次函数,上述结果导致求解 x_k 的二次或三次方程。 我尝试迭代 x_k 的值,直到积分小于 k/N。我从第一个固定值 x_0 开始,尝试找到积分为 k/N 的 x_1,然后使用 x_1 作为新的下限并寻找具有相同属性的 x_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

这应该很清楚了。插值将是二次插值,这应该足够简单。

关于algorithm - 如何将曲线下的面积分成相等的段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39679821/

相关文章:

algorithm - 寻找 "closing curves connecting with respect to points"算法

javascript - 生成多维对象的所有组合

algorithm - 一种检查非线性函数 f 是否始终为正的算法

python - 用Python求解非线性方程组

python - 创建给定长度加起来为 1 的数字数组

c++ - 我如何将缩放合并到这个坐标系中?

Javascript 计算 - NaN 消息

c - 具体模乘算法

python - 在 Python 中求解矩阵形式的非线性方程组

php - 下个月,PHP 的同一天