2

fsolve を使用して非線形方程式系を解こうとしています。まあ言ってみれば

F(x;lambda) = 0、ここで lambda はパラメーターのベクトル、x は解決したいベクトルです。

Matlab の fsolve を使用しています。

システムを解決したいパラメーターラムダの2つの値があります。ラムダの 1 つの値については、問題ないように思われる解決策が得られます。

ラムダの他の値については、再び解が得られます (matlab はフラグ 1 で終了します。ただし、これが実際の解ではないことはわかっています。たとえば、x の次元のいくつかは互いに等しくなければならないことがわかっています。 fsolve から取得したソリューションには当てはまりません。

trust-region と levenberg-marquardt アルゴリズムの両方を試しましたが、より良い結果が得られません。(これらの x を同じにすることを明示的に強制しても、システムのプロパティから期待されるものと一致しないソリューションが得られるようです)

私の質問は次のとおりです。 fsolve で使用されるアルゴリズムは、システムの安定性に依存しますか? 上記の 2 番目のケースでパラメーター lambda を変更すると、システムが不安定になり、fsolve が正しく解決するのに苦労する可能性がありますか?

ありがとう、ジョージ

4

1 に答える 1

1

fsolve は「失敗」ではありません。jucestain のコメントによると、ローカルの最小値が得られますが、これは必ずしもグローバルな最小値ではありません。これは、その目的で設計されたものです。

グローバル最小値を取得する可能性を高めるには、次のいずれかを行う必要があります。

  • あなたの最初の推測が正しいことを知っておいてください

  • 初期推測のグリッドを使用して最適化を数回実行し、最良の結果を選択します

  • 制約を追加して、ソルバーが極小値を持つことがわかっている領域に迷い込むのを防ぎます

  • コスト関数を変更して極小値を削除します

グローバル最小値を保証できる非線形ソルバーを見つけた場合は、お知らせください。

于 2013-04-02T05:05:27.170 に答える