Optimization Routine for two equations, three unknowns
1 次查看(过去 30 天)
显示 更早的评论
Hi,
I am trying to set up a basic optimization routine in matlab.
Equation 1: 3.6*x*y = 750
Equation 2: 19.8*x*y*z = 800000
x = 6:1:12
y = 20:1:40
z = 150:1:250
Is there a tool/method to solve/optimize this ?
Thank You.
0 个评论
采纳的回答
Walter Roberson
2018-4-29
>> [X,Y,Z] = ndgrid(6:12,20:40,100:150);
>> mask = (3.6.*X.*Y == 750) & (1.98.*X.*Y.*Z == 800);
>> nnz(mask)
ans =
0
There are no solutions under those constraints.
6 个评论
Walter Roberson
2018-4-29
No, just examine it algebraically.
>> syms x y z
>> Y = solve(3.6*x*y == 750,y)
Y =
625/(3*x)
>> Z = solve(subs(19.8*x*y*z == 800000,y,Y),z)
Z =
6400/33;
>> lbx = solve(Y==20, x)
lbx =
125/12
>> ubx = solve(Y==40, x)
ubx =
125/24
so x must be in the range 125/24 to 125/12 for y to be in the ranges you specified. That is 5.20833 to 10.4166 .
Your x limit starts at 6 and ends at 12. 6 is inside the y range and 12 is outside the y range. So for everything to work out, x must be 6 to 125/12.
>> double(subs(Y,x,6))
ans =
34.7222222222222
>> double(subs(Y,x,125/12))
ans =
20
which fits the given limits.
So given continuous values instead of the discrete values you had asked for, x is any value in the range 6 to 125/12, and y = 625/3 * x, and z is 6400/33
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Nonlinear Optimization 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!