Solve linear system of equations with constains

5 ビュー (過去 30 日間)
Xin
Xin 2018 年 2 月 25 日
編集済み: Matt J 2018 年 3 月 3 日
Hello everyone. I have a linear system of equations that make a matrix, L*x=R. x is composed on many variables, e.g. x=[x1 x2 x3 x4 ... xN]. I want to solve this system of equation with constraints x1>|x2|>|x3|>|x4|...>|xN|. Can I use lsqlin(L,R) with some additional input to realize it?
Many thanks.

採用された回答

Matt J
Matt J 2018 年 2 月 25 日
編集済み: Matt J 2018 年 3 月 2 日
If you make the change of variables x(i)=u(i)-v(i) with linear constraints
u(i)>=0,
v(i)>=0,
u(i)+v(i)>=u(i+1)+v(i+1)
and modify your least squares objective from norm(L(u-v)-R)^2 to
norm(L(u-v)-R)^2 + C*( norm(u)^2 + norm(v)^2)
then for a sufficiently small choice of C>0, this should give an equivalent solution. It's not ideal, since it forces you to re-solve with multiple choices of C, but on the other hand, it allows you to pose this as a convex problem.
  8 件のコメント
Xin
Xin 2018 年 3 月 3 日
I have looked into lsqlin function but did not find how to change the objective. Then how do I change the objective from min 0.5*(NORM(C*x-d)).^2 to min 0.5*(NORM(C*x-d)).^2+ C*( norm(u)^2 + norm(v)^2)?
Thanks!
Matt J
Matt J 2018 年 3 月 3 日
編集済み: Matt J 2018 年 3 月 3 日
It just requires a different choice of input matrices C,d. For example, the terms
( norm(u)^2 + norm(v)^2)
is the same as
norm( C*[u;v]-d )^2
where C=speye(2*N) and d=zeros(2*N,1).

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLinear Least Squares についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by