(* Content-type: application/vnd.wolfram.mathematica *)

(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)

(* CreatedBy='Mathematica 8.0' *)

(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[       157,          7]
NotebookDataLength[     21769,        686]
NotebookOptionsPosition[     13787,        491]
NotebookOutlinePosition[     14693,        523]
CellTagsIndexPosition[     14616,        518]
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{

Cell[CellGroupData[{
Cell["EPM`Optimization`", "Section",
 InitializationGroup->True],

Cell[TextData[{
 StyleBox["From",
  FontWeight->"Bold"],
 ": ",
 StyleBox["Essentials of Programming in Mathematica\n",
  FontSlant->"Italic"],
 "\[Copyright] Paul R. Wellin 2015"
}], "Text",
 CellMargins->{{28, 10}, {7, 7}},
 FontSize->14],

Cell[CellGroupData[{

Cell["Metadata", "Subsection"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{":", "Name", ":", " ", "EPM`Optimization`"}], " ", "*)"}]], "Input"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{":", "Book", ":", " ", 
   RowBox[{
   "Essentials", " ", "of", " ", "Programming", " ", "in", " ", 
    "Mathematica"}]}], " ", "*)"}]], "Input"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{":", 
   RowBox[{"Author", ":", " ", 
    RowBox[{"Paul", " ", "Wellin"}]}]}], " ", "*)"}]], "Input"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{
   RowBox[{":", "Summary", ":", " ", 
    RowBox[{
    "This", " ", "package", " ", "contains", " ", "the", " ", "functions", 
     " ", "defined", " ", "in", " ", "Chapter", " ", "9"}]}], ",", " ", 
   RowBox[{"Optimizing", " ", "Mathematica", " ", 
    RowBox[{"programs", "."}]}]}], " ", "*)"}]], "Input"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{":", "Context", ":", " ", "EPM`Optimization`"}], " ", 
  "*)"}]], "Input"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{":", 
   RowBox[{"Package", " ", 
    RowBox[{"Version", ":", " ", "1.0"}]}]}], " ", "*)"}]], "Input"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{
   RowBox[{":", "Copyright", ":", " ", 
    RowBox[{"Copyright", " ", "2015"}]}], ",", " ", 
   RowBox[{"Paul", " ", "R", " ", "Wellin"}]}], " ", "*)"}]], "Input"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{
   RowBox[{":", 
    RowBox[{"History", ":", " ", 
     RowBox[{
     "Version", " ", "1.0", " ", "by", " ", "Paul", " ", "Wellin"}]}]}], ",", 
   " ", 
   RowBox[{"Dec", " ", "2012"}]}], " ", "*)"}]], "Input"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{
   RowBox[{":", 
    RowBox[{"Keywords", ":", " ", "timing"}]}], ",", " ", "blanagrams", ",", 
   " ", 
   RowBox[{"Mandebrot", " ", "set"}], ",", " ", 
   RowBox[{"sieving", " ", "algorithms"}]}], " ", "*)"}]], "Input"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{":", "Source", ":", " ", 
   RowBox[{"Optimization", ".", "nb"}]}], " ", "*)"}]], "Input"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{":", 
   RowBox[{"Mathematica", " ", "Version"}], ":", " ", "10.3"}], " ", 
  "*)"}]], "Input"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{"Tested", " ", "in", " ", "Mathematica", " ", "11.1"}], " ", 
  "*)"}]], "Input",ExpressionUUID->"96b8a861-1592-4409-95e4-2ee9ec2d9508"]
}, Closed]],

Cell[CellGroupData[{

Cell["BeginPackage", "Subsection"],

Cell[BoxData[
 RowBox[{"Remove", "[", 
  RowBox[{
  "AverageTiming", ",", "BlanagramsParallel", ",", "Mandelbrot", ",", 
   "Sieve"}], "]"}]], "Input"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{"BeginPackage", "[", 
   RowBox[{"\"\<EPM`Optimization`\>\"", ",", " ", 
    RowBox[{"{", "\"\<EPM`Strings`\>\"", "}"}]}], "]"}], " ", "*)"}]], "Input"]
}, Closed]],

