(*********************************************************************** Mathematica-Compatible Notebook This notebook can be used on any computer system with Mathematica 3.0, MathReader 3.0, or any compatible application. The data for the notebook starts with the line of stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. ***********************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 116584, 3162]*) (*NotebookOutlinePosition[ 117222, 3185]*) (* CellTagsIndexPosition[ 117178, 3181]*) (*WindowFrame->Normal*) Notebook[{ Cell[CellGroupData[{ Cell["How and Why?", "Title"], Cell[TextData[{ StyleBox["Mathematica", FontSlant->"Italic"], " techniques" }], "Subtitle"], Cell["by Allan Hayes", "Subsubtitle"], Cell[TextData[{ "In this column I shall try to demonstrate ", StyleBox["Mathematica", FontSlant->"Italic"], " techniques, from one-liners upwards and to explain how Mathematica works. \ I shall aim to give fairly full explanations, but, inevitably, some things \ will be have to be left, so I would encourage you to make the most of the \ excellent Help Browser. If you have topics or questions that you would like \ to see dealt with please email them to me at hay@haystack.demon.co.uk." }], "Text"], Cell[CellGroupData[{ Cell[" Whether to use = or := ", "Section"], Cell[TextData[{ "What is the difference between ", StyleBox["Set", "Input", FontWeight->"Plain"], ", ", StyleBox["=", "Input", FontWeight->"Plain"], ", and ", StyleBox["SetDelayed", "Input", FontWeight->"Plain"], ", ", StyleBox[":=", "Input", FontWeight->"Plain"], StyleBox[",", "Input"], " and when should one be use rather than the other?" }], "Text"], Cell[TextData[{ "The most important difference between the evaluation of ", StyleBox["l=r", "Input", FontWeight->"Plain"], StyleBox[" ", "Input"], "and of ", StyleBox["l:= r", "Input", FontWeight->"Plain"], " is that, with ", StyleBox["l = r", "Input", FontWeight->"Plain"], " , the right side, ", StyleBox["r", "Input", FontWeight->"Plain"], ", is evaluated before the rule is stored but with ", StyleBox["l :=r", "Input", FontWeight->"Plain"], " it is not (its evaluation is ", StyleBox["delayed", FontSlant->"Italic"], " until the stored rule is used - hence the name: ", StyleBox["DetDelayed", "Input", FontWeight->"Plain"], ").\nThis can alter thebehaviour quite significantly. \nHere are two \ examples, one where := is needed, the other where = is preferable " }], "Text"], Cell[TextData[{ " ", StyleBox[":= needed", FontWeight->"Bold", FontSlant->"Italic"] }], "Text"], Cell[BoxData[ \(\(f[x_]\ = \ Expand[x]; \)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(f[\((a + b)\)^2]\)], "Input"], Cell[BoxData[ \(\((a + b)\)\^2\)], "Output"] }, Open ]], Cell[TextData[{ "We probably wanted ", Cell[BoxData[ \(TraditionalForm\`a\^2 + 2 a\ b + b\^2\)]], ". We didn't get it because ", StyleBox["Expand[x]", "Input", FontWeight->"Plain"], " was evaluated to x before the rule was stored.\nHere's what was stored." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(?f\)\)], "Input"], Cell[BoxData[ \("Global`f"\)], "Print"], Cell[BoxData[ InterpretationBox[ StyleBox[\(f[x_]\ = \ x\), ShowStringCharacters->True, NumberMarks->True], InputForm[ Definition[ f]], Editable->True, AutoDelete->True]], "Print"] }, Open ]], Cell["However with", "Text"], Cell[BoxData[ \(\(f[x_]\ := \ Expand[x]; \)\)], "Input"], Cell["the stored rule is", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(?f\)\)], "Input"], Cell[BoxData[ \("Global`f"\)], "Print"], Cell[BoxData[ InterpretationBox[ StyleBox[\(f[x_]\ := \ Expand[x]\), ShowStringCharacters->True, NumberMarks->True], InputForm[ Definition[ f]], Editable->True, AutoDelete->True]], "Print"] }, Open ]], Cell["and we get ", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(f[\((a + b)\)^2]\)], "Input"], Cell[BoxData[ \(a\^2 + 2\ a\ b + b\^2\)], "Output"] }, Open ]], Cell[TextData[StyleBox[" = preferable", FontWeight->"Bold", FontSlant->"Italic"]], "Text"], Cell["With", "Text"], Cell[BoxData[ \(g[a_]\ := \ Integrate[x/Sqrt[1 + x^2], \ {x, 0, a}]\)], "Input"], Cell["\<\ the integration will not be done before the rule is stored and so \ time will be wasted in doing it every time that the rule is used.\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(?g\)\)], "Input"], Cell[BoxData[ \("Global`g"\)], "Print"], Cell[BoxData[ InterpretationBox[ StyleBox[ \(g[a_]\ := \ Integrate[x/Sqrt[1\ + \ x^3], \ {x, \ 0, \ a}]\), ShowStringCharacters->True, NumberMarks->True], InputForm[ Definition[ g]], Editable->True, AutoDelete->True]], "Print"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Do[g[n], \ {n, \ 1, 5}] // Timing\)], "Input"], Cell[BoxData[ \({2.78333333333466725`\ Second, Null}\)], "Output"] }, Open ]], Cell["However, with", "Text"], Cell[BoxData[ \(\(g[a_]\ = \ Integrate[x/Sqrt[1 + x^2], \ {x, 0, a}]; \)\)], "Input"], Cell["the integration is done before the rule is stored", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(?g\)\)], "Input"], Cell[BoxData[ \("Global`g"\)], "Print"], Cell[BoxData[ InterpretationBox[ StyleBox[\(g[a_]\ = \ \(-1\)\ + \ Sqrt[1\ + \ a^2]\), ShowStringCharacters->True, NumberMarks->True], InputForm[ Definition[ g]], Editable->True, AutoDelete->True]], "Print"] }, Open ]], Cell["and the evaluation is much faster", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Do[g[n], \ {n, \ 1, 5}] // Timing\)], "Input"], Cell[BoxData[ \({0.`\ Second, Null}\)], "Output"] }, Open ]], Cell[TextData[{ "\nAnother matter to bear in mind is the possible effect of existing \ definitions (in fact the problem in the first example was caused by the \ effect of the existing definiton of ", StyleBox["Expand", "Input", FontWeight->"Plain"], ").\nWith" }], "Text"], Cell[BoxData[ \(h[x_]\ := \ a\ x\)], "Input"], Cell["we store", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(?h\)\)], "Input"], Cell[BoxData[ \("Global`h"\)], "Print"], Cell[BoxData[ InterpretationBox[ StyleBox[\(h[x_]\ := \ a*x\), ShowStringCharacters->True, NumberMarks->True], InputForm[ Definition[ h]], Editable->True, AutoDelete->True]], "Print"] }, Open ]], Cell[TextData[{ "So ", StyleBox["h[3]", "Input", FontWeight->"Plain"], " will give ", StyleBox[" ", "Input"], Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["a", FontSlant->"Plain"], "\[Dagger]"], TraditionalForm]], "Input", FontFamily->"Courier", FontWeight->"Plain"], StyleBox["3,", "Input", FontFamily->"Courier", FontWeight->"Plain"], " where ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["a", FontSlant->"Plain"], "\[Dagger]"], TraditionalForm]], "Input", FontFamily->"Courier", FontWeight->"Plain"], " is the value of ", StyleBox["a", "Input", FontWeight->"Plain"], " when this rule is used.\nWhereas, with" }], "Text"], Cell[BoxData[ \(\(a\ = \ b; \)\)], "Input"], Cell[BoxData[ \(\(h[x_]\ = \ a\ x; \)\)], "Input"], Cell[TextData[{ "the right side ", StyleBox["a x", "Input", FontWeight->"Plain"], " will evalute to ", StyleBox["b x", "Input", FontWeight->"Plain"], " before storing; so we store" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(?h\)\)], "Input"], Cell[BoxData[ \("Global`h"\)], "Print"], Cell[BoxData[ InterpretationBox[ StyleBox[\(h[x_]\ = \ b*x\), ShowStringCharacters->True, NumberMarks->True], InputForm[ Definition[ h]], Editable->True, AutoDelete->True]], "Print"] }, Open ]], Cell[TextData[{ "and, ", StyleBox["h[3]", "Input", FontWeight->"Plain"], " will give ", StyleBox[" ", "Input"], Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["b", FontSlant->"Plain"], "\[Dagger]"], TraditionalForm]], "Input", FontFamily->"Courier", FontWeight->"Plain"], StyleBox["3", "Input", FontFamily->"Courier", FontWeight->"Plain"], " where ", Cell[BoxData[ FormBox[ StyleBox[ SuperscriptBox[ StyleBox["b", FontSlant->"Plain"], "\[Dagger]"], FontWeight->"Plain"], TraditionalForm]], "Input", FontFamily->"Courier"], " is the value of ", StyleBox["b", "Input", FontWeight->"Plain"], " when the rule is used (by this time the rule ", StyleBox["a=b", "Input", FontWeight->"Plain"], " may have been removed)" }], "Text"], Cell[CellGroupData[{ Cell["Evaluation steps", "Subsubsection"], Cell[BoxData[{ FormBox[ RowBox[{" ", RowBox[{\(In\ the\ box\ below\), ",", RowBox[{ StyleBox["a", "Input"], " ", "is", " ", "an", " ", "atom"}], ",", " ", RowBox[{ StyleBox[\(x\^\[Dagger]\), "Input"], "is", " ", "the", " ", "value", " ", "of", " ", RowBox[{ StyleBox["x", "Input"], StyleBox[".", FontSlant->"Italic"], "\n", "Some"}], " ", "features", " ", "are", " ", "clearly", " ", RowBox[{"necessary", ":", RowBox[{ "to", " ", "be", " ", "able", " ", "to", " ", "redefine", " ", "a", " ", "symbol", " ", StyleBox["a", "Input"], " ", "it", " ", "is", " ", "clear", " ", "that", " ", StyleBox["a", "Input"]}]}]}]}], " "}], TextForm], FormBox[ RowBox[{ RowBox[{ \(must\ not\ be\ evaluated; and\ to\ be\ able\ to\ redefine\ a\ function\), ",", " ", RowBox[{ StyleBox[ FormBox[ RowBox[{ StyleBox[\(\(h\^\[Dagger]\)[e\^\[Dagger]..]\), FontWeight->"Plain"], " "}], "TextForm"], "Input"], " ", "must", " ", "not", " ", "be", " ", "further"}]}], " "}], TextForm], FormBox[ RowBox[{\(evaluated.\nApart\ fom\ \ the\ steps\ marked\ NB, \ where\ the\ right\ sides\ evalute\ before\ the\ left, \ the\ evaluation\), " "}], TextForm], FormBox[\(is\ entirely\ regular\), TextForm], FormBox[ StyleBox[GridBox[{ {\(a := c\ \), StyleBox["store", FontFamily->"Times"], " ", \(h[e..\ ]\), " "}, {"Null", StyleBox["output", FontFamily->"Times"], " ", \(\(h\^\[Dagger]\)[e..]\ := \ c\), " "}, {" ", StyleBox[" ", FontFamily->"Times"], " ", \(\(h\^\[Dagger]\)[e\^\[Dagger]..]\ := \ c\), StyleBox["store", FontFamily->"Times"]}, {" ", StyleBox[" ", FontFamily->"Times"], " ", "Null", StyleBox["output", FontFamily->"Times"]}, {" ", StyleBox[" ", FontFamily->"Times"], " ", " ", StyleBox[\(\ \n\t\), FontFamily->"Times"]}, {\(a = c\), StyleBox[" ", FontFamily->"Times"], " ", \(h[e..\ ] = c\), StyleBox[" ", FontFamily->"Times"]}, { RowBox[{"a", "=", RowBox[{\(c\^\[Dagger]\), RowBox[{"(", StyleBox["NB", "SmallText"], StyleBox[")", "SmallText"]}]}]}], StyleBox["store", FontFamily->"Times"], " ", RowBox[{\(h[e..\ ]\), "=", RowBox[{\(c\^\[Dagger]\), " ", RowBox[{"(", StyleBox["NB", "SmallText"], StyleBox[")", "SmallText"]}]}]}], StyleBox[" ", FontFamily->"Times"]}, {\(c\^\[Dagger]\[Dagger]\), StyleBox["output", FontFamily->"Times"], " ", \(\(h\^\[Dagger]\)[e..\ ] = c\^\[Dagger]\), StyleBox[" ", FontFamily->"Times"]}, {" ", " ", " ", \(\(h\^\[Dagger]\)[e\^\[Dagger]..\ ] = c\^\[Dagger]\), StyleBox["store", FontFamily->"Times"]}, {" ", " ", " ", \(c\^\[Dagger]\[Dagger]\), StyleBox["ouput", FontFamily->"Times"]} }, RowSpacings->0.4, ColumnAlignments->{Left}, GridFrame->True, GridFrameMargins->{{2, 2}, {1.5, 1.5}}], FontFamily->"Courier"], TextForm], FormBox[ RowBox[{ RowBox[{ \((1)\), " ", "Storing", " ", "takes", " ", "place", " ", "only", " ", "if", " ", StyleBox["s", FontFamily->"Courier"], " ", "or", " ", "the", " ", "left", " ", "\[Dash]most", " ", "atom", " ", "of", " ", StyleBox["h", FontFamily->"Courier"], FormBox["", "TraditionalForm"], "is", " ", "an", " ", "unprotected", " ", "symbol"}], " "}], TextForm], FormBox[ RowBox[{"\t", RowBox[{ RowBox[{ RowBox[{"(", RowBox[{ "the", " ", "stored", " ", "assignment", " ", "is", " ", StyleBox["tagged", FontSlant->"Italic"], StyleBox[" ", FontSlant->"Italic"], "by", " ", "this", " ", "symbol"}], ")"}], ".", " ", "\n", \((2)\)}], " ", "Evaluation", " ", "of", " ", StyleBox[\(\(h\^\[Dagger]\)[e..]\), FontFamily->"Courier"], " ", "is", " ", "subject", " ", "to", " ", "any", " ", "attributes", " ", "of", StyleBox[" ", FontFamily->"Courier", FontSize->10, FontWeight->"Bold"], RowBox[{ StyleBox[\(h\^\[Dagger]\), FontFamily->"Courier"], StyleBox[".", FontFamily->"Courier"], "\n", \((3)\)}], " ", "The", " ", "ouput", " ", "is", " ", "generated", " ", "even", " ", "if", " ", "nothing", " ", "is", " ", "stored", " ", RowBox[{ RowBox[{"(", " ", RowBox[{ StyleBox[\(c\^\[Dagger]\[Dagger]\), FontFamily->"Courier"], " ", "may", " ", "not", " ", "be", " ", "the", " ", "same", StyleBox[ RowBox[{" ", StyleBox[" ", FontFamily->"Courier"]}]], StyleBox[\(c\^\[Dagger]\), FontFamily->"Courier"]}], ")"}], "."}]}], " "}], TextForm]}], "Text"], Cell["\<\ Usually, (3) will not be significant, but it does show up in the \ following.\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(a = \ {b, b = 2}\)], "Input"], Cell[BoxData[ \({2, 2}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(\(?a\)\)], "Input"], Cell[BoxData[ \("Global`a"\)], "Print"], Cell[BoxData[ InterpretationBox[ StyleBox[\(a\ = \ {b, \ 2}\), ShowStringCharacters->True, NumberMarks->True], InputForm[ Definition[ a]], Editable->True, AutoDelete->True]], "Print"] }, Open ]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["> (Rule) and :> (RuleDelayed)", "Section"], Cell[TextData[{ "The differences are very much the same as between = and := : \n\t", StyleBox["expr/.l -> r", "Input", FontWeight->"Plain"], " evaluates ", StyleBox["r", "Input", FontWeight->"Plain"], " to ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["r", FontSlant->"Plain"], "\[Dagger]"], TraditionalForm]], "Input", FontWeight->"Plain"], ", say, and then replaces every ", StyleBox["l", "Input", FontWeight->"Plain"], " in expr with ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["r", FontSlant->"Plain"], "\[Dagger]"], TraditionalForm]]], "\n\t", StyleBox["expr/.l :> r", "Input", FontWeight->"Plain"], " replaces every ", StyleBox["l", "Input", FontWeight->"Plain"], " in expr with ", StyleBox["r", "Input", FontWeight->"Plain"], " (unevaluated" }], "Text"], Cell[BoxData[ \(Clear[a, b, ]\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \({\((a + b)\)^2} /. x_Power -> \ Expand[x]\)], "Input"], Cell[BoxData[ \({3}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \({\((a + b)\)^2} /. x_Power :> \ Expand[x]\)], "Input"], Cell[BoxData[ \({a\^2 + 2\ a\ b + b\^2}\)], "Output"] }, Open ]], Cell["\<\ Here is a use of :> to solve a recent problem sent to mathgroup. Given\ \>", "Text"], Cell[BoxData[ \(gt = {{3, 5}, {{}, 6}, {7, {}}, {{}, {}}, {{}, 56}, {{}, 3}}; \n b = {a1, a2, a3, a4, a5, a6}; \)], "Input"], Cell[TextData[{ "We can replace successive occurrences of ", StyleBox["{}", "Input", FontWeight->"Plain"], " in ", StyleBox["gt", "Input", FontWeight->"Plain"], " with successive entries in ", StyleBox["b", "Input", FontWeight->"Plain"], " as follows" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(n = 1; \ngt //. {} :> \ b[\([\(n++\)]\)]\)], "Input"], Cell[BoxData[ \({{3, 5}, {a1, 6}, {7, a2}, {a3, a4}, {a5, 56}, {a6, 3}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["Evaluation steps", "Subsubsection"], Cell["\<\ Evaluation is absolutely regular - left to right then replacement, \ then final evaluation.\ \>", "Text"], Cell[BoxData[ FormBox[ StyleBox[GridBox[{ {\(e /. a :> c\ \), " ", \(e /. a -> c\ \)}, {\(e\^\[Dagger] /. a :> c\), " ", \(e\^\[Dagger] /. a -> c\)}, {\(e\^\[Dagger] /. a\^\[Dagger] :> c\), " ", \(e\^\[Dagger] /. a\^\[Dagger] -> c\)}, { RowBox[{\(e\^\[Dagger]\), " ", StyleBox["with", FontFamily->"Times"], " ", \(a\^\[Dagger]\), StyleBox["replaced", FontFamily->"Times"], StyleBox[" ", FontFamily->"Times"], StyleBox["by", FontFamily->"Times"], " ", "c"}], " ", \(e\^\[Dagger] /. a\^\[Dagger] -> c\^\[Dagger]\)}, { SuperscriptBox[ RowBox[{"(", RowBox[{\(e\^\[Dagger]\), " ", StyleBox["with", FontFamily->"Times"], " ", \(a\^\[Dagger]\), StyleBox["replaced", FontFamily->"Times"], StyleBox[" ", FontFamily->"Times"], StyleBox["by", FontFamily->"Times"], " ", "c"}], ")"}], "\[Dagger]"], " ", RowBox[{ RowBox[{\(e\^\[Dagger]\), " ", StyleBox["with", FontFamily->"Times"], " ", \(a\^\[Dagger]\), StyleBox["replaced", FontFamily->"Times"], StyleBox[" ", FontFamily->"Times"], StyleBox["by", FontFamily->"Times"], " ", \(c\^\[Dagger]\)}], " "}]}, {" ", " ", SuperscriptBox[ RowBox[{"(", RowBox[{\(e\^\[Dagger]\), " ", StyleBox["with", FontFamily->"Times"], " ", \(a\^\[Dagger]\), StyleBox["replaced", FontFamily->"Times"], StyleBox[" ", FontFamily->"Times"], StyleBox["by", FontFamily->"Times"], " ", \(c\^\[Dagger]\)}], ")"}], "\[Dagger]"]} }, RowSpacings->0.4, ColumnAlignments->{Left}, GridFrame->True, GridFrameMargins->{{2, 2}, {1.5, 1.5}}], FontFamily->"Courier"], TextForm]], "Text"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["New in 3.0x ", "Section"], Cell[CellGroupData[{ Cell["Split", "Subsubsection"], Cell[CellGroupData[{ Cell[BoxData[ \(\(?Split\)\)], "Input"], Cell[BoxData[ \("Split[list] splits list into sublists consisting of runs of identical \ elements. Split[list, test] treats pairs of adjacent elements as identical \ whenever applying the function test to them yields True."\)], "Print"] }, Open ]], Cell[TextData[{ "So, the splits are made between consecutive elements which do ", StyleBox["not", FontSlant->"Italic"], " satisfy the test." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Split[h[1, 1, 1, 4, 4, 4, 3, 3]]\)], "Input"], Cell[BoxData[ \(h[h[1, 1, 1], h[4, 4, 4], h[3, 3]]\)], "Output"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(Split[h[1, 1, 1, 4, 4, 4, 3, 3], \ \n\t\tAbs[#1 - #2] < 2&]\)], "Input"], Cell[BoxData[ \(h[h[1, 1, 1], h[4, 4, 4, 3, 3]]\)], "Output"] }, Open ]], Cell["Application: removing repeats", "Text"], Cell[BoxData[ \(removeRepeats[x_] := \nFirst/@Split[Sort[x]]\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(removeRepeats[\ {3, 1, 2, 2, 1, 3, 2, 1}]\)], "Input"], Cell[BoxData[ \({1, 2, 3}\)], "Output"] }, Open ]], Cell["However, we have lost the ordering", "Text"], Cell["\<\ Here is a function that gives us the first occurences of members in \ the original order\ \>", "Text"], Cell[BoxData[ \(FirstOccurences[x_] := Last/@Sort[ Reverse/@ \(First/@ Split[Sort[MapIndexed[List, x]], #[\([1]\)] == #2[\([1]\)]&]\)] \)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(FirstOccurences[{3, 1, 2, 2, 1, 3, 2, 1}]\)], "Input"], Cell[BoxData[ \({3, 1, 2}\)], "Output"] }, Open ]], Cell["The steps used are:", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(MapIndexed[List, {3, 1, 2, 2, 1, 3, 2, 1}]\)], "Input"], Cell[BoxData[ \({{3, {1}}, {1, {2}}, {2, {3}}, {2, {4}}, {1, {5}}, {3, {6}}, {2, {7}}, { 1, {8}}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Sort[%]\)], "Input"], Cell[BoxData[ \({{1, {2}}, {1, {5}}, {1, {8}}, {2, {3}}, {2, {4}}, {2, {7}}, {3, {1}}, { 3, {6}}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Split[%, \ #[\([1]\)] == #2[\([1]\)]&]\)], "Input"], Cell[BoxData[ \({{{1, {2}}, {1, {5}}, {1, {8}}}, {{2, {3}}, {2, {4}}, {2, {7}}}, {{ 3, {1}}, {3, {6}}}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(First/@%\)], "Input"], Cell[BoxData[ \({{1, {2}}, {2, {3}}, {3, {1}}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Reverse/@%\)], "Input"], Cell[BoxData[ \({{{2}, 1}, {{3}, 2}, {{1}, 3}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Sort[%]\)], "Input"], Cell[BoxData[ \({{{1}, 3}, {{2}, 1}, {{3}, 2}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Last/@%\)], "Input"], Cell[BoxData[ \({3, 1, 2}\)], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ReplaceList", "Subsubsection"], Cell[CellGroupData[{ Cell[BoxData[ \(\(?ReplaceList\)\)], "Input"], Cell[BoxData[ \("ReplaceList[expr, rules] attempts to transform the entire expression \ expr by applying a rule or list of rules in all possible ways, and returns a \ list of the results obtained. ReplaceList[expr, rules, n] gives a list of at \ most n results."\)], "Print"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(ReplaceList[{a, a, a, a}, {x___, a, y___, a, z___} -> {x, b, y, c, z}] \)], "Input"], Cell[BoxData[ \({{b, c, a, a}, {b, a, c, a}, {a, b, c, a}, {b, a, a, c}, {a, b, a, c}, { a, a, b, c}}\)], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Part", "Subsubsection"], Cell["The way in which Part interacts with Set has been enhanced", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\((M\ = \ Table[0, {4}, {5}])\) // MatrixForm\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {"0", "0", "0", "0", "0"}, {"0", "0", "0", "0", "0"}, {"0", "0", "0", "0", "0"}, {"0", "0", "0", "0", "0"} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(M[\([{2, 3}, {2, 4, 5}]\)]\ = {{1, 2, 3}, {4, 5, 6}}; M // MatrixForm\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {"0", "0", "0", "0", "0"}, {"0", "1", "0", "2", "3"}, {"0", "4", "0", "5", "6"}, {"0", "0", "0", "0", "0"} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(M[\([{2, 3}]\)]\ = \ \ M[\([{3, 2}]\)]; M // MatrixForm\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {"0", "0", "0", "0", "0"}, {"0", "4", "0", "5", "6"}, {"0", "1", "0", "2", "3"}, {"0", "0", "0", "0", "0"} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(\(M[\([2]\)]\ = {1, \(-4\)}.M[\([{2, 3}]\)]; M // MatrixForm\n\)\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", GridBox[{ {"0", "0", "0", "0", "0"}, {"0", "0", "0", \(-3\), \(-6\)}, {"0", "1", "0", "2", "3"}, {"0", "0", "0", "0", "0"} }], ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell["We are not restricted to matrices", "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(a\ = \ h[f[1, 2], g[3, 4]]\), \(a[\([1, {1, 2}]\)] = \ {p, q}; a\)}], "Input"], Cell[BoxData[ \(h[f[1, 2], g[3, 4]]\)], "Output"], Cell[BoxData[ \(h[f[p, q], g[3, 4]]\)], "Output"] }, Open ]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Form puzzles", "Section"], Cell["\<\ I'll discuss MatrixForm but the general principles apply to othe \ \"wrappers\" like TableForm, FortranForm ... .\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \($Line\ = \ 0\)], "Input"], Cell[BoxData[ \(0\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(MatrixForm[3\ + a]\)], "Input"], Cell[BoxData[ InterpretationBox[ RowBox[{"(", GridBox[{ {"5"}, {"5"} }], ")"}], MatrixForm[ {5, 5}]]], "Output"] }, Open ]], Cell["\<\ MatrixForm only determines the form of the display, not the output. The output is the same as for 3 +a: it does not involve MatrixForm:\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(%\)], "Input"], Cell[BoxData[ \({5, 5}\)], "Output"] }, Open ]], Cell["\<\ The output cell label Out[.]//MatrixForm= is meant to indicate \ this situation.\ \>", "Text"], Cell["\<\ This stripping of MatrixForm occurs only when it is the Head of the \ expression to be displayed, if it is deeper in the expression then it is \ retained and can cause surprises.\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(3\ + MatrixForm[a]\)], "Input"], Cell[BoxData[ RowBox[{"3", "+", InterpretationBox[ RowBox[{"(", GridBox[{ {"2"}, {"2"} }], ")"}], MatrixForm[ {2, 2}]]}]], "Output"] }, Open ]], Cell[TextData[{ StyleBox["The reason for this is that ", FontWeight->"Plain"], StyleBox["MatrixForm", "Input", FontWeight->"Plain"], " is retained around ", StyleBox["3+a", "Input", FontWeight->"Plain"], StyleBox[", and", FontWeight->"Plain"], StyleBox[" ", "Input", FontWeight->"Plain"], "prevents the addition of 3 going inside the lists, besides affecting the \ formating of the display. Notice that the output cell label is simply Out[. \ ]=." }], "Text"], Cell["Here is another consequence", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(f\ = \ MatrixForm[a]\)], "Input"], Cell[BoxData[ InterpretationBox[ RowBox[{"(", GridBox[{ {"2"}, {"2"} }], ")"}], MatrixForm[ {2, 2}]]], "Output"] }, Open ]], Cell["\<\ The rule is stored before the display of the output and keeps \ MatrixForm on the right side\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(?f\)\)], "Input"], Cell[BoxData[ \("Global`f"\)], "Print"], Cell[BoxData[ InterpretationBox[ StyleBox[\(f\ = \ MatrixForm[{2, \ 2}]\), ShowStringCharacters->True, NumberMarks->True], InputForm[ Definition[ f]], Editable->True, AutoDelete->True]], "Print"] }, Open ]], Cell[TextData[{ "So, the following behaves like ", StyleBox["3 + MatrixForm[a]", "Input", FontWeight->"Plain"], "." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(3\ + \ f\)], "Input"], Cell[BoxData[ RowBox[{"3", "+", InterpretationBox[ RowBox[{"(", GridBox[{ {"2"}, {"2"} }], ")"}], MatrixForm[ {2, 2}]]}]], "Output"] }, Open ]], Cell[TextData[{ "To assign the plain list structure ", StyleBox["a", "Input", FontWeight->"Plain"], " to ", StyleBox["f", "Input", FontWeight->"Plain"], " but display in MatrixForm we can use" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(MatrixForm[f = \ a]\)], "Input"], Cell[BoxData[ InterpretationBox[ RowBox[{"(", GridBox[{ {"2"}, {"2"} }], ")"}], MatrixForm[ {2, 2}]]], "Output"] }, Open ]], Cell["or", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\((f = \ a)\) // MatrixForm\)], "Input"], Cell[BoxData[ InterpretationBox[ RowBox[{"(", GridBox[{ {"2"}, {"2"} }], ")"}], MatrixForm[ {2, 2}]]], "Output"] }, Open ]], Cell["Thus,", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(?f\)\)], "Input"], Cell[BoxData[ \("Global`f"\)], "Print"], Cell[BoxData[ InterpretationBox[ StyleBox[\(f\ = \ {2, \ 2}\), ShowStringCharacters->True, NumberMarks->True], InputForm[ Definition[ f]], Editable->True, AutoDelete->True]], "Print"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["No more aliasing?", "Section"], Cell["If we look up Plot in the HelpBrowser we find: ", "Text"], Cell[BoxData[{ FormBox[ RowBox[{ RowBox[{ RowBox[{"\[FilledSmallSquare]", " ", StyleBox["Plot", "MR\[YDoubleDot]"], " ", "initially", " ", "evaluates", " ", StyleBox["f", "TI"], " ", "at", " ", "a", " ", "number", " ", "of", " ", "equally", " ", "spaced", " ", "sample", " ", "points", " ", "specified", " ", "by", " ", RowBox[{ StyleBox["PlotPoints", "MR\[CapitalYAcute]"], ".", " ", "Then"}], " ", "it", " ", "uses", " ", "an", " ", "adaptive", " ", "algorithm", " ", "to", " ", "choose", " ", "additional", " ", "sample", " ", "points"}], ",", " ", \(attempting\ to\ produce\ a\ curve\ in\ which\ the\ bend\ between\ successive\ segments\ is\ less\)}], " "}], TextForm], FormBox[ RowBox[{"\t", RowBox[{ RowBox[{"than", " ", RowBox[{ StyleBox["MaxBend", "MR\[ATilde]"], ".", " ", "It"}], " ", "subdivides", " ", "a", " ", "given", " ", "interval", " ", "by", " ", "a", " ", "factor", " ", "of", " ", "at", " ", "most", " ", RowBox[{ StyleBox["PlotDivision", "MR\[AE]"], ".", " ", "\n", "\t\t", "\n", "\[FilledSmallSquare]"}], " ", "You", " ", "should", " ", "realize", " ", "that", " ", "with", " ", "the", " ", "finite", " ", "number", " ", "of", " ", "sample", " ", "points", " ", "used"}], ",", " ", RowBox[{"it", " ", "is", " ", "possible", " ", "for", " ", StyleBox["Plot", "MR\[EDoubleDot]"], " ", "to", " ", "miss", " ", "features", " ", "in", " ", "your", " ", \(function.\ To\), " ", "check", " ", "your", " ", "results"}], ",", " ", RowBox[{ "you", " ", "should", " ", "increase", " ", "the", " ", "setting", " ", "for", " ", RowBox[{ StyleBox["PlotPoints", "MR\[IHat]"], "."}]}]}], " "}], TextForm]}], "Text"], Cell[BoxData[ \(TextForm\`Now, \ for\ Plot, \ \ the\ default\ setting\ of\ PlotPoints\ is\ PlotPoints \[Rule] 25; \ so\ if\ we\ plotted\)], "Text"], Cell[BoxData[ \(Plot[Sin[x\ Pi], {x, 0, 24\ }]\)], "Input"], Cell["then the table of values at the initial points would be", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Table[Sin[x\ Pi], {x, 0, 24}]\)], "Input"], Cell[BoxData[ \({0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}\)], "Output"] }, Open ]], Cell[TextData[{ "Consequently, ", StyleBox["Mathematica", FontSlant->"Italic"], " should think that it had been given the constant zero function and would \ not take any more action. This sort of thing is called ", StyleBox["aliasing", FontSlant->"Italic"], ", and it is what happened up to Version 3.0\nBut now we get" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Plot[Sin[x\ Pi], {x, 0, 24\ }]\)], "Input"], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: .61803 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.0396825 0.309016 0.294303 [ [.22222 .29652 -3 -9 ] [.22222 .29652 3 0 ] [.42063 .29652 -6 -9 ] [.42063 .29652 6 0 ] [.61905 .29652 -6 -9 ] [.61905 .29652 6 0 ] [.81746 .29652 -6 -9 ] [.81746 .29652 6 0 ] [.01131 .01471 -12 -4.5 ] [.01131 .01471 0 4.5 ] [.01131 .16186 -24 -4.5 ] [.01131 .16186 0 4.5 ] [.01131 .45617 -18 -4.5 ] [.01131 .45617 0 4.5 ] [.01131 .60332 -6 -4.5 ] [.01131 .60332 0 4.5 ] [ 0 0 0 0 ] [ 1 .61803 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 g .25 Mabswid [ ] 0 setdash .22222 .30902 m .22222 .31527 L s [(5)] .22222 .29652 0 1 Mshowa .42063 .30902 m .42063 .31527 L s [(10)] .42063 .29652 0 1 Mshowa .61905 .30902 m .61905 .31527 L s [(15)] .61905 .29652 0 1 Mshowa .81746 .30902 m .81746 .31527 L s [(20)] .81746 .29652 0 1 Mshowa .125 Mabswid .06349 .30902 m .06349 .31277 L s .10317 .30902 m .10317 .31277 L s .14286 .30902 m .14286 .31277 L s .18254 .30902 m .18254 .31277 L s .2619 .30902 m .2619 .31277 L s .30159 .30902 m .30159 .31277 L s .34127 .30902 m .34127 .31277 L s .38095 .30902 m .38095 .31277 L s .46032 .30902 m .46032 .31277 L s .5 .30902 m .5 .31277 L s .53968 .30902 m .53968 .31277 L s .57937 .30902 m .57937 .31277 L s .65873 .30902 m .65873 .31277 L s .69841 .30902 m .69841 .31277 L s .7381 .30902 m .7381 .31277 L s .77778 .30902 m .77778 .31277 L s .85714 .30902 m .85714 .31277 L s .89683 .30902 m .89683 .31277 L s .93651 .30902 m .93651 .31277 L s .97619 .30902 m .97619 .31277 L s .25 Mabswid 0 .30902 m 1 .30902 L s .02381 .01471 m .03006 .01471 L s [(-1)] .01131 .01471 1 0 Mshowa .02381 .16186 m .03006 .16186 L s [(-0.5)] .01131 .16186 1 0 Mshowa .02381 .45617 m .03006 .45617 L s [(0.5)] .01131 .45617 1 0 Mshowa .02381 .60332 m .03006 .60332 L s [(1)] .01131 .60332 1 0 Mshowa .125 Mabswid .02381 .04414 m .02756 .04414 L s .02381 .07357 m .02756 .07357 L s .02381 .103 m .02756 .103 L s .02381 .13243 m .02756 .13243 L s .02381 .19129 m .02756 .19129 L s .02381 .22072 m .02756 .22072 L s .02381 .25016 m .02756 .25016 L s .02381 .27959 m .02756 .27959 L s .02381 .33845 m .02756 .33845 L s .02381 .36788 m .02756 .36788 L s .02381 .39731 m .02756 .39731 L s .02381 .42674 m .02756 .42674 L s .02381 .4856 m .02756 .4856 L s .02381 .51503 m .02756 .51503 L s .02381 .54446 m .02756 .54446 L s .02381 .57389 m .02756 .57389 L s .25 Mabswid .02381 0 m .02381 .61803 L s 0 0 m 1 0 L 1 .61803 L 0 .61803 L closepath clip newpath .5 Mabswid .02381 .30902 m .02846 .41486 L .03279 .50099 L .03523 .54027 L .03754 .5695 L .03881 .58198 L .03948 .58745 L .0402 .59238 L .04146 .59888 L .04262 .60233 L .04384 .60328 L .04496 .60173 L .04626 .59707 L .04749 .58984 L .04862 .58083 L .04967 .57052 L .05205 .54058 L .05708 .45203 L .06244 .33339 L .06791 .20815 L .07079 .14836 L .07382 .09425 L .07649 .05692 L .078 .0406 L .07941 .02882 L .0807 .02107 L .08189 .01664 L .08254 .01529 L .08325 .01472 L .08454 .01606 L .08578 .02022 L .08694 .02664 L .08822 .03643 L .08959 .05008 L .09239 .08712 L .09495 .13066 L .10458 .34169 L .10932 .44661 L .11192 .49696 L .11438 .53722 L .11668 .56702 L .11797 .58014 L .11916 .58972 L .12017 .59586 L .12127 .60051 L .12242 .603 L .1235 .6031 L .12478 .60044 L .12551 .59761 L .12618 .59414 L Mistroke .12741 .5857 L .12872 .57383 L .13122 .54341 L .13348 .50792 L .1442 .27769 L .14909 .16952 L .15176 .11825 L .15425 .07806 L .15638 .05075 L .15747 .03953 L .15866 .02963 L .15996 .02161 L .16119 .01682 L .16238 .0148 L .16349 .01529 L .16468 .01834 L .16597 .02453 L .16719 .03308 L .1683 .04315 L .17088 .07433 L .1736 .11764 L .18432 .35042 L .18925 .45808 L .19389 .53934 L .19646 .57161 L .19791 .58509 L .1986 .59024 L .19925 .5943 L .20037 .5996 L .20161 .60277 L .20281 .60315 L .2041 .60059 L .20533 .59533 L .20647 .58807 L .20771 .5775 L .20904 .5634 L .21371 .4926 L .21788 .4082 L .22248 .30293 L .22739 .19194 L .23007 .13776 L .23256 .09415 L .23487 .06114 L .23697 .03828 L .23817 .02855 L .23931 .02168 L .24051 .01694 L .24181 .01477 L .2431 .0157 L .24431 .01936 L Mistroke .24501 .02267 L .24564 .02644 L .24707 .03754 L .24844 .05141 L .24993 .06998 L .25265 .11215 L .26265 .32647 L .26797 .44504 L .27058 .49568 L .27298 .53528 L .27517 .56433 L .27628 .57624 L .27748 .58669 L .27868 .59469 L .2798 .59983 L .28048 .60185 L .28113 .60297 L .28234 .60299 L .28355 .60034 L .28423 .59764 L .28487 .59434 L .28617 .58546 L .28756 .57265 L .29008 .5415 L .29239 .50483 L .30332 .26878 L .30807 .16461 L .31067 .11512 L .31313 .07594 L .31543 .0473 L .31672 .03491 L .31791 .02603 L .31892 .0205 L .32002 .01653 L .32118 .01477 L .32226 .01535 L .32354 .01881 L .32426 .0221 L .32494 .02598 L .32617 .03518 L .32748 .04781 L .32998 .07959 L .33224 .11614 L .34296 .34836 L .34786 .4557 L .35053 .50601 L .35302 .54503 L .35515 .57119 L .35625 .58176 L .35743 .59093 L Mistroke .35873 .59812 L .35996 .6021 L .36116 .60332 L .36226 .6021 L .36346 .59825 L .36475 .59121 L .36596 .58187 L .36708 .57112 L .36979 .5365 L .37238 .49382 L .3831 .25917 L .38803 .15252 L .39045 .10791 L .39268 .07334 L .39526 .04255 L .39661 .03072 L .3973 .0259 L .39804 .02168 L .39924 .01694 L .40036 .01489 L .40104 .01477 L .40169 .01545 L .4029 .01879 L .40395 .02386 L .40512 .03177 L .40633 .04253 L .40747 .05488 L .4117 .11782 L .41631 .21025 L .42128 .3241 L .42591 .42831 L .43085 .52188 L .43231 .54391 L .43369 .56183 L .43503 .57639 L .43627 .58714 L .43744 .59488 L .43869 .60038 L .43994 .60305 L .44065 .60329 L .44131 .60267 L .44262 .5991 L .44336 .59571 L .44404 .59169 L .44529 .58218 L .44663 .56911 L .44917 .53625 L .45148 .49848 L .46241 .26047 L .4673 .15454 L Mistroke .46997 .10545 L .47245 .06778 L .47458 .04294 L .47577 .03228 L .47686 .0247 L .47805 .01882 L .47934 .01533 L .48056 .01486 L .48169 .01686 L .48288 .02152 L .48417 .0294 L .48538 .0395 L .48649 .05094 L .48908 .08504 L .49179 .13095 L .50252 .36727 L .50744 .47249 L .50986 .51604 L .51208 .5495 L .51465 .57881 L .516 .58983 L .51668 .59417 L .51743 .59798 L .51864 .60199 L .51994 .60331 L .52117 .6017 L .52229 .59781 L .52342 .59156 L .52463 .5824 L .5268 .55974 L .52914 .52712 L .53172 .48249 L .54067 .28615 L .54557 .1768 L .54824 .12448 L .55074 .08312 L .55287 .05464 L .55396 .0428 L .55515 .0322 L .55645 .02339 L .55768 .01785 L .55887 .0151 L .55998 .0149 L .56118 .01723 L .56247 .02266 L .56368 .03052 L .5648 .03997 L .56751 .07166 L .5701 .11196 L .58082 .34292 L Mistroke .58576 .45177 L .59041 .53485 L .59299 .56838 L .59444 .58262 L .59577 .59253 L .5969 .59843 L .59814 .60227 L .59943 .60327 L .60063 .60144 L .60178 .59724 L .60302 .59001 L .60419 .58068 L .60528 .56997 L .60951 .5107 L .61412 .42085 L .61902 .30956 L .62359 .20543 L .6284 .11052 L .63092 .07143 L .63225 .05447 L .63367 .03949 L .63498 .02869 L .63617 .02149 L .63737 .01684 L .6385 .01485 L .63956 .01512 L .64072 .01779 L .64193 .02321 L .64307 .03066 L .64509 .04952 L .64727 .07721 L .65224 .16442 L .65678 .26381 L .666 .4692 L .66865 .51716 L .67115 .55396 L .67339 .57891 L .67465 .58927 L .67581 .59632 L .6771 .60134 L .67831 .60326 L .679 .60315 L .67963 .60228 L .68036 .60037 L .68105 .59768 L .68172 .59424 L .68243 .58972 L .6837 .57942 L .68507 .56527 L .68657 .54621 L Mistroke .69172 .45769 L .69655 .35224 L .70151 .23766 L .70692 .12549 L .70939 .08423 L .71075 .06514 L .71203 .04972 L .71323 .03772 L .71452 .02748 L .7157 .02073 L .71678 .01672 L .71785 .01486 L .719 .01522 L .72008 .01779 L .72107 .02199 L .72223 .02916 L .72349 .03962 L .72578 .06544 L .72818 .10095 L .73072 .14684 L .7353 .24437 L .74466 .4551 L .74722 .5036 L .74992 .54602 L .75223 .57376 L .75353 .58562 L .75475 .59401 L .75589 .59947 L .75713 .60272 L .7583 .6032 L .75938 .60141 L .76035 .59797 L .76142 .5922 L .76254 .58402 L .76358 .5744 L .76596 .54592 L .76813 .51253 L .77302 .41718 L .78223 .2075 L .78465 .15663 L .78728 .10799 L .78959 .07222 L .79203 .04306 L .79343 .03074 L .79417 .02559 L .79497 .02117 L .7957 .0181 L .79637 .01616 L .79767 .01472 L .79893 .0163 L Mistroke .79964 .01847 L .8003 .0213 L .8015 .02852 L .80278 .03897 L .80523 .06655 L .80753 .10071 L .81276 .20202 L .82261 .42561 L .82755 .51996 L .82891 .54073 L .83036 .55996 L .83171 .57499 L .83296 .58613 L .83413 .59408 L .83536 .59985 L .8366 .60286 L .8373 .60332 L .83796 .60292 L .83914 .6002 L .84023 .59546 L .84148 .58737 L .84267 .57718 L .84485 .55226 L .84688 .52265 L .85148 .43668 L .86208 .19679 L .86462 .14488 L .86728 .0973 L .86976 .0616 L .87096 .04753 L .87206 .0368 L .87305 .02888 L .87412 .02223 L .87526 .01745 L .87633 .0151 L .87751 .01497 L .87877 .01764 L .87984 .02219 L .88102 .02957 L .88227 .04012 L .88342 .0521 L .88601 .08667 L .89068 .17151 L .89987 .3793 L .90491 .48487 L .90739 .52745 L .90967 .55927 L .91096 .57376 L .91237 .58648 L .91306 .59141 L Mistroke .9138 .59576 L .91458 .59929 L .9153 .6016 L .91596 .60286 L .91667 .60332 L .91797 .60174 L .91924 .59723 L .92041 .59048 L .9216 .58118 L .92271 .57026 L .92525 .53796 L .93039 .44608 L .94022 .22382 L .94281 .16821 L .94558 .11537 L .94814 .07464 L .94941 .05808 L .95057 .04501 L .95163 .03506 L .95279 .02633 L .95396 .01997 L .9552 .01594 L .95624 .01472 L .95737 .01567 L .95843 .01871 L .9594 .02328 L .96063 .03149 L .96178 .04146 L .96436 .07198 L .96664 .10715 L .96907 .15178 L .97619 .30901 L Mfstroke % End of Graphics MathPictureEnd \ \>"], "Graphics", ImageSize->{288, 177.9375}, ImageMargins->{{43, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHgool01000ooooo`004?oo00<00?oo ool00_oo00<00?ooool03_oo00D00?ooooooo`00013oo`05003oooooool0000@ool01000ooooo`00 4Ooo00D00?ooooooo`0000[oo`006ooo0P003?oo00D00?ooooooo`00013oo`05003oooooool0000@ ool01@00oooooooo00004?oo00D00?ooooooo`00013oo`05003oooooool0000@ool00`00ooooo`02 ool00`00ooooo`0=ool01@00oooooooo00004?oo00<00?ooool00_oo00<00?ooool03_oo00D00?oo ooooo`00013oo`05003oooooool0000@ool01@00oooooooo00004?oo00D00?ooooooo`0000[oo`00 6ooo00<00?ooool02ooo00D00?ooooooo`00013oo`05003oooooool0000@ool01@00oooooooo0000 4?oo00D00?ooooooo`00013oo`05003oooooool0000@ool00`00ooooo`02ool00`00ooooo`0=ool0 1@00oooooooo00004?oo00<00?ooool00_oo00<00?ooool03Ooo00<00?ooool00_oo00<00?ooool0 3_oo00D00?ooooooo`00013oo`05003oooooool0000@ool01@00oooooooo00002_oo000Kool00`00 ooooo`0:ool00`00ooooo`02ool00`00ooooo`0>ool01@00oooooooo00003ooo00<00?ooool00_oo 00<00?ooool03_oo00D00?ooooooo`00013oo`05003oooooool0000@ool00`00ooooo`02ool00`00 ooooo`0=ool01@00oooooooo00004?oo00<00?ooool00_oo00<00?ooool03Ooo00<00?ooool00_oo 00<00?ooool03_oo00D00?ooooooo`00013oo`05003oooooool0000@ool01@00oooooooo00002_oo 000Kool00`00ooooo`0:ool00`00ooooo`02ool00`00ooooo`0>ool01@00oooooooo00003ooo00<0 0?ooool00_oo00<00?ooool03_oo00D00?ooooooo`00013oo`05003oooooool0000@ool00`00oooo o`02ool00`00ooooo`0=ool01@00oooooooo00004?oo00<00?ooool00_oo00<00?ooool03Ooo00<0 0?ooool00_oo00<00?ooool03_oo00D00?ooooooo`0000ooo`03003ooooo00;oo`03003ooooo00ko o`05003oooooool0000:ool001_oo`03003ooooo00[oo`03003ooooo00;oo`03003ooooo00koo`05 003oooooool0000?ool00`00ooooo`02ool00`00ooooo`0>ool01@00oooooooo00004?oo00<00?oo ool00_oo00<00?ooool03Ooo00<00?ooool00_oo00<00?ooool03Ooo00D00?ooooooo`00013oo`03 003ooooo00;oo`03003ooooo00goo`03003ooooo00;oo`03003ooooo00koo`05003oooooool0000? ool00`00ooooo`02ool00`00ooooo`0>ool01@00oooooooo00002_oo000Kool00`00ooooo`0:ool0 0`00ooooo`02ool00`00ooooo`0>ool01@00oooooooo00003ooo00<00?ooool00_oo00<00?ooool0 3_oo00D00?ooooooo`00013oo`03003ooooo00;oo`03003ooooo00goo`03003ooooo00;oo`03003o oooo00goo`05003oooooool0000@ool00`00ooooo`02ool00`00ooooo`0=ool00`00ooooo`02ool0 0`00ooooo`0>ool01@00oooooooo00003ooo00<00?ooool00_oo00<00?ooool03_oo00<00?ooool0 0_oo00<00?ooool01ooo000Kool00`00ooooo`0:ool00`00ooooo`02ool00`00ooooo`0>ool01@00 oooooooo00003ooo00<00?ooool00ooo00<00?ooool03Ooo00D00?ooooooo`0000ooo`03003ooooo 00?oo`03003ooooo00goo`03003ooooo00;oo`03003ooooo00goo`03003ooooo00;oo`03003ooooo 00goo`03003ooooo00;oo`03003ooooo00goo`03003ooooo00;oo`03003ooooo00goo`03003ooooo 00;oo`03003ooooo00goo`03003ooooo00;oo`03003ooooo00koo`03003ooooo00;oo`03003ooooo 00Ooo`006ooo00<00?ooool02_oo00<00?ooool00_oo00<00?ooool03_oo00<00?ooool00_oo00<0 0?ooool03?oo00<00?ooool00ooo00<00?ooool03?oo00<00?ooool00_oo00<00?ooool03Ooo00<0 0?ooool00ooo00<00?ooool03Ooo00<00?ooool00_oo00<00?ooool03Ooo00<00?ooool00_oo00<0 0?ooool03Ooo00<00?ooool00_oo00<00?ooool03Ooo00<00?ooool00_oo00<00?ooool03Ooo00<0 0?ooool00_oo00<00?ooool03Ooo00<00?ooool00_oo00<00?ooool03Ooo00<00?ooool00ooo00<0 0?ooool01ooo000Kool2000;ool00`00ooooo`02ool00`00ooooo`0=ool00`00ooooo`03ool00`00 ooooo`0ool01@00oooooooo00004?oo00D0 0?ooooooo`00013oo`03003ooooo00;oo`03003ooooo00goo`03003ooooo00;oo`03003ooooo00go o`03003ooooo00;oo`03003ooooo00koo`05003oooooool0000@ool00`00ooooo`02ool00`00oooo o`0=ool01@00oooooooo00004?oo00D00?ooooooo`00013oo`03003ooooo00;oo`03003ooooo00go o`03003ooooo00;oo`03003ooooo01;oo`006ooo00@00?ooool000?oo`03003ooooo00koo`05003o ooooool0000@ool01@00oooooooo00004?oo00<00?ooool00_oo00<00?ooool03Ooo00<00?ooool0 0_oo00<00?ooool03Ooo00<00?ooool00_oo00<00?ooool03_oo00D00?ooooooo`00013oo`05003o ooooool0000@ool01@00oooooooo00004?oo00D00?ooooooo`00013oo`05003oooooool0000@ool0 0`00ooooo`02ool00`00ooooo`0Bool001_oo`800003ool00?oo00;oo`03003ooooo00koo`05003o ooooool0000@ool01@00oooooooo00004?oo00<00?ooool00_oo00<00?ooool03Ooo00<00?ooool0 0_oo00<00?ooool03Ooo00<00?ooool00_oo00<00?ooool03_oo00D00?ooooooo`00013oo`05003o ooooool0000@ool01@00oooooooo00004?oo00D00?ooooooo`00013oo`05003oooooool0000@ool0 0`00ooooo`02ool00`00ooooo`0Bool001_oo`04003ooooo0003ool00`00ooooo`0>ool01@00oooo oooo00004?oo00D00?ooooooo`00013oo`03003ooooo00;oo`03003ooooo00goo`03003ooooo00;o o`03003ooooo00goo`03003ooooo00;oo`03003ooooo00koo`05003oooooool0000@ool01@00oooo oooo00004?oo00D00?ooooooo`00013oo`05003oooooool0000@ool01@00oooooooo00004?oo00<0 0?ooool00_oo00<00?ooool04_oo000Kool01000ooooo`000ooo00<00?ooool03_oo00D00?oooooo o`00013oo`05003oooooool0000Aool01@00oooooooo00003ooo00<00?ooool00_oo00<00?ooool0 3Ooo00D00?ooooooo`00017oo`05003oooooool0000@ool01@00oooooooo00004?oo00D00?oooooo o`00013oo`05003oooooool0000@ool01@00oooooooo00004?oo00<00?ooool00_oo00<00?ooool0 4_oo000Kool01000ooooo`000ooo00<00?ooool03ooo00@00?ooool0017oo`04003ooooo000Aool0 1@00oooooooo00003ooo00D00?ooooooo`00017oo`04003ooooo000Aool01@00oooooooo00004?oo 00D00?ooooooo`00013oo`05003oooooool0000@ool01@00oooooooo00004?oo00D00?ooooooo`00 013oo`05003oooooool0000Eool001_oo`04003ooooo0003ool00`00ooooo`0?ool01000ooooo`00 4Ooo00@00?ooool0017oo`04003ooooo000Aool01000ooooo`004Ooo00@00?ooool0017oo`05003o ooooool0000@ool01@00oooooooo00004?oo00D00?ooooooo`00017oo`04003ooooo000@ool01@00 oooooooo00004?oo00D00?ooooooo`0001Goo`006ooo00@00?ooool000?oo`03003ooooo00ooo`04 003ooooo000Aool01000ooooo`004Ooo00@00?ooool0017oo`04003ooooo000Aool01000ooooo`00 4Ooo00D00?ooooooo`00013oo`05003oooooool0000@ool01@00oooooooo00004Ooo00@00?ooool0 013oo`05003oooooool0000@ool01@00oooooooo00005Ooo000Kool01000ooooo`000ooo00<00?oo ool03ooo00@00?ooool0017oo`04003ooooo000Aool01000ooooo`004Ooo00@00?ooool0017oo`04 003ooooo000Aool01@00oooooooo00004?oo00D00?ooooooo`00017oo`04003ooooo000Aool01000 ooooo`004?oo00D00?ooooooo`00017oo`04003ooooo000Eool001_oo`800003ool00?oo00;oo`03 003ooooo00ooo`04003ooooo000Aool01000ooooo`004Ooo00@00?ooool0017oo`04003ooooo000A ool01000ooooo`004Ooo00D00?ooooooo`00013oo`05003oooooool0000Aool01000ooooo`004Ooo 00@00?ooool0017oo`04003ooooo000Aool01000ooooo`005Ooo000Kool01000ooooo`000ooo00<0 0?ooool03ooo00@00?ooool0017oo`04003ooooo000Aool01000ooooo`004Ooo00@00?ooool0017o o`04003ooooo000Aool01000ooooo`004Ooo00@00?ooool001;oo`03003oo`0001;oo`04003ooooo 000Aool01000ooooo`004Ooo00@00?ooool001Goo`006ooo00L00?ooooooo`00ool0000Bool01000 ooooo`004Ooo00@00?ooool0017oo`04003ooooo000Aool01000ooooo`004Ooo00@00?ooool0017o o`04003ooooo000Bool00`00ool0000Bool00`00ool0000Bool01000ooooo`004Ooo00@00?ooool0 017oo`04003ooooo000Eool001_oo`07003oooooool00?oo00004_oo00<00?oo00004_oo00<00?oo 00004_oo00@00?ooool0017oo`04003ooooo000Bool00`00ool0000Aool01000ooooo`004_oo00<0 0?oo00004_oo00<00?oo00004_oo00<00?oo00004_oo00<00?oo00004_oo00@00?ooool001Goo`00 6ooo00L00?ooooooo`00ool0000Bool00`00ool0000Bool00`00ool0000Bool01000ooooo`004Ooo 00@00?ooool001;oo`03003oo`0001;oo`03003oo`0001;oo`03003oo`0001;oo`03003oo`0001;o o`03003oo`0001;oo`03003oo`0001;oo`03003oo`0001Koo`006ooo00L00?ooooooo`00ool0000B ool00`00ool0000Bool00`00ool0000Bool01000ooooo`004_oo00<00?oo00004_oo00<00?oo0000 4_oo00<00?oo00004_oo00<00?oo00004_oo00<00?oo00004_oo00<00?oo00004_oo00<00?oo0000 4_oo00<00?oo00005_oo000Cool30005ool01`00oooooooo003oo`0001;oo`03003oo`0001;oo`03 003oo`0001?oo`8001?oo`03003oo`0001;oo`8001?oo`03003oo`0001;oo`03003oo`0001;oo`03 003oo`0001;oo`03003oo`0001;oo`03003oo`0001?oo`8001Koo`005?oo00<00?ooool01?oo00<0 0?ooool00_oo0P004_oo00<00?oo00004ooo0P004ooo0P004ooo0P004ooo0P004ooo0P004ooo00<0 0?oo00004_oo00<00?oo00004ooo0P004ooo0P004ooo0P005_oo000Dool00`00ooooo`04ool20003 ool00`00ooooo`0Bool2000Cool2000Cool2000Cool2000Cool2000Cool2000Dool00`00ooooo`0B ool00`00ooooo`0Bool00`00ooooo`0Bool00`00ooooo`0Bool2000Fool001Coo`03003ooooo00Co o`03003ooooo0?ooo`?oo`005?oo00<00?ooool01?oo00<00?ooool0oooo0ooo000Cool20006ool0 0`00ooooo`3oool3ool001_oo`03003ooooo0?ooo`?oo`00oooo8Ooo003ooolQool00?ooob7oo`00 oooo8Ooo003ooolQool00?ooob7oo`00\ \>"], ImageRangeCache->{{{0, 287}, {176.9375, 0}} -> {-2.58875, -1.13007, 0.094735, 0.012774}}], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]], Cell["\<\ The trick that has been introduced is a simple one - we don't \ divide evenly. Let's find the initial points actually used: prevent the adaptive \ subdivision, by plotting 0, and accumulate the points. \ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(lst\ = \ {}; \nPlot[AppendTo[lst, x]; 0, {x, 0, \ 24}]; \)], "Input"], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: .61803 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.0396825 0.309017 0.294302 [ [.22222 .29652 -3 -9 ] [.22222 .29652 3 0 ] [.42063 .29652 -6 -9 ] [.42063 .29652 6 0 ] [.61905 .29652 -6 -9 ] [.61905 .29652 6 0 ] [.81746 .29652 -6 -9 ] [.81746 .29652 6 0 ] [.01131 .01472 -12 -4.5 ] [.01131 .01472 0 4.5 ] [.01131 .16187 -24 -4.5 ] [.01131 .16187 0 4.5 ] [.01131 .45617 -18 -4.5 ] [.01131 .45617 0 4.5 ] [.01131 .60332 -6 -4.5 ] [.01131 .60332 0 4.5 ] [ 0 0 0 0 ] [ 1 .61803 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 g .25 Mabswid [ ] 0 setdash .22222 .30902 m .22222 .31527 L s [(5)] .22222 .29652 0 1 Mshowa .42063 .30902 m .42063 .31527 L s [(10)] .42063 .29652 0 1 Mshowa .61905 .30902 m .61905 .31527 L s [(15)] .61905 .29652 0 1 Mshowa .81746 .30902 m .81746 .31527 L s [(20)] .81746 .29652 0 1 Mshowa .125 Mabswid .06349 .30902 m .06349 .31277 L s .10317 .30902 m .10317 .31277 L s .14286 .30902 m .14286 .31277 L s .18254 .30902 m .18254 .31277 L s .2619 .30902 m .2619 .31277 L s .30159 .30902 m .30159 .31277 L s .34127 .30902 m .34127 .31277 L s .38095 .30902 m .38095 .31277 L s .46032 .30902 m .46032 .31277 L s .5 .30902 m .5 .31277 L s .53968 .30902 m .53968 .31277 L s .57937 .30902 m .57937 .31277 L s .65873 .30902 m .65873 .31277 L s .69841 .30902 m .69841 .31277 L s .7381 .30902 m .7381 .31277 L s .77778 .30902 m .77778 .31277 L s .85714 .30902 m .85714 .31277 L s .89683 .30902 m .89683 .31277 L s .93651 .30902 m .93651 .31277 L s .97619 .30902 m .97619 .31277 L s .25 Mabswid 0 .30902 m 1 .30902 L s .02381 .01472 m .03006 .01472 L s [(-1)] .01131 .01472 1 0 Mshowa .02381 .16187 m .03006 .16187 L s [(-0.5)] .01131 .16187 1 0 Mshowa .02381 .45617 m .03006 .45617 L s [(0.5)] .01131 .45617 1 0 Mshowa .02381 .60332 m .03006 .60332 L s [(1)] .01131 .60332 1 0 Mshowa .125 Mabswid .02381 .04415 m .02756 .04415 L s .02381 .07358 m .02756 .07358 L s .02381 .10301 m .02756 .10301 L s .02381 .13244 m .02756 .13244 L s .02381 .1913 m .02756 .1913 L s .02381 .22073 m .02756 .22073 L s .02381 .25016 m .02756 .25016 L s .02381 .27959 m .02756 .27959 L s .02381 .33845 m .02756 .33845 L s .02381 .36788 m .02756 .36788 L s .02381 .39731 m .02756 .39731 L s .02381 .42674 m .02756 .42674 L s .02381 .4856 m .02756 .4856 L s .02381 .51503 m .02756 .51503 L s .02381 .54446 m .02756 .54446 L s .02381 .57389 m .02756 .57389 L s .25 Mabswid .02381 0 m .02381 .61803 L s 0 0 m 1 0 L 1 .61803 L 0 .61803 L closepath clip newpath .5 Mabswid .02381 .30902 m .06244 .30902 L .10458 .30902 L .14415 .30902 L .18221 .30902 L .22272 .30902 L .26171 .30902 L .30316 .30902 L .34309 .30902 L .3815 .30902 L .42237 .30902 L .46172 .30902 L .49955 .30902 L .53984 .30902 L .57861 .30902 L .61984 .30902 L .65954 .30902 L .69774 .30902 L .73838 .30902 L .77751 .30902 L .81909 .30902 L .85916 .30902 L .89771 .30902 L .93871 .30902 L .97619 .30902 L s % End of Graphics MathPictureEnd \ \>"], "Graphics", ImageSize->{288, 177.9375}, ImageMargins->{{43, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHg"], ImageRangeCache->{{{0, 287}, {176.9375, 0}} -> {-2.58875, -1.13006, 0.094735, 0.012774}}] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(lst\)], "Input"], Cell[BoxData[ \({9.99999999999999822`*^-7, 0.973607797749978942`, 2.03541119662496861`, 3.03262479212492674`, 3.9916417864998742`, 5.01246217974981167`, 5.99508597187473846`, 7.03951316287465456`, 8.04574375274956032`, 9.01377774149945487`, 10.0436151291243391`, 11.0352559156242113`, 11.9887001009990745`, 13.0039476852489288`, 13.9809986683737697`, 15.0198530503736016`, 16.0205108312484227`, 16.9829720109982318`, 18.0072365896230337`, 18.9933045671228235`, 20.0411759434976044`, 21.0508507187473714`, 22.0223288928721272`, 23.0556104658718741`, 23.9999990000000007`}\)], "Output"] }, Open ]], Cell["Not", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(\ Table[x\ , {x, 0., 24.0}]\)\)], "Input"], Cell[BoxData[ \({0.`, 1.`, 2.`, 3.`, 4.`, 5.`, 6.`, 7.`, 8.`, 9.`, 10.`, 11.0000000000000008`, 11.9999999999999996`, 13.0000000000000004`, 13.9999999999999991`, 15.`, 16.0000000000000008`, 17.`, 18.`, 19.`, 20.`, 21.0000000000000008`, 22.0000000000000017`, 22.9999999999999982`, 23.9999999999999991`}\)], "Output"] }, Open ]], Cell["\<\ The points in lst are far from evenly spaced. Here are the difference between successive values.\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Drop[lst, 1]\ - \ Drop[lst, \(-1\)]\)], "Input"], Cell[BoxData[ \({0.973606797749978802`, 1.06180339887498975`, 0.997213595499958138`, 0.959016994374947273`, 1.02082039324993756`, 0.982623792124926787`, 1.04442719099991609`, 1.00623058987490576`, 0.968033988749894547`, 1.02983738762488385`, 0.991640786499873527`, 0.953444185374863195`, 1.0152475842498525`, 0.977050983124842176`, 1.03885438199983148`, 1.00065778087482115`, 0.962461179749809048`, 1.02426457862480191`, 0.986067977499789805`, 1.04787137637477911`, 1.009674775249767`, 0.971478174124758453`, 1.03328157299974776`, 0.944388534128123069`}\)], "Output"] }, Open ]], Cell[TextData[{ "But they are repeatedable - the following computation (with display \ prevented by ", StyleBox["DisplayFunction->Identity)", "Input", FontWeight->"Plain"], "was made several days after the preceding." }], "Text"], Cell[BoxData[ \(lst\ = \ {}; \n Plot[AppendTo[lst, x]; 1, {x, 0, \ 24}, \ \nDisplayFunction -> Identity]; \)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(lst\)], "Input"], Cell[OutputFormData["\<\ {9.999999999999998*^-7, 0.9736077977499789, 2.035411196624968, 3.032624792124926, 3.991641786499874, 5.012462179749811, 5.995085971874738, 7.039513162874654, 8.04574375274956, 9.013777741499454, 10.04361512912433, 11.03525591562421, 11.98870010099907, 13.00394768524892, 13.98099866837376, 15.0198530503736, 16.02051083124842, 16.98297201099823, 18.00723658962303, 18.99330456712282, 20.0411759434976, 21.05085071874737, 22.02232889287212, 23.05561046587187, 23.999999}\ \>", "\<\ -6 {1. 10 , 0.973608, 2.03541, 3.03262, 3.99164, 5.01246, 5.99509, 7.03951, 8.04574, 9.01378, 10.0436, 11.0353, 11.9887, 13.0039, 13.981, 15.0199, 16.0205, 16.983, 18.0072, 18.9933, 20.0412, 21.0509, 22.0223, 23.0556, 24.}\ \>"], "Output"] }, Open ]], Cell["ABOUT THE COLUMNIST", "Subsection"] }, Open ]] }, Open ]] }, FrontEndVersion->"NeXT 3.0", ScreenRectangle->{{0, 1053}, {0, 832}}, WindowSize->{520, 740}, WindowMargins->{{202, Automatic}, {1, Automatic}} ] (*********************************************************************** Cached data follows. If you edit this Notebook file directly, not using Mathematica, you must remove the line containing CacheID at the top of the file. The cache data will then be recreated when you save this file from within Mathematica. ***********************************************************************) (*CellTagsOutline CellTagsIndex->{} *) (*CellTagsIndex CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ Cell[CellGroupData[{ Cell[1731, 51, 29, 0, 98, "Title"], Cell[1763, 53, 99, 4, 52, "Subtitle"], Cell[1865, 59, 37, 0, 46, "Subsubtitle"], Cell[1905, 61, 511, 9, 94, "Text"], Cell[CellGroupData[{ Cell[2441, 74, 45, 0, 52, "Section"], Cell[2489, 76, 389, 15, 46, "Text"], Cell[2881, 93, 841, 25, 94, "Text"], Cell[3725, 120, 107, 5, 30, "Text"], Cell[3835, 127, 60, 1, 25, "Input"], Cell[CellGroupData[{ Cell[3920, 132, 49, 1, 24, "Input"], Cell[3972, 135, 48, 1, 27, "Output"] }, Open ]], Cell[4035, 139, 290, 8, 62, "Text"], Cell[CellGroupData[{ Cell[4350, 151, 39, 1, 24, "Input"], Cell[4392, 154, 43, 1, 20, "Print"], Cell[4438, 157, 234, 8, 20, "Print"] }, Open ]], Cell[4687, 168, 28, 0, 30, "Text"], Cell[4718, 170, 61, 1, 25, "Input"], Cell[4782, 173, 34, 0, 30, "Text"], Cell[CellGroupData[{ Cell[4841, 177, 39, 1, 24, "Input"], Cell[4883, 180, 43, 1, 20, "Print"], Cell[4929, 183, 243, 8, 20, "Print"] }, Open ]], Cell[5187, 194, 27, 0, 30, "Text"], Cell[CellGroupData[{ Cell[5239, 198, 49, 1, 24, "Input"], Cell[5291, 201, 55, 1, 27, "Output"] }, Open ]], Cell[5361, 205, 94, 2, 30, "Text"], Cell[5458, 209, 20, 0, 30, "Text"], Cell[5481, 211, 85, 1, 25, "Input"], Cell[5569, 214, 157, 3, 46, "Text"], Cell[CellGroupData[{ Cell[5751, 221, 39, 1, 25, "Input"], Cell[5793, 224, 43, 1, 20, "Print"], Cell[5839, 227, 290, 9, 20, "Print"] }, Open ]], Cell[CellGroupData[{ Cell[6166, 241, 66, 1, 25, "Input"], Cell[6235, 244, 70, 1, 24, "Output"] }, Open ]], Cell[6320, 248, 29, 0, 30, "Text"], Cell[6352, 250, 90, 1, 25, "Input"], Cell[6445, 253, 65, 0, 30, "Text"], Cell[CellGroupData[{ Cell[6535, 257, 39, 1, 25, "Input"], Cell[6577, 260, 43, 1, 20, "Print"], Cell[6623, 263, 263, 8, 20, "Print"] }, Open ]], Cell[6901, 274, 49, 0, 30, "Text"], Cell[CellGroupData[{ Cell[6975, 278, 66, 1, 25, "Input"], Cell[7044, 281, 53, 1, 24, "Output"] }, Open ]], Cell[7112, 285, 282, 7, 78, "Text"], Cell[7397, 294, 50, 1, 70, "Input"], Cell[7450, 297, 24, 0, 70, "Text"], Cell[CellGroupData[{ Cell[7499, 301, 39, 1, 70, "Input"], Cell[7541, 304, 43, 1, 70, "Print"], Cell[7587, 307, 237, 8, 70, "Print"] }, Open ]], Cell[7839, 318, 758, 28, 70, "Text"], Cell[8600, 348, 48, 1, 70, "Input"], Cell[8651, 351, 55, 1, 70, "Input"], Cell[8709, 354, 212, 8, 70, "Text"], Cell[CellGroupData[{ Cell[8946, 366, 39, 1, 70, "Input"], Cell[8988, 369, 43, 1, 70, "Print"], Cell[9034, 372, 236, 8, 70, "Print"] }, Open ]], Cell[9285, 383, 880, 32, 70, "Text"], Cell[CellGroupData[{ Cell[10190, 419, 41, 0, 70, "Subsubsection"], Cell[10234, 421, 6331, 165, 70, "Text"], Cell[16568, 588, 101, 3, 70, "Text"], Cell[CellGroupData[{ Cell[16694, 595, 49, 1, 70, "Input"], Cell[16746, 598, 40, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[16823, 604, 39, 1, 70, "Input"], Cell[16865, 607, 43, 1, 70, "Print"], Cell[16911, 610, 237, 8, 70, "Print"] }, Open ]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[17209, 625, 48, 0, 70, "Section"], Cell[17260, 627, 906, 33, 70, "Text"], Cell[18169, 662, 46, 1, 70, "Input"], Cell[CellGroupData[{ Cell[18240, 667, 74, 1, 70, "Input"], Cell[18317, 670, 37, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[18391, 676, 74, 1, 70, "Input"], Cell[18468, 679, 57, 1, 70, "Output"] }, Open ]], Cell[18540, 683, 94, 3, 70, "Text"], Cell[18637, 688, 132, 2, 70, "Input"], Cell[18772, 692, 289, 11, 70, "Text"], Cell[CellGroupData[{ Cell[19086, 707, 73, 1, 70, "Input"], Cell[19162, 710, 89, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[19288, 716, 41, 0, 70, "Subsubsection"], Cell[19332, 718, 115, 3, 70, "Text"], Cell[19450, 723, 2494, 60, 70, "Text"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[21993, 789, 31, 0, 70, "Section"], Cell[CellGroupData[{ Cell[22049, 793, 30, 0, 70, "Subsubsection"], Cell[CellGroupData[{ Cell[22104, 797, 43, 1, 70, "Input"], Cell[22150, 800, 240, 3, 70, "Print"] }, Open ]], Cell[22405, 806, 162, 5, 70, "Text"], Cell[CellGroupData[{ Cell[22592, 815, 65, 1, 70, "Input"], Cell[22660, 818, 68, 1, 70, "Output"] }, Closed]], Cell[CellGroupData[{ Cell[22765, 824, 92, 1, 70, "Input"], Cell[22860, 827, 65, 1, 70, "Output"] }, Open ]], Cell[22940, 831, 45, 0, 70, "Text"], Cell[22988, 833, 77, 1, 70, "Input"], Cell[CellGroupData[{ Cell[23090, 838, 74, 1, 70, "Input"], Cell[23167, 841, 43, 1, 70, "Output"] }, Open ]], Cell[23225, 845, 50, 0, 70, "Text"], Cell[23278, 847, 112, 3, 70, "Text"], Cell[23393, 852, 205, 6, 70, "Input"], Cell[CellGroupData[{ Cell[23623, 862, 74, 1, 70, "Input"], Cell[23700, 865, 43, 1, 70, "Output"] }, Open ]], Cell[23758, 869, 35, 0, 70, "Text"], Cell[CellGroupData[{ Cell[23818, 873, 75, 1, 70, "Input"], Cell[23896, 876, 123, 2, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[24056, 883, 40, 1, 70, "Input"], Cell[24099, 886, 123, 2, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[24259, 893, 71, 1, 70, "Input"], Cell[24333, 896, 131, 2, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[24501, 903, 41, 1, 70, "Input"], Cell[24545, 906, 64, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[24646, 912, 43, 1, 70, "Input"], Cell[24692, 915, 64, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[24793, 921, 40, 1, 70, "Input"], Cell[24836, 924, 64, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[24937, 930, 40, 1, 70, "Input"], Cell[24980, 933, 43, 1, 70, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[25072, 940, 36, 0, 70, "Subsubsection"], Cell[CellGroupData[{ Cell[25133, 944, 49, 1, 70, "Input"], Cell[25185, 947, 279, 4, 70, "Print"] }, Open ]], Cell[CellGroupData[{ Cell[25501, 956, 110, 2, 70, "Input"], Cell[25614, 960, 127, 2, 70, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[25790, 968, 29, 0, 70, "Subsubsection"], Cell[25822, 970, 74, 0, 70, "Text"], Cell[CellGroupData[{ Cell[25921, 974, 79, 1, 70, "Input"], Cell[26003, 977, 269, 8, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[26309, 990, 108, 2, 70, "Input"], Cell[26420, 994, 269, 8, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[26726, 1007, 89, 1, 70, "Input"], Cell[26818, 1010, 269, 8, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[27124, 1023, 101, 2, 70, "Input"], Cell[27228, 1027, 275, 8, 70, "Output"] }, Open ]], Cell[27518, 1038, 49, 0, 70, "Text"], Cell[CellGroupData[{ Cell[27592, 1042, 105, 2, 70, "Input"], Cell[27700, 1046, 53, 1, 70, "Output"], Cell[27756, 1049, 53, 1, 70, "Output"] }, Open ]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[27870, 1057, 31, 0, 70, "Section"], Cell[27904, 1059, 137, 3, 70, "Text"], Cell[CellGroupData[{ Cell[28066, 1066, 46, 1, 70, "Input"], Cell[28115, 1069, 35, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[28187, 1075, 52, 1, 70, "Input"], Cell[28242, 1078, 164, 6, 70, "Output"] }, Open ]], Cell[28421, 1087, 162, 4, 70, "Text"], Cell[CellGroupData[{ Cell[28608, 1095, 34, 1, 70, "Input"], Cell[28645, 1098, 40, 1, 70, "Output"] }, Open ]], Cell[28700, 1102, 106, 3, 70, "Text"], Cell[28809, 1107, 202, 4, 70, "Text"], Cell[CellGroupData[{ Cell[29036, 1115, 52, 1, 70, "Input"], Cell[29091, 1118, 201, 7, 70, "Output"] }, Open ]], Cell[29307, 1128, 494, 15, 70, "Text"], Cell[29804, 1145, 43, 0, 70, "Text"], Cell[CellGroupData[{ Cell[29872, 1149, 54, 1, 70, "Input"], Cell[29929, 1152, 164, 6, 70, "Output"] }, Open ]], Cell[30108, 1161, 116, 3, 70, "Text"], Cell[CellGroupData[{ Cell[30249, 1168, 39, 1, 70, "Input"], Cell[30291, 1171, 43, 1, 70, "Print"], Cell[30337, 1174, 249, 8, 70, "Print"] }, Open ]], Cell[30601, 1185, 137, 5, 70, "Text"], Cell[CellGroupData[{ Cell[30763, 1194, 42, 1, 70, "Input"], Cell[30808, 1197, 201, 7, 70, "Output"] }, Open ]], Cell[31024, 1207, 222, 8, 70, "Text"], Cell[CellGroupData[{ Cell[31271, 1219, 52, 1, 70, "Input"], Cell[31326, 1222, 164, 6, 70, "Output"] }, Open ]], Cell[31505, 1231, 18, 0, 70, "Text"], Cell[CellGroupData[{ Cell[31548, 1235, 60, 1, 70, "Input"], Cell[31611, 1238, 164, 6, 70, "Output"] }, Open ]], Cell[31790, 1247, 21, 0, 70, "Text"], Cell[CellGroupData[{ Cell[31836, 1251, 39, 1, 70, "Input"], Cell[31878, 1254, 43, 1, 70, "Print"], Cell[31924, 1257, 237, 8, 70, "Print"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[32210, 1271, 36, 0, 70, "Section"], Cell[32249, 1273, 63, 0, 30, "Text"], Cell[32315, 1275, 2171, 45, 133, "Text"], Cell[34489, 1322, 161, 3, 28, "Text"], Cell[34653, 1327, 63, 1, 24, "Input"], Cell[34719, 1330, 71, 0, 30, "Text"], Cell[CellGroupData[{ Cell[34815, 1334, 62, 1, 24, "Input"], Cell[34880, 1337, 116, 2, 37, "Output"] }, Open ]], Cell[35011, 1342, 349, 9, 78, "Text"], Cell[CellGroupData[{ Cell[35385, 1355, 63, 1, 24, "Input"], Cell[35451, 1358, 67768, 1368, 186, 9740, 647, "GraphicsData", "PostScript", "Graphics"], Cell[103222, 2728, 130, 3, 24, "Output"] }, Open ]], Cell[103367, 2734, 226, 6, 78, "Text"], Cell[CellGroupData[{ Cell[103618, 2744, 90, 1, 38, "Input"], Cell[103711, 2747, 9496, 314, 186, 3251, 232, "GraphicsData", "PostScript", "Graphics"] }, Open ]], Cell[CellGroupData[{ Cell[113244, 3066, 36, 1, 24, "Input"], Cell[113283, 3069, 644, 9, 74, "Output"] }, Open ]], Cell[113942, 3081, 19, 0, 30, "Text"], Cell[CellGroupData[{ Cell[113986, 3085, 64, 1, 24, "Input"], Cell[114053, 3088, 346, 5, 37, "Output"] }, Open ]], Cell[114414, 3096, 121, 3, 46, "Text"], Cell[CellGroupData[{ Cell[114560, 3103, 69, 1, 25, "Input"], Cell[114632, 3106, 623, 9, 63, "Output"] }, Open ]], Cell[115270, 3118, 239, 6, 46, "Text"], Cell[115512, 3126, 133, 3, 52, "Input"], Cell[CellGroupData[{ Cell[115670, 3133, 36, 1, 24, "Input"], Cell[115709, 3136, 791, 19, 58, "Output"] }, Open ]], Cell[116515, 3158, 41, 0, 43, "Subsection"] }, Open ]] }, Open ]] } ] *) (*********************************************************************** End of Mathematica Notebook file. ***********************************************************************)