# how to use fmincon in a loop

3 views (last 30 days)
Cong on 7 Feb 2014
Commented: Amit on 10 Feb 2014
I have 5 unknown parameters but only 4 equations, but each parameter has an interval, so I prefer to use fmincon. For example, these are 4 equations:
2*x(3) + x(5) + 5*x(1) - 1=0;
x7*(4) + 3*x(3) + x(2) - 10=0;
x(3) + 2*x(5) + 5*x(1) - 3=0;
3*x(4) + 9*x(5) + x(2) - 10=0;
My idea is like this:
for x(1)=0.1:0.1:1
fmincon(@myfun, x0,[]...)
end
But I do not know how to let x(1) be changed in the loop.
Thank you for any suggestions in advance.
Cong on 8 Feb 2014
Sorry, I just correct my mistake. You are right, only 5 parameters. This is just an example.

Amit on 8 Feb 2014
A = [5 0 2 0 1;
0 1 3 7 0;
5 0 1 0 2;
0 1 0 3 9];
b = [-1;-10;-3;-10];
FF = @(x) norm(A*x+b);
xx = fmincon(FF,rand(5,1),[],[],[],[],zeros(5,1),ones(5,1))
Amit on 10 Feb 2014
what is i there?
In a way, lets say you're trying to vary x(5) only, you can do it two way.
1. set the upper and lower bounds for x(5) as value-eps and value + eps, this will contain the value of x(5) within the range.
2. For you objective function, use only 4 input variable and pass the value of x(5) as a scalar as in fmincon(@(x) myfun(x,x5val). In this scenario, you'll have to write the function accordingly.