1

これは簡単なはずだと言うことから始めます...しかし、それは私には完全に明らかではありません. BrentOptimizer を使用して、関数の極小値と極大値を見つけようとしています。私はこれらの周期性についての考えを持っており、BracketFinder を使用して最適値をまとめ、それを BrentOptimizer に送ることができるはずだと感じています。

彼女はドキュメントです:http://commons.apache.org/math/api-2.2/org/apache/commons/math/optimization/univariate/BracketFinder.html

したがって、単純なケースでは、次のことを考慮してください。

f(x) = sin(x)

Pi/2 に最大値があり、3Pi/2 に最小値があることがわかっています。ゼロから始めて関数に沿って移動するとしたら、Pi/2 でそのルートを探すにはどうすればよいでしょうか? それは実際には、コンストラクターの引数と初期ポイントに帰着します。これらのパラメーターを合理的な方法で設定するために使用できるベスト プラクティス (関数の形状について少し知っていると仮定して) はありますか?

ありがとう

4

1 に答える 1

0

あなたはおそらくこれを今までに整理しましたが、ブラケット法は最初のポイントをまったく期待していません。その意図は、 BrentOptimizerBracketFinderへの呼び出しで適用する必要があるという最初の推測を見つけることです。にデフォルトのコンストラクタを適用しても問題ありません。BracketFinder

optimizeブラケットポイントを受け取った後、抽象基本クラスBaseAbstractUnivariateOptimizerで定義された3ポイントメソッドを使用します。ここminmax、、はそれぞれ:s 、およびstartValueから取得されます。BracketFindergetLo()getHi()getMid()

BracketFinderの実装は、本のCバージョンの10.1章のNumericalRecipesにあるものに明らかに基づいています。これにより、使用されるブラケットの原則についてもう少し背景を知ることができます。

于 2012-06-15T10:01:12.183 に答える