(* Content-type: application/mathematica *) (*** Wolfram Notebook File ***) (* http://www.wolfram.com/nb *) (* CreatedBy='Mathematica 6.0' *) (*CacheID: 234*) (* Internal cache information: NotebookFileLineBreakTest NotebookFileLineBreakTest NotebookDataPosition[ 145, 7] NotebookDataLength[ 68716, 1657] NotebookOptionsPosition[ 64884, 1538] NotebookOutlinePosition[ 66481, 1588] CellTagsIndexPosition[ 66153, 1576] WindowFrame->Normal ContainsDynamic->True *) (* Beginning of Notebook Content *) Notebook[{ Cell[CellGroupData[{ Cell["The Fundamental Theorem of Linear Programming", "DemoTitle", CellChangeTimes->{ 3.35696210375764*^9, {3.390838899026952*^9, 3.3908389079549522`*^9}}], Cell[CellGroupData[{ Cell["", "InitializationSection"], Cell[BoxData[{ RowBox[{ RowBox[{ RowBox[{"slope", "[", RowBox[{"pt1_", ",", "pt2_"}], "]"}], ":=", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"First", "[", "pt1", "]"}], "\[NotEqual]", RowBox[{"First", "[", "pt2", "]"}]}], ",", " ", RowBox[{ RowBox[{"(", RowBox[{ RowBox[{"Last", "[", "pt2", "]"}], "-", RowBox[{"Last", "[", "pt1", "]"}]}], ")"}], "/", RowBox[{"(", RowBox[{ RowBox[{"First", "[", "pt2", "]"}], "-", RowBox[{"First", "[", "pt1", "]"}]}], ")"}]}], ",", " ", "Null"}], "]"}]}], ";"}], "\[IndentingNewLine]", RowBox[{}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"intersect", "[", RowBox[{"pt1_", ",", "pt2_", ",", "a_", ",", "b_", ",", "c_"}], "]"}], ":=", RowBox[{"{", RowBox[{"pt1", ",", "pt2", ",", RowBox[{"If", "[", RowBox[{ RowBox[{"b", "\[Equal]", "0"}], ",", RowBox[{"-", FractionBox[ RowBox[{ RowBox[{"-", "c"}], "+", RowBox[{"a", " ", RowBox[{"First", "[", "pt2", "]"}]}]}], RowBox[{"a", " ", RowBox[{"(", RowBox[{ RowBox[{"First", "[", "pt1", "]"}], "-", RowBox[{"First", "[", "pt2", "]"}]}], ")"}]}]]}], ",", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"slope", "[", RowBox[{"pt1", ",", "pt2"}], "]"}], "\[Equal]", RowBox[{ RowBox[{"-", "a"}], "/", "b"}]}], ",", "\"\\"", ",", FractionBox[ RowBox[{ RowBox[{"-", "c"}], "+", RowBox[{"a", " ", "*", RowBox[{"First", "[", "pt2", "]"}]}], "+", RowBox[{"b", " ", "*", RowBox[{"Last", "[", "pt2", "]"}]}]}], RowBox[{ RowBox[{ RowBox[{"-", "a"}], " ", "*", RowBox[{"First", "[", "pt1", "]"}]}], "+", RowBox[{"a", " ", "*", RowBox[{"First", "[", "pt2", "]"}]}], "-", RowBox[{"b", "*", RowBox[{"Last", "[", "pt1", "]"}]}], "+", RowBox[{"b", "*", RowBox[{"Last", "[", "pt2", "]"}]}]}]]}], "]"}]}], "]"}]}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"intpts", "[", RowBox[{"list_", ",", "a_", ",", "b_", ",", "c_"}], "]"}], ":=", RowBox[{"Select", "[", RowBox[{ RowBox[{"MapThread", "[", RowBox[{ RowBox[{ RowBox[{"intersect", "[", RowBox[{"#1", ",", "#2", ",", "a", ",", "b", ",", "c"}], "]"}], "&"}], ",", RowBox[{"{", RowBox[{"list", ",", " ", RowBox[{"RotateLeft", "[", "list", "]"}]}], "}"}]}], "]"}], ",", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{"Last", "[", "#", "]"}], "\[GreaterEqual]", "0"}], "&&", RowBox[{ RowBox[{"Last", "[", "#", "]"}], "<", "1"}]}], "&"}]}], "]"}]}], ";"}]}], "Input", CellChangeTimes->{ 3.35696210375764*^9, {3.390838924241952*^9, 3.390838933115952*^9}, { 3.390906740252*^9, 3.3909067411800003`*^9}}, CellID->186438541] }, Closed]], Cell[CellGroupData[{ Cell["", "ManipulateSection"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"Manipulate", "[", RowBox[{ RowBox[{ RowBox[{"SeedRandom", "[", "sr", "]"}], ";", "\[IndentingNewLine]", RowBox[{"corners", "=", RowBox[{"Table", "[", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"10", "*", RowBox[{"Cos", "[", RowBox[{"2", "*", "Pi", "*", "k"}], "]"}]}], ",", " ", RowBox[{"10", "*", RowBox[{"Sin", "[", RowBox[{"2", "*", "Pi", "*", "k"}], "]"}]}]}], "}"}], ",", " ", RowBox[{"{", RowBox[{"k", ",", RowBox[{"Sort", "[", RowBox[{"Table", "[", RowBox[{ RowBox[{"Random", "[", "]"}], ",", RowBox[{"{", "n", "}"}]}], "]"}], "]"}]}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"max", "=", RowBox[{"Max", "[", RowBox[{ RowBox[{ RowBox[{"(", RowBox[{ RowBox[{"a", "*", RowBox[{"First", "[", "#", "]"}]}], "+", RowBox[{"b", "*", RowBox[{"Last", "[", "#", "]"}]}]}], ")"}], "&"}], "/@", "corners"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"min", "=", RowBox[{"Min", "[", RowBox[{ RowBox[{ RowBox[{"(", RowBox[{ RowBox[{"a", "*", RowBox[{"First", "[", "#", "]"}]}], "+", RowBox[{"b", "*", RowBox[{"Last", "[", "#", "]"}]}]}], ")"}], "&"}], "/@", "corners"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Column", "[", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Text", "@", RowBox[{"Grid", "[", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"Row", "[", RowBox[{"{", RowBox[{"\"\\"", ",", "max"}], "}"}], "]"}], "}"}], ",", RowBox[{"{", RowBox[{"Row", "[", RowBox[{"{", RowBox[{"\"\\"", ",", " ", "min"}], "}"}], "]"}], "}"}], ",", RowBox[{"{", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"a", "\[NotEqual]", "0"}], "||", RowBox[{"b", "\[NotEqual]", "0"}]}], ",", RowBox[{"Style", "[", RowBox[{ RowBox[{"Row", "[", RowBox[{"{", RowBox[{ "a", ",", "\"\\"", ",", "b", ",", "\"\\"", ",", "\"\< = \>\"", ",", "c"}], "}"}], "]"}], ",", "12", ",", "Red"}], "]"}], ",", "\"\\""}], "]"}], "}"}]}], "}"}], "]"}]}], ",", RowBox[{"Show", "[", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{"b", "\[NotEqual]", "0"}], ",", RowBox[{"Plot", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"(", RowBox[{ RowBox[{"-", "a"}], "/", "b"}], ")"}], "*", "x"}], "+", RowBox[{"(", RowBox[{"c", "/", "b"}], ")"}]}], ",", RowBox[{"{", RowBox[{"x", ",", RowBox[{"-", "10"}], ",", "10"}], "}"}], ",", " ", RowBox[{"AxesOrigin", "\[Rule]", RowBox[{"{", RowBox[{"0", ",", "0"}], "}"}]}], ",", RowBox[{"AspectRatio", "\[Rule]", "1"}]}], "]"}], ",", RowBox[{"If", "[", RowBox[{ RowBox[{"a", "\[NotEqual]", "0"}], ",", RowBox[{"Graphics", "[", RowBox[{ RowBox[{"{", RowBox[{"Blue", ",", " ", RowBox[{"Line", "[", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"c", "/", "a"}], ",", RowBox[{"-", "14"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"c", "/", "a"}], ",", "12"}], "}"}]}], "}"}], "]"}]}], "}"}], ",", " ", RowBox[{"PlotRange", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"-", "11"}], ",", "11"}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"-", "10"}], ",", "14"}], "}"}]}], "}"}]}], ",", RowBox[{"Axes", "\[Rule]", "True"}]}], "]"}], ",", RowBox[{"Graphics", "[", RowBox[{"Text", "[", RowBox[{"\"\<\>\"", ",", RowBox[{"{", RowBox[{"0", ",", "0"}], "}"}]}], "]"}], "]"}]}], "]"}]}], "]"}], ",", RowBox[{"Graphics", "[", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"PointSize", "[", ".02", "]"}], ",", " ", RowBox[{"Point", "[", "#", "]"}]}], "}"}], "&"}], "/@", "corners"}], "}"}], ",", RowBox[{"{", RowBox[{"LightGray", ",", " ", RowBox[{"Opacity", "[", ".5", "]"}], ",", RowBox[{"EdgeForm", "[", "Black", "]"}], ",", " ", RowBox[{"Polygon", "[", "corners", "]"}]}], "}"}], ",", " ", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"(", RowBox[{ RowBox[{"a", "\[NotEqual]", "0"}], "||", RowBox[{"b", "\[NotEqual]", "0"}]}], ")"}], "&&", RowBox[{ RowBox[{"Length", "[", RowBox[{"intpts", "[", RowBox[{"corners", ",", "a", ",", "b", ",", "c"}], "]"}], "]"}], ">", "0"}]}], ",", "\[IndentingNewLine]", " ", RowBox[{"{", RowBox[{"Red", ",", " ", "Thick", ",", " ", RowBox[{"Line", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"intpts", "[", RowBox[{"corners", ",", "a", ",", "b", ",", "c"}], "]"}], "[", RowBox[{"[", RowBox[{"All", ",", "3"}], "]"}], "]"}], "*", RowBox[{ RowBox[{"intpts", "[", RowBox[{"corners", ",", "a", ",", "b", ",", "c"}], "]"}], "[", RowBox[{"[", RowBox[{"All", ",", "1"}], "]"}], "]"}]}], "+", " ", "\[IndentingNewLine]", " ", RowBox[{ RowBox[{"(", RowBox[{"1", "-", RowBox[{ RowBox[{"intpts", "[", RowBox[{"corners", ",", "a", ",", "b", ",", "c"}], "]"}], "[", RowBox[{"[", RowBox[{"All", ",", "3"}], "]"}], "]"}]}], ")"}], "*", RowBox[{ RowBox[{"intpts", "[", RowBox[{"corners", ",", "a", ",", "b", ",", "c"}], "]"}], "[", RowBox[{"[", RowBox[{"All", ",", "2"}], "]"}], "]"}]}]}], "\[IndentingNewLine]", " ", "]"}]}], "\[IndentingNewLine]", " ", "}"}], ",", " ", RowBox[{"Text", "[", RowBox[{"\"\<\>\"", ",", " ", RowBox[{"{", RowBox[{"0", ",", "0"}], "}"}]}], "]"}]}], "\[IndentingNewLine]", " ", "]"}]}], "}"}], "]"}], ",", RowBox[{"PlotRange", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"-", "11"}], ",", "11"}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"-", "10"}], ",", "14"}], "}"}]}], "}"}]}], ",", RowBox[{"ImageSize", "\[Rule]", RowBox[{"{", RowBox[{"350", ",", "450"}], "}"}]}]}], "]"}]}], "}"}], ",", "Center"}], "]"}]}], ",", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"n", ",", "8", ",", "\"\\""}], "}"}], ",", "3", ",", "12", ",", "1", ",", " ", RowBox[{"ImageSize", "\[Rule]", "Small"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"a", ",", "9", ",", "\"\\""}], "}"}], ",", RowBox[{"-", "20"}], ",", "20", ",", " ", RowBox[{"ImageSize", "\[Rule]", "Small"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"b", ",", "3", ",", "\"\\""}], "}"}], ",", RowBox[{"-", "20"}], ",", "20", ",", " ", RowBox[{"ImageSize", "\[Rule]", "Small"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"c", ",", "5", ",", "\"\\""}], "}"}], ",", RowBox[{"min", "-", "10"}], ",", RowBox[{"max", "+", "10"}], ",", " ", RowBox[{"ImageSize", "\[Rule]", "Small"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"sr", ",", "123", ",", "\"\\""}], "}"}], ",", "1", ",", "12345", ",", "1", ",", " ", RowBox[{"ImageSize", "\[Rule]", "Small"}]}], "}"}], ",", " ", RowBox[{"ControlPlacement", "\[Rule]", "Left"}], ",", " ", RowBox[{"SaveDefinitions", "\[Rule]", "True"}], ",", RowBox[{"TrackedSymbols", "\[RuleDelayed]", RowBox[{"{", RowBox[{"n", ",", "a", ",", "b", ",", "c", ",", "sr"}], "}"}]}], ",", RowBox[{"AutorunSequencing", "\[Rule]", RowBox[{"{", RowBox[{"1", ",", "2", ",", "3", ",", "5"}], "}"}]}]}], "]"}]], "Input", CellChangeTimes->{ 3.35696210375764*^9, {3.390838968476952*^9, 3.3908389686579523`*^9}, { 3.390906842237*^9, 3.3909069302200003`*^9}, {3.39204590713972*^9, 3.3920459280297585`*^9}, {3.3920602757479067`*^9, 3.3920602794732633`*^9}, {3.3920603522779512`*^9, 3.392060380067911*^9}, { 3.392120264706955*^9, 3.392120292266584*^9}, {3.3921203667136335`*^9, 3.392120374805269*^9}, {3.3921364553059998`*^9, 3.392136472866*^9}, { 3.3921365114230003`*^9, 3.392136520815*^9}, {3.392136741549*^9, 3.392136748722*^9}, {3.392136848059*^9, 3.3921368543929996`*^9}, { 3.392136905925*^9, 3.3921369110299997`*^9}, {3.392137144039*^9, 3.392137183172*^9}, {3.392137224075*^9, 3.3921372981029997`*^9}, { 3.392137356488*^9, 3.392137366406*^9}, {3.3921374260220003`*^9, 3.3921374379960003`*^9}, 3.3921375193929996`*^9, {3.392137572616*^9, 3.392137575422*^9}, {3.3921377072460003`*^9, 3.392137707382*^9}, 3.392137914922*^9, 3.3921379654519997`*^9, 3.39213801283*^9, { 3.392138047388*^9, 3.392138049126*^9}, {3.392138106251*^9, 3.39213810642*^9}, {3.392138165601*^9, 3.3921382306619997`*^9}, { 3.3924048534574976`*^9, 3.3924048665763617`*^9}}], Cell[BoxData[ TagBox[ StyleBox[ DynamicModuleBox[{$CellContext`a$$ = 9, $CellContext`b$$ = 3, $CellContext`c$$ = 5, $CellContext`n$$ = 5, $CellContext`sr$$ = 123, Typeset`show$$ = True, Typeset`bookmarkList$$ = {}, Typeset`bookmarkMode$$ = "Menu", Typeset`animator$$, Typeset`animvar$$ = 1, Typeset`name$$ = "\"untitled\"", Typeset`specs$$ = {{{ Hold[$CellContext`n$$], 5, "number of corners"}, 3, 12, 1}, {{ Hold[$CellContext`a$$], 9, "coefficient a"}, -20, 20}, {{ Hold[$CellContext`b$$], 3, "coefficient b"}, -20, 20}, {{ Hold[$CellContext`c$$], 5, "value of obj. func."}, -128.7075766275508, 147.69674461908292`}, {{ Hold[$CellContext`sr$$], 123, "random seed"}, 1, 12345, 1}}, Typeset`size$$ = {350., {249.5, 254.5}}, Typeset`update$$ = 0, Typeset`initDone$$, Typeset`skipInitDone$$ = False, $CellContext`n$38536$$ = 0, $CellContext`a$38537$$ = 0, $CellContext`b$38538$$ = 0, $CellContext`c$38539$$ = 0, $CellContext`sr$38540$$ = 0}, DynamicBox[Manipulate`ManipulateBoxes[ 1, StandardForm, "Variables" :> {$CellContext`a$$ = 9, $CellContext`b$$ = 3, $CellContext`c$$ = 5, $CellContext`n$$ = 5, $CellContext`sr$$ = 123}, "ControllerVariables" :> { Hold[$CellContext`n$$, $CellContext`n$38536$$, 0], Hold[$CellContext`a$$, $CellContext`a$38537$$, 0], Hold[$CellContext`b$$, $CellContext`b$38538$$, 0], Hold[$CellContext`c$$, $CellContext`c$38539$$, 0], Hold[$CellContext`sr$$, $CellContext`sr$38540$$, 0]}, "OtherVariables" :> { Typeset`show$$, Typeset`bookmarkList$$, Typeset`bookmarkMode$$, Typeset`animator$$, Typeset`animvar$$, Typeset`name$$, Typeset`specs$$, Typeset`size$$, Typeset`update$$, Typeset`initDone$$, Typeset`skipInitDone$$}, "Body" :> ( SeedRandom[$CellContext`sr$$]; $CellContext`corners = Table[{10 Cos[2 Pi $CellContext`k], 10 Sin[2 Pi $CellContext`k]}, {$CellContext`k, Sort[ Table[ Random[], {$CellContext`n$$}]]}]; $CellContext`max = Max[ Map[$CellContext`a$$ First[#] + $CellContext`b$$ Last[#]& , $CellContext`corners]]; $CellContext`min = Min[ Map[$CellContext`a$$ First[#] + $CellContext`b$$ Last[#]& , $CellContext`corners]]; Column[{ Text[ Grid[{{ Row[{"Maximum value: ", $CellContext`max}]}, { Row[{"Minimum value: ", $CellContext`min}]}, { If[ Or[$CellContext`a$$ != 0, $CellContext`b$$ != 0], Style[ Row[{$CellContext`a$$, "x + ", $CellContext`b$$, "y", " = ", $CellContext`c$$}], 12, Red], "No objective function"]}}]], Show[ If[$CellContext`b$$ != 0, Plot[((-$CellContext`a$$)/$CellContext`b$$) $CellContext`x + \ $CellContext`c$$/$CellContext`b$$, {$CellContext`x, -10, 10}, AxesOrigin -> {0, 0}, AspectRatio -> 1], If[$CellContext`a$$ != 0, Graphics[{Blue, Line[{{$CellContext`c$$/$CellContext`a$$, -14}, \ {$CellContext`c$$/$CellContext`a$$, 12}}]}, PlotRange -> {{-11, 11}, {-10, 14}}, Axes -> True], Graphics[ Text["", {0, 0}]]]], Graphics[{{ Map[{ PointSize[0.02], Point[#]}& , $CellContext`corners]}, {LightGray, Opacity[0.5], EdgeForm[Black], Polygon[$CellContext`corners]}, If[ And[ Or[$CellContext`a$$ != 0, $CellContext`b$$ != 0], Length[ $CellContext`intpts[$CellContext`corners, $CellContext`a$$, \ $CellContext`b$$, $CellContext`c$$]] > 0], {Red, Thick, Line[Part[ $CellContext`intpts[$CellContext`corners, \ $CellContext`a$$, $CellContext`b$$, $CellContext`c$$], All, 3] Part[ $CellContext`intpts[$CellContext`corners, \ $CellContext`a$$, $CellContext`b$$, $CellContext`c$$], All, 1] + (1 - Part[ $CellContext`intpts[$CellContext`corners, \ $CellContext`a$$, $CellContext`b$$, $CellContext`c$$], All, 3]) Part[ $CellContext`intpts[$CellContext`corners, \ $CellContext`a$$, $CellContext`b$$, $CellContext`c$$], All, 2]]}, Text["", {0, 0}]]}], PlotRange -> {{-11, 11}, {-10, 14}}, ImageSize -> {350, 450}]}, Center]), "Specifications" :> {{{$CellContext`n$$, 5, "number of corners"}, 3, 12, 1, ImageSize -> Small}, {{$CellContext`a$$, 9, "coefficient a"}, -20, 20, ImageSize -> Small}, {{$CellContext`b$$, 3, "coefficient b"}, -20, 20, ImageSize -> Small}, {{$CellContext`c$$, 5, "value of obj. func."}, -128.7075766275508, 147.69674461908292`, ImageSize -> Small}, {{$CellContext`sr$$, 123, "random seed"}, 1, 12345, 1, ImageSize -> Small}}, "Options" :> { ControlPlacement -> Left, TrackedSymbols :> {$CellContext`n$$, $CellContext`a$$, \ $CellContext`b$$, $CellContext`c$$, $CellContext`sr$$}, AutorunSequencing -> {1, 2, 3, 5}}, "DefaultOptions" :> {ControllerLinking -> True}], ImageSizeCache->{599., {277., 282.}}, SingleEvaluation->True], Deinitialization:>None, DynamicModuleValues:>{}, Initialization:>({$CellContext`corners = {{8.795743568333975, 4.757614431636038}, {-1.5552689921374663`, 9.878316575312603}, {-5.602165717852644, -8.283461792615245}, { 2.661867992626573, -9.639214635530749}, { 5.346693483523826, -8.450613515789481}}, $CellContext`max = 137.69674461908292`, $CellContext`min = -118.70757662755078`, Attributes[PlotRange] = {ReadProtected}, $CellContext`intpts[ Pattern[$CellContext`list, Blank[]], Pattern[$CellContext`a, Blank[]], Pattern[$CellContext`b, Blank[]], Pattern[$CellContext`c, Blank[]]] := Select[ MapThread[$CellContext`intersect[#, #2, $CellContext`a, \ $CellContext`b, $CellContext`c]& , {$CellContext`list, RotateLeft[$CellContext`list]}], And[ Last[#] >= 0, Last[#] < 1]& ], $CellContext`intersect[ Pattern[$CellContext`pt1, Blank[]], Pattern[$CellContext`pt2, Blank[]], Pattern[$CellContext`a, Blank[]], Pattern[$CellContext`b, Blank[]], Pattern[$CellContext`c, Blank[]]] := {$CellContext`pt1, $CellContext`pt2, If[$CellContext`b == 0, -((-$CellContext`c + $CellContext`a First[$CellContext`pt2])/($CellContext`a ( First[$CellContext`pt1] - First[$CellContext`pt2]))), If[$CellContext`slope[$CellContext`pt1, $CellContext`pt2] == \ -($CellContext`a/$CellContext`b), "Lines are parallel", (-$CellContext`c + $CellContext`a First[$CellContext`pt2] + $CellContext`b Last[$CellContext`pt2])/((-$CellContext`a) First[$CellContext`pt1] + $CellContext`a First[$CellContext`pt2] - $CellContext`b Last[$CellContext`pt1] + $CellContext`b Last[$CellContext`pt2])]]}, $CellContext`slope[ Pattern[$CellContext`pt1, Blank[]], Pattern[$CellContext`pt2, Blank[]]] := If[First[$CellContext`pt1] != First[$CellContext`pt2], (Last[$CellContext`pt2] - Last[$CellContext`pt1])/(First[$CellContext`pt2] - First[$CellContext`pt1]), Null]}; Typeset`initDone$$ = True), SynchronousInitialization->True, UnsavedVariables:>{Typeset`initDone$$}, UntrackedVariables:>{Typeset`size$$}], "Manipulate", Deployed->True, StripOnInput->False], Manipulate`InterpretManipulate[1]]], "Output", CellID->182561357] }, {2}]] }, Open ]], Cell[CellGroupData[{ Cell["", "ManipulateCaptionSection"], Cell[TextData[{ "A weak version of what is sometimes called the fundamental theorem of \ linear programming states that the extremal values of a linear function ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{"f", RowBox[{"(", RowBox[{"x", ",", "y"}], ")"}]}], "=", RowBox[{ RowBox[{"a", " ", "x"}], "+", RowBox[{"b", " ", "y"}]}]}], TraditionalForm]], "InlineMath"], " over a convex polygonal region are attained at corners of the region. \ (Moreover, if an extremum is attained at two corners then it is attained \ everywhere on the line segment connecting them.) The function ", Cell[BoxData[ FormBox["f", TraditionalForm]], "InlineMath"], " is called the objective function, and often represents profit or some \ other quantity to be optimized. The region is called the feasible set and \ represents all options for the variables ", Cell[BoxData[ FormBox["x", TraditionalForm]], "InlineMath"], " and ", Cell[BoxData[ FormBox["y", TraditionalForm]], "InlineMath"], " that satisfy the constraints in the problem. Points on the red line in the \ Demonstration are those points in the feasible set that produce the given \ value of the objective function. " }], "ManipulateCaption", CellChangeTimes->{ 3.35696210375764*^9, {3.390838996234952*^9, 3.3908390143309517`*^9}, { 3.39143759144971*^9, 3.391437725426625*^9}, {3.39143776604258*^9, 3.391437804420996*^9}, {3.39178903532041*^9, 3.391789056391655*^9}, 3.3917890953320656`*^9, {3.392045894741893*^9, 3.392045900710475*^9}}] }, Open ]], Cell[CellGroupData[{ Cell["", "ThumbnailSection"], Cell[BoxData[ TagBox[ StyleBox[ DynamicModuleBox[{$CellContext`a$$ = 9, $CellContext`b$$ = 3, $CellContext`c$$ = 5, $CellContext`n$$ = 8, $CellContext`sr$$ = 123, Typeset`show$$ = True, Typeset`bookmarkList$$ = {}, Typeset`bookmarkMode$$ = "Menu", Typeset`animator$$, Typeset`animvar$$ = 1, Typeset`name$$ = "\"untitled\"", Typeset`specs$$ = {{{ Hold[$CellContext`n$$], 8, "number of corners"}, 3, 12, 1}, {{ Hold[$CellContext`a$$], 9, "coefficient a"}, -20, 20}, {{ Hold[$CellContext`b$$], 3, "coefficient b"}, -20, 20}, {{ Hold[$CellContext`c$$], 5, "value of obj. func."}, -128.7075766275508, 147.69674461908292`}, {{ Hold[$CellContext`sr$$], 123, "random seed"}, 1, 12345, 1}}, Typeset`size$$ = {350., {249.5, 254.5}}, Typeset`update$$ = 0, Typeset`initDone$$, Typeset`skipInitDone$$ = False, $CellContext`n$38613$$ = 0, $CellContext`a$38614$$ = 0, $CellContext`b$38615$$ = 0, $CellContext`c$38616$$ = 0, $CellContext`sr$38617$$ = 0}, DynamicBox[Manipulate`ManipulateBoxes[ 1, StandardForm, "Variables" :> {$CellContext`a$$ = 9, $CellContext`b$$ = 3, $CellContext`c$$ = 5, $CellContext`n$$ = 8, $CellContext`sr$$ = 123}, "ControllerVariables" :> { Hold[$CellContext`n$$, $CellContext`n$38613$$, 0], Hold[$CellContext`a$$, $CellContext`a$38614$$, 0], Hold[$CellContext`b$$, $CellContext`b$38615$$, 0], Hold[$CellContext`c$$, $CellContext`c$38616$$, 0], Hold[$CellContext`sr$$, $CellContext`sr$38617$$, 0]}, "OtherVariables" :> { Typeset`show$$, Typeset`bookmarkList$$, Typeset`bookmarkMode$$, Typeset`animator$$, Typeset`animvar$$, Typeset`name$$, Typeset`specs$$, Typeset`size$$, Typeset`update$$, Typeset`initDone$$, Typeset`skipInitDone$$}, "Body" :> ( SeedRandom[$CellContext`sr$$]; $CellContext`corners = Table[{10 Cos[2 Pi $CellContext`k], 10 Sin[2 Pi $CellContext`k]}, {$CellContext`k, Sort[ Table[ Random[], {$CellContext`n$$}]]}]; $CellContext`max = Max[ Map[$CellContext`a$$ First[#] + $CellContext`b$$ Last[#]& , $CellContext`corners]]; $CellContext`min = Min[ Map[$CellContext`a$$ First[#] + $CellContext`b$$ Last[#]& , $CellContext`corners]]; Column[{ Text[ Grid[{{ Row[{"Maximum value: ", $CellContext`max}]}, { Row[{"Minimum value: ", $CellContext`min}]}, { If[ Or[$CellContext`a$$ != 0, $CellContext`b$$ != 0], Style[ Row[{$CellContext`a$$, "x + ", $CellContext`b$$, "y", " = ", $CellContext`c$$}], 12, Red], "No objective function"]}}]], Show[ If[$CellContext`b$$ != 0, Plot[((-$CellContext`a$$)/$CellContext`b$$) $CellContext`x + \ $CellContext`c$$/$CellContext`b$$, {$CellContext`x, -10, 10}, AxesOrigin -> {0, 0}, AspectRatio -> 1], If[$CellContext`a$$ != 0, Graphics[{Blue, Line[{{$CellContext`c$$/$CellContext`a$$, -14}, \ {$CellContext`c$$/$CellContext`a$$, 12}}]}, PlotRange -> {{-11, 11}, {-10, 14}}, Axes -> True], Graphics[ Text["", {0, 0}]]]], Graphics[{{ Map[{ PointSize[0.02], Point[#]}& , $CellContext`corners]}, {LightGray, Opacity[0.5], EdgeForm[Black], Polygon[$CellContext`corners]}, If[ And[ Or[$CellContext`a$$ != 0, $CellContext`b$$ != 0], Length[ $CellContext`intpts[$CellContext`corners, $CellContext`a$$, \ $CellContext`b$$, $CellContext`c$$]] > 0], {Red, Thick, Line[Part[ $CellContext`intpts[$CellContext`corners, \ $CellContext`a$$, $CellContext`b$$, $CellContext`c$$], All, 3] Part[ $CellContext`intpts[$CellContext`corners, \ $CellContext`a$$, $CellContext`b$$, $CellContext`c$$], All, 1] + (1 - Part[ $CellContext`intpts[$CellContext`corners, \ $CellContext`a$$, $CellContext`b$$, $CellContext`c$$], All, 3]) Part[ $CellContext`intpts[$CellContext`corners, \ $CellContext`a$$, $CellContext`b$$, $CellContext`c$$], All, 2]]}, Text["", {0, 0}]]}], PlotRange -> {{-11, 11}, {-10, 14}}, ImageSize -> {350, 450}]}, Center]), "Specifications" :> {{{$CellContext`n$$, 8, "number of corners"}, 3, 12, 1, ImageSize -> Small}, {{$CellContext`a$$, 9, "coefficient a"}, -20, 20, ImageSize -> Small}, {{$CellContext`b$$, 3, "coefficient b"}, -20, 20, ImageSize -> Small}, {{$CellContext`c$$, 5, "value of obj. func."}, -128.7075766275508, 147.69674461908292`, ImageSize -> Small}, {{$CellContext`sr$$, 123, "random seed"}, 1, 12345, 1, ImageSize -> Small}}, "Options" :> { ControlPlacement -> Left, TrackedSymbols :> {$CellContext`n$$, $CellContext`a$$, \ $CellContext`b$$, $CellContext`c$$, $CellContext`sr$$}, AutorunSequencing -> {1, 2, 3, 5}}, "DefaultOptions" :> {ControllerLinking -> True}], ImageSizeCache->{599., {277., 282.}}, SingleEvaluation->True], Deinitialization:>None, DynamicModuleValues:>{}, Initialization:>({$CellContext`corners = {{8.795743568333975, 4.757614431636038}, {-1.5552689921374663`, 9.878316575312603}, {-5.602165717852644, -8.283461792615245}, { 2.661867992626573, -9.639214635530749}, { 5.346693483523826, -8.450613515789481}}, $CellContext`max = 137.69674461908292`, $CellContext`min = -118.70757662755078`, Attributes[PlotRange] = {ReadProtected}, $CellContext`intpts[ Pattern[$CellContext`list, Blank[]], Pattern[$CellContext`a, Blank[]], Pattern[$CellContext`b, Blank[]], Pattern[$CellContext`c, Blank[]]] := Select[ MapThread[$CellContext`intersect[#, #2, $CellContext`a, \ $CellContext`b, $CellContext`c]& , {$CellContext`list, RotateLeft[$CellContext`list]}], And[ Last[#] >= 0, Last[#] < 1]& ], $CellContext`intersect[ Pattern[$CellContext`pt1, Blank[]], Pattern[$CellContext`pt2, Blank[]], Pattern[$CellContext`a, Blank[]], Pattern[$CellContext`b, Blank[]], Pattern[$CellContext`c, Blank[]]] := {$CellContext`pt1, $CellContext`pt2, If[$CellContext`b == 0, -((-$CellContext`c + $CellContext`a First[$CellContext`pt2])/($CellContext`a ( First[$CellContext`pt1] - First[$CellContext`pt2]))), If[$CellContext`slope[$CellContext`pt1, $CellContext`pt2] == \ -($CellContext`a/$CellContext`b), "Lines are parallel", (-$CellContext`c + $CellContext`a First[$CellContext`pt2] + $CellContext`b Last[$CellContext`pt2])/((-$CellContext`a) First[$CellContext`pt1] + $CellContext`a First[$CellContext`pt2] - $CellContext`b Last[$CellContext`pt1] + $CellContext`b Last[$CellContext`pt2])]]}, $CellContext`slope[ Pattern[$CellContext`pt1, Blank[]], Pattern[$CellContext`pt2, Blank[]]] := If[First[$CellContext`pt1] != First[$CellContext`pt2], (Last[$CellContext`pt2] - Last[$CellContext`pt1])/(First[$CellContext`pt2] - First[$CellContext`pt1]), Null]}; Typeset`initDone$$ = True), SynchronousInitialization->True, UnsavedVariables:>{Typeset`initDone$$}, UntrackedVariables:>{Typeset`size$$}], "Manipulate", Deployed->True, StripOnInput->False], Manipulate`InterpretManipulate[1]]], "Output", CellID->337627150] }, Open ]], Cell[CellGroupData[{ Cell["", "SnapshotsSection"], Cell[BoxData[ TagBox[ StyleBox[ DynamicModuleBox[{$CellContext`a$$ = 9, $CellContext`b$$ = -10.6, $CellContext`c$$ = 5, $CellContext`n$$ = 5, $CellContext`sr$$ = 204, Typeset`show$$ = True, Typeset`bookmarkList$$ = {}, Typeset`bookmarkMode$$ = "Menu", Typeset`animator$$, Typeset`animvar$$ = 1, Typeset`name$$ = "\"untitled\"", Typeset`specs$$ = {{{ Hold[$CellContext`n$$], 5, "number of corners"}, 3, 12, 1}, {{ Hold[$CellContext`a$$], 9, "coefficient a"}, -20, 20}, {{ Hold[$CellContext`b$$], -10.6, "coefficient b"}, -20, 20}, {{ Hold[$CellContext`c$$], 5, "value of obj. func."}, -128.7075766275508, 147.69674461908292`}, {{ Hold[$CellContext`sr$$], 204, "random seed"}, 1, 12345, 1}}, Typeset`size$$ = {350., {249.5, 254.5}}, Typeset`update$$ = 0, Typeset`initDone$$, Typeset`skipInitDone$$ = False, $CellContext`n$38690$$ = 0, $CellContext`a$38691$$ = 0, $CellContext`b$38692$$ = 0, $CellContext`c$38693$$ = 0, $CellContext`sr$38694$$ = 0}, DynamicBox[Manipulate`ManipulateBoxes[ 1, StandardForm, "Variables" :> {$CellContext`a$$ = 9, $CellContext`b$$ = -10.6, $CellContext`c$$ = 5, $CellContext`n$$ = 5, $CellContext`sr$$ = 204}, "ControllerVariables" :> { Hold[$CellContext`n$$, $CellContext`n$38690$$, 0], Hold[$CellContext`a$$, $CellContext`a$38691$$, 0], Hold[$CellContext`b$$, $CellContext`b$38692$$, 0], Hold[$CellContext`c$$, $CellContext`c$38693$$, 0], Hold[$CellContext`sr$$, $CellContext`sr$38694$$, 0]}, "OtherVariables" :> { Typeset`show$$, Typeset`bookmarkList$$, Typeset`bookmarkMode$$, Typeset`animator$$, Typeset`animvar$$, Typeset`name$$, Typeset`specs$$, Typeset`size$$, Typeset`update$$, Typeset`initDone$$, Typeset`skipInitDone$$}, "Body" :> ( SeedRandom[$CellContext`sr$$]; $CellContext`corners = Table[{10 Cos[2 Pi $CellContext`k], 10 Sin[2 Pi $CellContext`k]}, {$CellContext`k, Sort[ Table[ Random[], {$CellContext`n$$}]]}]; $CellContext`max = Max[ Map[$CellContext`a$$ First[#] + $CellContext`b$$ Last[#]& , $CellContext`corners]]; $CellContext`min = Min[ Map[$CellContext`a$$ First[#] + $CellContext`b$$ Last[#]& , $CellContext`corners]]; Column[{ Text[ Grid[{{ Row[{"Maximum value: ", $CellContext`max}]}, { Row[{"Minimum value: ", $CellContext`min}]}, { If[ Or[$CellContext`a$$ != 0, $CellContext`b$$ != 0], Style[ Row[{$CellContext`a$$, "x + ", $CellContext`b$$, "y", " = ", $CellContext`c$$}], 12, Red], "No objective function"]}}]], Show[ If[$CellContext`b$$ != 0, Plot[((-$CellContext`a$$)/$CellContext`b$$) $CellContext`x + \ $CellContext`c$$/$CellContext`b$$, {$CellContext`x, -10, 10}, AxesOrigin -> {0, 0}, AspectRatio -> 1], If[$CellContext`a$$ != 0, Graphics[{Blue, Line[{{$CellContext`c$$/$CellContext`a$$, -14}, \ {$CellContext`c$$/$CellContext`a$$, 12}}]}, PlotRange -> {{-11, 11}, {-10, 14}}, Axes -> True], Graphics[ Text["", {0, 0}]]]], Graphics[{{ Map[{ PointSize[0.02], Point[#]}& , $CellContext`corners]}, {LightGray, Opacity[0.5], EdgeForm[Black], Polygon[$CellContext`corners]}, If[ And[ Or[$CellContext`a$$ != 0, $CellContext`b$$ != 0], Length[ $CellContext`intpts[$CellContext`corners, $CellContext`a$$, \ $CellContext`b$$, $CellContext`c$$]] > 0], {Red, Thick, Line[Part[ $CellContext`intpts[$CellContext`corners, \ $CellContext`a$$, $CellContext`b$$, $CellContext`c$$], All, 3] Part[ $CellContext`intpts[$CellContext`corners, \ $CellContext`a$$, $CellContext`b$$, $CellContext`c$$], All, 1] + (1 - Part[ $CellContext`intpts[$CellContext`corners, \ $CellContext`a$$, $CellContext`b$$, $CellContext`c$$], All, 3]) Part[ $CellContext`intpts[$CellContext`corners, \ $CellContext`a$$, $CellContext`b$$, $CellContext`c$$], All, 2]]}, Text["", {0, 0}]]}], PlotRange -> {{-11, 11}, {-10, 14}}, ImageSize -> {350, 450}]}, Center]), "Specifications" :> {{{$CellContext`n$$, 5, "number of corners"}, 3, 12, 1, ImageSize -> Small}, {{$CellContext`a$$, 9, "coefficient a"}, -20, 20, ImageSize -> Small}, {{$CellContext`b$$, -10.6, "coefficient b"}, -20, 20, ImageSize -> Small}, {{$CellContext`c$$, 5, "value of obj. func."}, -128.7075766275508, 147.69674461908292`, ImageSize -> Small}, {{$CellContext`sr$$, 204, "random seed"}, 1, 12345, 1, ImageSize -> Small}}, "Options" :> { ControlPlacement -> Left, TrackedSymbols :> {$CellContext`n$$, $CellContext`a$$, \ $CellContext`b$$, $CellContext`c$$, $CellContext`sr$$}, AutorunSequencing -> {1, 2, 3, 5}}, "DefaultOptions" :> {ControllerLinking -> True}], ImageSizeCache->{599., {277., 282.}}, SingleEvaluation->True], Deinitialization:>None, DynamicModuleValues:>{}, Initialization:>({$CellContext`corners = {{8.795743568333975, 4.757614431636038}, {-1.5552689921374663`, 9.878316575312603}, {-5.602165717852644, -8.283461792615245}, { 2.661867992626573, -9.639214635530749}, { 5.346693483523826, -8.450613515789481}}, $CellContext`max = 137.69674461908292`, $CellContext`min = -118.70757662755078`, Attributes[PlotRange] = {ReadProtected}, $CellContext`intpts[ Pattern[$CellContext`list, Blank[]], Pattern[$CellContext`a, Blank[]], Pattern[$CellContext`b, Blank[]], Pattern[$CellContext`c, Blank[]]] := Select[ MapThread[$CellContext`intersect[#, #2, $CellContext`a, \ $CellContext`b, $CellContext`c]& , {$CellContext`list, RotateLeft[$CellContext`list]}], And[ Last[#] >= 0, Last[#] < 1]& ], $CellContext`intersect[ Pattern[$CellContext`pt1, Blank[]], Pattern[$CellContext`pt2, Blank[]], Pattern[$CellContext`a, Blank[]], Pattern[$CellContext`b, Blank[]], Pattern[$CellContext`c, Blank[]]] := {$CellContext`pt1, $CellContext`pt2, If[$CellContext`b == 0, -((-$CellContext`c + $CellContext`a First[$CellContext`pt2])/($CellContext`a ( First[$CellContext`pt1] - First[$CellContext`pt2]))), If[$CellContext`slope[$CellContext`pt1, $CellContext`pt2] == \ -($CellContext`a/$CellContext`b), "Lines are parallel", (-$CellContext`c + $CellContext`a First[$CellContext`pt2] + $CellContext`b Last[$CellContext`pt2])/((-$CellContext`a) First[$CellContext`pt1] + $CellContext`a First[$CellContext`pt2] - $CellContext`b Last[$CellContext`pt1] + $CellContext`b Last[$CellContext`pt2])]]}, $CellContext`slope[ Pattern[$CellContext`pt1, Blank[]], Pattern[$CellContext`pt2, Blank[]]] := If[First[$CellContext`pt1] != First[$CellContext`pt2], (Last[$CellContext`pt2] - Last[$CellContext`pt1])/(First[$CellContext`pt2] - First[$CellContext`pt1]), Null]}; Typeset`initDone$$ = True), SynchronousInitialization->True, UnsavedVariables:>{Typeset`initDone$$}, UntrackedVariables:>{Typeset`size$$}], "Manipulate", Deployed->True, StripOnInput->False], Manipulate`InterpretManipulate[1]]], "Output", CellID->27393740], Cell[BoxData[ TagBox[ StyleBox[ DynamicModuleBox[{$CellContext`a$$ = -7.1, $CellContext`b$$ = 3, $CellContext`c$$ = 5, $CellContext`n$$ = 8, $CellContext`sr$$ = 2239, Typeset`show$$ = True, Typeset`bookmarkList$$ = {}, Typeset`bookmarkMode$$ = "Menu", Typeset`animator$$, Typeset`animvar$$ = 1, Typeset`name$$ = "\"untitled\"", Typeset`specs$$ = {{{ Hold[$CellContext`n$$], 8, "number of corners"}, 3, 12, 1}, {{ Hold[$CellContext`a$$], -7.1, "coefficient a"}, -20, 20}, {{ Hold[$CellContext`b$$], 3, "coefficient b"}, -20, 20}, {{ Hold[$CellContext`c$$], 5, "value of obj. func."}, -128.7075766275508, 147.69674461908292`}, {{ Hold[$CellContext`sr$$], 2239, "random seed"}, 1, 12345, 1}}, Typeset`size$$ = {350., {249.5, 254.5}}, Typeset`update$$ = 0, Typeset`initDone$$, Typeset`skipInitDone$$ = False, $CellContext`n$38767$$ = 0, $CellContext`a$38768$$ = 0, $CellContext`b$38769$$ = 0, $CellContext`c$38770$$ = 0, $CellContext`sr$38771$$ = 0}, DynamicBox[Manipulate`ManipulateBoxes[ 1, StandardForm, "Variables" :> {$CellContext`a$$ = -7.1, $CellContext`b$$ = 3, $CellContext`c$$ = 5, $CellContext`n$$ = 8, $CellContext`sr$$ = 2239}, "ControllerVariables" :> { Hold[$CellContext`n$$, $CellContext`n$38767$$, 0], Hold[$CellContext`a$$, $CellContext`a$38768$$, 0], Hold[$CellContext`b$$, $CellContext`b$38769$$, 0], Hold[$CellContext`c$$, $CellContext`c$38770$$, 0], Hold[$CellContext`sr$$, $CellContext`sr$38771$$, 0]}, "OtherVariables" :> { Typeset`show$$, Typeset`bookmarkList$$, Typeset`bookmarkMode$$, Typeset`animator$$, Typeset`animvar$$, Typeset`name$$, Typeset`specs$$, Typeset`size$$, Typeset`update$$, Typeset`initDone$$, Typeset`skipInitDone$$}, "Body" :> ( SeedRandom[$CellContext`sr$$]; $CellContext`corners = Table[{10 Cos[2 Pi $CellContext`k], 10 Sin[2 Pi $CellContext`k]}, {$CellContext`k, Sort[ Table[ Random[], {$CellContext`n$$}]]}]; $CellContext`max = Max[ Map[$CellContext`a$$ First[#] + $CellContext`b$$ Last[#]& , $CellContext`corners]]; $CellContext`min = Min[ Map[$CellContext`a$$ First[#] + $CellContext`b$$ Last[#]& , $CellContext`corners]]; Column[{ Text[ Grid[{{ Row[{"Maximum value: ", $CellContext`max}]}, { Row[{"Minimum value: ", $CellContext`min}]}, { If[ Or[$CellContext`a$$ != 0, $CellContext`b$$ != 0], Style[ Row[{$CellContext`a$$, "x + ", $CellContext`b$$, "y", " = ", $CellContext`c$$}], 12, Red], "No objective function"]}}]], Show[ If[$CellContext`b$$ != 0, Plot[((-$CellContext`a$$)/$CellContext`b$$) $CellContext`x + \ $CellContext`c$$/$CellContext`b$$, {$CellContext`x, -10, 10}, AxesOrigin -> {0, 0}, AspectRatio -> 1], If[$CellContext`a$$ != 0, Graphics[{Blue, Line[{{$CellContext`c$$/$CellContext`a$$, -14}, \ {$CellContext`c$$/$CellContext`a$$, 12}}]}, PlotRange -> {{-11, 11}, {-10, 14}}, Axes -> True], Graphics[ Text["", {0, 0}]]]], Graphics[{{ Map[{ PointSize[0.02], Point[#]}& , $CellContext`corners]}, {LightGray, Opacity[0.5], EdgeForm[Black], Polygon[$CellContext`corners]}, If[ And[ Or[$CellContext`a$$ != 0, $CellContext`b$$ != 0], Length[ $CellContext`intpts[$CellContext`corners, $CellContext`a$$, \ $CellContext`b$$, $CellContext`c$$]] > 0], {Red, Thick, Line[Part[ $CellContext`intpts[$CellContext`corners, \ $CellContext`a$$, $CellContext`b$$, $CellContext`c$$], All, 3] Part[ $CellContext`intpts[$CellContext`corners, \ $CellContext`a$$, $CellContext`b$$, $CellContext`c$$], All, 1] + (1 - Part[ $CellContext`intpts[$CellContext`corners, \ $CellContext`a$$, $CellContext`b$$, $CellContext`c$$], All, 3]) Part[ $CellContext`intpts[$CellContext`corners, \ $CellContext`a$$, $CellContext`b$$, $CellContext`c$$], All, 2]]}, Text["", {0, 0}]]}], PlotRange -> {{-11, 11}, {-10, 14}}, ImageSize -> {350, 450}]}, Center]), "Specifications" :> {{{$CellContext`n$$, 8, "number of corners"}, 3, 12, 1, ImageSize -> Small}, {{$CellContext`a$$, -7.1, "coefficient a"}, -20, 20, ImageSize -> Small}, {{$CellContext`b$$, 3, "coefficient b"}, -20, 20, ImageSize -> Small}, {{$CellContext`c$$, 5, "value of obj. func."}, -128.7075766275508, 147.69674461908292`, ImageSize -> Small}, {{$CellContext`sr$$, 2239, "random seed"}, 1, 12345, 1, ImageSize -> Small}}, "Options" :> { ControlPlacement -> Left, TrackedSymbols :> {$CellContext`n$$, $CellContext`a$$, \ $CellContext`b$$, $CellContext`c$$, $CellContext`sr$$}, AutorunSequencing -> {1, 2, 3, 5}}, "DefaultOptions" :> {ControllerLinking -> True}], ImageSizeCache->{599., {277., 282.}}, SingleEvaluation->True], Deinitialization:>None, DynamicModuleValues:>{}, Initialization:>({$CellContext`corners = {{8.795743568333975, 4.757614431636038}, {-1.5552689921374663`, 9.878316575312603}, {-5.602165717852644, -8.283461792615245}, { 2.661867992626573, -9.639214635530749}, { 5.346693483523826, -8.450613515789481}}, $CellContext`max = 137.69674461908292`, $CellContext`min = -118.70757662755078`, Attributes[PlotRange] = {ReadProtected}, $CellContext`intpts[ Pattern[$CellContext`list, Blank[]], Pattern[$CellContext`a, Blank[]], Pattern[$CellContext`b, Blank[]], Pattern[$CellContext`c, Blank[]]] := Select[ MapThread[$CellContext`intersect[#, #2, $CellContext`a, \ $CellContext`b, $CellContext`c]& , {$CellContext`list, RotateLeft[$CellContext`list]}], And[ Last[#] >= 0, Last[#] < 1]& ], $CellContext`intersect[ Pattern[$CellContext`pt1, Blank[]], Pattern[$CellContext`pt2, Blank[]], Pattern[$CellContext`a, Blank[]], Pattern[$CellContext`b, Blank[]], Pattern[$CellContext`c, Blank[]]] := {$CellContext`pt1, $CellContext`pt2, If[$CellContext`b == 0, -((-$CellContext`c + $CellContext`a First[$CellContext`pt2])/($CellContext`a ( First[$CellContext`pt1] - First[$CellContext`pt2]))), If[$CellContext`slope[$CellContext`pt1, $CellContext`pt2] == \ -($CellContext`a/$CellContext`b), "Lines are parallel", (-$CellContext`c + $CellContext`a First[$CellContext`pt2] + $CellContext`b Last[$CellContext`pt2])/((-$CellContext`a) First[$CellContext`pt1] + $CellContext`a First[$CellContext`pt2] - $CellContext`b Last[$CellContext`pt1] + $CellContext`b Last[$CellContext`pt2])]]}, $CellContext`slope[ Pattern[$CellContext`pt1, Blank[]], Pattern[$CellContext`pt2, Blank[]]] := If[First[$CellContext`pt1] != First[$CellContext`pt2], (Last[$CellContext`pt2] - Last[$CellContext`pt1])/(First[$CellContext`pt2] - First[$CellContext`pt1]), Null]}; Typeset`initDone$$ = True), SynchronousInitialization->True, UnsavedVariables:>{Typeset`initDone$$}, UntrackedVariables:>{Typeset`size$$}], "Manipulate", Deployed->True, StripOnInput->False], Manipulate`InterpretManipulate[1]]], "Output", CellID->10000853], Cell[BoxData[ TagBox[ StyleBox[ DynamicModuleBox[{$CellContext`a$$ = 9, $CellContext`b$$ = -15.399999999999999`, $CellContext`c$$ = 5, $CellContext`n$$ = 11, $CellContext`sr$$ = 123, Typeset`show$$ = True, Typeset`bookmarkList$$ = {}, Typeset`bookmarkMode$$ = "Menu", Typeset`animator$$, Typeset`animvar$$ = 1, Typeset`name$$ = "\"untitled\"", Typeset`specs$$ = {{{ Hold[$CellContext`n$$], 11, "number of corners"}, 3, 12, 1}, {{ Hold[$CellContext`a$$], 9, "coefficient a"}, -20, 20}, {{ Hold[$CellContext`b$$], -15.399999999999999`, "coefficient b"}, -20, 20}, {{ Hold[$CellContext`c$$], 5, "value of obj. func."}, -128.7075766275508, 147.69674461908292`}, {{ Hold[$CellContext`sr$$], 123, "random seed"}, 1, 12345, 1}}, Typeset`size$$ = {350., {249.5, 254.5}}, Typeset`update$$ = 0, Typeset`initDone$$, Typeset`skipInitDone$$ = False, $CellContext`n$38844$$ = 0, $CellContext`a$38845$$ = 0, $CellContext`b$38846$$ = 0, $CellContext`c$38847$$ = 0, $CellContext`sr$38848$$ = 0}, DynamicBox[Manipulate`ManipulateBoxes[ 1, StandardForm, "Variables" :> {$CellContext`a$$ = 9, $CellContext`b$$ = -15.399999999999999`, $CellContext`c$$ = 5, $CellContext`n$$ = 11, $CellContext`sr$$ = 123}, "ControllerVariables" :> { Hold[$CellContext`n$$, $CellContext`n$38844$$, 0], Hold[$CellContext`a$$, $CellContext`a$38845$$, 0], Hold[$CellContext`b$$, $CellContext`b$38846$$, 0], Hold[$CellContext`c$$, $CellContext`c$38847$$, 0], Hold[$CellContext`sr$$, $CellContext`sr$38848$$, 0]}, "OtherVariables" :> { Typeset`show$$, Typeset`bookmarkList$$, Typeset`bookmarkMode$$, Typeset`animator$$, Typeset`animvar$$, Typeset`name$$, Typeset`specs$$, Typeset`size$$, Typeset`update$$, Typeset`initDone$$, Typeset`skipInitDone$$}, "Body" :> ( SeedRandom[$CellContext`sr$$]; $CellContext`corners = Table[{ 10 Cos[2 Pi $CellContext`k], 10 Sin[2 Pi $CellContext`k]}, {$CellContext`k, Sort[ Table[ Random[], {$CellContext`n$$}]]}]; $CellContext`max = Max[ Map[$CellContext`a$$ First[#] + $CellContext`b$$ Last[#]& , $CellContext`corners]]; $CellContext`min = Min[ Map[$CellContext`a$$ First[#] + $CellContext`b$$ Last[#]& , $CellContext`corners]]; Column[{ Text[ Grid[{{ Row[{"Maximum value: ", $CellContext`max}]}, { Row[{"Minimum value: ", $CellContext`min}]}, { If[ Or[$CellContext`a$$ != 0, $CellContext`b$$ != 0], Style[ Row[{$CellContext`a$$, "x + ", $CellContext`b$$, "y", " = ", $CellContext`c$$}], 12, Red], "No objective function"]}}]], Show[ If[$CellContext`b$$ != 0, Plot[((-$CellContext`a$$)/$CellContext`b$$) $CellContext`x + \ $CellContext`c$$/$CellContext`b$$, {$CellContext`x, -10, 10}, AxesOrigin -> {0, 0}, AspectRatio -> 1], If[$CellContext`a$$ != 0, Graphics[{Blue, Line[{{$CellContext`c$$/$CellContext`a$$, -14}, \ {$CellContext`c$$/$CellContext`a$$, 12}}]}, PlotRange -> {{-11, 11}, {-10, 14}}, Axes -> True], Graphics[ Text["", {0, 0}]]]], Graphics[{{ Map[{ PointSize[0.02], Point[#]}& , $CellContext`corners]}, {LightGray, Opacity[0.5], EdgeForm[Black], Polygon[$CellContext`corners]}, If[ And[ Or[$CellContext`a$$ != 0, $CellContext`b$$ != 0], Length[ $CellContext`intpts[$CellContext`corners, $CellContext`a$$, \ $CellContext`b$$, $CellContext`c$$]] > 0], {Red, Thick, Line[Part[ $CellContext`intpts[$CellContext`corners, \ $CellContext`a$$, $CellContext`b$$, $CellContext`c$$], All, 3] Part[ $CellContext`intpts[$CellContext`corners, \ $CellContext`a$$, $CellContext`b$$, $CellContext`c$$], All, 1] + (1 - Part[ $CellContext`intpts[$CellContext`corners, \ $CellContext`a$$, $CellContext`b$$, $CellContext`c$$], All, 3]) Part[ $CellContext`intpts[$CellContext`corners, \ $CellContext`a$$, $CellContext`b$$, $CellContext`c$$], All, 2]]}, Text["", {0, 0}]]}], PlotRange -> {{-11, 11}, {-10, 14}}, ImageSize -> {350, 450}]}, Center]), "Specifications" :> {{{$CellContext`n$$, 11, "number of corners"}, 3, 12, 1, ImageSize -> Small}, {{$CellContext`a$$, 9, "coefficient a"}, -20, 20, ImageSize -> Small}, {{$CellContext`b$$, -15.399999999999999`, "coefficient b"}, -20, 20, ImageSize -> Small}, {{$CellContext`c$$, 5, "value of obj. func."}, -128.7075766275508, 147.69674461908292`, ImageSize -> Small}, {{$CellContext`sr$$, 123, "random seed"}, 1, 12345, 1, ImageSize -> Small}}, "Options" :> { ControlPlacement -> Left, TrackedSymbols :> {$CellContext`n$$, $CellContext`a$$, \ $CellContext`b$$, $CellContext`c$$, $CellContext`sr$$}, AutorunSequencing -> {1, 2, 3, 5}}, "DefaultOptions" :> {ControllerLinking -> True}], ImageSizeCache->{599., {277., 282.}}, SingleEvaluation->True], Deinitialization:>None, DynamicModuleValues:>{}, Initialization:>({$CellContext`corners = {{8.795743568333975, 4.757614431636038}, {-1.5552689921374663`, 9.878316575312603}, {-5.602165717852644, -8.283461792615245}, { 2.661867992626573, -9.639214635530749}, { 5.346693483523826, -8.450613515789481}}, $CellContext`max = 137.69674461908292`, $CellContext`min = -118.70757662755078`, Attributes[PlotRange] = {ReadProtected}, $CellContext`intpts[ Pattern[$CellContext`list, Blank[]], Pattern[$CellContext`a, Blank[]], Pattern[$CellContext`b, Blank[]], Pattern[$CellContext`c, Blank[]]] := Select[ MapThread[$CellContext`intersect[#, #2, $CellContext`a, \ $CellContext`b, $CellContext`c]& , {$CellContext`list, RotateLeft[$CellContext`list]}], And[ Last[#] >= 0, Last[#] < 1]& ], $CellContext`intersect[ Pattern[$CellContext`pt1, Blank[]], Pattern[$CellContext`pt2, Blank[]], Pattern[$CellContext`a, Blank[]], Pattern[$CellContext`b, Blank[]], Pattern[$CellContext`c, Blank[]]] := {$CellContext`pt1, $CellContext`pt2, If[$CellContext`b == 0, -((-$CellContext`c + $CellContext`a First[$CellContext`pt2])/($CellContext`a ( First[$CellContext`pt1] - First[$CellContext`pt2]))), If[$CellContext`slope[$CellContext`pt1, $CellContext`pt2] == \ -($CellContext`a/$CellContext`b), "Lines are parallel", (-$CellContext`c + $CellContext`a First[$CellContext`pt2] + $CellContext`b Last[$CellContext`pt2])/((-$CellContext`a) First[$CellContext`pt1] + $CellContext`a First[$CellContext`pt2] - $CellContext`b Last[$CellContext`pt1] + $CellContext`b Last[$CellContext`pt2])]]}, $CellContext`slope[ Pattern[$CellContext`pt1, Blank[]], Pattern[$CellContext`pt2, Blank[]]] := If[First[$CellContext`pt1] != First[$CellContext`pt2], (Last[$CellContext`pt2] - Last[$CellContext`pt1])/(First[$CellContext`pt2] - First[$CellContext`pt1]), Null]}; Typeset`initDone$$ = True), SynchronousInitialization->True, UnsavedVariables:>{Typeset`initDone$$}, UntrackedVariables:>{Typeset`size$$}], "Manipulate", Deployed->True, StripOnInput->False], Manipulate`InterpretManipulate[1]]], "Output", CellID->761064527] }, Open ]], Cell["", "DetailsSection"], Cell[CellGroupData[{ Cell["", "ControlSuggestionsSection"], Cell[BoxData[ TooltipBox[ RowBox[{ CheckboxBox[True], Cell[" Resize Images"]}], "\"Click inside an image to reveal its orange resize frame.\\nDrag any of \ the orange resize handles to resize the image.\"", ActionDelay->0.35]], "ControlSuggestions", FontFamily->"Verdana", CellTags->"ResizeImages"], Cell[BoxData[ TooltipBox[ RowBox[{ CheckboxBox[False], Cell[" Rotate and Zoom in 3D"]}], RowBox[{ "\"Drag a 3D graphic to rotate it. Starting the drag near the center \ tumbles\\nthe graphic; starting near a corner turns it parallel to the plane \ of the screen.\\nHold down \"", FrameBox[ "Ctrl", Background -> GrayLevel[0.9], FrameMargins -> 2, FrameStyle -> GrayLevel[0.9]], "\" (or \"", FrameBox[ "Cmd", Background -> GrayLevel[0.9], FrameMargins -> 2, FrameStyle -> GrayLevel[0.9]], "\" on Mac) and drag up and down to zoom.\""}], ActionDelay->0.35]], "ControlSuggestions", FontFamily->"Verdana", CellTags->"RotateAndZoomIn3D"], Cell[BoxData[ TooltipBox[ RowBox[{ CheckboxBox[False], Cell[" Drag Locators"]}], RowBox[{"\"Drag any locator (\"", GraphicsBox[ LocatorBox[ Scaled[{0.5, 0.5}]], ImageSize -> 20], "\", etc.) to move it around.\""}], ActionDelay->0.35]], "ControlSuggestions", FontFamily->"Verdana", CellTags->"DragLocators"], Cell[BoxData[ TooltipBox[ RowBox[{ CheckboxBox[False], Cell[" Create and Delete Locators"]}], RowBox[{"\"Insert a new locator in the graphic by holding down the \"", FrameBox[ "Alt", Background -> GrayLevel[0.9], FrameMargins -> 2, FrameStyle -> GrayLevel[0.9]], "\" key\\nand clicking where you want it to be. Delete a locator by \ clicking it\\nwhile holding down the \"", FrameBox[ "Alt", Background -> GrayLevel[0.9], FrameMargins -> 2, FrameStyle -> GrayLevel[0.9]], "\" key.\""}], ActionDelay->0.35]], "ControlSuggestions", FontFamily->"Verdana", CellTags->"CreateAndDeleteLocators"], Cell[BoxData[ TooltipBox[ RowBox[{ CheckboxBox[True], Cell[" Slider Zoom"]}], RowBox[{"\"Hold down the \"", FrameBox[ "Alt", Background -> GrayLevel[0.9], FrameMargins -> 2, FrameStyle -> GrayLevel[0.9]], "\" key while moving a slider to make fine adjustments in the slider \ value.\\nHold \"", FrameBox[ "Ctrl", Background -> GrayLevel[0.9], FrameMargins -> 2, FrameStyle -> GrayLevel[0.9]], "\" and/or \"", FrameBox[ "Shift", Background -> GrayLevel[0.9], FrameMargins -> 2, FrameStyle -> GrayLevel[0.9]], "\" at the same time as \"", FrameBox[ "Alt", Background -> GrayLevel[0.9], FrameMargins -> 2, FrameStyle -> GrayLevel[0.9]], "\" to make ever finer adjustments.\""}], ActionDelay->0.35]], "ControlSuggestions", FontFamily->"Verdana", CellTags->"SliderZoom"], Cell[BoxData[ TooltipBox[ RowBox[{ CheckboxBox[False], Cell[" Gamepad Controls"]}], "\"Control this Demonstration with a gamepad or other\\nhuman interface \ device connected to your computer.\"", ActionDelay->0.35]], "ControlSuggestions", FontFamily->"Verdana", CellTags->"GamepadControls"], Cell[BoxData[ TooltipBox[ RowBox[{ CheckboxBox[False], Cell[" Automatic Animation"]}], RowBox[{"\"Animate a slider in this Demonstration by clicking the\"", AdjustmentBox[ Cell[ GraphicsData[ "CompressedBitmap", "eJzzTSzJSM1NLMlMTlRwL0osyMhMLlZwyy8CCjEzMjAwcIKwAgOI/R/IhBKc\n\ /4EAyGAG0f+nTZsGwgysIJIRKsWKLAXGIHFmEpUgLADxWUAkI24jZs+eTaEt\n\ IG+wQKRmzJgBlYf5lhEA30OqWA=="], "Graphics", ImageSize -> {9, 9}, ImageMargins -> 0], BoxBaselineShift -> 0.1839080459770115, BoxMargins -> {{0., 0.}, {-0.1839080459770115, 0.1839080459770115}}], "\"button\\nnext to the slider, and then clicking the play button that \ appears.\\nAnimate all controls by selecting \"", StyleBox["Autorun", FontWeight -> "Bold"], "\" from the\"", AdjustmentBox[ Cell[ GraphicsData[ "CompressedBitmap", "eJyNULENwyAQfEySIlMwTVJlCGRFsosokeNtqBmDBagoaZjAI1C8/8GUUUC6\n\ 57h7cQ8PvU7Pl17nUav7oj/TPH7V7b2QJAUAXBkKmCPRowxICy64bRvGGNF7\n\ X8CctGoDSN4xhIDGGDhzFXwUh3/ClBKrDQPmnGXtI6u0OOd+tZBVUqy1xSaH\n\ UqiK6pPe4XdEdAz6563tx/gejuORGMxJaz8mdpJn7hc="], "Graphics", ImageSize -> {10, 10}, ImageMargins -> 0], BoxBaselineShift -> 0.1839080459770115, BoxMargins -> {{0., 0.}, {-0.1839080459770115, 0.1839080459770115}}], "\"menu.\""}], ActionDelay->0.35]], "ControlSuggestions", FontFamily->"Verdana", CellTags->"AutomaticAnimation"], Cell[BoxData[ TooltipBox[ RowBox[{ CheckboxBox[False], Cell[" Bookmark Animation"]}], RowBox[{ "\"See a prepared animation of this Demonstration by selecting\\n\"", StyleBox["Animate Bookmarks", FontWeight -> "Bold"], "\" from the\"", AdjustmentBox[ Cell[ GraphicsData[ "CompressedBitmap", "eJyNULENwyAQfEySIlMwTVJlCGRFsosokeNtqBmDBagoaZjAI1C8/8GUUUC6\n\ 57h7cQ8PvU7Pl17nUav7oj/TPH7V7b2QJAUAXBkKmCPRowxICy64bRvGGNF7\n\ X8CctGoDSN4xhIDGGDhzFXwUh3/ClBKrDQPmnGXtI6u0OOd+tZBVUqy1xSaH\n\ UqiK6pPe4XdEdAz6563tx/gejuORGMxJaz8mdpJn7hc="], "Graphics", ImageSize -> {10, 10}, ImageMargins -> 0], BoxBaselineShift -> 0.1839080459770115, BoxMargins -> {{0., 0.}, {-0.1839080459770115, 0.1839080459770115}}], "\"menu.\""}], ActionDelay->0.35]], "ControlSuggestions", FontFamily->"Verdana", CellTags->"BookmarkAnimation"] }, Open ]], Cell[CellGroupData[{ Cell["", "SearchTermsSection"], Cell["feasible set", "SearchTerms", CellChangeTimes->{ 3.35696210375764*^9, {3.390906454528*^9, 3.3909064567720003`*^9}}, CellID->228648493], Cell["linear programming", "SearchTerms", CellChangeTimes->{ 3.35696210375764*^9, {3.390906457776*^9, 3.3909064606940002`*^9}}, CellID->489599371], Cell["objective function", "SearchTerms", CellChangeTimes->{ 3.35696210375764*^9, {3.390906464951*^9, 3.390906467559*^9}}, CellID->153797984] }, Open ]], Cell[CellGroupData[{ Cell["", "RelatedLinksSection"], Cell[TextData[ButtonBox["Linear Programming", BaseStyle->"Hyperlink", ButtonData->{ URL["http://mathworld.wolfram.com/LinearProgramming.html"], None}]], "RelatedLinks", CellChangeTimes->{ 3.35696210375764*^9, {3.3909064352320004`*^9, 3.3909064506940002`*^9}}, CellID->228214463] }, Open ]], Cell[CellGroupData[{ Cell["", "AuthorSection"], Cell[TextData[{ "Contributed by: ", ButtonBox["Chris Boucher", BaseStyle->"Hyperlink", ButtonData->{ URL["http://demonstrations.wolfram.com/author.html?author=Chris+Boucher"], None}, ButtonNote-> "http://demonstrations.wolfram.com/author.html?author=Chris+Boucher"] }], "Author", CellChangeTimes->{ 3.35696210375764*^9, {3.390838942145952*^9, 3.390838945177952*^9}}] }, Open ]] }, Open ]] }, WindowSize->{836, 786}, WindowMargins->{{0, Automatic}, {Automatic, 0}}, FrontEndVersion->"6.0 for Microsoft Windows (32-bit) (June 19, 2007)", StyleDefinitions->FrontEnd`FileName[{"Wolfram"}, "Demonstration.nb", CharacterEncoding -> "WindowsANSI"] ] (* End of Notebook Content *) (* Internal cache information *) (*CellTagsOutline CellTagsIndex->{ "ResizeImages"->{ Cell[58105, 1337, 310, 8, 70, "ControlSuggestions", CellTags->"ResizeImages"]}, "RotateAndZoomIn3D"->{ Cell[58418, 1347, 677, 16, 70, "ControlSuggestions", CellTags->"RotateAndZoomIn3D"]}, "DragLocators"->{ Cell[59098, 1365, 339, 11, 70, "ControlSuggestions", CellTags->"DragLocators"]}, "CreateAndDeleteLocators"->{ Cell[59440, 1378, 636, 15, 70, "ControlSuggestions", CellTags->"CreateAndDeleteLocators"]}, "SliderZoom"->{ Cell[60079, 1395, 842, 21, 70, "ControlSuggestions", CellTags->"SliderZoom"]}, "GamepadControls"->{ Cell[60924, 1418, 303, 8, 70, "ControlSuggestions", CellTags->"GamepadControls"]}, "AutomaticAnimation"->{ Cell[61230, 1428, 1411, 31, 70, "ControlSuggestions", CellTags->"AutomaticAnimation"]}, "BookmarkAnimation"->{ Cell[62644, 1461, 881, 21, 70, "ControlSuggestions", CellTags->"BookmarkAnimation"]} } *) (*CellTagsIndex CellTagsIndex->{ {"ResizeImages", 65254, 1549}, {"RotateAndZoomIn3D", 65363, 1552}, {"DragLocators", 65473, 1555}, {"CreateAndDeleteLocators", 65589, 1558}, {"SliderZoom", 65703, 1561}, {"GamepadControls", 65809, 1564}, {"AutomaticAnimation", 65922, 1567}, {"BookmarkAnimation", 66039, 1570} } *) (*NotebookFileOutline Notebook[{ Cell[CellGroupData[{ Cell[590, 23, 158, 2, 70, "DemoTitle"], Cell[CellGroupData[{ Cell[773, 29, 33, 0, 70, "InitializationSection"], Cell[809, 31, 3225, 95, 70, "Input", CellID->186438541] }, Closed]], Cell[CellGroupData[{ Cell[4071, 131, 29, 0, 70, "ManipulateSection"], Cell[CellGroupData[{ Cell[4125, 135, 11414, 274, 70, "Input"], Cell[15542, 411, 8103, 170, 70, "Output", CellID->182561357] }, {2}]] }, Open ]], Cell[CellGroupData[{ Cell[23691, 587, 36, 0, 70, "ManipulateCaptionSection"], Cell[23730, 589, 1539, 33, 70, "ManipulateCaption"] }, Open ]], Cell[CellGroupData[{ Cell[25306, 627, 28, 0, 70, "ThumbnailSection"], Cell[25337, 629, 8103, 170, 70, "Output", CellID->337627150] }, Open ]], Cell[CellGroupData[{ Cell[33477, 804, 28, 0, 70, "SnapshotsSection"], Cell[33508, 806, 8133, 172, 70, "Output", CellID->27393740], Cell[41644, 980, 8128, 171, 70, "Output", CellID->10000853], Cell[49775, 1153, 8224, 175, 70, "Output", CellID->761064527] }, Open ]], Cell[58014, 1331, 26, 0, 70, "DetailsSection"], Cell[CellGroupData[{ Cell[58065, 1335, 37, 0, 70, "ControlSuggestionsSection"], Cell[58105, 1337, 310, 8, 70, "ControlSuggestions", CellTags->"ResizeImages"], Cell[58418, 1347, 677, 16, 70, "ControlSuggestions", CellTags->"RotateAndZoomIn3D"], Cell[59098, 1365, 339, 11, 70, "ControlSuggestions", CellTags->"DragLocators"], Cell[59440, 1378, 636, 15, 70, "ControlSuggestions", CellTags->"CreateAndDeleteLocators"], Cell[60079, 1395, 842, 21, 70, "ControlSuggestions", CellTags->"SliderZoom"], Cell[60924, 1418, 303, 8, 70, "ControlSuggestions", CellTags->"GamepadControls"], Cell[61230, 1428, 1411, 31, 70, "ControlSuggestions", CellTags->"AutomaticAnimation"], Cell[62644, 1461, 881, 21, 70, "ControlSuggestions", CellTags->"BookmarkAnimation"] }, Open ]], Cell[CellGroupData[{ Cell[63562, 1487, 30, 0, 70, "SearchTermsSection"], Cell[63595, 1489, 144, 3, 70, "SearchTerms", CellID->228648493], Cell[63742, 1494, 150, 3, 70, "SearchTerms", CellID->489599371], Cell[63895, 1499, 145, 3, 70, "SearchTerms", CellID->153797984] }, Open ]], Cell[CellGroupData[{ Cell[64077, 1507, 31, 0, 70, "RelatedLinksSection"], Cell[64111, 1509, 291, 7, 70, "RelatedLinks", CellID->228214463] }, Open ]], Cell[CellGroupData[{ Cell[64439, 1521, 25, 0, 70, "AuthorSection"], Cell[64467, 1523, 389, 11, 70, "Author"] }, Open ]] }, Open ]] } ] *) (* End of internal cache information *)