Cell[CellGroupData[{

Cell["Usage messages for public functions", "Subsection"],

Cell[BoxData[
 RowBox[{
  RowBox[{
   RowBox[{"AverageTiming", "::", "usage"}], "=", "\"\<AverageTiming[\!\(\*
StyleBox[\"expr\", \"TI\"]\), \!\(\*
StyleBox[\"trials\", \"TI\"]\)] evaluates \!\(\*
StyleBox[\"expr\", \"TI\"]\) a number of times given by \!\(\*
StyleBox[\"trials\", \"TI\"]\) and averages the evaluation timings.\>\""}], 
  ";"}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{
   RowBox[{"BlanagramsParallel", "::", "usage"}], "=", 
   "\"\<BlanagramsParallel[\\\"\!\(\*
StyleBox[\"word\", \"TI\"]\)\\\"] finds all blanagrams of the string, \!\(\*
StyleBox[\"word\", \"TI\"]\), running the computation in parallel. It \
requires the package EPM`09Strings` to be installed.\>\""}], ";"}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{
   RowBox[{"Mandelbrot", "::", "usage"}], "=", "\"\<Mandelbrot[\!\(\*
StyleBox[\"c\", \"TI\"]\)] iterates the function \!\(\*SuperscriptBox[
StyleBox[\"z\", \"TI\"], \"2\"]\) + \!\(\*
StyleBox[\"c\", \"TI\"]\) until its absolute value is greater than two. It \
returns the length of the iteration; if unbounded, it returns the iteration \
limit, which is, by default, equal to 250.\>\""}], ";"}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{
   RowBox[{"Sieve", "::", "usage"}], "=", "\"\<Sieve[\!\(\*
StyleBox[\"n\", \"TI\"]\)] uses a sieving algorithm due to Eratosthenes to \
find all prime numbers less than \!\(\*
StyleBox[\"n\", \"TI\"]\).\>\""}], ";"}]], "Input"]
}, Closed]],

Cell["Options", "Subsection"],

Cell[CellGroupData[{

Cell["Private context", "Subsection"],

Cell[BoxData[
 RowBox[{"Begin", "[", "\"\<`Private`\>\"", "]"}]], "Input"]
}, Closed]],

Cell[CellGroupData[{

Cell["Function definitions (public and private)", "Subsection"],

Cell[BoxData[
 RowBox[{"SetAttributes", "[", 
  RowBox[{"AverageTiming", ",", "HoldAll"}], "]"}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{"AverageTiming", "[", 
   RowBox[{"expr_", ",", "trials_"}], "]"}], ":=", 
  RowBox[{"Mean", "[", 
   RowBox[{"Table", "[", 
    RowBox[{
     RowBox[{"First", "[", 
      RowBox[{"AbsoluteTiming", "[", "expr", "]"}], "]"}], ",", 
     RowBox[{"{", "trials", "}"}]}], "]"}], "]"}]}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{"BlanagramsParallel", "[", "word_String", "]"}], ":=", 
  RowBox[{"Module", "[", 
   RowBox[{
    RowBox[{"{", "blana", "}"}], ",", "\[IndentingNewLine]", 
    RowBox[{
     RowBox[{"ParallelNeeds", "[", "\"\<EPM`\>\"", "]"}], ";", 
     "\[IndentingNewLine]", 
     RowBox[{"blana", "=", 
      RowBox[{"Table", "[", "\[IndentingNewLine]", 
       RowBox[{
        RowBox[{"Map", "[", 
         RowBox[{
          RowBox[{
           RowBox[{"StringReplacePart", "[", 
            RowBox[{"word", ",", "ch", ",", 
             RowBox[{"{", 
              RowBox[{"#", ",", "#"}], "}"}]}], "]"}], "&"}], ",", 
          RowBox[{"Range", "[", 
           RowBox[{"StringLength", "[", "word", "]"}], "]"}]}], "]"}], ",", 
        "\[IndentingNewLine]", 
        RowBox[{"{", 
         RowBox[{"ch", ",", 
          RowBox[{"CharacterRange", "[", 
           RowBox[{"\"\<a\>\"", ",", "\"\<z\>\""}], "]"}]}], "}"}]}], "]"}]}],
      ";", "\[IndentingNewLine]", 
     RowBox[{"DeleteDuplicates", "@", 
      RowBox[{"Flatten", "[", 
       RowBox[{"ParallelMap", "[", 
        RowBox[{"EPM`Anagrams", ",", "blana", ",", 
         RowBox[{"{", "2", "}"}]}], "]"}], "]"}]}]}]}], "\[IndentingNewLine]",
    "]"}]}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{"Mandelbrot", "[", 
   RowBox[{"c_Complex", ",", 
    RowBox[{"iter_:", "250"}]}], "]"}], ":=", 
  RowBox[{"Length", "[", 
   RowBox[{"NestWhileList", "[", 
    RowBox[{
     RowBox[{
      RowBox[{
       RowBox[{"#", "^", "2"}], "+", "c"}], "&"}], ",", "0", ",", 
     RowBox[{
      RowBox[{
       RowBox[{"Abs", "[", "#", "]"}], "<", "2"}], "&"}], ",", "1", ",", 
     "iter"}], "]"}], "]"}]}]], "Input", "ExerciseMR",
 CellTags->"12.3 Exercises"],

Cell[BoxData[
 RowBox[{
  RowBox[{"Sieve", "[", "n_Integer", "]"}], ":=", 
  RowBox[{"Module", "[", 
   RowBox[{
    RowBox[{"{", 
     RowBox[{"ints", "=", 
      RowBox[{"Range", "[", "n", "]"}]}], "}"}], ",", "\[IndentingNewLine]", 
    RowBox[{
     RowBox[{"Do", "[", 
      RowBox[{
       RowBox[{
        RowBox[{"ints", "[", 
         RowBox[{"[", 
          RowBox[{
           RowBox[{"2", " ", "p"}], ";;", 
           RowBox[{"-", "1"}], ";;", "p"}], "]"}], "]"}], "=", "1"}], ",", 
       "\[IndentingNewLine]", 
       RowBox[{"{", 
        RowBox[{"p", ",", "2", ",", 
         SqrtBox["n"]}], "}"}]}], "]"}], ";", "\[IndentingNewLine]", 
     RowBox[{"DeleteCases", "[", 
      RowBox[{"ints", ",", "1"}], "]"}]}]}], "]"}]}]], "Input"]
}, Closed]],

