# Find the minimum value of a constrained multivariable function [closed]

Say I have a function of four variables $$f(x_1,x_2,x_3,x_4)$$ and a constraint $$g(x_1,x_2,x_3,x_4)$$ (both are quite complicated, that's why I don't write them explicitly). I want to find the minimum value of $$f$$ constrained with $$g$$. How can I do it?

• I suggest that you define a simple f and g, and try to solve that problem. If you have difficulty with that, show us what you have tried, and you may well get help. Mar 7 at 18:28
• Look in the documentation for Minimize, NMinimize, and FindMinimum. They each take constraints. Mar 7 at 19:14

b1 = Ball[{0, 0, 0, 0}, 3]
b2 = Ball[{1, 1, 1, 1}, 2]
region = RegionDifference[b1, b2]
BooleanRegion[#1 && ! #2 &, {Ball[{0, 0, 0, 0}, 4],
Ball[{1, 1, 1, 1}, 2]}]
points = RandomPoint[region, 1000];
And @@ Map[RegionMember[b1, #] &, points]
\[Not] (Or @@ Map[RegionMember[b2, #] &, points])
result = Minimize[w x^3 + y z^3, {w, x, y, z} \[Element] region]
point = {w, x, y, z} /. result[]
RegionMember[region, point]
RegionMember[b1, point]
RegionMember[b2, point]

Ball[{0, 0, 0, 0}, 3]
Ball[{1, 1, 1, 1}, 2]
BooleanRegion[#1 &&  !#2 & , {Ball[{0, 0, 0, 0}, 3],
Ball[{1, 1, 1, 1}, 2]}]
True
True
{-((243*Sqrt)/16), {w -> 3/2, x -> -((3*Sqrt)/2), y -> 0,
z -> 0}}
{3/2, -((3*Sqrt)/2), 0, 0}
True
True
False


NMinimize is much faster than Minimize:

{4.71875, {-((243 Sqrt)/16), {w -> 3/2, x -> -((3 Sqrt)/2),
y -> 0, z -> 0}}}
{0.203125, {-26.305522272472924, {w -> 1.499999998583872,
x -> -2.598076232994641, y -> -8.937925613796142*^-9,
z -> -1.3744853098673136*^-8}}}


Of course, I may have missed something.