0

解析関数を取り、ルートを見つけることができるブレント法 (数値法) の 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

ブレントメソッドをクラスまたは関数として定義する必要がありますか?

関数を初期化 (つまり、Q=1、a=1、w=1、S=1) してから、h の値を返すことができる Brent メソッドに関数を渡します。VB.NET でこれを行う最善の方法は何ですか? 任意の単一値関数を渡して根を見つけることができる一般的な Brent メソッドを作成したいと考えています。

私はVBを使い始めたばかりで、これまでに見つけたものから、あなたが持っているツールは-関数のデリゲート-関数のラムダ式を使用する-ポインター/アドレスを送信する-作成する関数クラス/構造体を作成し、これを関数に送信します

今のところ、関数クラスを作成する傾向が最も強いです。しかし、どうすればいいのかよくわかりません。F.ex。統合したい「一意の関数」ごとに異なるクラスを作成しますが、統合関数呼び出しで引数の型を指定する必要がある場合、それらを統合関数に渡すにはどうすればよいですか?

これは多くの数学演算に当てはまる基本的な問題のように思えるので、これを明確にすることは非常に役立つと思います。

4

1 に答える 1

0

関数にエラーメッセージを表示しません。Double.NaNのようなものを返します。そうすれば、UI をロジックから分離できます。

あなたが持っているものを見ると、Math クラスのようなものを作成できます。関数を MathFunction などと呼ばれるクラスで共有する。

また、値を返すのを忘れました。

于 2013-05-22T12:58:41.517 に答える