Cell[CellGroupData[{

Cell["End private context", "Subsection"],

Cell[BoxData[
 RowBox[{"End", "[", "]"}]], "Input"]
}, Closed]],

Cell[CellGroupData[{

Cell["EndPackage", "Subsection"],

Cell[BoxData[
 RowBox[{"(*", 
  RowBox[{"EndPackage", "[", "]"}], "*)"}]], "Input"]
}, Closed]]
}, Open  ]],

Cell[CellGroupData[{

Cell["Examples", "Section"],

Cell[CellGroupData[{

Cell["Load package", "Subsection"],

Cell["Quit current session:", "Text"],

Cell[BoxData["Quit"], "Input",ExpressionUUID->"75e977d6-65b4-4a21-8c3b-61e133be6670"],

Cell[TextData[{
 "Load package (do ",
 StyleBox["not",
  FontSlant->"Italic"],
 " say \[OpenCurlyDoubleQuote]Yes\[CloseCurlyDoubleQuote] to evaluate init \
cells dialog)."
}], "Text"],

Cell[BoxData[
 RowBox[{"<<", "EPM`"}]], "Input",ExpressionUUID->"7a01049d-655d-4e0a-aff0-8e46ad6d02ae"]
}, Open  ]],

Cell[CellGroupData[{

Cell["Test usage messages", "Subsection"],

Cell[BoxData[
 RowBox[{"?", "AverageTiming"}]], "Input"],

Cell[BoxData[
 RowBox[{"?", "BlanagramsParallel"}]], "Input"],

Cell[BoxData[
 RowBox[{"?", "Mandelbrot"}]], "Input"],

Cell[BoxData[
 RowBox[{"?", "Sieve"}]], "Input"]
}, Closed]],

Cell[CellGroupData[{

Cell["Exercise the functions and options", "Subsection"],

Cell[CellGroupData[{

Cell["AverageTiming", "Subsubsection"],

Cell[BoxData[{
 RowBox[{
  RowBox[{"mat", "=", 
   RowBox[{"RandomReal", "[", 
    RowBox[{"1", ",", 
     RowBox[{"{", 
      RowBox[{"1000", ",", "1000"}], "}"}]}], "]"}]}], 
  ";"}], "\[IndentingNewLine]", 
 RowBox[{"AbsoluteTiming", "[", 
  RowBox[{
   RowBox[{"mat", ".", "mat"}], ";"}], "]"}]}], "Input",ExpressionUUID->\
"f1d7eff9-8294-4766-8876-0a4a4a5b7a1b"],

Cell[BoxData[
 RowBox[{"AverageTiming", "[", 
  RowBox[{
   RowBox[{"mat", ".", "mat"}], ",", "5"}], "]"}]], "Input",ExpressionUUID->\
"0ff7845c-f3cf-42de-b41e-43a37b0a20d5"],

Cell["\<\
For a compound expression, you can either enclose the subexpressions in a \
list or separate them with semicolons.\
\>", "Text"],

Cell[BoxData[
 RowBox[{"AverageTiming", "[", 
  RowBox[{
   RowBox[{"{", "\[IndentingNewLine]", 
    RowBox[{
     RowBox[{"mat", ".", "mat"}], ",", "\[IndentingNewLine]", 
     RowBox[{"Inverse", "[", "mat", "]"}], ",", "\[IndentingNewLine]", 
     RowBox[{"Det", "[", "mat", "]"}]}], "\[IndentingNewLine]", "}"}], ",", 
   "3"}], "]"}]], "Input",ExpressionUUID->"421d45a8-9967-4b5f-86cf-\
774fb07ee9d4"],

Cell[BoxData[
 RowBox[{"AverageTiming", "[", "\[IndentingNewLine]", 
  RowBox[{
   RowBox[{
    RowBox[{"mat", ".", "mat"}], ";", "\[IndentingNewLine]", 
    RowBox[{"Inverse", "[", "mat", "]"}], ";", "\[IndentingNewLine]", 
    RowBox[{"Det", "[", "mat", "]"}], ";"}], ",", "\[IndentingNewLine]", 
   "3"}], "]"}]], "Input",ExpressionUUID->"04287fe0-6473-4584-bfab-\
334c56a676d1"]
}, Closed]],

Cell[CellGroupData[{

Cell["BlanagramsParallel", "Subsubsection"],

Cell[BoxData[
 RowBox[{
  RowBox[{"BlanagramsParallel", "[", "\"\<strand\>\"", "]"}], "//", 
  "AbsoluteTiming"}]], "Input",ExpressionUUID->"e9fc0309-d88d-4102-8c78-\
6513d20c9b08"]
}, Closed]],

Cell[CellGroupData[{

Cell["Mandelbrot", "Subsubsection"],

Cell[BoxData[
 RowBox[{
  RowBox[{"data", "=", 
   RowBox[{"With", "[", 
    RowBox[{
     RowBox[{"{", 
      RowBox[{"n", "=", "200"}], "}"}], ",", "\[IndentingNewLine]", 
     RowBox[{"Table", "[", 
      RowBox[{
       RowBox[{"Mandelbrot", "[", 
        RowBox[{"x", "+", 
         RowBox[{"I", " ", "y"}]}], "]"}], ",", 
       RowBox[{"{", 
        RowBox[{"y", ",", 
         RowBox[{"-", "0.5"}], ",", "0.5", ",", 
         FractionBox["1", "n"]}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"x", ",", 
         RowBox[{"-", "1.75"}], ",", 
         RowBox[{"-", "0.75"}], ",", 
         FractionBox["1", "n"]}], "}"}]}], "]"}]}], "]"}]}], ";"}]], "Input", \
"ExerciseMR",
 CellTags->
  "12.3 Exercises",ExpressionUUID->"1fcab0f6-f084-418f-993d-9727e73e4e6d"],

Cell[BoxData[
 RowBox[{"ArrayPlot", "[", 
  RowBox[{"data", ",", 
   RowBox[{"ColorFunction", "\[Rule]", "\"\<GreenPinkTones\>\""}]}], 
  "]"}]], "Input", "ExerciseMR",
 CellTags->
  "12.3 Exercises",ExpressionUUID->"446c895d-ae19-46cf-a1bd-315e48c86c59"]
}, Closed]],

Cell[CellGroupData[{

Cell["Sieve", "Subsubsection"],

Cell[BoxData[
 RowBox[{"Sieve", "[", "100", "]"}]], "Input",ExpressionUUID->"9c10f7da-b144-4419-a113-ed5d83bbf713"],

Cell[BoxData[
 RowBox[{"Timing", "[", 
  RowBox[{
   RowBox[{"Sieve", "[", 
    SuperscriptBox["10", "6"], "]"}], ";"}], "]"}]], "Input",ExpressionUUID->\
"9c3a56d0-6ed4-4e9f-853e-61423478df02"],

Cell["Check against built-in functions:", "Text"],

Cell[BoxData[
 RowBox[{"Timing", "[", 
  RowBox[{
   RowBox[{"Map", "[", 
    RowBox[{"Prime", ",", 
     RowBox[{"Range", "@", 
      RowBox[{"PrimePi", "[", 
       SuperscriptBox["10", "6"], "]"}]}]}], "]"}], ";"}], "]"}]], "Input",Exp\
ressionUUID->"a976b2ed-cddd-4c1a-99bf-75867952727e"],

Cell[BoxData[
 RowBox[{"With", "[", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{"n", "=", 
     SuperscriptBox["10", "6"]}], "}"}], ",", "\[IndentingNewLine]", 
   RowBox[{
    RowBox[{"Sieve", "[", "n", "]"}], "==", 
    RowBox[{"Map", "[", 
     RowBox[{"Prime", ",", 
      RowBox[{"Range", "@", 
       RowBox[{"PrimePi", "[", "n", "]"}]}]}], "]"}]}]}], 
  "\[IndentingNewLine]", "]"}]], "Input",ExpressionUUID->"2ccadfee-b42e-49cd-\
9658-561e150689ed"]
}, Closed]]
}, Closed]]
}, Open  ]]
},
AutoGeneratedPackage->Automatic,
WindowSize->{808, 699},
WindowMargins->{{665, Automatic}, {Automatic, 217}},
ShowSelection->True,
Magnification:>1.25 Inherited,
FrontEndVersion->"11.1 for Mac OS X x86 (32-bit, 64-bit Kernel) (March 16, \
2017)",
StyleDefinitions->"Default.nb"
]
(* End of Notebook Content *)

