MATLAB の関数を使用しており、オプションをlsqnonlin
使用してユーザー定義の JacboianパターンJacobPattern
を設定しようとしています。trust-region-reflective
使用するアルゴリズムの設定を行いました。from は、これが実際にソルバーによって使用されるアルゴリズムであることを示しています (output
オプションの使用に必要)。lsqnonlin
JacobPattern
私が見つけた問題は、 myJacobPattern
がまばらすぎる場合 (たとえば、500x500 のヤコビアンで 1 が数行しかない場合)、ソルバーによって無視され、代わりに完全なヤコビアンが計算されることです。
この動作は文書化されていません。誰かがそれにさらに光を当てることができますか? JacobPattern
私は、ソルバーがどれほど途方もなくまばらであっても、または勾配がどれほど浅くても、それを使用するようにソルバーに強制できるようにしたいと考えています。
アップデート:
さらにいくつかの実験を行ったところ、ヤコビ パターンにすべてゼロの行がある場合にのみ、ヤコビアンが再計算されるようです。各行に少なくとも 1 つの「1」がある限り、すべてがゼロの列はいくつあっても問題ありません。これは問題を回避するのに役立ちますが、疑問が残ります --- ソルバーが各従属変数に勾配を関連付ける必要があるのはなぜですか? いずれにせよ、ユーザー定義オプションを無視することは、少なくとも警告に値すると思います...