Optimization Routine for two equations, three unknowns
1 view (last 30 days)
Show older comments
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 Comments
Accepted Answer
Walter Roberson
on 29 Apr 2018
>> [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 Comments
Walter Roberson
on 29 Apr 2018
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
More Answers (0)
See Also
Categories
Find more on Get Started with Optimization Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!