(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{
 "12.3 Exercises"->{
  Cell[7160, 243, 486, 15, 
  57, "Input", "ExpressionUUID" -> "3f6d3c7f-b66e-4f70-96ff-e7b7cac2ff10",
   CellTags->"12.3 Exercises"],
  Cell[11527, 413, 776, 23, 
  143, "Input", "ExpressionUUID" -> "1fcab0f6-f084-418f-993d-9727e73e4e6d",
   CellTags->"12.3 Exercises"],
  Cell[12306, 438, 255, 6, 
  40, "Input", "ExpressionUUID" -> "446c895d-ae19-46cf-a1bd-315e48c86c59",
   CellTags->"12.3 Exercises"]}
 }
*)
(*CellTagsIndex
CellTagsIndex->{
 {"12.3 Exercises", 14185, 505}
 }
*)
(*NotebookFileOutline
Notebook[{
Cell[CellGroupData[{
Cell[579, 22, 64, 1, 81, "Section", "ExpressionUUID" -> \
"535d16e1-60f0-4dbc-a877-61b9dd647d6b",
 InitializationGroup->True],
Cell[646, 25, 240, 9, 62, "Text", "ExpressionUUID" -> \
"dd395b1b-a536-4615-9306-6f0efeab8d1e"],
Cell[CellGroupData[{
Cell[911, 38, 30, 0, 54, "Subsection", "ExpressionUUID" -> \
"fec269f3-834f-40cc-b786-110793f6ffac"],
Cell[944, 40, 113, 2, 40, "Input", "ExpressionUUID" -> \
"ecd58d32-3f11-4f91-b7f9-a80c60e624da"],
Cell[1060, 44, 191, 5, 40, "Input", "ExpressionUUID" -> \
"0f32a8d1-c04d-4028-b792-b33b8e9f8fe9"],
Cell[1254, 51, 146, 4, 40, "Input", "ExpressionUUID" -> \
"68969746-1fe5-4b27-9a59-05266dfa8922"],
Cell[1403, 57, 354, 8, 67, "Input", "ExpressionUUID" -> \
"6c4295cc-f4aa-4940-b7fd-cab82884aa3f"],
Cell[1760, 67, 119, 3, 40, "Input", "ExpressionUUID" -> \
"c3af74ac-b35c-4bda-be9d-b2145dd59709"],
Cell[1882, 72, 147, 4, 40, "Input", "ExpressionUUID" -> \
"071abee6-88e6-436a-a79a-00a5247b5c0a"],
Cell[2032, 78, 209, 5, 40, "Input", "ExpressionUUID" -> \
"e43a39d9-88e0-49fc-9c09-446259981f05"],
Cell[2244, 85, 256, 8, 40, "Input", "ExpressionUUID" -> \
"05058690-75e0-4131-a5d3-119bf9bfb4cf"],
Cell[2503, 95, 266, 7, 67, "Input", "ExpressionUUID" -> \
"4c062062-2faf-48b2-ba5b-d43c54fe4b08"],
Cell[2772, 104, 135, 3, 40, "Input", "ExpressionUUID" -> \
"a1285434-b074-433d-bb91-fa5a410d1f86"],
Cell[2910, 109, 140, 4, 40, "Input", "ExpressionUUID" -> \
"b9a2ed77-b459-49da-b4fb-88512d9d9e63"],
Cell[3053, 115, 181, 3, 40, "Input", "ExpressionUUID" -> \
"96b8a861-1592-4409-95e4-2ee9ec2d9508"]
}, Closed]],
Cell[CellGroupData[{
Cell[3271, 123, 34, 0, 43, "Subsection", "ExpressionUUID" -> \
"036e38ac-150a-4795-807a-703f14072741"],
Cell[3308, 125, 151, 4, 40, "Input", "ExpressionUUID" -> \
"6f5b9363-e7c5-4764-804a-9fc6b7c7802e"],
Cell[3462, 131, 197, 4, 40, "Input", "ExpressionUUID" -> \
"fa358544-c095-47cb-b23b-6e1f5a1997f3"]
}, Closed]],
Cell[CellGroupData[{
Cell[3696, 140, 57, 0, 43, "Subsection", "ExpressionUUID" -> \
"ce755cd3-634d-4551-acfe-64f2d2a6dbab"],
Cell[3756, 142, 355, 8, 93, "Input", "ExpressionUUID" -> \
"d9edd10c-1fd5-4db9-9e64-236ca08a12e3"],
Cell[4114, 152, 355, 7, 120, "Input", "ExpressionUUID" -> \
"dbaf0d96-6a6e-4d56-be79-bb42262bd128"],
Cell[4472, 161, 441, 8, 120, "Input", "ExpressionUUID" -> \
"af94fc9f-b2eb-4b35-be4c-ef9289a1f31a"],
Cell[4916, 171, 263, 6, 93, "Input", "ExpressionUUID" -> \
"25250e32-c4e1-4ce6-ad37-d39e9f0258af"]
}, Closed]],
Cell[5194, 180, 29, 0, 43, "Subsection", "ExpressionUUID" -> \
"d41879d6-12b1-4189-a31c-a1edf1d0045d"],
Cell[CellGroupData[{
Cell[5248, 184, 37, 0, 43, "Subsection", "ExpressionUUID" -> \
"f558d9ab-4989-445c-9569-b48502543ed2"],
Cell[5288, 186, 74, 1, 35, "Input", "ExpressionUUID" -> \
"36ed9448-9969-40fd-91eb-dade983b82fb"]
}, Closed]],
Cell[CellGroupData[{
Cell[5399, 192, 63, 0, 43, "Subsection", "ExpressionUUID" -> \
"c773f2b7-c70b-4587-8ae5-26a23b485391"],
Cell[5465, 194, 107, 2, 35, "Input", "ExpressionUUID" -> \
"219c9166-1a4e-4f37-8fec-97f1320b1ad5"],
Cell[5575, 198, 327, 9, 35, "Input", "ExpressionUUID" -> \
"77d77dd5-3150-49f0-bb22-0c681e14a5f2"],
Cell[5905, 209, 1252, 32, 163, "Input", "ExpressionUUID" -> \
"54088119-9359-4c2f-b228-1a68e37b2f7e"],
Cell[7160, 243, 486, 15, 57, "Input", "ExpressionUUID" -> \
"3f6d3c7f-b66e-4f70-96ff-e7b7cac2ff10",
 CellTags->"12.3 Exercises"],
Cell[7649, 260, 752, 22, 153, "Input", "ExpressionUUID" -> \
"b4ecf1bf-d9ef-477f-b48c-d82d8a70807a"]
}, Closed]],
Cell[CellGroupData[{
Cell[8438, 287, 41, 0, 43, "Subsection", "ExpressionUUID" -> \
"0b0edea9-6686-4084-9d10-2a05bc4a048a"],
Cell[8482, 289, 51, 1, 235, "Input", "ExpressionUUID" -> \
"0fd95d55-51d1-4428-a587-32c6dd934f78"]
}, Closed]],
Cell[CellGroupData[{
Cell[8570, 295, 32, 0, 43, "Subsection", "ExpressionUUID" -> \
"596416c9-6036-4c26-b839-654fee14512e"],
Cell[8605, 297, 83, 2, 45, "Input", "ExpressionUUID" -> \
"988c443b-5b23-4226-b5cc-b0c58ce57bf5"]
}, Closed]]
}, Open  ]],
Cell[CellGroupData[{
Cell[8737, 305, 27, 0, 81, "Section", "ExpressionUUID" -> \
"07f580da-92c7-4325-aaec-29984997547d"],
Cell[CellGroupData[{
Cell[8789, 309, 34, 0, 54, "Subsection", "ExpressionUUID" -> \
"7f3ebba5-20a3-42a4-b1d6-3490faa94ac9"],
Cell[8826, 311, 37, 0, 38, "Text", "ExpressionUUID" -> \
"50cc34e2-9614-49cb-8a51-2c932dc73434"],
Cell[8866, 313, 85, 0, 40, "Input", "ExpressionUUID" -> \
"75e977d6-65b4-4a21-8c3b-61e133be6670"],
Cell[8954, 315, 183, 6, 38, "Text", "ExpressionUUID" -> \
"f1eafbac-74f6-4546-aac0-345be4bf945b"],
Cell[9140, 323, 103, 1, 40, "Input", "ExpressionUUID" -> \
"7a01049d-655d-4e0a-aff0-8e46ad6d02ae"]
}, Open  ]],
Cell[CellGroupData[{
Cell[9280, 329, 41, 0, 54, "Subsection", "ExpressionUUID" -> \
"4281aa7e-ab39-445d-b211-2b31ae57d312"],
Cell[9324, 331, 56, 1, 40, "Input", "ExpressionUUID" -> \
"b26b09c9-9847-4903-8283-01e108c5ea84"],
Cell[9383, 334, 61, 1, 40, "Input", "ExpressionUUID" -> \
"94f07fbc-a142-4807-8e4f-e13ee9c3bf9d"],
Cell[9447, 337, 53, 1, 40, "Input", "ExpressionUUID" -> \
"483979b4-edd3-4085-b57f-d5a8edac0efd"],
Cell[9503, 340, 48, 1, 40, "Input", "ExpressionUUID" -> \
"47fb26fc-cf79-477d-b411-16dfce99f252"]
}, Closed]],
Cell[CellGroupData[{
Cell[9588, 346, 56, 0, 43, "Subsection", "ExpressionUUID" -> \
"cd35cf77-c5e9-4357-a780-e977f5f8af83"],
Cell[CellGroupData[{
Cell[9669, 350, 38, 0, 44, "Subsubsection", "ExpressionUUID" -> \
"9c81666d-5353-401f-b394-56a3f8c0332b"],
Cell[9710, 352, 367, 11, 67, "Input", "ExpressionUUID" -> \
"f1d7eff9-8294-4766-8876-0a4a4a5b7a1b"],
Cell[10080, 365, 174, 4, 40, "Input", "ExpressionUUID" -> \
"0ff7845c-f3cf-42de-b41e-43a37b0a20d5"],
Cell[10257, 371, 138, 3, 62, "Text", "ExpressionUUID" -> \
"900f7b7b-91f9-4b90-ab91-1ace6dcc865e"],
Cell[10398, 376, 405, 9, 145, "Input", "ExpressionUUID" -> \
"421d45a8-9967-4b5f-86cf-774fb07ee9d4"],
Cell[10806, 387, 382, 8, 145, "Input", "ExpressionUUID" -> \
"04287fe0-6473-4584-bfab-334c56a676d1"]
}, Closed]],
Cell[CellGroupData[{
Cell[11225, 400, 43, 0, 44, "Subsubsection", "ExpressionUUID" -> \
"48bf177a-1673-4647-9986-4aa0c7ad1912"],
Cell[11271, 402, 181, 4, 40, "Input", "ExpressionUUID" -> \
"e9fc0309-d88d-4102-8c78-6513d20c9b08"]
}, Closed]],
Cell[CellGroupData[{
Cell[11489, 411, 35, 0, 44, "Subsubsection", "ExpressionUUID" -> \
"17803fba-e5bd-47ff-bb30-8d48734cfd0b"],
Cell[11527, 413, 776, 23, 143, "Input", "ExpressionUUID" -> \
"1fcab0f6-f084-418f-993d-9727e73e4e6d",
 CellTags->"12.3 Exercises"],
Cell[12306, 438, 255, 6, 40, "Input", "ExpressionUUID" -> \
"446c895d-ae19-46cf-a1bd-315e48c86c59",
 CellTags->"12.3 Exercises"]
}, Closed]],
Cell[CellGroupData[{
Cell[12598, 449, 30, 0, 44, "Subsubsection", "ExpressionUUID" -> \
"4178c4c5-375c-4f22-92a7-a3366f4eb43e"],
Cell[12631, 451, 115, 1, 40, "Input", "ExpressionUUID" -> \
"9c10f7da-b144-4419-a113-ed5d83bbf713"],
Cell[12749, 454, 194, 5, 44, "Input", "ExpressionUUID" -> \
"9c3a56d0-6ed4-4e9f-853e-61423478df02"],
Cell[12946, 461, 49, 0, 38, "Text", "ExpressionUUID" -> \
"807fd0bd-9899-409e-b212-35b9bd8e7c60"],
Cell[12998, 463, 292, 8, 44, "Input", "ExpressionUUID" -> \
"a976b2ed-cddd-4c1a-99bf-75867952727e"],
Cell[13293, 473, 454, 13, 99, "Input", "ExpressionUUID" -> \
"2ccadfee-b42e-49cd-9658-561e150689ed"]
}, Closed]]
}, Closed]]
}, Open  ]]
}
]
*)

