RE: Tricky visualization of maximization problem
- To: mathgroup at smc.vnet.net
- Subject: [mg71015] RE: [mg71004] Tricky visualization of maximization problem
- From: "David Park" <djmp at earthlink.net>
- Date: Sat, 4 Nov 2006 23:07:11 -0500 (EST)
Uwe,
Here is a third visualization of your maximization problem. In this
visualization we plot a vertical surface on the constraint line. It is easy
to see where the maximum values are. IteratorSubstitution is a DrawGraphics
routine that allows us to draw a surface where one of the plot iterators is
not between fixed values. In this case we want to draw a surface that goes
from zero to the value of f[x, y]. IteratorSubstitution produces a
parametrization with fixed iterators (as Mathematica demands). I will first
produce the graphic by parametrizing the circle. Afterwards I will produce
the graphic where we obtain points of the constraint equation from an
ImplicitPlot curve.
Needs["DrawGraphics`DrawingMaster`"]
f[x1_, x2_] := x1^2 + 4*x1*x2 + 3*x2^2
c[x1_, x2_] := x1^2 + x2^2 == 1
{maxvalue, xysols} = Maximize[{f[x, y], c[x, y]}, {x, y}];
IteratorSubstitution[{Cos[t], Sin[t], z}, {z, 0, f[Cos[t], Sin[t]]}]
{{Cos[t], Sin[t], -w (Cos[2 t] - 2 (1 + Sin[2 t]))}, {w, 0, 1}}
Module[
{size = 1.1},
Draw3DItems[
{SurfaceColor[LightCoral], EdgeForm[ColorMix[LightCoral, Black][0.5]],
ParametricDraw3D[{Cos[t],
Sin[t], -w (Cos[2 t] - 2 (1 + Sin[2 t]))}, {t, 0, 2Pi}, {w, 0,
1},
PlotPoints -> {50, 15}]},
NeutralLighting[0.2, 0.4, 0.1, 30°],
Axes -> True,
AxesEdge -> {{-1, -1}, {1, -1}, {-1, -1}},
AxesLabel -> {x, y, None},
BoxRatios -> {1, 1, 1},
PlotLabel ->
SequenceForm["\tMaximizing ", f[x, y], ", on ", c[x, y],
"\n\t\t\tMaximum value: ", maxvalue],
TextStyle -> {FontSize -> 12, FontWeight -> "Bold"},
Background -> ColorMix[SeaGreen, White][0.85],
ImageSize -> 500]
];
Suppose that we didn't know how to easily parametrize the constraint
equation. One approach is to get the line from ImplicitPlot and then fit
InterpolatingFunctions to the x and y coordinates. We can then use these in
IteratorSubstitution.
size = 1.1;
constraintpoints =
First@Cases[
ImplicitDraw[c[x, y], {x, -size, size}, {y, -size, size},
PlotPoints -> 100], Line[pts_] -> pts, \[Infinity]];
xfun = ListInterpolation[First[Transpose[constraintpoints]]];
yfun = ListInterpolation[Last[Transpose[constraintpoints]]];
{tparam, iter} =
IteratorSubstitution[{xfun[t], yfun[t], z}, {z, 0, f[xfun[t], yfun[t]]}]
(the output is only given in schematic form.)
{{InterpolatingFunction[...][t], InterpolatingFunction[...][t],
w*(3*InterpolatingFunction[...][t]^2 + 4*InterpolatingFunction[...][t]*
InterpolatingFunction[...][t] + InterpolatingFunction[...][t]^2)}, {w,
0, 1}}
Module[
{size = 1.1},
Draw3DItems[
{SurfaceColor[LightCoral], EdgeForm[ColorMix[LightCoral, Black][0.5]],
ParametricDraw3D[tparam, {t, 1, 361}, {w, 0, 1},
PlotPoints -> {50, 15}]},
NeutralLighting[0.2, 0.4, 0.1, 30°],
Axes -> True,
AxesEdge -> {{-1, -1}, {1, -1}, {-1, -1}},
AxesLabel -> {x, y, None},
BoxRatios -> {1, 1, 1},
PlotLabel ->
SequenceForm["\tMaximizing ", f[x, y], ", on ", c[x, y],
"\n\t\t\tMaximum value: ", maxvalue],
TextStyle -> {FontSize -> 12, FontWeight -> "Bold"},
Background -> ColorMix[SeaGreen, White][0.85],
ImageSize -> 500]
];
David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/
From: Uwe Ziegenhagen [mailto:newsgroup at ziegenhagen.info]
To: mathgroup at smc.vnet.net
Hi,
I want to maximize
x1^2 + 4*x1*x2 + 3*x2^2 (eq.1)
under the constraint
x1^2 + x2^2 == 1 (eq. 2)
So far no problem, Maximize gives me 2 + sqrt(5)
But how can I display this visually?
For eq. 1 I can use Plot3D[], for eq. 2 ImplicitPlot[] but how to have
them in one picture?
Thanks in advance,
Uwe