# find maximum value of F

F = (4x+4y+9z-2w), G = (2x+2y +z+ w)==0, H = (x^2+y^2+z-4)==0,

• x ,y, z, w is symbolic expressions in 4 variables.
• The symbolic expressions G and H represent constraints.
• find the maximum value of F , subject to the constraints G=0 and H=0 ?????????

edit retag close merge delete

Homework ?

( 2020-10-14 13:14:09 +0200 )edit

Use Lagrange multipliers?

( 2020-10-15 00:17:18 +0200 )edit

Where are you stuck?

( 2020-10-15 13:50:04 +0200 )edit

Still homework or not ?

Hint : the maximum you seek is $\displaystyle\frac{516}{11}$...

( 2020-10-16 15:52:14 +0200 )edit

Another hint : in your specific case, Lagrange multipliers are not strictly necessary, and a high school-level method is sufficient...

Nevertheless, looking up "Lagrange multipliers" in Wikipedia and understanding it is strongly advisable, event if the rigorous proofs underlying it require a bit more analysis than high school-level... (Anyway, high school-level analysis postulates some properties of the real numbers, whose proof requires way more than high school-level algebra and topology (the latter being null IIRC...)).

( 2020-10-16 16:18:28 +0200 )edit

Sort by » oldest newest most voted

One week after, we still don't know if this is homework or not. Well... one week after, it might be stale. So here are a couple of answers to a question interesting beyond the OP's potential homework.

The problem data can be set up in Sage as follows:

# Problem data
# Arguments of the function to optimize and nullity constraints to satisfy
Args = var("w, x, y, z")

# Function to optimize (here a symbolic expression)
F = (4*x + 4*y + 9*z - 2*w)

# Constraints (here, symbolic expressions to nullify)
G = (2*x + 2*y + z + w)
H = (x^2 + y^2 + z - 4)

# Problem setup: tuple of constraints -- expressed in
# a way that does not depend on the particular problem
C = (G, H)


### General solution

The general solution states that if (the $n$-dimensional vector) $\mathbf{x_0}$ maximizes (the scalar) $\phi(\mathbf{x})$ under the ($m$-vector) equality constraint $\boldsymbol{\psi}\mathbf{(x}) = \mathbf{0}$, then there exist an ($m$-dimensional) vector $\mathbf{\lambda}$ (the Lagrange multipliers) such as all the components of the differential of the (scalar) function (callad Lagrangian) $\phi(\mathbf{x_0})+ \mathbf{\lambda} \cdot \mathbf{\boldsymbol{\psi}(x_0)}$ are all zero; in other words, the maximization of a scalar function of $n$ variables under $m$ constraints is replaced by the maximization of a scalar function of $n + m$ variables.

This translates in Sage as:

# Solution
# (Vector) function of constraints
psi = vector(C).function(*Args)

# Vector of Lagrange multipliers
Lambda = vector([var("lambda_{}".format(u)) for u in range(len(C))])

# Function to optimize
phi = F.function(*Args)

# Lagrangian arguments
ArgsL = Args + tuple(Lambda)

# Lagrangian function
L = (phi + Lambda.dot_product(psi)).function(*ArgsL)

# Its differential (vector)
dL = L.diff()(*ArgsL)

# Solution(s) nullifying this differential :
Sol = solve(list(dL), ArgsL, solution_dict=True)

# Extremal value
Max = F.subs(Sol)


which gives:

sage: Sol
[{w: -628/121, x: 4/11, y: 4/11, z: 452/121, lambda_0: 2, lambda_1: -11}]
sage: Max
516/11


Nota bene: the Lagrange multipliers solutions can be maxima or minima, but may also be saddle points; this should be checked.

### Specialized solution

The idea is to use the $m$ constraints to express $m$ variables as functions of the other $n - m$ variables. (Here, we can express $w$ and $z$ as functions of $x$ and $y$). The problem is then to find the (unconstrained) maximum of a function of $n - m$ variables, which is done by solving the components of its differential for those variables.

This is called parameterization.

# Eliminate two variables from the two constraints. Here, we choose w and z,
# since one constraint uses x^2 and y^2, opening the door to multiple solutions
S1 = solve([G, H], [w, z], solution_dict=True)

# Substitute this in F
F1 = F.subs(S1)

# Optimize F1, i. e. find the point(s) where both derivatives are zero
Sol1 = solve([F1.diff(u) for u in (x, y)], [x, y], solution_dict=True)

# Substitute in the [G, H] system, and solve for (numerical) w, z
Sol2 = solve([u.subs(Sol1[0]) for u in (G, H)], [w, z], solution_dict=True)

# Cleanup: One dictionary solution
HSSol = copy(Sol1[0])
HSSol.update(Sol2[0])

# Get the (numerical) extremum
HSMax = F.subs(HSSol)


which gives:

sage: HSSol
{x: 4/11, y: 4/11, w: -628/121, z: 452/121}
sage: HSMax
516/11


Again, the nature (maximum, minimum or saddle-point) of the extrema thus obtained must be checked.

### Numerical solutions

One can note that Sage implements numerical methods of minimization of a real function subject to (more general inequality) constraints, accessible via the minimize_constrained function. Other methods implemented in SciPy (which Sage depends on) can also be used.

more