如何在VB.NET中将函数定义为另一个函数中的参数?

时间:2013-05-22 11:51:08

标签: vb.net root numerical-methods

我想为brent方法(一种数值方法)创建一个VB代码,它可以采用分析函数并找到根。我怎么能在VB 2010中这样做? Brent方法采用的函数如下:

Function W_Bazin_Rect_h(ByVal Q As Double,
            ByVal w As Double,
            ByVal a As Double,
            ByVal S As Double) As Double
Dim tempstr As String
If w < 0 Or a <= 0 Then
    tempstr = "Error on input"
    ShowMessageBox(tempstr)
    Exit Function
End If

If Q <= 0 Then
    Return 0
End If
g = 9.81
u = (0.405 + 0.003 / h) * (1 + 0.55 * (h / (h + a)) ^ 2)
Q = ((2 * g) ^ 0.5 * u * w * h ^ (3 / 2)) * (1 - (S / h) ^ 1.5) ^ 0.385

End Function

我应该将brent方法定义为类还是函数?

我想初始化函数(即Q = 1,a = 1,w = 1,S = 1),然后将函数传递给Brent方法,该方法可以返回h的值。 在VB.NET中执行此操作的最佳方法是什么?我想制作一个通用的布伦特方法,我可以传递任何单值函数并找到根。

我刚刚开始使用VB,从我到目前为止所发现的工具看起来就像是我们的函数委托 - 为函数使用lambda表达式 - 发送指针/ adressOf - 创建一个函数类/结构并将其提交给函数

至于现在,我最倾向于创建一个功能类。但我不确定如何。 F.ex.我为每个&#34; uniqe函数&#34;制作了不同的类。我想要集成,但是当我需要在integration-function-call中指定参数类型时,如何将它们传递给集成函数?

这似乎是一个适用于许多数学运算的基本问题,因此我认为澄清这一点非常有用。

1 个答案:

答案 0 :(得分:0)

我不会在函数中显示错误消息。我会返回像Double.NaN这样的东西,这样你就可以从逻辑中分离UI。

通过查看您拥有的内容,您可以创建类似Math class的内容。让你的函数在类中共享,可以称为MathFunction或其他东西。

此外,您忘记返回值。