(* 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[ 21031, 633] NotebookOptionsPosition[ 19341, 574] NotebookOutlinePosition[ 19759, 590] CellTagsIndexPosition[ 19716, 587] WindowFrame->Normal ContainsDynamic->False*) (* Beginning of Notebook Content *) Notebook[{ Cell[CellGroupData[{ Cell["The Cascade Algorithm", "Title", CellChangeTimes->{{3.4217500525763702`*^9, 3.421750057748377*^9}}], Cell["\<\ Wavelet Workshop June 4-7, 2008 University of St. Thomas\ \>", "Subtitle", CellChangeTimes->{{3.421426484890625*^9, 3.42142648821875*^9}}], Cell["\<\ Catherine Beneteau Caroline Haddad David Ruch Patrick Van Fleet\ \>", "Subsubtitle", CellChangeTimes->{{3.42144927371875*^9, 3.42144928703125*^9}}], Cell[CellGroupData[{ Cell["Objective", "Section"], Cell["\<\ In this notebook, we will explore the two-dimensional discrete Haar wavelet \ transform.\ \>", "Text"] }, Open ]], Cell[CellGroupData[{ Cell["Conventions", "Section"], Cell[TextData[{ "This notebook uses the package ", StyleBox["DiscreteWavelets", FontColor->RGBColor[1, 0, 0]], " (written by Patrick Van Fleet). All commands from the ", StyleBox["DiscreteWavelets", FontColor->RGBColor[1, 0, 0]], " library will be denoted in ", StyleBox["red", FontColor->RGBColor[1, 0, 0]], ". Help is available for every command in ", StyleBox["the package", FontColor->GrayLevel[0]], ". Click on Help and then Documentation Center. At the bottom-right of the \ page is a link for Installed AddOns. Click this link and one of the options \ is DiscreteWavelets. Click this link to go to the Help Browser. Like all ", StyleBox["Mathematica", FontSlant->"Italic"], " help screens, the help is \"live\" - you can either execute the commands \ in the help to see the effects of the command or cut and paste them into your \ own notebook.\n\nComments are useful within cells of code. Any code enclosed \ by (* *) is a comment and ignored by the ", StyleBox["Mathematica", FontSlant->"Italic"], " kernel." }], "Text", CellChangeTimes->{{3.4085631561875*^9, 3.408563201375*^9}, { 3.4085632433125*^9, 3.408563315796875*^9}, {3.40856339940625*^9, 3.4085634034375*^9}, {3.408565167890625*^9, 3.40856516825*^9}}] }, Open ]], Cell[CellGroupData[{ Cell["Load DiscreteWavelets", "Section", CellChangeTimes->{3.408563584328125*^9}], Cell[BoxData[ RowBox[{"<<", "DiscreteWavelets`DiscreteWavelets`"}]], "Input", CellChangeTimes->{{3.408563455078125*^9, 3.408563467234375*^9}, { 3.408565207546875*^9, 3.40856520834375*^9}, {3.4085675625625*^9, 3.408567562828125*^9}, {3.421627792546875*^9, 3.4216277926875*^9}, { 3.4217530499030995`*^9, 3.421753050028103*^9}, {3.4217532592053328`*^9, 3.4217532593147106`*^9}}] }, Open ]], Cell[CellGroupData[{ Cell["Code for the Cascade Algorithm", "Section", CellChangeTimes->{{3.4217502009551687`*^9, 3.421750210158529*^9}}], Cell[TextData[{ "Execute the cell below to load the Cascade Algorithm code. The module \ returns a total of ", StyleBox["iteration", FontWeight->"Bold"], " lists. Each of these list represents a sampling of the i-th iteration, \ for i=1,...,", StyleBox["iteration", FontWeight->"Bold"], "." }], "Text", CellChangeTimes->{{3.421750454227277*^9, 3.421750474134036*^9}, { 3.421751575146597*^9, 3.4217515883813105`*^9}, {3.421751618585209*^9, 3.4217516956496816`*^9}}], Cell[BoxData[ RowBox[{ RowBox[{ RowBox[{"CascadeAlgorithm", "[", RowBox[{"eN_", ",", "unitsize_", ",", "iteration_"}], "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{ "Cee", ",", "b", ",", "n", ",", "a", ",", "total", ",", "h", ",", "A", ",", "Y", ",", "YY", ",", "AA", ",", "Z", ",", "q", ",", "t", ",", "k", ",", "dumC", ",", "ddY", ",", "newZ"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"Cee", "=", RowBox[{"N", "[", RowBox[{"2", " ", RowBox[{ RowBox[{"Daub", "[", RowBox[{"eN", "+", "1"}], "]"}], "/", RowBox[{"Sqrt", "[", "2", "]"}]}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"b", "=", RowBox[{"(", RowBox[{"eN", "+", "1"}], ")"}]}], ";", " ", "\[IndentingNewLine]", RowBox[{"n", "=", RowBox[{ RowBox[{"eN", "*", "unitsize"}], "+", "1"}]}], ";", "\[IndentingNewLine]", RowBox[{"a", "=", "0"}], ";", " ", RowBox[{"b", "=", "eN"}], ";", " ", RowBox[{"total", "=", "n"}], ";", " ", RowBox[{"h", "=", RowBox[{ RowBox[{"(", RowBox[{"b", "-", "a"}], ")"}], "/", "n"}]}], ";", "\n", "\t", RowBox[{"Do", "[", RowBox[{ RowBox[{ RowBox[{"A", "[", RowBox[{"i", ",", "1"}], "]"}], "=", RowBox[{"a", "+", RowBox[{"h", "*", RowBox[{"(", RowBox[{"i", "-", "1"}], ")"}]}]}]}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", "total"}], "}"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"Y", "=", RowBox[{ RowBox[{"Table", "[", RowBox[{"1", ",", RowBox[{"{", RowBox[{"U", ",", "1"}], "}"}], ",", RowBox[{"{", RowBox[{"V", ",", "n"}], "}"}]}], "]"}], "/", "eN"}]}], ";", "\n", RowBox[{"YY", "=", RowBox[{"Table", "[", RowBox[{"0", ",", RowBox[{"{", RowBox[{"U", ",", "1"}], "}"}], ",", RowBox[{"{", RowBox[{"V", ",", "n"}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Do", "[", RowBox[{"(*", RowBox[{"begin", " ", "j"}], "*)"}], RowBox[{ RowBox[{ RowBox[{"Do", "[", RowBox[{ RowBox[{ RowBox[{"A", "[", RowBox[{"i", ",", "2"}], "]"}], "=", RowBox[{"Y", "[", RowBox[{"[", RowBox[{"1", ",", "i"}], "]"}], "]"}]}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", "total"}], "}"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{ RowBox[{"AA", "[", "j", "]"}], "=", RowBox[{"Table", "[", RowBox[{ RowBox[{"N", "[", RowBox[{ RowBox[{"A", "[", RowBox[{"i", ",", "q"}], "]"}], ",", "8"}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", "total"}], "}"}], ",", RowBox[{"{", RowBox[{"q", ",", "1", ",", "2"}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Do", "[", RowBox[{"(*", RowBox[{"begin", " ", "t"}], "*)"}], RowBox[{ RowBox[{ RowBox[{"Z", "=", RowBox[{"Table", "[", RowBox[{"0", ",", RowBox[{"{", RowBox[{"U", ",", "1"}], "}"}], ",", RowBox[{"{", RowBox[{"V", ",", "1"}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Do", "[", RowBox[{"(*", RowBox[{"begin", " ", "k"}], "*)"}], RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{"And", "[", RowBox[{ RowBox[{"(", RowBox[{ RowBox[{ RowBox[{"2", "t"}], "-", "1", "-", RowBox[{"k", "*", "unitsize"}]}], "\[LessEqual]", "n"}], ")"}], ",", RowBox[{"(", RowBox[{ RowBox[{ RowBox[{"2", "t"}], "-", "1", "-", RowBox[{"k", "*", "unitsize"}]}], ">", "1"}], ")"}]}], "]"}], ",", RowBox[{ RowBox[{"dumC", "=", RowBox[{"Cee", "[", RowBox[{"[", RowBox[{"k", "+", "1"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ddY", "=", RowBox[{"Y", "[", RowBox[{"[", RowBox[{"1", ",", RowBox[{ RowBox[{"2", "t"}], "-", "1", "-", RowBox[{"k", "*", "unitsize"}]}]}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"newZ", "=", RowBox[{"Z", "+", RowBox[{"dumC", "*", "ddY"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"Z", "=", "newZ"}], ";"}]}], RowBox[{"(*", RowBox[{"end", " ", "if"}], "*)"}], "]"}], ",", RowBox[{"{", RowBox[{"k", ",", "0", ",", "eN"}], "}"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{ RowBox[{"YY", "[", RowBox[{"[", RowBox[{"1", ",", "t"}], "]"}], "]"}], "=", RowBox[{"Z", "[", RowBox[{"[", RowBox[{"1", ",", "1"}], "]"}], "]"}]}]}], ",", RowBox[{"{", RowBox[{"t", ",", "1", ",", "n"}], "}"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"Y", "=", "YY"}]}], ",", RowBox[{"{", RowBox[{"j", ",", "1", ",", "iteration"}], "}"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", "AA", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}]}], ";"}]], "Input", CellChangeTimes->{{3.421750483337397*^9, 3.421750583105576*^9}, 3.4217506225128345`*^9, {3.4217506569512167`*^9, 3.4217506621232243`*^9}, { 3.4217509375365243`*^9, 3.421750988225322*^9}, 3.421751067102341*^9, { 3.4217530478405466`*^9, 3.4217530479499245`*^9}, {3.4217532572677827`*^9, 3.421753257517789*^9}}] }, Open ]], Cell[CellGroupData[{ Cell["Running the Cascade Algorithm", "Section", CellChangeTimes->{{3.4217502009551687`*^9, 3.421750210158529*^9}, { 3.4217504504771805`*^9, 3.4217504514303303`*^9}}], Cell["\<\ The cascade algorithm needs three inputs - the filter length less one, the \ unit step size for calculation (this is the number of partitions of the unit \ interval - the larger, the better the approximation), and the number of \ iterations. Here are some settings to create the D4 scaling function:\ \>", "Text", CellChangeTimes->{{3.421750267597499*^9, 3.4217503740220985`*^9}, { 3.4217504192888823`*^9, 3.4217504216326923`*^9}, {3.421751568708932*^9, 3.421751571083993*^9}}], Cell[BoxData[{ RowBox[{ RowBox[{"L", "=", "3"}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"unitsize", "=", "200"}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"iteration", "=", "40"}], ";"}], "\[IndentingNewLine]"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"c", "=", RowBox[{"CascadeAlgorithm", "[", RowBox[{"L", ",", "unitsize", ",", "iteration"}], "]"}]}], ";"}]}], "Input", CellChangeTimes->{{3.4217503562403936`*^9, 3.421750381881675*^9}, { 3.421750423804623*^9, 3.4217504335079966`*^9}, {3.421751012460317*^9, 3.421751027913838*^9}, {3.4217530453717337`*^9, 3.4217530454967365`*^9}, { 3.4217532547052174`*^9, 3.421753254814595*^9}}], Cell[TextData[{ "Plot the different approximations. You can choose any ", StyleBox["k", FontWeight->"Bold"], " from 1 through ", StyleBox["iteration", FontWeight->"Bold"], "." }], "Text", CellChangeTimes->{{3.421751828903093*^9, 3.421751846528544*^9}}], Cell[BoxData[{ RowBox[{ RowBox[{"k", "=", "5"}], ";"}], "\[IndentingNewLine]", RowBox[{"ListLinePlot", "[", RowBox[{ RowBox[{"c", "[", "k", "]"}], ",", RowBox[{"PlotRange", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"-", ".5"}], ",", "3"}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"-", ".5"}], ",", "1.5"}], "}"}]}], "}"}]}], ",", RowBox[{"Ticks", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"Table", "[", RowBox[{"m", ",", RowBox[{"{", RowBox[{"m", ",", "0", ",", RowBox[{"L", "+", "1"}]}], "}"}]}], "]"}], ",", "Automatic"}], "}"}]}]}], "]"}]}], "Input", CellChangeTimes->{{3.4217517114313354`*^9, 3.421751821293523*^9}, { 3.4217518602788963`*^9, 3.4217518625602045`*^9}, 3.4217519683910384`*^9, { 3.421753043434184*^9, 3.421753043606063*^9}, {3.4217530752631235`*^9, 3.4217530799038677`*^9}, {3.4217532536270647`*^9, 3.421753253720817*^9}}], Cell[BoxData[ RowBox[{"ListLinePlot", "[", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"c", "[", "8", "]"}], ",", RowBox[{"c", "[", "4", "]"}], ",", RowBox[{"c", "[", "2", "]"}], ",", RowBox[{"c", "[", "1", "]"}]}], "}"}], ",", RowBox[{"PlotRange", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"-", ".5"}], ",", "3"}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"-", ".5"}], ",", "1.5"}], "}"}]}], "}"}]}], ",", RowBox[{"PlotStyle", "\[Rule]", RowBox[{"{", RowBox[{"Red", ",", "Green", ",", "Blue", ",", "Black"}], "}"}]}]}], "]"}]], "Input", CellChangeTimes->{{3.421751039007872*^9, 3.4217510441017523`*^9}, { 3.4217519744693193`*^9, 3.4217519930010433`*^9}, {3.4217530423091555`*^9, 3.4217530424810343`*^9}, {3.4217532528614197`*^9, 3.421753252970798*^9}}] }, Open ]], Cell[CellGroupData[{ Cell["The Scaling Function \[CurlyPhi]", "Section", CellChangeTimes->{{3.4217525201551633`*^9, 3.4217525650781884`*^9}}], Cell["\<\ Constructing an Interpolation Function for \[CurlyPhi]\ \>", "Text", CellChangeTimes->{{3.4217520178141785`*^9, 3.4217520450648766`*^9}, { 3.421752566312595*^9, 3.4217525678126335`*^9}}], Cell[BoxData[{ RowBox[{ RowBox[{"a", "=", "0"}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"b", "=", "L"}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"n", "=", RowBox[{ RowBox[{"L", "*", "unitsize"}], "+", "1"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"h", "=", RowBox[{ RowBox[{"(", RowBox[{"b", "-", "a"}], ")"}], "/", "n"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"phi", "[", "x_", "]"}], ":=", RowBox[{"Piecewise", "[", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"0", ",", RowBox[{ RowBox[{"-", "10"}], "<", "x", "<=", "a"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Interpolation", "[", RowBox[{"c", "[", "iteration", "]"}], "]"}], "[", "x", "]"}], ",", RowBox[{"a", "<", "x", "<=", RowBox[{"N", "[", RowBox[{"b", "-", "h"}], "]"}]}]}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", RowBox[{ RowBox[{"N", "[", RowBox[{"b", "-", "h"}], "]"}], "<", "x", "<", "10"}]}], "}"}]}], "}"}], "]"}]}]}], "Input", CellChangeTimes->{ 3.4217522407261353`*^9, {3.4217522711331635`*^9, 3.421752277445825*^9}, { 3.421752366104345*^9, 3.421752366276224*^9}, {3.42175241748066*^9, 3.4217524529346924`*^9}, {3.4217530392778273`*^9, 3.4217530394653325`*^9}, {3.421753251064499*^9, 3.4217532511895027`*^9}}], Cell[BoxData[ RowBox[{"Plot", "[", RowBox[{ RowBox[{"phi", "[", "x", "]"}], ",", RowBox[{"{", RowBox[{"x", ",", "a", ",", "b"}], "}"}]}], "]"}]], "Input", CellChangeTimes->{{3.421752290258653*^9, 3.421752300024528*^9}, { 3.421753036293376*^9, 3.4217530366215096`*^9}, {3.4217532499863462`*^9, 3.421753250158226*^9}}] }, Open ]], Cell[CellGroupData[{ Cell["The Wavelet Function \[Phi]", "Section", CellChangeTimes->{{3.421752539999421*^9, 3.421752560328067*^9}}], Cell["We slightly modify the D4 filter :", "Text", CellChangeTimes->{{3.421752578781664*^9, 3.421752587610015*^9}}], Cell[BoxData[{ RowBox[{ RowBox[{"g", "=", RowBox[{"N", "[", RowBox[{"2", " ", RowBox[{ RowBox[{"Daub", "[", RowBox[{"L", "+", "1"}], "]"}], "/", RowBox[{"Sqrt", "[", "2", "]"}]}]}], "]"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"psi", "[", "x_", "]"}], ":=", RowBox[{"Sum", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"(", RowBox[{"-", "1"}], ")"}], "^", "j"}], "*", RowBox[{"g", "[", RowBox[{"[", RowBox[{"L", "+", "1", "-", "j"}], "]"}], "]"}], "*", RowBox[{"phi", "[", RowBox[{ RowBox[{"2", "x"}], "-", "j"}], "]"}]}], ",", RowBox[{"{", RowBox[{"j", ",", "0", ",", "L"}], "}"}]}], "]"}]}], ";"}], "\[IndentingNewLine]", RowBox[{"Plot", "[", RowBox[{ RowBox[{"psi", "[", "x", "]"}], ",", RowBox[{"{", RowBox[{"x", ",", "0", ",", RowBox[{"L", "+", "1"}]}], "}"}], ",", RowBox[{"PlotRange", "\[Rule]", "All"}], ",", RowBox[{"Ticks", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"Table", "[", RowBox[{"m", ",", RowBox[{"{", RowBox[{"m", ",", "0", ",", RowBox[{"L", "+", "1"}]}], "}"}]}], "]"}], ",", "Automatic"}], "}"}]}]}], "]"}]}], "Input", CellChangeTimes->{{3.4217525967821245`*^9, 3.421752739051392*^9}, { 3.421753248626937*^9, 3.4217532488144417`*^9}}] }, Open ]], Cell[CellGroupData[{ Cell["Integer Translates of \[CurlyPhi]", "Section", CellChangeTimes->{{3.4217527433796277`*^9, 3.421752760505066*^9}}], Cell[TextData[{ "Some scaling function translates and (partial) reproduction of a constant \ function.\n\n", StyleBox["Warning", FontColor->RGBColor[1, 0, 0]], ": You might want to quit the kernel, rerun DiscreteWavelets, the Cascade \ Algorithm, and the definition of phi before running this cell!!" }], "Text", CellChangeTimes->{ 3.4217530085270405`*^9, {3.421753211282231*^9, 3.4217532385798044`*^9}}], Cell[BoxData[ RowBox[{"Plot", "[", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"phi", "[", "x", "]"}], ",", RowBox[{"phi", "[", RowBox[{"x", "-", "2"}], "]"}], ",", RowBox[{"Sum", "[", RowBox[{ RowBox[{"phi", "[", RowBox[{"x", "-", "k"}], "]"}], ",", RowBox[{"{", RowBox[{"k", ",", RowBox[{"-", "2"}], ",", "5"}], "}"}]}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{"x", ",", RowBox[{"-", "3"}], ",", "8"}], "}"}], ",", RowBox[{"PlotRange", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"-", "2.5"}], ",", "8"}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"-", ".5"}], ",", "1.5"}], "}"}]}], "}"}]}], ",", RowBox[{"PlotStyle", "\[Rule]", RowBox[{"{", RowBox[{"Green", ",", "Red", ",", "Blue"}], "}"}]}]}], "]"}]], "Input", CellChangeTimes->{{3.4217527953809586`*^9, 3.421752823131669*^9}, { 3.421752893789728*^9, 3.4217529113839283`*^9}, {3.421752954681912*^9, 3.421752988089017*^9}, {3.42175302510559*^9, 3.421753025699355*^9}, { 3.421753247205025*^9, 3.4217532475800347`*^9}}] }, Open ]] }, Open ]] }, WindowSize->{1272, 902}, WindowMargins->{{5, Automatic}, {Automatic, 4}}, FrontEndVersion->"6.0 for Microsoft Windows (32-bit) (April 20, 2007)", StyleDefinitions->FrontEnd`FileName[{"Creative"}, "NaturalColor.nb", CharacterEncoding -> "WindowsANSI"] ] (* End of Notebook Content *) (* Internal cache information *) (*CellTagsOutline CellTagsIndex->{} *) (*CellTagsIndex CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ Cell[CellGroupData[{ Cell[590, 23, 106, 1, 73, "Title"], Cell[699, 26, 149, 5, 96, "Subtitle"], Cell[851, 33, 158, 6, 89, "Subsubtitle"], Cell[CellGroupData[{ Cell[1034, 43, 28, 0, 75, "Section"], Cell[1065, 45, 112, 3, 29, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[1214, 53, 30, 0, 75, "Section"], Cell[1247, 55, 1259, 28, 101, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[2543, 88, 82, 1, 75, "Section"], Cell[2628, 91, 387, 6, 41, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[3052, 102, 117, 1, 75, "Section"], Cell[3172, 105, 481, 13, 29, "Text"], Cell[3656, 120, 6508, 171, 402, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[10201, 296, 169, 2, 75, "Section"], Cell[10373, 300, 494, 10, 83, "Text"], Cell[10870, 312, 697, 17, 122, "Input"], Cell[11570, 331, 263, 9, 29, "Text"], Cell[11836, 342, 1009, 27, 62, "Input"], Cell[12848, 371, 889, 24, 41, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[13774, 400, 121, 1, 75, "Section"], Cell[13898, 403, 199, 4, 29, "Text"], Cell[14100, 409, 1441, 43, 122, "Input"], Cell[15544, 454, 338, 8, 41, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[15919, 467, 112, 1, 75, "Section"], Cell[16034, 470, 116, 1, 29, "Text"], Cell[16153, 473, 1412, 45, 82, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[17602, 523, 120, 1, 75, "Section"], Cell[17725, 526, 413, 9, 65, "Text"], Cell[18141, 537, 1172, 33, 41, "Input"] }, Open ]] }, Open ]] } ] *) (* End of internal cache information *)