2014-10-17 71 views
-1

我正在尝试使用math.net数字库实现辛普森法则。我想要使​​用的方法有四个参数,一个Func(函数指针),intervalBegin,intervalEnd和partitionNumbers。目前我正在使用Math.Sin测试这个方法,但是有人能帮我理解这个Func应该如何实现吗?实施辛普森法则math.net数字

var test = MathNet.Numerics.Integration.SimpsonRule.IntegrateComposite(Math.Sin, 1, 4, 20); 

回答

2

附加材料: 产品图直接从math is fun服用。 你可以拥有绝对的任何数学函数,如下面的一个字符所表示的。

enter image description here

集成计算出函数绘制的线与X轴之间的区域。

我说功能的原因是你进入Simpsons集成并不重要,因为任何函数都可以使用,只要它适合“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); 

Simpsons集成中的函数是ANY函数,它接受1个数字参数并返回一个。 (这可能是特定像float或double型)

public double anyFunction(double number){ 
    double result = [calculations]; 
    return calculations; 

} 

您的通话可能看起来像这样:

MathNet.Numerics.Integration.SimpsonRule.IntegrateComposite(anyFunction, 1, 4, 20); 
+0

我不明白尚Func键应该做的事情。你可以请更具体吗? – Doro 2014-10-17 06:53:22

+0

Func应该是任何数学函数。它可以是函数可以是“x^2”它可以是“Math.Pi * r^2”。我会在一秒内编辑我的帖子,它可能会给你一些背景。 – Zero 2014-10-17 06:58:55

+0

这意味着我可以使用Math.Sin以及Math.Pi? – Doro 2014-10-17 07:00:08