- You set options for fsolve, but then call lsqnonlin. This is a mistake.
- You do not pass options to the solver. This might be a mistake.
- You have six equations in four unknowns. Generally, you should not expect a solution to such a system, only a point that is a local minimum of the sum of squares.
How to solve 4 equations with 4 unknowns with bounds?
4 ビュー (過去 30 日間)
古いコメントを表示
Hi everyone, I'm trying to solve this but the message displayed local minimum found and also the values of the x generated did not match with the boundary which was set ie. x(1)+x(2) = Ym. It also says lsqnonlin stopped because the final change in the sum of squares relative to its initial value is less than the value of the function tolerance.Could anyone help with this? Many thanks!
clear; clc;
x0 = [50; 50; 50; 50;];
options = optimoptions('fsolve','Display','iter');
%[x,fval] = fsolve(@myfun,x0,options)
lb = [0; 0; 0; 0;];
ub = [100; 100; 100; 100;];
x = lsqnonlin(@myfun,x0,lb,ub)
myfun(x)
function F = myfun(x)
A = 87.3145;
B = -0.289762;
C = 0.0000199677;
alpha = 0.4705;
Xm = 20;
Ym = 27.5;
F = [x(1)+x(2)-Ym;
x(3)+x(4)-Xm;
A*exp(B*x(3)^0.5 - C*x(3)^3) - x(1);
A*exp(B*x(4)^0.5 - C*x(4)^3) - x(2);
Ym/alpha - ((1-alpha)/alpha)*x(2) - x(1);
Xm/alpha - ((1-alpha)/alpha)*x(4) - x(3);
]
end
0 件のコメント
採用された回答
Alan Weiss
2019 年 4 月 22 日
Alan Weiss
MATLAB mathematical toolbox documentation
その他の回答 (1 件)
Alex Sha
2019 年 5 月 16 日
Refer the results below:
x1: 7.73410323214524
x2: 32.0801819920043
x3: 33.4573119565274
x4: 11.2688338748665
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Mathematics and Optimization についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!