我正在尝试使用 math.net 数字库来实现辛普森规则。我想使用的方法有四个参数,一个 Func(函数指针)、intervalBegin、intervalEnd 和 partitionNumbers。目前我正在使用 Math.Sin 测试该方法,但是有人可以帮助我理解这个 Func 应该如何实现吗?
var test = MathNet.Numerics.Integration.SimpsonRule.IntegrateComposite(Math.Sin, 1, 4, 20);
我正在尝试使用 math.net 数字库来实现辛普森规则。我想使用的方法有四个参数,一个 Func(函数指针)、intervalBegin、intervalEnd 和 partitionNumbers。目前我正在使用 Math.Sin 测试该方法,但是有人可以帮助我理解这个 Func 应该如何实现吗?
var test = MathNet.Numerics.Integration.SimpsonRule.IntegrateComposite(Math.Sin, 1, 4, 20);
附加材料:直接取自数学的图片很有趣。您绝对可以拥有任何数学函数,如下面的一个字符表示。
积分计算函数绘制的线与 X 轴之间的面积。
我之所以说传递给辛普森一家集成的函数并不重要,是因为任何函数都可以使用,只要它符合“1 个数字输入,1 个数字输出”格式。
补充材料结束l.
辛普森公式是一个积分,这意味着它需要一个数学函数来计算。以下是辛普森积分的粗略公式(使用作为参数传递的数字和随机函数),如果您感兴趣,请跳过这部分。
intervalBegin = 1;
intervalEnd = 4;
partitionNumbers = 20;
f(x) = 3x^2;
deltaX = (intervalEnd - intervalBegin) / partitionNumbers;
SimpsonsIntegration = deltaX/3 * (f(intervalBegin) + 4*f(intervalBegin + deltaX*1)+ 2*f(intervalBegin + deltaX*2)+ 4*f(intervalBegin + deltaX*3)+ 2*f(intervalBegin + deltaX*4).....+4*f(intervalBegin + deltaX*19) +f(intervalEnd);
辛普森积分中的函数是任何接受 1 个数字参数并返回 1 的函数。(它可能是特定类型的,例如 float 或 double)
public double anyFunction(double number){
double result = [calculations];
return calculations;
}
您的电话可能如下所示:
MathNet.Numerics.Integration.SimpsonRule.IntegrateComposite(anyFunction, 1, 4, 20);