我在c#(非定义函数)中有一些要点,我需要对它们进行数值积分(更喜欢e梯形)。是否有任何图书馆或功能可以做到这一点? 我看到Math.Net的OnClosedInterval,但它需要明确的功能。 (注意:可以在点之间创建插值作为函数并将其提供给OnClosedInterval但我需要知道是否有任何库可以在数值上进行积分。)
答案 0 :(得分:3)
这样的东西? 你有一个在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);
当然你也可以在你的点之间写一个线性插值函数,然后给它Math.Net来集成它。但这样做效率很低,因为它盲目地对你的函数进行采样并试图找到有意义的样本点,这些点只不过是你的要点。因此,通过自己进行(非常简单)集成,您可以轻松获益于线性插值函数的知识。