# Find argmin of function with two input variables

14 ビュー (過去 30 日間)
ABCDEFG HIJKLMN 2021 年 11 月 29 日
コメント済み: Matt J 2021 年 11 月 29 日
Hello, I want to find the arguments of a function La(x1, x2) that minimize this function by calculating the diff of the function in order of x1 and x2, equal to 0 and solving them. MATLAB keeps returning Empty sym: 0-by-1 and I don't understand why. Any help?
Also, if the derivative of the function in order of one of the variables was equal to 1, and then MATLAB tried to calculate 1 == 0, what would it return?
syms x1 x2
assume(x1 > 0.1)
assumeAlso(x1 < 2.0)
assumeAlso(x2 > 0.1)
assumeAlso(x2 < 2.5)
La(x1, x2) = x1^2 + x1 + x2^2 + 5*x2;
eqn1 = [diff(La, x1)==0];
solx1 = solve(eqn1, x1);
eqn2 = [diff(La, x2)==0];
solx2 = solve(eqn2, x2);

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

### 採用された回答

Matt J 2021 年 11 月 29 日

MATLAB keeps returning Empty sym: 0-by-1 and I don't understand why. Any help?
The solution to diff(La,x1)==0 is x1 = -0.5, which does not satisfy your assumption x1>0.1
and then MATLAB tried to calculate 1 == 0,
It would return no solution, as it should.
syms x
solve(diff(x)==0,x)
ans = Empty sym: 0-by-1
##### 5 件のコメント表示非表示 4 件の古いコメント
Matt J 2021 年 11 月 29 日
Your function is additively separable in this example, so the terms dependent on x2 can be minimized independently of x1.
fminbnd(@(x2) x2^2+5*x2, 0.1,2.5)
ans = 0.1001
If you have to do deal with non-separable functions, you can use fmincon().

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

R2021a

### Community Treasure Hunt

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

Start Hunting!