2012-01-20 10 views
0

lsqcurvefit関数を使用してカーブに合わせたいと思います。動的制約付きMatLabカーブフィット

y = a1 * x + a2 * z 
s.t 
a1 > 0 
a2 > 0 
a1 + a2 <= some number 

このような動的制約をmatlabに持たせることはできますか、他のパッケージを使用する必要がありますか?

答えて

1

lsqlinは、制約が線形等量または不等式である限り、問題のツールです。線形の場合について説明したので、これが正しい解です。

非線形制約のある例を示していたなら、fmincon(Marcinの示唆したように)を使用することになりますが、これは完全に線形の問題のために過度になります。もちろん、fminconはあなたの目的が制約の下で線形最小二乗であることを知らないので、もちろん、かなり効率的ではありません。

最後に、fminconを使用するには、残差の二乗和として目的を定義する必要があります。 lsqlinは問題のクラスを解決するために明示的に設計されているので、この後者のステップはlsqlinでは必要ありません。

+1

が正しければ、私はちょうどあなたにいくつかの本当に奇妙な制約がある場合に備えて、非完璧なアプローチの代償でfminconでそれを行うことができることを示したかっただけです。 – Marcin

1

fminconおそらくあなたが望むものです。制約は独立した関数なので、数式を表現することができれば、そこに何かを詰め込むことができます。

+1

私の答えで指摘したように、fminconは制約が非線形であった場合にのみ適切です。それ以外の場合は、lsqlinが最適です。 –

関連する問題