MATLAB Answers

Gian Lorenzo

Order of variables in SOLVE

Asked by Gian Lorenzo
on 14 May 2013
clear all
syms x y l1 l2 l3   %%Generate symb var for multipliers
v=[x y l1 l2 l3];
g1=(y-3)/sqrt((x-2)^2+(y-3)^2)+l1+l2-l3;  %% Gradient condition
cs1=l1(x+y);  %% Complementary slackness conditions
[x, y, l1, l2, l3] = solve(g1==0,g2==0,cs1==0,cs2==0,cs3==0, x, y, l1,...
    l2, l3);
sol=[x, y, l1, l2, l3];

I have this KKT system. Other times when I used the solve command I noticed that in the solution matrix the variables are not reported in the specified order.

How do I make sure that in the sol matrix the variable are the right one (without checking manually, that is).

In the example above, having the solutions, I can see that into sol x,y are the two rightmost columns. If I switch like this

[ l1, l2, l3, *x, y,*] = solve(g1==0,g2==0,cs1==0,cs2==0,cs3==0, x, y, l1,...
      l2, l3);

then everything goes ok. I need to now why this happens in order not to make this mistake again when I don't have solutions. Thanks



No products are associated with this question.

1 Answer

Answer by Walter Roberson
on 14 May 2013
 Accepted answer

Use the structure return form of solve and then extract by structure field name into the variables you want.


Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi test

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!