在c#中求点的数值积分

本文关键字:数值积分 | 更新日期: 2023-09-27 18:10:07

我在c#中有一些点(不是确定的函数),我需要对它们进行数值积分(更喜欢梯形)。有什么库或函数可以做到这一点吗?我看到数学的oncloseinterval。但它需要明确的函数。(注意:有可能创建点之间的插值作为一个函数,并给它OnClosedInterval,但我需要知道是否有任何库做积分数值直接)

在c#中求点的数值积分

像这样?你在x/y的曲线上采样了一些点,想用梯形法则计算曲线下第一个点和最后一个点之间的积分。

//assuming Point has x and y component, and array is sorted according to x
Point[] points = ...;
float integral = 0;
for(int i = 1; i<points.length; i++)
    integral += (points[i].y + points[i-1].y) / 2 * (points[i].x - points[i-1].x);

当然,你也可以在你的点之间写一个线性插值函数,然后给它数学。对它进行积分。但这将是非常低效的,因为它盲目地对你的函数进行采样,并试图找到有意义的采样点,这些点只不过是你开始的点。因此,通过自己做这个(非常简单的)积分,你可以很容易地受益于你对线性插值函数的知识。