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.

4 件のコメント

Amit
Amit 2014 年 2 月 7 日
what are the conditions? I think you can solve this without using fmincon
Cong
Cong 2014 年 2 月 7 日
There are no special conditions, but x(1)...x(5) should be less than 1 but larger than 0. And I think I can add this requirement in the fmincon function.
Amit
Amit 2014 年 2 月 8 日
3*x(4) + 9*x(6) + x(2) - 10=0;
is this correct? x(6)? I thought you had only 5 parameters?
Cong
Cong 2014 年 2 月 8 日
Sorry, I just correct my mistake. You are right, only 5 parameters. This is just an example.

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

 採用された回答

Amit
Amit 2014 年 2 月 8 日

0 投票

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))

5 件のコメント

Cong
Cong 2014 年 2 月 8 日
Hi Amit,
I think you missed my biggest question that I asked: how can I put [fmincon] in a loop. Since there are 5 parameters but 4 equations, so I try to fix a parameter first and then use [fmincon] to calculate others, and then do it in a loop.
Cong
Cong 2014 年 2 月 9 日
Can I put those equations in my script with {fmincon}, instead of writing a function to include my equations?
Amit
Amit 2014 年 2 月 10 日
Cong, Yes, you can definitely put this in a script. However, I don't think this will give you a solution. I have tested the equations you have given here by varying x(5) between 0 and 1 and allowing the rest to be solved as A\b but I could not find an solution satisfying 0< x(i) < 1.
The method I posted earlier, minimizes the function to the minimum value possible but it wont solve it. Are you sure there is a solution for this problem within the ranges you specified?
Cong
Cong 2014 年 2 月 10 日
Hi Amit, the equations that I posted are not my real problem which are more complex and non-linear. Here I just want to get an idea how to vary my x(5) while using 'fmincon'. I figure out that it is a problem of using anonymous function. Here is a simple example, but note that some contents are not provided.
for p=1:10
i=i+1;
x(i,:) = fmincon(@(X) myfun(X,p), x0, [], [], [], [], ...
[], [], [], options);
end
Thank you for the time.
Amit
Amit 2014 年 2 月 10 日
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.

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeLoops and Conditional Statements についてさらに検索

質問済み:

2014 年 2 月 7 日

コメント済み:

2014 年 2 月 10 日

Community Treasure Hunt

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

Start Hunting!

Translated by