(*********************************************************************** Mathematica-Compatible Notebook This notebook can be used on any computer system with Mathematica 4.0, MathReader 4.0, or any compatible application. The data for the notebook starts with the line containing 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[ 48878, 1428]*) (*NotebookOutlinePosition[ 81044, 2536]*) (* CellTagsIndexPosition[ 80133, 2511]*) (*WindowFrame->Normal*) Notebook[{ Cell[CellGroupData[{ Cell["Convergence Analysis for Uniform Subdivision Schemes", "Chapter", CounterAssignments->{{"Chapter", 2}}, CellTags->"CHA convergence"], Cell[TextData[{ "To evaluate a particular cell, simply hit \"Shift+Enter\" with the cursor \ positioned in that cell. If ", StyleBox["Mathematica", FontSlant->"Italic"], " asks to evaluate initialization cell, click \"Yes\". See the ", StyleBox["Mathematica ", FontSlant->"Italic"], "Help browser or wolfram.com for more information on using ", StyleBox["Mathematica", FontSlant->"Italic"], "." }], "Text"], Cell["\<\ This notebook and those for the other seven chapters use a common stylesheet \ that has been imported into the notebook. This style sheet supports \ chapters, section, subsections, numbered equations, numbered figures and \ citations. A separate copy of the stylesheet can be download from the same \ page where this notebook was downloaded. \ \>", "Text"], Cell[TextData[{ StyleBox["COPYRIGHT ISSUES:", FontWeight->"Bold"], " The authors reserve all copyrights associated with this work. Any of \ the material appearing in these notebooks (such as the polyhedral meshes in \ chapter 7) can be used and modified without restriction as long as the use is \ non\[Hyphen]commercial. We simply ask that you acknowledge the authors when \ using material from these notebooks. For those readers interested in \ commercial use of the material in these notebooks, please contact \ jwarren@cs.rice.edu. " }], "Text"], Cell[CellGroupData[{ Cell["Helper functions from previous chapters", "Subsubsection"], Cell[BoxData[ \(plotCoeff[p_, opts___] := Show[Graphics[{Line[p], PointSize[0.02], RGBColor[1, 0, 0], Map[Point, p]}], Join[{opts}, {Axes \[Rule] True, Ticks \[Rule] {Automatic, Automatic}}]]\)], "Input", InitializationCell->True], Cell[BoxData[ \(makeGenFun[coeff_, a_, x_] := Sum[coeff\[LeftDoubleBracket]i\[RightDoubleBracket] x\^\(i - 1 + a\), {i, 1, Length[coeff]}]\)], "Input", InitializationCell->True], Cell[BoxData[ \(subdivide[s_, p_, k_] := If[k \[Equal] 0, p, subdivide[s, s*\((p /. {x \[Rule] x\^2})\), k - 1]]\)], "Input", InitializationCell->True], Cell[BoxData[ \(makeCoeff[genFun_, {min_, max_}, k_, x_] := With[{expFun = Together[genFun]}, \n\t Table[Coefficient[expFun, x, i], {i, \(2\^k\) min, \(2\^k\) max}]]\)], "Input", InitializationCell->True], Cell[BoxData[ \(plotGen[genFun_, {min_, max_}, k_, x_, opts___] := With[{expFun = Together[genFun]}, \n\t plotCoeff[ Table[{i\/2\^k, Coefficient[expFun, x, i]}, {i, \(2\^k\) min, \(2\^k\) max}], opts]]\)], "Input", InitializationCell->True], Cell[BoxData[ \(makeGenFun[coeff_, {a_, b_}, x_, y_] := Sum[coeff\[LeftDoubleBracket]i, j\[RightDoubleBracket] \(x\^\(i - 1 + a\)\) y\^\(j - 1 + b\), {i, \(Dimensions[ coeff]\)\[LeftDoubleBracket]1\[RightDoubleBracket]}, {j, \ \(Dimensions[coeff]\)\[LeftDoubleBracket]2\[RightDoubleBracket]}]\)], "Input",\ InitializationCell->True], Cell[BoxData[ \(subdivide2D[s_, p_, k_] := If[k \[Equal] 0, p, subdivide2D[s, s*\((p /. {x \[Rule] x\^2, y \[Rule] y\^2})\), k - 1]]\)], "Input", InitializationCell->True], Cell[BoxData[ \(makeCoeff[genFun_, {{minX_, maxX_}, {minY_, maxY_}}, k_, x_, y_] := With[{expFun = Expand[genFun]}, \n\t Table[With[{rowY = Table[Coefficient[expFun, y, j], {j, \(2\^k\) minY, \(2\^k\) maxY}]}, \n\t\t\t\tTable[ Coefficient[rowY, x, i], {i, \(2\^k\) minX, \(2\^k\) maxX}]]]]\)], "Input", InitializationCell->True], Cell[BoxData[ \(plotCoeff3D[p_, plotArgs___] := Show[Graphics3D[\[IndentingNewLine]Table[ Polygon[{p\[LeftDoubleBracket]i, j\[RightDoubleBracket], p\[LeftDoubleBracket]i + 1, j\[RightDoubleBracket], p\[LeftDoubleBracket]i + 1, j + 1\[RightDoubleBracket], p\[LeftDoubleBracket]i, j + 1\[RightDoubleBracket]}], {i, \(Dimensions[ p]\)\[LeftDoubleBracket]1\[RightDoubleBracket] - 1}, {j, \(Dimensions[ p]\)\[LeftDoubleBracket]2\[RightDoubleBracket] - 1}]], Join[{plotArgs}, {Axes \[Rule] True}]]\)], "Input", InitializationCell->True], Cell[BoxData[ \(plotGen2D[genFun_, {{minX_, maxX_}, {minY_, maxY_}}, k_, x_, y_, opts___] := Module[{expFun = Expand[genFun], rowY}, \[IndentingNewLine]plotCoeff3D[ Table[rowY = Coefficient[expFun, y, j]; \[IndentingNewLine]Table[{i\/2\^k, j\/2\^k, Coefficient[rowY, x, i]}, {i, \(2\^k\) minX, \(2\^k\) maxX}], {j, \(2\^k\) minY, \(2\^k\) maxY}], opts]]\)], "Input", InitializationCell->True] }, Closed]], Cell[CellGroupData[{ Cell["Convergence of a sequence of functions", "Section", CellTags->"SEC convergence sequence of functions"], Cell[CellGroupData[{ Cell["Pointwise convergence", "Subsection"], Cell[CellGroupData[{ Cell["Convergence figures", "Subsubsection"], Cell[TextData[{ "Sawtooth text function ", Cell[BoxData[ \(\[ScriptP]\_k[\[ScriptX]]\)]] }], "Text"], Cell[BoxData[ \(\[ScriptP][\[ScriptX]_, k_] := \(2\^\(-k\)\) With[{i = Floor[\(2\^k\) \[ScriptX]]}, If[EvenQ[i], \(2\^k\) \[ScriptX] - i, 1 + i - \(2\^k\) \[ScriptX]]]\)], "Input", InitializationCell->True], Cell[TextData[{ "Derivative of sawtooth function ", Cell[BoxData[ RowBox[{ SubsuperscriptBox["\[ScriptP]", "k", "\[Prime]", MultilineFunction->None], "[", "\[ScriptX]", "]"}]]], " " }], "Text"], Cell[BoxData[ \(\[ScriptD]\[ScriptP][\[ScriptX]_, k_] := With[{i = Floor[\(2\^k\) \[ScriptX]]}, If[EvenQ[i], 1, \(-1\)]]\)], "Input", InitializationCell->True], Cell[TextData[{ "Plots of ", Cell[BoxData[ \(\[ScriptP]\_k[\[ScriptX]]\)]], " for increasing ", Cell[BoxData[ \(k\)]], ". Note that ", Cell[BoxData[ \(\[ScriptP]\_k[\[ScriptX]]\)]], " is converging to the function zero." }], "Text"], Cell[BoxData[ \(For[k = 0, k <= 3, p[k] = Plot[\[ScriptP][\[ScriptX], k], {\[ScriptX], 0, 4}, Ticks \[Rule] {{0, 1, 2, 3, 4}, {\(-1\), 0, 1}}, PlotRange \[Rule] {{0, 4}, {\(-1\), 1}}, PlotPoints \[Rule] 60]; \(k++\);]\)], "Input"], Cell[TextData[{ "Plots of ", Cell[BoxData[ RowBox[{ SubsuperscriptBox["\[ScriptP]", "k", "\[Prime]", MultilineFunction->None], "[", "\[ScriptX]", "]"}]]], " for increasing ", Cell[BoxData[ \(k\)]], ". Note ", Cell[BoxData[ RowBox[{ SubsuperscriptBox["\[ScriptP]", "k", "\[Prime]", MultilineFunction->None], "[", "\[ScriptX]", "]"}]]], "is not converging in any sense." }], "Text"], Cell[BoxData[ \(For[k = 0, k <= 3, dp[k] = Plot[\[ScriptD]\[ScriptP][\[ScriptX], k], {\[ScriptX], 0, 4}, Ticks \[Rule] {{0, 1, 2, 3, 4}, {\(-1\), 0, 1}}, PlotRange \[Rule] {{0, 4}, {\(-1\), 1}}, PlotPoints \[Rule] 60]; \(k++\);]\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(Show[ GraphicsArray[{{p[0], p[1], p[2], p[3]}, {dp[0], dp[1], dp[2], dp[3]}}]]\)], "Input", CellTags->"FIG pointwise divergence"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] GraphicsArray \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]] }, Closed]] }, Open ]], Cell[CellGroupData[{ Cell["Uniform convergence", "Subsection"], Cell[CellGroupData[{ Cell[BoxData[ \(With[{gg = Plot[{x^3 - 2 x^2 + 5, x^3 - 2 x^2 + 2}, {x, \(-1\), 3}]}, Show[{Graphics[GrayLevel[0.8]], Graphics[ Polygon[Join[ Table[{x, x^3 - 2 x^2 + 5}, {x, \(-1\), 3, 0.05}], \[IndentingNewLine]Table[{x, x^3 - 2 x^2 + 2}, {x, 3, \(-1\), \(-0.05\)}]]]], Graphics[GrayLevel[0]], gg, \[IndentingNewLine]Graphics[ Line[Table[{x, x^3 - 2 x^2 + 3.2}, {x, \(-1\), 3, 1}]]]}, \[IndentingNewLine]Graphics[{Text[\[ScriptP]\_\ \[Infinity] + \[Epsilon], {x, x^3 - 2 x^2 + 5} /. x \[Rule] 3, {\(-1\), 0}], Text[\[ScriptP]\_\[Infinity] - \[Epsilon], {x, x^3 - 2 x^2 + 2} /. x \[Rule] 3, {\(-1\), 0}], Text[\[ScriptP]\_k, {x, x^3 - 2 x^2 + 3.2} /. x \[Rule] 3, {\(-1\), 0}]}], Axes \[Rule] True, PlotRange \[Rule] All, Ticks \[Rule] None]]\)], "Input", CellTags->"FIG uniform convergence"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]] }, Closed]], Cell["Uniform convergence for continuous functions", "Subsection"], Cell["Uniform convergence for smooth functions", "Subsection"] }, Open ]], Cell[CellGroupData[{ Cell["Analysis of univariate subdivision schemes", "Section", CellTags->"SEC univariate analysis"], Cell[CellGroupData[{ Cell["A subdivision scheme for differences", "Subsection"], Cell["\<\ Use helper functions from previous helper functions to plot differences of \ cubic B\[Hyphen]spline test function under subdivision. The initial \ coefficient sequence satisfies \ \>", "Text"], Cell[BoxData[ \(p\_0[x] = 1 + 3 x + 2 x\^2 + 5 x\^3 + 6 x\^4\)], "Equation"], Cell[CellGroupData[{ Cell[BoxData[ \(Show[ GraphicsArray[\[IndentingNewLine]{{plotGen[ subdivide[\(1\/\(8 x\^2\)\) \((1 + x)\)\^4, 1 + 3 x + 2 x\^2 + 5 x\^3 + 6 x\^4, 0], {\(-2\), 6}, 0, x], \[IndentingNewLine]plotGen[ subdivide[\(1\/\(8 x\^2\)\) \((1 + x)\)\^4, 1 + 3 x + 2 x\^2 + 5 x\^3 + 6 x\^4, 1], {\(-2\), 6}, 1, x], \[IndentingNewLine]plotGen[ subdivide[\(1\/\(8 x\^2\)\) \((1 + x)\)\^4, 1 + 3 x + 2 x\^2 + 5 x\^3 + 6 x\^4, 2], {\(-2\), 6}, 2, x], \[IndentingNewLine]plotGen[ subdivide[\(1\/\(8 x\^2\)\) \((1 + x)\)\^4, 1 + 3 x + 2 x\^2 + 5 x\^3 + 6 x\^4, 3], {\(-2\), 6}, 3, x]}, {\[IndentingNewLine]plotGen[\((1 - x)\) subdivide[\(1\/\(8 x\^2\)\) \((1 + x)\)\^4, 1 + 3 x + 2 x\^2 + 5 x\^3 + 6 x\^4, 0], {\(-2\), 6}, 0, x, PlotRange \[Rule] {\(-4\), 4}], \[IndentingNewLine]plotGen[\((1 - x)\) subdivide[\(1\/\(8 x\^2\)\) \((1 + x)\)\^4, 1 + 3 x + 2 x\^2 + 5 x\^3 + 6 x\^4, 1], {\(-2\), 6}, 1, x, PlotRange \[Rule] {\(-4\), 4}], \[IndentingNewLine]plotGen[\((1 - x)\) subdivide[\(1\/\(8 x\^2\)\) \((1 + x)\)\^4, 1 + 3 x + 2 x\^2 + 5 x\^3 + 6 x\^4, 2], {\(-2\), 6}, 2, x, PlotRange \[Rule] {\(-4\), 4}], \[IndentingNewLine]plotGen[\((1 - x)\) subdivide[\(1\/\(8 x\^2\)\) \((1 + x)\)\^4, 1 + 3 x + 2 x\^2 + 5 x\^3 + 6 x\^4, 3], {\(-2\), 6}, 3, x, PlotRange \[Rule] {\(-4\), 4}]}}]]\)], "Input", CellTags->"FIG bspline differences"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] GraphicsArray \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell["A condition for uniform convergence", "Subsection"], Cell[TextData[{ "The function ", Cell[BoxData[ \(norm[t, k]\)]], " computes the infinity norm ", Cell[BoxData[ \(\[LeftDoubleBracketingBar]T\^k\[RightDoubleBracketingBar]\)]], " where ", Cell[BoxData[ \(T\)]], " is a matrix whose columns are two\[Hyphen]shifts of the coefficient \ sequence ", Cell[BoxData[ \(t\)]], "." }], "Text"], Cell[BoxData[ \(norm[t_, k_] := With[{tk = Transpose[ Partition[ CoefficientList[\[Product]\+\(i = 0\)\%\(k - 1\)\((t /. {x -> x\^\(2\^i\)})\), {x}], 2\^k, 2\^k, {1, 1}, 0]]}, \[IndentingNewLine]Max[ Apply[Plus, Abs[tk], 1]]]\)], "Input", InitializationCell->True, CellTags->"norm test"], Cell["Example of convergence for cubic B\[Hyphen]splines", "Text"], Cell[BoxData[ \(\(s = \((1 + x)\)\^4\/8;\)\)], "Input"], Cell[TextData[{ "Compute subdivision matrix ", Cell[BoxData[ \(t\)]], " for difference scheme" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(t = s\/\(1 + x\);\)\), "\[IndentingNewLine]", \(CoefficientList[t, x]\)}], "Input"], Cell[BoxData[ \({1\/8, 3\/8, 3\/8, 1\/8}\)], "Output"] }, Open ]], Cell[TextData[{ "Observe that norm is ", Cell[BoxData[ \(1\/2\)]], ", thus original scheme is uniformly convergent." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(norm[t, 1]\)], "Input"], Cell[BoxData[ \(1\/2\)], "Output"] }, Open ]] }, Closed]], Cell["A subdivision scheme for the divided differences", "Subsection"], Cell[CellGroupData[{ Cell["Example: The four\[Hyphen]point scheme", "Subsection", CellTags->"SUBSEC four point"], Cell[CellGroupData[{ Cell["Test the smoothness of the four\[Hyphen]point scheme", "Subsubsection"], Cell["Define subdivision mask for the four\[Hyphen]point scheme", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(s = makeGenFun[{\(-\(1\/16\)\), 0, 9\/16, 1, 9\/16, 0, \(-\(1\/16\)\)}, \(-3\), x]\)], "Input"], Cell[BoxData[ \(1 - 1\/\(16\ x\^3\) + 9\/\(16\ x\) + \(9\ x\)\/16 - x\^3\/16\)], "Output"] }, Open ]], Cell["Compute difference scheme", "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(t1 = \(\(x\^3\) s\)\/\(1 + x\) // Simplify;\)\), "\[IndentingNewLine]", \(CoefficientList[t1, x]\)}], "Input", CellTags->"four point diff mask"], Cell[BoxData[ \({\(-\(1\/16\)\), 1\/16, 1\/2, 1\/2, 1\/16, \(-\(1\/16\)\)}\)], "Output"] }, Open ]], Cell["\<\ Observe that scheme is continuous since norm is less than one\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(norm[t1, 1]\)], "Input"], Cell[BoxData[ \(5\/8\)], "Output"] }, Open ]], Cell["Compute difference of divided difference", "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(t2 = \(2 \( x\^3\) s\)\/\((1 + x)\)\^2 // Simplify;\)\), "\[IndentingNewLine]", \(CoefficientList[t2, x]\)}], "Input", CellTags->"four point second diff mask"], Cell[BoxData[ \({\(-\(1\/8\)\), 1\/4, 3\/4, 1\/4, \(-\(1\/8\)\)}\)], "Output"] }, Open ]], Cell[TextData[{ "Observe that scheme is ", Cell[BoxData[ \(\[ScriptCapitalC]\^1\)]], " since norm is ", Cell[BoxData[ \(3\/4\)]] }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(norm[t2, 2]\)], "Input"], Cell[BoxData[ \(3\/4\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[{ \(\(t3 = \(4 \( x\^3\) s\)\/\((1 + x)\)\^3 // Simplify;\)\), "\[IndentingNewLine]", \(CoefficientList[t3, x]\)}], "Input", CellTags->"four point third diff mask"], Cell[BoxData[ \({\(-\(1\/4\)\), 3\/4, 3\/4, \(-\(1\/4\)\)}\)], "Output"] }, Open ]], Cell[TextData[{ "Observe that the scheme is not ", Cell[BoxData[ \(\[ScriptCapitalC]\^2\)]], " since the ", Cell[BoxData[ \(norm\)]], " of ", Cell[BoxData[ \(t3\)]], " is one for all powers of ", Cell[BoxData[ \(t3\)]], "." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Table[norm[t3, i], {i, 10}]\)], "Input"], Cell[BoxData[ \({1, 1, 1, 1, 1, 1, 1, 1, 1, 1}\)], "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell["Plot an example and its differences", "Subsubsection"], Cell["\<\ Compute three rounds of subdivision using the four\[Hyphen]point mask with \ \>", "Text"], Cell[BoxData[ \(p\_0[x] = \(-1\) + 2 x\^2 - 3 \(\( x\^4\)\(.\)\)\)], "Equation"], Cell[CellGroupData[{ Cell[BoxData[ \(Show[ GraphicsArray[{plotGen[ subdivide[s, \(-1\) + 2 x\^2 - 3 x\^4, 0], {\(-2\), 6}, 0, x], \[IndentingNewLine]plotGen[ subdivide[s, \(-1\) + 2 x\^2 - 3 x\^4, 1], {\(-2\), 6}, 1, x], \[IndentingNewLine]plotGen[ subdivide[s, \(-1\) + 2 x\^2 - 3 x\^4, 2], {\(-2\), 6}, 2, x], \[IndentingNewLine]plotGen[ subdivide[s, \(-1\) + 2 x\^2 - 3 x\^4, 3], {\(-2\), 6}, 3, x]}]]\)], "Input", CellTags->"FIG four point example"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] GraphicsArray \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]], Cell["\<\ Plot functional first divided differences of previous example\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Show[ GraphicsArray[{\[IndentingNewLine]plotGen[\((1 - x)\) subdivide[s, \(-1\) + 2 x\^2 - 3 x\^4, 0], {\(-2\), 6}, 0, x, PlotRange \[Rule] {\(-4\), 4}], \[IndentingNewLine]plotGen[ 2 \((1 - x)\) subdivide[s, \(-1\) + 2 x\^2 - 3 x\^4, 1], {\(-2\), 6}, 1, x, PlotRange \[Rule] {\(-4\), 4}], \[IndentingNewLine]plotGen[ 4 \((1 - x)\) subdivide[s, \(-1\) + 2 x\^2 - 3 x\^4, 2], {\(-2\), 6}, 2, x, PlotRange \[Rule] {\(-4\), 4}], \[IndentingNewLine]plotGen[ 8 \((1 - x)\) subdivide[s, \(-1\) + 2 x\^2 - 3 x\^4, 3], {\(-2\), 6}, 3, x, PlotRange \[Rule] {\(-4\), 4}]}]]\)], "Input", CellTags->"FIG four point differences"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] GraphicsArray \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]] }, Closed]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Analysis of bivariate schemes", "Section"], Cell[CellGroupData[{ Cell["A subdivision scheme for differences", "Subsection"], Cell["See next subsection for general test", "Text"] }, Open ]], Cell[CellGroupData[{ Cell["A condition for uniform convergence", "Subsection"], Cell["See next subsection for general test", "Text"] }, Open ]], Cell[CellGroupData[{ Cell["Convergence to a smooth function", "Subsection"], Cell[CellGroupData[{ Cell["Compute norm of 2D subdivision masks", "Subsubsection"], Cell[TextData[{ "Compute infinity norm ", Cell[BoxData[ \(\[LeftDoubleBracketingBar]T\^k\[RightDoubleBracketingBar]\)]], " for bivariate subdivision matrix ", Cell[BoxData[ \(T\)]], " with mask ", Cell[BoxData[ \(t\)]], "." }], "Text"], Cell[BoxData[ \(norm2D[t_, k_] := With[{coeff = Transpose[ Partition[ CoefficientList[\[Product]\+\(i = 0\)\%\(k - 1\)\((t /. {x \ \[Rule] x\^\(2\^i\), y \[Rule] y\^\(2\^i\)})\), {x, y}], {2\^k, 2\^k}, {2\^k, 2\^k}, {1, 1}, 0], {3, 4, 1, 2}]}, \[IndentingNewLine]Max[ Apply[Plus, Abs[coeff], {2, 4}]]]\)], "Input", InitializationCell->True], Cell[TextData[{ "Compute infinity norm of ", Cell[BoxData[ RowBox[{"\[LeftDoubleBracketingBar]", SuperscriptBox[ RowBox[{"(", GridBox[{ {\(T\_00\), \(T\_10\), "."}, {\(T\_10\), \(T\_11\), "."}, {".", ".", "."} }], ")"}], "k"], "\[RightDoubleBracketingBar]"}]]], " for matrix subdivision scheme ", Cell[BoxData[ RowBox[{"(", GridBox[{ {\(t\_00\), \(t\_10\), "."}, {\(t\_10\), \(t\_11\), "."}, {".", ".", "."} }], ")"}]]], "." }], "Text"], Cell[BoxData[ \(matrixNorm2D[t_, k_] := Module[{tk = t}, \[IndentingNewLine]Do[ tk = tk . \((t /. {x \[Rule] x\^\(2\^i\), y \[Rule] y\^\(2\^i\)})\), {i, 1, k - 1}]; \[IndentingNewLine]Max[ Apply[Plus, Table[Apply[Plus, Abs[Transpose[ Partition[\[IndentingNewLine]If[ tk\[LeftDoubleBracket]i, j\[RightDoubleBracket] === 0, {{0}}, CoefficientList[ tk\[LeftDoubleBracket]i, j\[RightDoubleBracket], {x, y}]], \[IndentingNewLine]{2\^k, 2\^k}, {2\^k, 2\^k}, {1, 1}, 0], {3, 4, 1, 2}]], {2, 4}], {j, Length[t]}, {i, Length[t]}]]]]\)], "Input", InitializationCell->True] }, Closed]], Cell[CellGroupData[{ Cell["Functions for smoothness testing", "Subsubsection"], Cell[TextData[{ "Write a function ", Cell[BoxData[ \(checkRoots[s, k]\)]], " that computes values and derivatives of ", Cell[BoxData[ \(s\)]], " of up to order ", Cell[BoxData[ \(k\)]], " at ", Cell[BoxData[ \(\((1, \(-1\))\), \((\(-1\), 1)\), \((\(-1\), \(-1\))\)\)]], ". This test verifies whether the matrix scheme for the difference of the \ ", Cell[BoxData[ \(k\)]], "th divided differences exists. We hypothesize that masks ", Cell[BoxData[ \(s\)]], " for schemes with polynomial precision of up to order ", Cell[BoxData[ \(k\)]], " always satisfy this condition." }], "Text"], Cell[BoxData[ \(checkRoots[s_, k_] := \[IndentingNewLine]\((\((s /. {x \[Rule] 1, y \[Rule] \(-1\)})\) \[Equal] 0)\)\ && \ \((\((s /. {x \[Rule] \(-1\), y \[Rule] 1})\) \[Equal] 0)\)\ && \ \((\((s /. {x \[Rule] \(-1\), y \[Rule] \(-1\)})\) \[Equal] 0)\)\ && \[IndentingNewLine]If[k \[Equal] 0, True, \[IndentingNewLine]checkRoots[D[s, x], k - 1] && checkRoots[D[s, y], k - 1]]\)], "Input", InitializationCell->True, CellTags->"EQ check roots"], Cell["\<\ Test the four direction quadratic box spline for whether it has roots \ consistent with linear precision\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(checkRoots[\((1 + x)\) \((1 + y)\) \((1 + x\ y)\) \((x + y)\), 1]\)], "Input", CellTags->"EQ quad box roots"], Cell[BoxData[ \(True\)], "Output"] }, Open ]], Cell[TextData[{ "The function ", Cell[BoxData[ \(computeMatrixMask[s, {lx, ly}, k]\)]], " builds the ", Cell[BoxData[ \(\((k + 1)\) x \((k + 1)\)\)]], " matrix of subdivision masks for the difference of ", Cell[BoxData[ \(k\)]], "th divided differences with minimal ", Cell[BoxData[ \(\[Infinity]\)]], "\[Hyphen]norm. ", Cell[BoxData[ \(lx\)]], ", ", Cell[BoxData[ \(ly\)]], " are the sizes of the individual masks in the matrix. Typically, they can \ be set to be the size of the mask ", Cell[BoxData[ \(s\)]], " in the variables ", Cell[BoxData[ \(x\)]], " and ", Cell[BoxData[ \(y\)]], "." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(computeMatrixMask[s_, {lx_, ly_}, k_] := Module[{\[IndentingNewLine]lDiff = Table[\(\((\(-1\) + x)\)\^\(k + 1 - i\)\) \((\(-1\) + y)\)\^i, {i, 0, k + 1}], \[IndentingNewLine]rDiff = Table[\(\((\(-1\) + x\^2)\)\^\(k + 1 - i\)\) \((\(-1\) + y\^2)\)\^i, {i, 0, k + 1}], \[IndentingNewLine]matrix = Table[Sum[\((\(tP[i, j]\)[I, J] - \(tN[i, j]\)[I, J])\) \(x\^I\) y\^J, \[IndentingNewLine]{I, 0, lx + \((k + 1 - i)\) - \((2 k + 2 - 2 j)\)}, {J, 0, ly + i - 2 j}], {i, 0, k + 1}, {j, 0, k + 1}], \[IndentingNewLine]eqs, ineqs, ans}, \[IndentingNewLine]eqs = Flatten[CoefficientList[\(2\^k\) lDiff*s - matrix . rDiff, {x, y}]]; \[IndentingNewLine]ineqs = Flatten[Apply[Plus, Table[Apply[Plus, Abs[Transpose[ Partition[\[IndentingNewLine]If[ matrix\[LeftDoubleBracket]i, j\[RightDoubleBracket] === 0, {{0}}, CoefficientList[ matrix\[LeftDoubleBracket]i, j\[RightDoubleBracket], {x, y}]], {2, 2}, {2, 2}, {1, 1}, 0], \[IndentingNewLine]{3, 4, 1, 2}]], {2, 4}], {j, k + 2}, {i, k + 2}]]] /. {\(tN[ i1_, j1_]\)[i2_, j2_] \[Rule] \(-\(tN[i1, j1]\)[i2, j2]\)}; \[IndentingNewLine]ans = ConstrainedMin[z, Join[\[IndentingNewLine]Table[ eqs\[LeftDoubleBracket]i\[RightDoubleBracket] \[Equal] 0, {i, Length[eqs]}], \[IndentingNewLine]Table[ z \[GreaterEqual] ineqs\[LeftDoubleBracket]i\[RightDoubleBracket], {i, Length[ineqs]}]], \[IndentingNewLine]Variables[ Join[{z}, eqs, ineqs]]]; \[IndentingNewLine]matrix /. ans\[LeftDoubleBracket]2\[RightDoubleBracket]]\)], "Input", CellDingbat->None, InitializationCell->True, CellTags->"EQ difference scheme"], Cell[BoxData[ \(General::"spell1" \(\(:\)\(\ \)\) "Possible spelling error: new symbol name \"\!\(rDiff\)\" is similar to \ existing symbol \"\!\(lDiff\)\"."\)], "Message"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell["Examples: smoothness analysis for box splines", "Subsubsection"], Cell[TextData[{ "Show that bilinear subdivision is ", Cell[BoxData[ \(\[ScriptCapitalC]\^0\)]], ". To do this, we first test whether the difference scheme for the mask ", Cell[BoxData[ \(s\)]], " exists using ", Cell[BoxData[ \(checkRoots\)]], ". If so, then we construct the matrix of masks for the first difference \ scheme associated with bilinear subdivision. Observe that ", Cell[BoxData[ \(computeMatrixMask\)]], " returns the difference masks generated by dividing by ", Cell[BoxData[ \(1 + x\)]], " and ", Cell[BoxData[ \(1 + y\)]], ". Finally, we compute the norm of this matrix and observe that it is less \ than one." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(s = \(1\/4\) \(\((1 + x)\)\^2\) \((1 + y)\)\^2;\)\), "\[IndentingNewLine]", \(checkRoots[s, 0]\), "\[IndentingNewLine]", \(MatrixForm[ t = computeMatrixMask[s, {2, 2}, 0]]\), "\[IndentingNewLine]", \(matrixNorm2D[t, 1]\)}], "Input"], Cell[BoxData[ \(True\)], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(1\/4 + x\/4 + y\/2 + \(x\ y\)\/2 + y\^2\/4 + \(x\ y\^2\)\/4\), "0"}, { "0", \(1\/4 + x\/2 + x\^2\/4 + y\/4 + \(x\ y\)\/2 + \(x\^2\ y\)\/4\)} }], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"], Cell[BoxData[ \(1\/2\)], "Output"] }, Open ]], Cell[TextData[{ "Show that bicubic subdivision is ", Cell[BoxData[ \(\[ScriptCapitalC]\^2\)]], ". This example computes the difference of the second divided differences. \ Observe again that ", Cell[BoxData[ \(computeMatrixNorm\)]], " generates the difference masks formed by dividing by powers of ", Cell[BoxData[ \(1 + x\)]], " and ", Cell[BoxData[ \(1 + y\)]], "." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(s = \(1\/64\) \(\((1 + x)\)\^4\) \((1 + y)\)\^4;\)\), "\[IndentingNewLine]", \(checkRoots[s, 2]\), "\[IndentingNewLine]", \(MatrixForm[ t = computeMatrixMask[s, {4, 4}, 2]]\), "\[IndentingNewLine]", \(matrixNorm2D[t, 1]\)}], "Input"], Cell[BoxData[ \(True\)], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(1\/16 + x\/16 + y\/4 + \(x\ y\)\/4 + \(3\ y\^2\)\/8 + \(3\ x\ y\^2\)\/8 + y\^3\/4 + \(x\ y\^3\)\/4 + y\^4\/16 + \(x\ y\^4\)\/16\), "0", "0", "0"}, { "0", \(1\/16 + x\/8 + x\^2\/16 + \(3\ y\)\/16 + \(3\ x\ y\)\/8 + \(3\ x\^2\ y\)\/16 \ + \(3\ y\^2\)\/16 + \(3\ x\ y\^2\)\/8 + \(3\ x\^2\ y\^2\)\/16 + y\^3\/16 + \(x\ y\^3\)\/8 + \(x\^2\ y\^3\)\/16\), "0", "0"}, {"0", "0", \(1\/16 + \(3\ x\)\/16 + \(3\ x\^2\)\/16 + x\^3\/16 + y\/8 + \(3\ x\ y\)\/8 + \(3\ x\^2\ y\)\/8 + \(x\^3\ y\)\/8 + y\^2\/16 + \(3\ x\ y\^2\)\/16 + \(3\ x\^2\ y\^2\)\/16 + \ \(x\^3\ y\^2\)\/16\), "0"}, {"0", "0", "0", \(1\/16 + x\/4 + \(3\ x\^2\)\/8 + x\^3\/4 + x\^4\/16 + y\/16 + \(x\ y\)\/4 + \(3\ x\^2\ y\)\/8 + \(x\^3\ y\)\/4 + \ \(x\^4\ y\)\/16\)} }], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"], Cell[BoxData[ \(1\/2\)], "Output"] }, Open ]], Cell[TextData[{ "Show that linear subdivision is ", Cell[BoxData[ \(\[ScriptCapitalC]\^0\)]], "." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(s = \(1\/2\) \((1 + x)\) \((1 + y)\) \((1 + x\ y)\);\)\), "\[IndentingNewLine]", \(checkRoots[s, 1]\), "\[IndentingNewLine]", \(MatrixForm[ t = computeMatrixMask[s, {2, 2}, 0]]\), "\[IndentingNewLine]", \(matrixNorm2D[t, 1]\)}], "Input"], Cell[BoxData[ \(True\)], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(1\/2 + y\/2 + \(x\ y\)\/2 + \(x\ y\^2\)\/2\), "0"}, {"0", \(1\/2 + x\/2 + \(x\ y\)\/2 + \(x\^2\ y\)\/2\)} }], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"], Cell[BoxData[ \(1\/2\)], "Output"] }, Open ]], Cell[TextData[{ "Show that three\[Hyphen]direction quartic box spline is ", Cell[BoxData[ \(\[ScriptCapitalC]\^2\)]], ". Observe that in this case, the matrix of difference masks is no longer \ diagonal. This observation corresponds to the fact that the appropriate \ powers of ", Cell[BoxData[ \(1 + x\)]], " and ", Cell[BoxData[ \(1 + y\)]], " no longer directly divide ", Cell[BoxData[ \(s\)]], ". Note that we must take the second power of the matrix ", Cell[BoxData[ \(t\)]], " to arrive at a norm of less than one." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(s = \(1\/16\) \(\((1 + x)\)\^2\) \(\((1 + y)\)\^2\) \((1 + x\ y)\)\^2;\)\), "\[IndentingNewLine]", \(checkRoots[s, 2]\), "\[IndentingNewLine]", \(MatrixForm[ t = computeMatrixMask[s, {6, 6}, 2]]\), "\[IndentingNewLine]", \(matrixNorm2D[t, 2]\)}], "Input"], Cell[BoxData[ \(True\)], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(1\/8 - x\/8 + \(15\ y\)\/32 + \(x\ y\)\/28 - \(x\^2\ y\)\/16 + \ \(x\^3\ y\)\/14 + y\^2\/2 + \(x\ y\^2\)\/2 + y\^3\/16 + \(3\ x\ y\^3\)\/7 + \(x\^2\ y\^3\)\/8 - \(x\^3\ \ y\^3\)\/7 - y\^4\/8 + \(x\ y\^4\)\/8 - y\^5\/32 + \(x\ y\^5\)\/28 - \(x\^2\ y\^5\)\/16 + \(x\^3\ \ y\^5\)\/14\), "0", \(1\/8 - x\/8 - x\^4\/8 + x\^5\/8 + y\/32 - \(x\ y\)\/28 - \(3\ x\^4\ y\)\/32 + \(3\ x\^5\ \ y\)\/28 + \(x\^6\ y\)\/16 - \(x\^7\ y\)\/14\), "0"}, {\(\(-\(13\/204\)\) + x\/44 + x\^2\/204 - \(13\ y\)\/204 + \(x\ y\)\/18 + \(x\^2\ y\)\/204 \ - y\^2\/34 - y\^3\/34 - \(x\ y\^3\)\/12 - \(3\ x\ y\^4\)\/44 - \(x\^2\ \ y\^4\)\/68 - \(x\^2\ y\^5\)\/68 + \(19\ y\^6\)\/204 + \(x\ y\^6\)\/22 + \ \(x\^2\ y\^6\)\/102 + \(19\ y\^7\)\/204 + \(x\ y\^7\)\/36 + \(x\^2\ \ y\^7\)\/102\), \(6\/17 + \(6\ y\)\/17 + \(5\ x\ y\)\/12 + \(x\ y\^2\)\/2 + \ \(5\ y\^4\)\/34 + \(5\ y\^5\)\/34 + \(x\ y\^5\)\/12\), \(1\/68 - \(3\ x\)\/44 \ - \(3\ x\^5\)\/44 - x\^6\/68 + y\/68 - \(x\^6\ y\)\/68 + \(3\ x\^3\ y\^2\)\/22 + \(x\ y\^3\)\ \/12 - \(x\^5\ y\^3\)\/12\), \(\(-\(11\/204\)\) + x\/22 + \(5\ x\^2\)\/204 + \(7\ x\^4\)\/68 - \(13\ \ x\^6\)\/204 - x\^7\/22 - x\^8\/102 - \(11\ y\)\/204 + \(x\ y\)\/36 + \(5\ x\^2\ \ y\)\/204 + \(7\ x\^4\ y\)\/68 - \(x\^5\ y\)\/12 - \(13\ x\^6\ y\)\/204 + \ \(x\^7\ y\)\/18 - \(x\^8\ y\)\/102\)}, {\(\(-\(1\/36\)\) - x\/36 - y\/36 + \(x\ y\)\/36 - y\^2\/36 - \(x\ y\^2\)\/36 + \(5\ y\^4\)\/36 + \(5\ x\ y\^4\)\ \/36 + y\^5\/12 - \(x\ y\^5\)\/12 - y\^6\/12 - \(x\ y\^6\)\/12 - y\^7\/18 + \(x\ y\^7\)\/18\), \(\(-\(1\/36\)\) - x\/36 + \(x\^3\ y\)\/12 + y\^2\/36 + \(x\ y\^2\)\/36 + y\^3\/12 - y\^5\/12 - \(x\^3\ y\^5\)\/12\), \(7\/18 + \(7\ x\)\/18 + x\^4\/9 + x\^5\/9 + \(5\ x\ y\)\/12 + \(5\ x\^2\ y\)\/12 + \(x\^4\ \ y\)\/12 + \(x\^5\ y\)\/12\), \(\(-\(1\/12\)\) - x\/12 + x\^6\/12 + x\^7\/12 + y\/36 + \(x\ y\)\/18 - \(x\^3\ y\)\/12 - \(x\^4\ y\)\/12 + \ \(x\^6\ y\)\/18 + \(x\^7\ y\)\/36\)}, { "0", \(\(-\(y\/8\)\) - \(x\ y\)\/28 + y\^5\/8 + \(3\ x\ y\^5\)\/28 - \(x\ y\^7\)\/14\), \(\(-\(x\^3\ \/12\)\) - y\/8 + y\^2\/4 - \(x\^2\ y\^2\)\/4 + y\^3\/8 + \(x\^3\ y\^4\)\/12\), \(1\/4 + x\/2 + x\^2\/4 + x\^3\/12 - x\^5\/12 + \(x\ y\)\/28 + \(3\ x\^2\ y\)\/8 + \(3\ x\^3\ \ y\)\/7 + \(x\^4\ y\)\/8 + \(x\^5\ y\)\/28 + \(x\^3\ y\^2\)\/12 - \(x\^5\ y\^2\ \)\/12 + \(x\ y\^3\)\/14 - \(x\^3\ y\^3\)\/7 + \(x\^5\ y\^3\)\/14\)} }], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"], Cell[BoxData[ \(133\/144\)], "Output"] }, Open ]], Cell[TextData[{ "Show that four\[Hyphen]direction quadratic box spline is ", Cell[BoxData[ \(\[ScriptCapitalC]\^1\)]], "." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(s = \(1\/4\) \((1 + x)\) \((1 + y)\) \((1 + x\ y)\) \((x + \ y)\);\)\), "\[IndentingNewLine]", \(checkRoots[s, 1]\), "\n", \(MatrixForm[ t = computeMatrixMask[s, {4, 4}, 1]]\), "\[IndentingNewLine]", \(matrixNorm2D[t, 3]\)}], "Input", CellTags->"EQ quad box difference"], Cell[BoxData[ \(True\)], "Output"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(1\/2 + \(x\ y\)\/2 + \(x\ y\^2\)\/2 + y\^3\/2\), \(\(-\(1\/2\)\) + x\/2 + y\/2 - \(x\ y\)\/2\), "0"}, {"0", \(x\/2 + y\/2 + \(x\^2\ y\)\/2 + \(x\ y\^2\)\/2\), "0"}, { "0", \(\(-\(1\/2\)\) + x\/2 - \(x\ y\)\/2 + y\^3\/2\), \(1\/2 + x\^3\/2 + y\/2 + \(x\ y\)\/2\)} }], "\[NoBreak]", ")"}], Function[ BoxForm`e$, MatrixForm[ BoxForm`e$]]]], "Output"], Cell[BoxData[ \(1\/2\)], "Output"] }, Open ]] }, Closed]] }, Open ]], Cell[CellGroupData[{ Cell["Example: Bivariate interpolatory schemes", "Subsection"], Cell[CellGroupData[{ Cell["Smoothness test for the butterfly scheme", "Subsubsection", CellTags->"SUBSEC butterfly scheme"], Cell[TextData[{ "Below is the subdivision mask for the Butterfly scheme on the three\ \[Hyphen]direction uniform grid. Observe that this mask has zeroes consist \ with cubic precision. We use ", Cell[BoxData[ \(computeMatrixMask\)]], " to construct the matrix of masks for the difference of the first divided \ differences." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[{ RowBox[{ RowBox[{"s", "=", RowBox[{"makeGenFun", "[", RowBox[{ RowBox[{\(1\/16\), RowBox[{"(", GridBox[{ {"0", "0", "0", "0", \(-1\), \(-1\), "0"}, {"0", "0", \(-1\), "0", "2", "0", \(-1\)}, {"0", \(-1\), "2", "8", "8", "2", \(-1\)}, {"0", "0", "8", "16", "8", "0", "0"}, {\(-1\), "2", "8", "8", "2", \(-1\), "0"}, {\(-1\), "0", "2", "0", \(-1\), "0", "0"}, {"0", \(-1\), \(-1\), "0", "0", "0", "0"} }], ")"}]}], ",", \({\(-3\), \(-3\)}\), ",", "x", ",", "y"}], "]"}]}], ";"}], "\[IndentingNewLine]", \(checkRoots[s, 3]\), "\[IndentingNewLine]", \(t = computeMatrixMask[\(x\^3\) \(y\^3\) s, {6, 6}, 1]\)}], "Input"], Cell[BoxData[ \(True\)], "Output"], Cell[BoxData[ \({{23\/288 + \(3\ x\)\/56 + \(23\ x\^2\)\/144 - x\^3\/28 + \(5\ x\^4\)\/288 - \(x\ y\)\/6 - \(x\^2\ y\)\/8 + \(x\^3\ \ y\)\/4 - \(x\^4\ y\)\/8 - \(35\ y\^2\)\/192 - \(5\ x\ y\^2\)\/28 + \(x\^2\ \ y\^2\)\/9 + \(17\ x\^3\ y\^2\)\/56 - \(29\ x\^4\ y\^2\)\/192 + \(x\ y\^3\)\/3 \ + x\^2\ y\^3 + \(25\ x\ y\^4\)\/56 + \(61\ x\^2\ y\^4\)\/144 - y\^5\/8 + \(x\ y\^5\)\/12 - \(x\^2\ y\^5\)\/8 - \(13\ y\^6\)\/576 - \ \(x\ y\^6\)\/14 + \(x\^2\ y\^6\)\/18 - \(x\^3\ y\^6\)\/56 + \(5\ x\^4\ y\^6\)\ \/576, 0, \(-\(23\/288\)\) - \(3\ x\)\/56 + x\^3\/7 + \(7\ x\^4\)\/72 - \(5\ x\^7\)\/56 - \(5\ x\^8\)\/288 + \ \(x\ y\)\/6 - \(x\^3\ y\)\/3 + \(x\^5\ y\)\/6 + \(13\ y\^2\)\/576 - \(3\ x\ y\ \^2\)\/56 + \(7\ x\^2\ y\^2\)\/288 + \(x\^5\ y\^2\)\/28 - \(11\ x\^6\ \ y\^2\)\/288 + \(x\^7\ y\^2\)\/56 - \(5\ x\^8\ y\^2\)\/576}, {\(-\(1\/8\)\) - \ \(3\ x\ y\)\/16 - \(3\ x\^2\ y\)\/16 + \(9\ x\^3\ y\)\/112 - y\^2\/8 - \(5\ x\ y\^2\)\/16 - \(3\ y\^3\)\/88 + \(13\ x\ \ y\^3\)\/112 + \(47\ x\^2\ y\^3\)\/176 + y\^4\/8 + \(x\ y\^4\)\/4 - \(17\ x\^2\ y\^5\)\/176 - \(13\ x\^3\ \ y\^5\)\/112 + y\^6\/8 + \(x\ y\^6\)\/16 + \(3\ y\^7\)\/88 + \(x\ y\^7\)\/14 + \(3\ \ x\^2\ y\^7\)\/176 + \(x\^3\ y\^7\)\/28, 3\/8 + \(3\ y\)\/44 + \(37\ x\ y\)\/112 + \(x\^2\ y\^2\)\/8 + \(19\ x\ \^2\ y\^3\)\/44 + \(19\ x\^3\ y\^3\)\/112 + \(x\ y\^4\)\/2, \(-\(1\/4\)\) + x\^2\/8 + x\^6\/8 - \(3\ y\)\/44 - \(x\ y\)\/7 + \(23\ x\^2\ y\)\/176 + \(11\ \ x\^5\ y\)\/112 - \(x\^6\ y\)\/16 + \(5\ x\^7\ y\)\/112 + \(3\ x\ y\^2\)\/16 - \ \(3\ x\^5\ y\^2\)\/16 - \(3\ y\^3\)\/88 + \(3\ x\ y\^3\)\/56 + \(9\ x\^2\ \ y\^3\)\/176 - \(x\^3\ y\^3\)\/56 - \(3\ x\^6\ y\^3\)\/176 - \(x\^7\ \ y\^3\)\/28}, {\(x\ y\)\/6 - \(11\ x\^2\ y\)\/56 - \(7\ y\^2\)\/136 - \(5\ \ x\^2\ y\^2\)\/136 - y\^3\/14 - \(x\ y\^3\)\/3 + \(13\ x\^2\ y\^3\)\/56 + \(x\ \ y\^4\)\/16 + \(2\ x\^2\ y\^4\)\/17 + \(15\ y\^5\)\/56 + \(x\ y\^5\)\/6 + y\^6\/34 - \(11\ y\^7\)\/56 - \(x\^2\ y\^7\)\/28 + \(3\ y\^8\)\/136 \ - \(x\ y\^8\)\/16 - \(11\ x\^2\ y\^8\)\/136, x\^3\/8 - \(x\ y\^2\)\/8, \(-\(x\^3\/8\)\) - x\^4\/8 - \(x\ y\)\/6 + \(x\^2\ y\)\/14 + \(x\^3\ y\)\/3 + \(3\ \ x\^4\ y\)\/28 + \(x\^5\ y\)\/12 + \(x\^6\ y\)\/14 + \(7\ y\^2\)\/136 + \(59\ \ x\^2\ y\^2\)\/136 + \(3\ x\^3\ y\^2\)\/4 + \(7\ x\^4\ y\^2\)\/68 + \(11\ x\^6\ \ y\^2\)\/68 + y\^3\/14 + \(x\ y\^3\)\/4 + \(x\^2\ y\^3\)\/7 + \(x\^6\ y\^3\)\/28 \ - \(3\ y\^4\)\/136 - \(x\ y\^4\)\/16 - \(x\^3\ y\^4\)\/8 - \(25\ x\^4\ y\^4\)\ \/136 + \(x\^5\ y\^4\)\/16 + \(11\ x\^6\ y\^4\)\/136}}\)], "Output"] }, Open ]], Cell[TextData[{ Cell[BoxData[ \(normMatrix2D\)]], " returns values of ", Cell[BoxData[ \(1.5, 2.06658, 1.8632, 1.47043, \ 1.16169, \ 0.879105\)]], " for ", Cell[BoxData[ \(k \[Equal] 1 \[Ellipsis]5\)]] }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(matrixNorm2D[t, 5] // N\) // Timing\)], "Input"], Cell[BoxData[ \({76.28999999999996`\ Second, 0.9360794778507057`}\)], "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell["Smoothness test for a interpolatory quad scheme", "Subsubsection", CellTags->"SUBSEC interpolatory quad scheme"], Cell["\<\ Construct a second interpolatory mask for two\[Hyphen]direction tensor \ product grids. Note that the mask itself is not tensor product and has \ smaller support than the tensor product of the four\[Hyphen]point mask with \ itself. Observe that mask reproduces quadratic functions.\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[{ RowBox[{ RowBox[{"s", "=", RowBox[{"makeGenFun", "[", RowBox[{ RowBox[{\(1\/32\), RowBox[{"(", GridBox[{ {"0", "0", \(-1\), \(-2\), \(-1\), "0", "0"}, {"0", "0", "0", "0", "0", "0", "0"}, {\(-1\), "0", "10", "18", "10", "0", \(-1\)}, {\(-2\), "0", "18", "32", "18", "0", \(-2\)}, {\(-1\), "0", "10", "18", "10", "0", \(-1\)}, {"0", "0", "0", "0", "0", "0", "0"}, {"0", "0", \(-1\), \(-2\), \(-1\), "0", "0"} }], ")"}]}], ",", \({\(-3\), \(-3\)}\), ",", "x", ",", "y"}], "]"}]}], ";"}], "\n", \(checkRoots[s, 2]\), "\[IndentingNewLine]", \(t = computeMatrixMask[\(x\^3\) \(y\^3\) s, {6, 6}, 1]\)}], "Input"], Cell[BoxData[ \(True\)], "Output"], Cell[BoxData[ \({{\(2\ x\)\/15 - x\^2\/16 + x\^3\/15 + y\/32 + \(x\ y\)\/20 + \(x\^2\ y\)\/48 + \(x\^3\ y\)\/40 + \(x\^4\ \ y\)\/96 - y\^2\/16 + \(7\ x\^2\ y\^2\)\/16 + \(7\ x\^3\ y\^2\)\/80 - \(x\^4\ \ y\^2\)\/16 - \(3\ y\^3\)\/16 + \(17\ x\^2\ y\^3\)\/24 + \(x\^3\ y\^3\)\/5 - \ \(7\ x\^4\ y\^3\)\/48 - y\^4\/16 - \(x\ y\^4\)\/40 + \(7\ x\^2\ y\^4\)\/16 - \(x\^4\ y\^4\)\ \/16 + y\^5\/32 + \(x\ y\^5\)\/5 + \(x\^2\ y\^5\)\/48 + \(x\^3\ y\^5\)\/40 + \ \(x\^4\ y\^5\)\/96 + \(17\ x\ y\^6\)\/120 - \(x\^2\ y\^6\)\/16 + \(23\ x\^3\ \ y\^6\)\/240, \(-\(\(3\ x\)\/16\)\) + \(3\ x\ y\)\/20 - \(3\ x\^3\ y\^3\)\/20 \ + \(3\ x\ y\^4\)\/16, \(13\ x\)\/240 + x\^3\/80 - x\^7\/15 - y\/32 - \(x\ y\)\/5 + \(x\^2\ y\)\/24 + \(9\ x\^3\ y\)\/40 - \(x\^7\ \ y\)\/40 - \(x\^8\ y\)\/96 + \(11\ x\ y\^2\)\/240 + \(x\^5\ y\^2\)\/20 - \ \(23\ x\^7\ y\^2\)\/240}, {1\/16 + \(5\ x\)\/336 + x\^2\/16 - x\^3\/42 - \(19\ y\)\/96 - \(13\ x\ y\)\/96 - \(x\^2\ y\)\/48 + \(x\ \^3\ y\)\/48 - y\^2\/8 + \(x\^3\ y\^2\)\/7 - \(x\ y\^4\)\/7 - \(x\^2\ y\^4\)\/16 - \ \(17\ x\^3\ y\^4\)\/112 + \(7\ y\^5\)\/32 + \(17\ x\ y\^5\)\/96 + y\^6\/16 + \(43\ x\ y\^6\)\/336 + \(11\ x\^3\ y\^6\)\/336 - y\^7\/48 - \(x\ y\^7\)\/24 + \(x\^2\ y\^7\)\/48 - \(x\^3\ \ y\^7\)\/48, \(5\ y\)\/16 + \(11\ x\ y\)\/48 + \(5\ x\^2\ y\^2\)\/16 + \(19\ x\ \^3\ y\^2\)\/56 + \(3\ x\^4\ y\^2\)\/16 + \(x\ y\^3\)\/16 + \(3\ x\^2\ y\^3\)\ \/16 + \(5\ x\^3\ y\^3\)\/24 + \(9\ x\ y\^4\)\/56, \(-\(1\/16\)\) - \(5\ \ x\)\/336 - x\^3\/112 + x\^4\/8 - x\^6\/16 + x\^7\/42 - \(11\ y\)\/96 - \(3\ x\ y\)\/32 + \(3\ x\^4\ y\)\/32 + \ \(11\ x\^5\ y\)\/96 + \(x\^6\ y\)\/48 - \(x\^7\ y\)\/48 - y\^2\/16 + \(11\ x\ y\^2\)\/336 + \(x\^2\ y\^2\)\/16 - \(11\ x\^7\ \ y\^2\)\/336 + y\^3\/48 + \(x\ y\^3\)\/24 - \(x\^5\ y\^3\)\/16 - \(x\^6\ \ y\^3\)\/48 + \(x\^7\ y\^3\)\/48}, {\(-\(\(9\ y\)\/64\)\) - \(x\ y\)\/8 + \(7\ \ y\^3\)\/32 - y\^5\/64 + \(x\ y\^5\)\/4 - y\^7\/16 - \(x\ y\^7\)\/8, \(-\(y\^2\/16\)\) + \(x\^3\ y\^2\)\/8 + \ \(x\ y\^3\)\/8 - \(x\^3\ y\^3\)\/8 + y\^4\/16 - \(x\^3\ y\^4\)\/8, \(-\(x\^2\/16\)\) - x\^3\/8 - x\^4\/16 + \(9\ y\)\/64 + \(x\ y\)\/8 - \(5\ x\^2\ y\)\/32 + \(17\ \ x\^4\ y\)\/64 + \(x\^5\ y\)\/8 + \(3\ x\^2\ y\^2\)\/8 + \(5\ x\^3\ y\^2\)\/8 \ + \(7\ x\^4\ y\^2\)\/16 + \(x\^5\ y\^2\)\/8 - \(x\^6\ y\^2\)\/16 + y\^3\/16 + \(x\ y\^3\)\/8 + \(3\ x\^4\ y\^3\)\/16 + \(x\^5\ \ y\^3\)\/8 - \(x\^2\ y\^4\)\/16 - \(x\^3\ y\^4\)\/8 - \(x\^4\ y\^4\)\/16}}\)], \ "Output"] }, Open ]], Cell[TextData[{ "Compute ", Cell[BoxData[ \(\[LeftDoubleBracketingBar]T\[RightDoubleBracketingBar]\^k\)]], " for various values of ", Cell[BoxData[ \(k\)]], ". Values are ", Cell[BoxData[ \(1.25, 1.30078125`, 1.010015523136338`, 0.7151329990556258`\)]] }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(matrixNorm2D[N[t], 4]\)], "Input"], Cell[BoxData[ \(0.7151329990556258`\)], "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell["Create figure", "Subsubsection"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"Show", "[", RowBox[{"GraphicsArray", "[", RowBox[{"{", "\[IndentingNewLine]", RowBox[{ RowBox[{"plotGen2D", "[", RowBox[{ RowBox[{"subdivide2D", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"makeGenFun", "[", RowBox[{ RowBox[{\(1\/16\), RowBox[{"(", GridBox[{ {"0", "0", "0", "0", \(-1\), \(-1\), "0"}, {"0", "0", \(-1\), "0", "2", "0", \(-1\)}, {"0", \(-1\), "2", "8", "8", "2", \(-1\)}, {"0", "0", "8", "16", "8", "0", "0"}, {\(-1\), "2", "8", "8", "2", \(-1\), "0"}, {\(-1\), "0", "2", "0", \(-1\), "0", "0"}, {"0", \(-1\), \(-1\), "0", "0", "0", "0"} }], ")"}]}], ",", \({\(-3\), \(-3\)}\), ",", "x", ",", "y"}], "]"}], ",", "1", ",", "3"}], "]"}], ",", \({{\(-2\), 2}, {\(-2\), 2}}\), ",", "3", ",", "x", ",", "y", ",", \(PlotRange \[Rule] All\)}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"plotGen2D", "[", RowBox[{ RowBox[{"subdivide2D", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"makeGenFun", "[", RowBox[{ RowBox[{\(1\/32\), RowBox[{"(", GridBox[{ {"0", "0", \(-1\), \(-2\), \(-1\), "0", "0"}, {"0", "0", "0", "0", "0", "0", "0"}, {\(-1\), "0", "10", "18", "10", "0", \(-1\)}, {\(-2\), "0", "18", "32", "18", "0", \(-2\)}, {\(-1\), "0", "10", "18", "10", "0", \(-1\)}, {"0", "0", "0", "0", "0", "0", "0"}, {"0", "0", \(-1\), \(-2\), \(-1\), "0", "0"} }], ")"}]}], ",", \({\(-3\), \(-3\)}\), ",", "x", ",", "y"}], "]"}], ",", "1", ",", "3"}], "]"}], ",", \({{\(-2\), 2}, {\(-2\), 2}}\), ",", "3", ",", "x", ",", "y", ",", \(PlotRange \[Rule] All\)}], "]"}]}], "}"}], "]"}], "]"}]], "Input", CellTags->"FIG butterfly and kobbelt"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] GraphicsArray \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]] }, Closed]] }, Open ]] }, Open ]] }, Open ]] }, FrontEndVersion->"4.0 for Microsoft Windows", ScreenRectangle->{{0, 1280}, {0, 951}}, AutoGeneratedPackage->None, WindowSize->{1016, 668}, WindowMargins->{{0, Automatic}, {Automatic, 0}}, Magnification->1.25, StyleDefinitions -> Notebook[{ Cell[CellGroupData[{ Cell["Style Definitions", "Subtitle"], Cell["\<\ Modify the definitions below to change the default appearance of all cells in \ a given style. Make modifications to any definition using commands in the \ Format menu.\ \>", "Text"], Cell[CellGroupData[{ Cell["Style Environment Names", "Section"], Cell[StyleData[All, "Working"], PageWidth->WindowWidth, ScriptMinSize->9], Cell[StyleData[All, "Presentation"], PageWidth->WindowWidth, ScriptMinSize->12, FontSize->16], Cell[StyleData[All, "Condensed"], PageWidth->WindowWidth, CellBracketOptions->{"Margins"->{1, 1}, "Widths"->{0, 5}}, ScriptMinSize->8, FontSize->11], Cell[StyleData[All, "Printout"], PageWidth->PaperWidth, ScriptMinSize->7, FontSize->10, PrivateFontOptions->{"FontType"->"Outline"}] }, Open ]], Cell[CellGroupData[{ Cell["Notebook Options", "Section"], Cell["\<\ The options defined for the style below will be used at the Notebook level.\ \>", "Text"], Cell[StyleData["Notebook"], PageHeaders->{{Cell[ TextData[ { CounterBox[ "Page"]}], "PageNumber"], Cell[ TextData[ { ValueBox[ "DateLong"]}], "Header"], Cell[ TextData[ {"Chapter ", CounterBox[ "Chapter"]}], "Header"]}, {Cell[ TextData[ {"Chapter ", CounterBox[ "Chapter"]}], "Header"], Cell[ TextData[ { ValueBox[ "DateLong"]}], "Header"], Cell[ TextData[ { CounterBox[ "Page"]}], "PageNumber"]}}, PageHeaderLines->{True, True}, PrintingOptions->{"PrintingMargins"->{{108, 72}, {72, 72}}, "FirstPageHeader"->False, "FacingPages"->True}, CellFrameLabelMargins->6, TextJustification->1, LineSpacing->{2, 0}, StyleMenuListing->None, FontSize->12] }, Open ]], Cell[CellGroupData[{ Cell["Styles for Headings", "Section"], Cell[CellGroupData[{ Cell[StyleData["Title"], ShowCellBracket->False, CellMargins->{{0, 0}, {0, 0}}, PageBreakBelow->False, TextAlignment->Center, CounterIncrements->"Title", CounterAssignments->{{"Section", 0}, {"Equation", 0}, {"Figure", 0}, { "Subtitle", 0}, {"Chapter", 0}}, FontSize->34, FontColor->GrayLevel[1], Background->RGBColor[0.571389, 0.19675, 0.570504]], Cell[StyleData["Title", "Presentation"], CellMargins->{{0, 0}, {0, 0}}, FontSize->44], Cell[StyleData["Title", "Condensed"], CellMargins->{{0, 0}, {0, 0}}, FontSize->20], Cell[StyleData["Title", "Printout"], CellMargins->{{0, 0}, {0, 0}}, FontSize->24, FontTracking->"Plain", Background->GrayLevel[0]] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Subtitle"], ShowCellBracket->False, CellMargins->{{0, 0}, {0, 0}}, PageBreakBelow->False, TextAlignment->Center, ParagraphIndent->-96, CounterIncrements->"Subtitle", CounterAssignments->{{"Section", 0}, {"Equation", 0}, {"Figure", 0}, { "Chapter", 0}}, FontFamily->"Helvetica", FontSize->18, FontColor->GrayLevel[1], Background->RGBColor[0.2, 0.700008, 0.700008]], Cell[StyleData["Subtitle", "Presentation"], CellMargins->{{0, 0}, {0, 0}}, ParagraphIndent->-157, FontSize->30], Cell[StyleData["Subtitle", "Condensed"], CellMargins->{{0, 0}, {0, 0}}, ParagraphIndent->-78, FontSize->14], Cell[StyleData["Subtitle", "Printout"], CellMargins->{{0, 0}, {0, 0}}, ParagraphIndent->-85, FontSize->16, Background->GrayLevel[0.6]] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Chapter"], CellFrame->False, ShowCellBracket->True, ShowGroupOpenCloseIcon->False, ShowShortBoxForm->False, CellMargins->{{10, 4}, {50, 150}}, CellGroupingRules->{"SectionGrouping", 20}, PageBreakBelow->False, CellFrameLabels->{{Cell[ TextData[ {"Chapter ", CounterBox[ "Chapter"], ": "}]], None}, {None, None}}, CounterIncrements->"Chapter", CounterAssignments->{{"Section", 0}, {"NumberedEquation", 0}, { "NumberedFigure", 0}, {"NumberedTable", 0}, {"Theorem", 0}}, FontFamily->"Helvetica", FontSize->24, FontSlant->"Italic", Background->GrayLevel[1]], Cell[StyleData["Chapter", "Presentation"], CellMargins->{{8, 10}, {40, 20}}, FontSize->24], Cell[StyleData["Chapter", "Condensed"], CellMargins->{{8, 10}, {12, 8}}, FontSize->12], Cell[StyleData["Chapter", "Printout"], CellMargins->{{9, 10}, {50, 10}}, FontSize->14] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Section"], CellFrame->False, CellDingbat->None, CellMargins->{{12, Inherited}, {4, 24}}, CellGroupingRules->{"SectionGrouping", 30}, PageBreakBelow->False, CellFrameMargins->6, CellFrameLabels->{{Cell[ TextData[ { CounterBox[ "Chapter"], ".", CounterBox[ "Section"], " "}]], None}, {None, None}}, CounterIncrements->"Section", CounterAssignments->{{"Subsection", 0}, {"Subsubsection", 0}}, FontFamily->"Helvetica", FontSize->18, FontWeight->"Bold", FontColor->GrayLevel[0]], Cell[StyleData["Section", "Presentation"], CellMargins->{{10, 10}, {8, 32}}, FontSize->24, FontTracking->"Condensed"], Cell[StyleData["Section", "Condensed"], CellMargins->{{8, Inherited}, {2, 12}}, FontSize->12], Cell[StyleData["Section", "Printout"], CellMargins->{{9, 0}, {2, 50}}, FontSize->14, FontTracking->"Plain", FontColor->GrayLevel[0]] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Subsection"], CellMargins->{{12, Inherited}, {8, 20}}, CellGroupingRules->{"SectionGrouping", 40}, PageBreakBelow->False, CellFrameLabels->{{Cell[ TextData[ { CounterBox[ "Chapter"], ".", CounterBox[ "Section"], ".", CounterBox[ "Subsection"], " "}]], None}, {None, None}}, CounterIncrements->"Subsection", CounterAssignments->{{"Subsubsection", 0}}, FontFamily->"Helvetica", FontSize->13, FontWeight->"Bold"], Cell[StyleData["Subsection", "Presentation"], CellMargins->{{11, 10}, {8, 32}}, FontSize->22], Cell[StyleData["Subsection", "Condensed"], CellMargins->{{8, Inherited}, {2, 12}}, FontSize->12], Cell[StyleData["Subsection", "Printout"], CellMargins->{{9, 0}, {4, 40}}, FontSize->12] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Subsubsection"], CellDingbat->"\[FilledSquare]", CellMargins->{{25, Inherited}, {8, 12}}, CellGroupingRules->{"SectionGrouping", 50}, PageBreakBelow->False, CounterIncrements->"Subsubsection", FontFamily->"Times", FontSize->12, FontWeight->"Bold"], Cell[StyleData["Subsubsection", "Presentation"], CellMargins->{{29, 10}, {8, 26}}, FontSize->18], Cell[StyleData["Subsubsection", "Condensed"], CellMargins->{{22, Inherited}, {2, 12}}, FontSize->10], Cell[StyleData["Subsubsection", "Printout"], CellMargins->{{21, 0}, {4, 20}}, FontSize->11] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Styles for Body Text", "Section"], Cell[CellGroupData[{ Cell[StyleData["Text"], CellMargins->{{12, 10}, {5, 5}}, PageBreakWithin->True, TextJustification->1, Hyphenation->True, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 12}, CounterIncrements->"Text", FontFamily->"Times"], Cell[StyleData["Text", "Presentation"], CellMargins->{{13, 10}, {8, 8}}, TextJustification->1, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 12}], Cell[StyleData["Text", "Condensed"], CellMargins->{{8, 10}, {4, 4}}, TextJustification->1, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 4}], Cell[StyleData["Text", "Printout"], CellMargins->{{9, 0}, {4, 4}}, TextJustification->1, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 6}] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Itemize"], CellDingbat->"\[FilledSmallCircle]", CellMargins->{{36, 10}, {5, 5}}, TextJustification->1, Hyphenation->True, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 12}, CounterIncrements->"Text", FontFamily->"Times"], Cell[StyleData["Itemize", "Presentation"], CellDingbat->"\[FilledSmallCircle]", CellMargins->{{36, 10}, {8, 8}}, TextJustification->1, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 12}], Cell[StyleData["Itemize", "Condensed"], CellDingbat->"\[FilledSmallCircle]", CellMargins->{{36, 10}, {4, 4}}, TextJustification->1, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 4}], Cell[StyleData["Itemize", "Printout"], CellDingbat->"\[FilledSmallCircle]", CellMargins->{{36, 0}, {4, 4}}, TextJustification->1, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 6}] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["ItemizeFollow"], CellMargins->{{36, 10}, {0, 0}}, TextJustification->1, Hyphenation->True, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 12}, CounterIncrements->"Text", FontFamily->"Times"], Cell[StyleData["ItemizeFollow", "Presentation"], CellMargins->{{36, 10}, {0, 0}}, TextJustification->1, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 12}], Cell[StyleData["ItemizeFollow", "Condensed"], CellMargins->{{36, 10}, {0, 0}}, TextJustification->1, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 4}], Cell[StyleData["ItemizeFollow", "Printout"], CellMargins->{{36, 0}, {0, 0}}, TextJustification->1, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 6}] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["SmallText"], CellMargins->{{12, 10}, {5, 5}}, TextJustification->1, Hyphenation->True, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 6}, CounterIncrements->"SmallText", FontFamily->"Helvetica", FontSize->9], Cell[StyleData["SmallText", "Presentation"], CellMargins->{{13, 10}, {8, 8}}, TextJustification->1, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, FontSize->12], Cell[StyleData["SmallText", "Condensed"], CellMargins->{{8, 10}, {2, 2}}, TextJustification->1, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, FontSize->9], Cell[StyleData["SmallText", "Printout"], CellMargins->{{9, 0}, {4, 4}}, TextJustification->1, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, FontSize->7] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Styles for Input/Output", "Section"], Cell["\<\ The cells in this section define styles used for input and output to the \ kernel. Be careful when modifying, renaming, or removing these styles, \ because the front end associates special meanings with these style names.\ \>", "Text"], Cell[CellGroupData[{ Cell[StyleData["Input"], CellMargins->{{52, 10}, {8, 8}}, Evaluatable->True, CellGroupingRules->"InputGrouping", CellHorizontalScrolling->True, PageBreakWithin->False, GroupPageBreakWithin->False, CellLabelMargins->{{5, Inherited}, {Inherited, Inherited}}, DefaultFormatType->DefaultInputFormatType, FormatType->InputForm, ShowStringCharacters->True, NumberMarks->True, CounterIncrements->"Input", FontWeight->"Bold", FontColor->GrayLevel[0], Background->RGBColor[0.500008, 1, 0.500008]], Cell[StyleData["Input", "Presentation"], CellMargins->{{62, Inherited}, {10, 10}}], Cell[StyleData["Input", "Condensed"], CellMargins->{{40, 10}, {4, 4}}], Cell[StyleData["Input", "Printout"], CellFrame->True, CellMargins->{{44, 0}, {6, 6}}, Background->None] }, Open ]], Cell[StyleData["InlineInput"], CellFrame->True, Evaluatable->True, CellGroupingRules->"InputGrouping", CellHorizontalScrolling->True, PageBreakWithin->False, GroupPageBreakWithin->False, DefaultFormatType->DefaultInputFormatType, AutoItalicWords->{}, FormatType->InputForm, ShowStringCharacters->True, NumberMarks->True, CounterIncrements->"Input", FontWeight->"Bold", Background->GrayLevel[0.849989]], Cell[CellGroupData[{ Cell[StyleData["Output"], CellMargins->{{52, 10}, {8, 8}}, CellEditDuplicate->True, CellGroupingRules->"OutputGrouping", CellHorizontalScrolling->True, PageBreakWithin->False, GroupPageBreakWithin->False, GeneratedCell->True, CellAutoOverwrite->True, CellLabelMargins->{{3, Inherited}, {Inherited, Inherited}}, DefaultFormatType->DefaultOutputFormatType, FormatType->InputForm, CounterIncrements->"Output", Background->RGBColor[1, 1, 0.300008]], Cell[StyleData["Output", "Presentation"], CellMargins->{{62, Inherited}, {12, 5}}], Cell[StyleData["Output", "Condensed"], CellMargins->{{40, Inherited}, {4, 1}}], Cell[StyleData["Output", "Printout"], CellFrame->True, CellMargins->{{44, 0}, {6, 2}}, Background->None] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Unique Styles", "Section"], Cell[CellGroupData[{ Cell[StyleData["Author"], ShowCellBracket->False, CellMargins->{{10, 4}, {2, 10}}, TextAlignment->Center, FontSize->16, FontSlant->"Italic"], Cell[StyleData["Author", "Presentation"], CellMargins->{{12, 10}, {2, 12}}, ParagraphSpacing->{0, 12}, FontSize->20], Cell[StyleData["Author", "Condensed"], CellMargins->{{8, 10}, {1, 4}}, ParagraphSpacing->{0, 4}, FontSize->12], Cell[StyleData["Author", "Printout"], CellMargins->{{9, 0}, {4, 12}}, ParagraphSpacing->{0, 6}, FontSize->14] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Copyright"], ShowCellBracket->False, CellMargins->{{10, 10}, {40, 2}}, FontFamily->"Helvetica", FontSize->9], Cell[StyleData["Copyright", "Presentation"], CellMargins->{{12, 10}, {50, 2}}, FontSize->12], Cell[StyleData["Copyright", "Condensed"], CellMargins->{{8, 10}, {12, 1}}, FontSize->9], Cell[StyleData["Copyright", "Printout"], CellMargins->{{9, 0}, {72, 4}}, FontSize->7] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Styles for Equations, Figures, Theorems etc.", "Section"], Cell["\<\ The following styles are useful for numbered equations, figures, etc. They \ automatically give the cell a FrameLabel containing a reference to a \ particular counter, and also increment that counter.\ \>", "Text"], Cell[StyleData["Reference"], CellFrame->False, PageBreakWithin->False, GroupPageBreakWithin->False, CellFrameLabels->{{Cell[ TextData[ {"[", CounterBox[ "Reference"], "] "}]], None}, {None, None}}, ShowStringCharacters->True, CounterIncrements->"Reference"], Cell[CellGroupData[{ Cell[StyleData["Example"], CellMargins->{{12, 10}, {5, 12}}, PageBreakBelow->False, ParagraphSpacing->{0, 12}, CounterIncrements->"Example", FontFamily->"Times", FontWeight->"Bold"], Cell[StyleData["Example", "Presentation"], CellMargins->{{18, 10}, {8, 20}}, ParagraphSpacing->{0, 12}], Cell[StyleData["Example", "Condensed"], CellMargins->{{8, 10}, {4, 8}}, ParagraphSpacing->{0, 4}], Cell[StyleData["Example", "Printout"], CellMargins->{{9, 0}, {4, 10}}, ParagraphSpacing->{0, 6}] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["ExampleCode"], CellMargins->{{24, 10}, {0, 10}}, PageBreakBelow->False, DefaultNewCellStyle->"ExampleCodeExplanation", ParagraphSpacing->{0, 12}, CounterIncrements->"Example", FontFamily->"Times", FontWeight->"Plain", FontColor->RGBColor[0, 0, 0.996109]], Cell[StyleData["ExampleCode", "Presentation"], CellMargins->{{18, 10}, {8, 10}}, ParagraphSpacing->{0, 12}], Cell[StyleData["ExampleCode", "Condensed"], CellMargins->{{8, 10}, {4, 10}}, ParagraphSpacing->{0, 4}], Cell[StyleData["ExampleCode", "Printout"], CellMargins->{{9, 0}, {0, 10}}, ParagraphSpacing->{0, 6}] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["ExampleCodeExplanation"], CellMargins->{{24, 10}, {10, 0}}, PageBreakAbove->False, DefaultNewCellStyle->"ExampleCode", ParagraphSpacing->{0, 12}, CounterIncrements->"Example", FontFamily->"Times", FontWeight->"Plain", FontColor->GrayLevel[0.749996]], Cell[StyleData["ExampleCodeExplanation", "Presentation"], CellMargins->{{18, 10}, {8, 20}}, PageBreakAbove->False, ParagraphSpacing->{0, 12}], Cell[StyleData["ExampleCodeExplanation", "Condensed"], CellMargins->{{8, 10}, {4, 8}}, PageBreakAbove->False, ParagraphSpacing->{0, 4}], Cell[StyleData["ExampleCodeExplanation", "Printout"], CellMargins->{{9, 0}, {4, 0}}, PageBreakAbove->False, ParagraphSpacing->{0, 6}] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Proof"], CellFrame->False, CellMargins->{{52, 10}, {0, 0}}, PageBreakWithin->False, PageBreakBelow->False, GroupPageBreakWithin->False, CellLabelMargins->{{23, Inherited}, {Inherited, Inherited}}, CellFrameLabels->{{Cell[ TextData[ {"Proof "}]], None}, {None, None}}, ShowStringCharacters->True, CounterIncrements->"Proof", FontFamily->"Helvetica", FontWeight->"Bold", FontColor->RGBColor[0.2, 0.700008, 0.700008], Background->None], Cell[StyleData["Proof", "Presentation"], CellMargins->{{62, Inherited}, {0, 0}}, PageBreakBelow->False], Cell[StyleData["Proof", "Condensed"], CellMargins->{{40, 10}, {0, 0}}, PageBreakBelow->False], Cell[StyleData["Proof", "Printout"], CellMargins->{{44, 0}, {0, 0}}, PageBreakBelow->False] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Theorem"], CellFrame->False, CellMargins->{{52, 10}, {0, 0}}, PageBreakWithin->False, PageBreakBelow->False, GroupPageBreakWithin->False, CellLabelMargins->{{23, Inherited}, {Inherited, Inherited}}, CellFrameLabels->{{Cell[ TextData[ {"Theorem ", CounterBox[ "Chapter"], ".", CounterBox[ "Theorem"], " "}]], None}, {None, None}}, ShowStringCharacters->True, CounterIncrements->"Theorem", FontFamily->"Helvetica", FontWeight->"Bold", FontColor->RGBColor[0.571389, 0.19675, 0.570504], Background->None], Cell[StyleData["Theorem", "Presentation"], CellMargins->{{62, Inherited}, {0, 0}}, PageBreakBelow->False], Cell[StyleData["Theorem", "Condensed"], CellMargins->{{40, 10}, {0, 0}}, PageBreakBelow->False], Cell[StyleData["Theorem", "Printout"], CellMargins->{{44, 0}, {0, 0}}, PageBreakBelow->False] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Exercise"], CellDingbat->"\[FilledDownTriangle]", CellMargins->{{23, Inherited}, {4, 18}}, CellGroupingRules->{"SectionGrouping", 50}, PageBreakBelow->False, CounterIncrements->"Subsubsection", FontFamily->"Times", FontSize->13, FontWeight->"Bold", FontColor->RGBColor[0.571389, 0.19675, 0.570504], Background->None], Cell[StyleData["Exercise", "Presentation"], CellMargins->{{33, 10}, {8, 26}}, FontSize->18], Cell[StyleData["Exercise", "Condensed"], CellMargins->{{17, Inherited}, {2, 12}}, FontSize->10], Cell[StyleData["Exercise", "Printout"], CellFrame->{{0, 0}, {0.5, 0}}, CellDingbat->None, CellMargins->{{9, 0}, {6, 20}}, FontSize->11, FontColor->GrayLevel[0]] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["TheoremProofText"], CellMargins->{{52, 10}, {5, 5}}, TextJustification->1, ParagraphSpacing->{0, 12}, CounterIncrements->"Text", FontFamily->"Times"], Cell[StyleData["TheoremProofText", "Presentation"], CellMargins->{{52, 10}, {8, 8}}, TextJustification->1, ParagraphSpacing->{0, 12}], Cell[StyleData["TheoremProofText", "Condensed"], CellMargins->{{8, 10}, {4, 4}}, TextJustification->1, ParagraphSpacing->{0, 4}], Cell[StyleData["TheoremProofText", "Printout"], CellMargins->{{52, 0}, {4, 4}}, TextJustification->1, ParagraphSpacing->{0, 6}] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["NumberedEquation"], CellMargins->{{62, 10}, {Inherited, Inherited}}, CellFrameLabels->{{None, Cell[ TextData[ {"(", CounterBox[ "Chapter"], ".", CounterBox[ "NumberedEquation"], ")"}]]}, {None, None}}, DefaultFormatType->DefaultInputFormatType, TextAlignment->Center, CounterIncrements->"NumberedEquation", FormatTypeAutoConvert->False], Cell[StyleData["NumberedEquation", "Presentation"], CellMargins->{{74, 10}, {Inherited, Inherited}}], Cell[StyleData["NumberedEquation", "Condensed"], CellMargins->{{52, 10}, {Inherited, Inherited}}], Cell[StyleData["NumberedEquation", "Printout"], CellMargins->{{54, 0}, {Inherited, Inherited}}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Equation"], CellMargins->{{62, 10}, {Inherited, Inherited}}, DefaultFormatType->DefaultInputFormatType, TextAlignment->Center, FormatTypeAutoConvert->False], Cell[StyleData["Equation", "Presentation"], CellMargins->{{74, 10}, {Inherited, Inherited}}], Cell[StyleData["Equation", "Condensed"], CellMargins->{{52, 10}, {Inherited, Inherited}}], Cell[StyleData["Equation", "Printout"], CellMargins->{{54, 0}, {Inherited, Inherited}}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["NumberedFigure"], CellMargins->{{0, 0}, {0, 24}}, CellFrameLabels->{{None, None}, {Cell[ TextData[ {"Figure ", CounterBox[ "Chapter"], ".", CounterBox[ "NumberedFigure"]}]], None}}, TextAlignment->Center, CounterIncrements->"NumberedFigure", FormatTypeAutoConvert->False], Cell[StyleData["NumberedFigure", "Presentation"]], Cell[StyleData["NumberedFigure", "Condensed"]], Cell[StyleData["NumberedFigure", "Printout"]] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Caption"], CellMargins->{{72, 72}, {24, 0}}, PageBreakAbove->False, PageBreakWithin->False, TextAlignment->Center, Hyphenation->True, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, FontSlant->"Italic"], Cell[StyleData["Caption", "Presentation"]], Cell[StyleData["Caption", "Condensed"]], Cell[StyleData["Caption", "Printout"]] }, Closed]] }, Open ]], Cell[CellGroupData[{ Cell["Styles for Headers and Footers", "Section"], Cell[StyleData["Header"], CellMargins->{{0, 0}, {4, 1}}, StyleMenuListing->None, FontFamily->"Helvetica", FontSize->9, FontSlant->"Italic"], Cell[StyleData["Footer"], CellMargins->{{0, 0}, {0, 4}}, StyleMenuListing->None, FontFamily->"Helvetica", FontSize->6], Cell[StyleData["PageNumber"], CellMargins->{{0, 0}, {4, 1}}, StyleMenuListing->None, FontFamily->"Helvetica", FontSize->9, FontWeight->"Bold"] }, Open ]], Cell[CellGroupData[{ Cell["Hyperlink Styles", "Section"], Cell["\<\ The cells below define styles useful for making hypertext ButtonBoxes. The \ \"Hyperlink\" style is for links within the same Notebook, or between \ Notebooks.\ \>", "Text"], Cell[CellGroupData[{ Cell[StyleData["Hyperlink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontColor->GrayLevel[1], Background->RGBColor[1, 0.4, 0], ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`NotebookLocate[ #2]}]&), Active->True, ButtonFrame->"None", ButtonNote->ButtonData}], Cell[StyleData["Hyperlink", "Presentation"]], Cell[StyleData["Hyperlink", "Condensed"]], Cell[StyleData["Hyperlink", "Printout"], FontColor->GrayLevel[0], Background->GrayLevel[1]] }, Closed]], Cell["\<\ The following styles are for linking automatically to the on-line help \ system.\ \>", "Text"], Cell[CellGroupData[{ Cell[StyleData["MainBookLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontColor->GrayLevel[1], Background->RGBColor[1, 0.4, 0], ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "MainBook", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["MainBookLink", "Presentation"]], Cell[StyleData["MainBookLink", "Condensed"]], Cell[StyleData["MainBookLink", "Printout"], FontColor->GrayLevel[0], Background->GrayLevel[1]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["AddOnsLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontFamily->"Courier", FontColor->GrayLevel[1], Background->RGBColor[1, 0.4, 0], ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "AddOns", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["AddOnsLink", "Presentation"]], Cell[StyleData["AddOnsLink", "Condensed"]], Cell[StyleData["AddOnLink", "Printout"], FontColor->GrayLevel[0], Background->GrayLevel[1]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefGuideLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontFamily->"Courier", FontColor->GrayLevel[1], Background->RGBColor[1, 0.4, 0], ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "RefGuideLink", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["RefGuideLink", "Presentation"]], Cell[StyleData["RefGuideLink", "Condensed"]], Cell[StyleData["RefGuideLink", "Printout"], FontColor->GrayLevel[0], Background->GrayLevel[1]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["GettingStartedLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontColor->GrayLevel[1], Background->RGBColor[1, 0.4, 0], ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "GettingStarted", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["GettingStartedLink", "Presentation"]], Cell[StyleData["GettingStartedLink", "Condensed"]], Cell[StyleData["GettingStartedLink", "Printout"], FontColor->GrayLevel[0], Background->GrayLevel[1]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["OtherInformationLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontColor->GrayLevel[1], Background->RGBColor[1, 0.4, 0], ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "OtherInformation", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["OtherInformationLink", "Presentation"]], Cell[StyleData["OtherInformationLink", "Condensed"]], Cell[StyleData["OtherInformationLink", "Printout"], FontColor->GrayLevel[0], Background->GrayLevel[1]] }, Closed]] }, Open ]] }, Open ]] }] ] (*********************************************************************** 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->{ "CHA convergence"->{ Cell[1739, 51, 142, 2, 341, "Chapter", CounterAssignments->{{"Chapter", 2}}, CellTags->"CHA convergence"]}, "SEC convergence sequence of functions"->{ Cell[6797, 185, 110, 1, 64, "Section", CellTags->"SEC convergence sequence of functions"]}, "FIG pointwise divergence"->{ Cell[9125, 270, 170, 4, 60, "Input", CellTags->"FIG pointwise divergence"]}, "FIG uniform convergence"->{ Cell[9560, 290, 1016, 18, 186, "Input", CellTags->"FIG uniform convergence"]}, "SEC univariate analysis"->{ Cell[10904, 324, 100, 1, 90, "Section", CellTags->"SEC univariate analysis"]}, "FIG bspline differences"->{ Cell[11406, 342, 1813, 30, 462, "Input", CellTags->"FIG bspline differences"]}, "norm test"->{ Cell[13844, 402, 401, 10, 141, "Input", InitializationCell->True, CellTags->"norm test"]}, "SUBSEC four point"->{ Cell[15080, 457, 93, 1, 74, "Subsection", CellTags->"SUBSEC four point"]}, "four point diff mask"->{ Cell[15694, 482, 185, 4, 100, "Input", CellTags->"four point diff mask"]}, "four point second diff mask"->{ Cell[16280, 509, 200, 4, 103, "Input", CellTags->"four point second diff mask"]}, "four point third diff mask"->{ Cell[16887, 539, 199, 4, 103, "Input", CellTags->"four point third diff mask"]}, "FIG four point example"->{ Cell[17933, 588, 552, 11, 127, "Input", CellTags->"FIG four point example"]}, "FIG four point differences"->{ Cell[18748, 613, 800, 14, 148, "Input", CellTags->"FIG four point differences"]}, "EQ check roots"->{ Cell[23202, 759, 583, 12, 123, "Input", InitializationCell->True, CellTags->"EQ check roots"]}, "EQ quad box roots"->{ Cell[23941, 780, 138, 3, 60, "Input", CellTags->"EQ quad box roots"]}, "EQ difference scheme"->{ Cell[24858, 823, 2285, 42, 380, "Input", InitializationCell->True, CellTags->"EQ difference scheme"]}, "EQ quad box difference"->{ Cell[35963, 1125, 331, 7, 138, "Input", CellTags->"EQ quad box difference"]}, "SUBSEC butterfly scheme"->{ Cell[37072, 1163, 104, 1, 60, "Subsubsection", CellTags->"SUBSEC butterfly scheme"]}, "SUBSEC interpolatory quad scheme"->{ Cell[41607, 1266, 120, 1, 49, "Subsubsection", CellTags->"SUBSEC interpolatory quad scheme"]}, "FIG butterfly and kobbelt"->{ Cell[46115, 1371, 2561, 45, 458, "Input", CellTags->"FIG butterfly and kobbelt"]} } *) (*CellTagsIndex CellTagsIndex->{ {"CHA convergence", 77611, 2443}, {"SEC convergence sequence of functions", 77780, 2447}, {"FIG pointwise divergence", 77914, 2450}, {"FIG uniform convergence", 78032, 2453}, {"SEC univariate analysis", 78152, 2456}, {"FIG bspline differences", 78272, 2459}, {"norm test", 78379, 2462}, {"SUBSEC four point", 78511, 2466}, {"four point diff mask", 78624, 2469}, {"four point second diff mask", 78744, 2472}, {"four point third diff mask", 78870, 2475}, {"FIG four point example", 78991, 2478}, {"FIG four point differences", 79113, 2481}, {"EQ check roots", 79227, 2484}, {"EQ quad box roots", 79364, 2488}, {"EQ difference scheme", 79473, 2491}, {"EQ quad box difference", 79622, 2495}, {"SUBSEC butterfly scheme", 79741, 2498}, {"SUBSEC interpolatory quad scheme", 79877, 2501}, {"FIG butterfly and kobbelt", 80015, 2504} } *) (*NotebookFileOutline Notebook[{ Cell[CellGroupData[{ Cell[1739, 51, 142, 2, 341, "Chapter", CounterAssignments->{{"Chapter", 2}}, CellTags->"CHA convergence"], Cell[1884, 55, 434, 12, 82, "Text"], Cell[2321, 69, 369, 6, 117, "Text"], Cell[2693, 77, 561, 10, 118, "Text"], Cell[CellGroupData[{ Cell[3279, 91, 64, 0, 60, "Subsubsection"], Cell[3346, 93, 278, 6, 81, "Input", InitializationCell->True], Cell[3627, 101, 201, 4, 61, "Input", InitializationCell->True], Cell[3831, 107, 173, 4, 61, "Input", InitializationCell->True], Cell[4007, 113, 238, 5, 82, "Input", InitializationCell->True], Cell[4248, 120, 297, 7, 99, "Input", InitializationCell->True], Cell[4548, 129, 384, 8, 82, "Input", InitializationCell->True], Cell[4935, 139, 204, 5, 61, "Input", InitializationCell->True], Cell[5142, 146, 418, 8, 104, "Input", InitializationCell->True], Cell[5563, 156, 691, 12, 102, "Input", InitializationCell->True], Cell[6257, 170, 503, 10, 145, "Input", InitializationCell->True] }, Closed]], Cell[CellGroupData[{ Cell[6797, 185, 110, 1, 64, "Section", CellTags->"SEC convergence sequence of functions"], Cell[CellGroupData[{ Cell[6932, 190, 43, 0, 74, "Subsection"], Cell[CellGroupData[{ Cell[7000, 194, 44, 0, 60, "Subsubsection"], Cell[7047, 196, 110, 4, 47, "Text"], Cell[7160, 202, 245, 5, 61, "Input", InitializationCell->True], Cell[7408, 209, 223, 7, 47, "Text"], Cell[7634, 218, 181, 4, 61, "Input", InitializationCell->True], Cell[7818, 224, 265, 11, 47, "Text"], Cell[8086, 237, 274, 5, 81, "Input"], Cell[8363, 244, 449, 15, 47, "Text"], Cell[8815, 261, 285, 5, 81, "Input"], Cell[CellGroupData[{ Cell[9125, 270, 170, 4, 60, "Input", CellTags->"FIG pointwise divergence"], Cell[9298, 276, 135, 3, 60, "Output"] }, Open ]] }, Closed]] }, Open ]], Cell[CellGroupData[{ Cell[9494, 286, 41, 0, 74, "Subsection"], Cell[CellGroupData[{ Cell[9560, 290, 1016, 18, 186, "Input", CellTags->"FIG uniform convergence"], Cell[10579, 310, 130, 3, 60, "Output"] }, Open ]] }, Closed]], Cell[10736, 317, 66, 0, 53, "Subsection"], Cell[10805, 319, 62, 0, 74, "Subsection"] }, Open ]], Cell[CellGroupData[{ Cell[10904, 324, 100, 1, 90, "Section", CellTags->"SEC univariate analysis"], Cell[CellGroupData[{ Cell[11029, 329, 58, 0, 74, "Subsection"], Cell[11090, 331, 204, 4, 82, "Text"], Cell[11297, 337, 84, 1, 30, "Equation"], Cell[CellGroupData[{ Cell[11406, 342, 1813, 30, 462, "Input", CellTags->"FIG bspline differences"], Cell[13222, 374, 135, 3, 60, "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[13406, 383, 57, 0, 53, "Subsection"], Cell[13466, 385, 375, 15, 47, "Text"], Cell[13844, 402, 401, 10, 141, "Input", InitializationCell->True, CellTags->"norm test"], Cell[14248, 414, 66, 0, 47, "Text"], Cell[14317, 416, 59, 1, 77, "Input"], Cell[14379, 419, 118, 5, 47, "Text"], Cell[CellGroupData[{ Cell[14522, 428, 111, 2, 93, "Input"], Cell[14636, 432, 58, 1, 74, "Output"] }, Open ]], Cell[14709, 436, 140, 5, 47, "Text"], Cell[CellGroupData[{ Cell[14874, 445, 43, 1, 60, "Input"], Cell[14920, 448, 38, 1, 74, "Output"] }, Open ]] }, Closed]], Cell[14985, 453, 70, 0, 53, "Subsection"], Cell[CellGroupData[{ Cell[15080, 457, 93, 1, 74, "Subsection", CellTags->"SUBSEC four point"], Cell[CellGroupData[{ Cell[15198, 462, 77, 0, 60, "Subsubsection"], Cell[15278, 464, 73, 0, 47, "Text"], Cell[CellGroupData[{ Cell[15376, 468, 133, 3, 74, "Input"], Cell[15512, 473, 101, 2, 77, "Output"] }, Open ]], Cell[15628, 478, 41, 0, 47, "Text"], Cell[CellGroupData[{ Cell[15694, 482, 185, 4, 100, "Input", CellTags->"four point diff mask"], Cell[15882, 488, 92, 1, 74, "Output"] }, Open ]], Cell[15989, 492, 85, 2, 47, "Text"], Cell[CellGroupData[{ Cell[16099, 498, 44, 1, 60, "Input"], Cell[16146, 501, 38, 1, 74, "Output"] }, Open ]], Cell[16199, 505, 56, 0, 47, "Text"], Cell[CellGroupData[{ Cell[16280, 509, 200, 4, 103, "Input", CellTags->"four point second diff mask"], Cell[16483, 515, 82, 1, 74, "Output"] }, Open ]], Cell[16580, 519, 160, 7, 47, "Text"], Cell[CellGroupData[{ Cell[16765, 530, 44, 1, 60, "Input"], Cell[16812, 533, 38, 1, 74, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[16887, 539, 199, 4, 103, "Input", CellTags->"four point third diff mask"], Cell[17089, 545, 76, 1, 74, "Output"] }, Open ]], Cell[17180, 549, 277, 14, 47, "Text"], Cell[CellGroupData[{ Cell[17482, 567, 60, 1, 60, "Input"], Cell[17545, 570, 64, 1, 60, "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[17658, 577, 60, 0, 49, "Subsubsection"], Cell[17721, 579, 99, 2, 47, "Text"], Cell[17823, 583, 85, 1, 30, "Equation"], Cell[CellGroupData[{ Cell[17933, 588, 552, 11, 127, "Input", CellTags->"FIG four point example"], Cell[18488, 601, 135, 3, 60, "Output"] }, Open ]], Cell[18638, 607, 85, 2, 47, "Text"], Cell[CellGroupData[{ Cell[18748, 613, 800, 14, 148, "Input", CellTags->"FIG four point differences"], Cell[19551, 629, 135, 3, 60, "Output"] }, Open ]] }, Closed]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[19759, 640, 48, 0, 90, "Section"], Cell[CellGroupData[{ Cell[19832, 644, 58, 0, 74, "Subsection"], Cell[19893, 646, 52, 0, 47, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[19982, 651, 57, 0, 74, "Subsection"], Cell[20042, 653, 52, 0, 47, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[20131, 658, 54, 0, 74, "Subsection"], Cell[CellGroupData[{ Cell[20210, 662, 61, 0, 60, "Subsubsection"], Cell[20274, 664, 267, 11, 47, "Text"], Cell[20544, 677, 425, 9, 165, "Input", InitializationCell->True], Cell[20972, 688, 589, 18, 62, "Text"], Cell[21564, 708, 881, 18, 157, "Input", InitializationCell->True] }, Closed]], Cell[CellGroupData[{ Cell[22482, 731, 57, 0, 49, "Subsubsection"], Cell[22542, 733, 657, 24, 117, "Text"], Cell[23202, 759, 583, 12, 123, "Input", InitializationCell->True, CellTags->"EQ check roots"], Cell[23788, 773, 128, 3, 47, "Text"], Cell[CellGroupData[{ Cell[23941, 780, 138, 3, 60, "Input", CellTags->"EQ quad box roots"], Cell[24082, 785, 38, 1, 60, "Output"] }, Open ]], Cell[24135, 789, 698, 30, 117, "Text"], Cell[CellGroupData[{ Cell[24858, 823, 2285, 42, 380, "Input", InitializationCell->True, CellTags->"EQ difference scheme"], Cell[27146, 867, 183, 3, 30, "Message"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[27378, 876, 71, 0, 49, "Subsubsection"], Cell[27452, 878, 706, 22, 117, "Text"], Cell[CellGroupData[{ Cell[28183, 904, 295, 6, 138, "Input"], Cell[28481, 912, 38, 1, 60, "Output"], Cell[28522, 915, 394, 10, 102, "Output"], Cell[28919, 927, 38, 1, 74, "Output"] }, Open ]], Cell[28972, 931, 423, 15, 82, "Text"], Cell[CellGroupData[{ Cell[29420, 950, 296, 6, 138, "Input"], Cell[29719, 958, 38, 1, 60, "Output"], Cell[29760, 961, 1132, 23, 166, "Output"], Cell[30895, 986, 38, 1, 74, "Output"] }, Open ]], Cell[30948, 990, 121, 5, 47, "Text"], Cell[CellGroupData[{ Cell[31094, 999, 296, 6, 138, "Input"], Cell[31393, 1007, 38, 1, 60, "Output"], Cell[31434, 1010, 313, 7, 102, "Output"], Cell[31750, 1019, 38, 1, 74, "Output"] }, Open ]], Cell[31803, 1023, 588, 19, 117, "Text"], Cell[CellGroupData[{ Cell[32416, 1046, 318, 6, 138, "Input"], Cell[32737, 1054, 38, 1, 60, "Output"], Cell[32778, 1057, 2954, 53, 166, "Output"], Cell[35735, 1112, 42, 1, 74, "Output"] }, Open ]], Cell[35792, 1116, 146, 5, 47, "Text"], Cell[CellGroupData[{ Cell[35963, 1125, 331, 7, 138, "Input", CellTags->"EQ quad box difference"], Cell[36297, 1134, 38, 1, 60, "Output"], Cell[36338, 1137, 545, 12, 134, "Output"], Cell[36886, 1151, 38, 1, 74, "Output"] }, Open ]] }, Closed]] }, Open ]], Cell[CellGroupData[{ Cell[36985, 1159, 62, 0, 74, "Subsection"], Cell[CellGroupData[{ Cell[37072, 1163, 104, 1, 60, "Subsubsection", CellTags->"SUBSEC butterfly scheme"], Cell[37179, 1166, 350, 8, 82, "Text"], Cell[CellGroupData[{ Cell[37554, 1178, 874, 17, 220, "Input"], Cell[38431, 1197, 38, 1, 60, "Output"], Cell[38472, 1200, 2648, 40, 528, "Output"] }, Open ]], Cell[41135, 1243, 242, 9, 47, "Text"], Cell[CellGroupData[{ Cell[41402, 1256, 70, 1, 60, "Input"], Cell[41475, 1259, 83, 1, 60, "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[41607, 1266, 120, 1, 49, "Subsubsection", CellTags->"SUBSEC interpolatory quad scheme"], Cell[41730, 1269, 307, 5, 82, "Text"], Cell[CellGroupData[{ Cell[42062, 1278, 865, 17, 220, "Input"], Cell[42930, 1297, 38, 1, 60, "Output"], Cell[42971, 1300, 2587, 40, 528, "Output"] }, Open ]], Cell[45573, 1343, 295, 10, 47, "Text"], Cell[CellGroupData[{ Cell[45893, 1357, 54, 1, 60, "Input"], Cell[45950, 1360, 53, 1, 60, "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[46052, 1367, 38, 0, 49, "Subsubsection"], Cell[CellGroupData[{ Cell[46115, 1371, 2561, 45, 458, "Input", CellTags->"FIG butterfly and kobbelt"], Cell[48679, 1418, 135, 3, 60, "Output"] }, Open ]] }, Closed]] }, Open ]] }, Open ]] }, Open ]] } ] *) (*********************************************************************** End of Mathematica Notebook file. ***********************************************************************)