MATLABのcvxスイートは、以下の (一見問題のない) 最適化問題を解決できますが、私が扱っている大規模な完全な行列の場合はかなり遅くなります。これは、cvx を使用するのはやり過ぎであり、問題には実際に解析的な解決策があるか、組み込みの MATLAB 関数をうまく使用することでより迅速に処理できるためであると考えています。
背景:と の両方が最小二乗問題x1=A\b
を解決することはよく知られています。x2=pinv(A)*b
minimize norm(A*x-b)
という違いがありnorm(x2)<=norm(x1)
ます。実際、x2
は問題の最小ノルム解norm(x2)<=norm(x)
であるため、考えられるすべての解についてx
.
D=norm(A*x2-b)
、(同等のD=norm(A*x1-b)
)を定義するとx2
、問題が解決します
minimize norm(x)
subject to
norm(A*x-b) == D
問題:次の解決策を見つけたい:
minimize norm(x)
subject to
norm(A*x-b) <= D+threshold
つまり、私はnorm(A*x-b)
できるだけ小さくする必要はなく、ある程度の許容範囲内である. の範囲内になる最小ノルム解x
が必要です。A*x
D+threshold
b
この問題に対する分析的な解決策 (従来の最小二乗問題で疑似逆行列を使用するようなもの) を Web 上または手動で見つけることができませんでした。「非線形制約のある最小二乗法」や「しきい値のある最小二乗法」などを検索してきました。
どんな洞察も大歓迎ですが、私の本当の質問は次のとおりだと思います: MATLABでこの「しきい値付き」最小二乗問題を解決する最速の方法は何ですか?