0

Excel VBA を使用して方程式の最小値を見つけるにはどうすればよいですか?

たとえば、方程式 y = 2x^2 + 14 があり、y の可能な最小値が見つかるまで x の値をゆっくりと増減するループを作成したい場合、何を教えてください。 xの対応する値は、どうすればそれを行うことができますか?

はるかに複雑な方程式で機能する方法はありますか?

ご協力ありがとうございました!

編集:詳細

核崩壊をグラフ化するために必要な特定の定数を見つけるプログラムを設計しようとしています。この定数は、計算された減衰を取得する方程式の一部です。この計算された減衰と測定された減衰を比較しています。ただし、定数は減衰が発生するとわずかに変化します。つまり、残差平方と呼ばれるものを使用して、計算された減衰を可能な限り正確にするために、減衰全体に最適な定数を見つける必要があります。

(測定された減衰 - 計算された減衰) ^2 を実行することで機能します

減衰のために数回それを行い、それらをすべて加算します。プログラムで行う必要があるのは、この減衰を使用してすべての時間の残差二乗結果を合計したときに得られる値の最小値が見つかるまで、この定数をゆっくりと増減することです。最小値を持つ残差二乗は、私が望む定数の値を持っています。

私はすでにすべての計算などを行うプログラムを起草しました。この最小値を見つける方法がわかりません。メソッドが y = x^2 + 1 のようなもので機能する場合、ニーズに合わせて機能するように適応させることができると確信しています。

4

1 に答える 1

0

ループ中に出力をテストして、最小の出力結果を探します。

例を次に示します。

Sub FormulaLoop()

    Dim x As Double
    Dim y As Double
    Dim yBest As Double

        x = 1
        y = (x ^ 2) + 14
        yBest = y

    For x = 2 To 100
         y = (x ^ 2) + 14
         If y < yBest Then
            yBest = y
         End If
    Next x

    MsgBox "The smallest output of y was: " & yBest

End Sub

x を構成する 2 つの変数のすべての可能性をループしたい場合は、次の形式でループすることをお勧めします。

Sub FormulaLoop_v2()

    Dim MeasuredDecay  As Double
    Dim CalculatedDecay As Double
    Dim y As Double
    Dim yBest As Double

        MeasuredDecay = 1
        CalculatedDecay = 1
        y = ((MeasuredDecay - CalculatedDecay) ^ 2) + 14
        yBest = y

    For MeasuredDecay = 2 To 100
        For CalculatedDecay = 2 To 100
            y = ((MeasuredDecay - CalculatedDecay) ^ 2) + 14
            If y < yBest Then
               yBest = y
            End If
         Next CalculatedDecay
    Next MeasuredDecay

    MsgBox "The smallest output of y was: " & yBest

End Sub
于 2012-07-10T22:36:10.690 に答える