(************** Content-type: application/mathematica ************** CreatedBy='Mathematica 5.2' Mathematica-Compatible Notebook This notebook can be used with any Mathematica-compatible application, such as Mathematica, MathReader or Publicon. 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[ 184511, 6381]*) (*NotebookOutlinePosition[ 209248, 7253]*) (* CellTagsIndexPosition[ 207378, 7193]*) (*WindowFrame->Normal*) Notebook[{ Cell["Computing with Harmonic Functions", "Title"], Cell["Sheldon Axler", "Subtitle"], Cell["27 July 2007\t\t\[Copyright] 2002 Sheldon Axler", "Text", TextAlignment->Center], Cell[CellGroupData[{ Cell["Getting Started", "Section", CellTags->"Getting Started"], Cell[CellGroupData[{ Cell["Harmonic Function Theory", "Subsection", CellTags->"Loading the Package"], Cell[TextData[{ "This notebook is the manual for HFT.m (version 6.10), a ", StyleBox["Mathematica", FontSlant->"Italic"], " package for computing with harmonic functions. The HFT.m package allows \ the user to make calculations that would take a prohibitive amount of time if \ done without a computer. For example, the Poisson integral of any polynomial \ can be computed exactly." }], "Text"], Cell[TextData[{ "Earlier versions of this software focused on algorithms arising from the \ material in the book ", StyleBox["Harmonic Function Theory", FontSlant->"Italic"], " [", ButtonBox["ABR", ButtonData:>"ABR", ButtonStyle->"Hyperlink"], "] by Sheldon Axler, Paul Bourdon, and Wade Ramey. That book is still the \ source for many of the algorithms used in the HFT.m package, but the goal of \ the package has expanded to include additional symbolic manipulations \ involving harmonic functions. The HFT.m package can be used without the ", StyleBox["Harmonic Function Theory", FontSlant->"Italic"], " book, but the debt to the book is reflected in the initials chosen for \ the name of the package." }], "Text"], Cell[TextData[{ StyleBox["Mathematica", FontSlant->"Italic"], " 4.0 or a later version is needed to make use of HFT.m (version 6.01), \ which will work on any computer that runs ", StyleBox["Mathematica", FontSlant->"Italic"], "." }], "Text"], Cell[TextData[{ "This notebook, the HFT.m package, and the HFT.nb notebook that serve as \ the source file fro the HFT.m package, are available electronically free of \ charge. To obtain the most recent versions, retrieve them using a World Wide \ Web browser from ", ButtonBox["http://www.axler.net", ButtonData:>{ URL[ "http://math.sfsu.edu/axler"], None}, ButtonStyle->"Hyperlink"], StyleBox[".", "html"] }], "Text", TextAlignment->AlignmentMarker], Cell[TextData[{ "Comments, suggestions, and bug reports about this notebook, the HFT.m \ package, or the book ", StyleBox["Harmonic Function Theory", FontSlant->"Italic"], " are welcome; please send them via e-mail to axler@sfsu.edu." }], "Text", TextAlignment->AlignmentMarker] }, Closed]], Cell[CellGroupData[{ Cell["Loading the Package", "Subsection", CellTags->"Loading the Package"], Cell[TextData[{ "To begin a session with the HFT.m package, first start ", StyleBox["Mathematica", FontSlant->"Italic"], ". Then enter the command shown below, making an appropriate modification \ to indicate the directory or folder in which HFT.m is located on your \ computer. After typying <<, you can use the Get File Path command, located in \ the Input menu, to paste the full pathname of HFT.m into your input cell:" }], "Text", TextAlignment->AlignmentMarker], Cell[CellGroupData[{ Cell[BoxData[ \(<< "\"\)], \ "Input"], Cell[BoxData[ \("HFT; Version 6.10, 9 August 2003"\)], "Print"], Cell[BoxData[ \("This Mathematica package, called HFT.m, is designed for computing with \ harmonic functions. Documentation for the use of this package and information \ about the algorithms used in it is available in the Mathematica notebook \ called HFT.nb."\)], "Print"], Cell[BoxData[ \("For addional information about harmonic functions, see the book \ Harmonic Function Theory, by Sheldon Axler, Paul Bourdon, and Wade Ramey, \ published by Springer."\)], "Print"], Cell[BoxData[ \("This package is copyrighted by Sheldon Axler but is distributed \ without charge. The most recent version of this HFT.m package along with its \ documentation notebook HFT.nb is available over the world wide web at: \ http://www.axler.net"\)], "Print"], Cell[BoxData[ \("Comments, suggestions, and bug reports should be sent by electronic \ mail to: axler@sfsu.edu"\)], "Print"], Cell[BoxData[ \("* The computer is now unpacking the HFT.m package."\)], "Print"], Cell[BoxData[ \("* You can now use the functions in this package."\)], "Print"] }, Closed]], Cell["\<\ After loading the HFT.m package, you can use the functions \ described in the rest of this notebook.\ \>", "Text"] }, Closed]], Cell[CellGroupData[{ Cell["On-line Help", "Subsection", CellTags->"On-line Help"], Cell["\<\ This notebook provides the only complete documentation for using \ the HFT.m package. However, users can be reminded about the basic use and \ syntax of each function created by HFT.m by entering ? followed by the \ function name:\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(?Volume\)\)], "Input"], Cell[BoxData[ \("Volume[n] gives the volume of the unit ball in n-dimensional real \ Euclidean space."\)], "Print", CellTags->"Info3394546982-1476773"] }, Closed]], Cell[TextData[{ "The ", StyleBox["Mathematica", FontSlant->"Italic"], " statement Names[\"HFT`*\"] will produce a complete list of the functions \ created by HFT.m:" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Names["\"]\)], "Input"], Cell[BoxData[ \({"Annulus", "AntiLaplacian", "Ball", "BasisH", "BergmanKernel", "BergmanKernelH", "BergmanProjection", "BiDirichlet", "Delta", "Dimension", "DimensionH", "Dirichlet", "Divergence", "DoubleBracketingBar", "ExpandNorm", "ExteriorNeumann", "ExteriorSphere", "Grad", "HarmonicConjugate", "HarmonicDecomposition", "HilbertSchmidt", "Homogeneous", "Hyperplane", "IntegrateBall", "IntegrateSphere", "J", "Kelvin", "KelvinM", "Laplacian", "Multiple", "Neumann", "NormalD", "Orthonormal", "Partial", "PoissonKernel", "PoissonKernelH", "Quadratic", "Reflection", "Region", "S", "Schwarz", "SetDimension", "Singularity", "Sphere", "SurfaceArea", "Taylor", "Togetherness", "TurnOff", "TurnOn", "Volume", "ZeroToZero", "ZonalHarmonic", "\[CapitalPhi]"}\)], "Output"] }, Closed]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ "Calculus in ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontSlant->"Plain"], "n"], TraditionalForm]]] }], "Section", CellTags->"Calculus in R^n"], Cell[CellGroupData[{ Cell["Norm", "Subsection", CellTags->"Norm"], Cell[TextData[{ StyleBox["Norm[x]", "InlineInput"], " is the Euclidean norm of a vector ", Cell[BoxData[ \(TraditionalForm\`x\)]], ". When using StandardForm for output (which is the default in ", StyleBox["Mathematica", FontSlant->"Italic"], "), this package will use ", StyleBox["\[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]", "InlineInput"], " instead of ", StyleBox["Norm[x]", "InlineInput"], ". When using StandardForm for input (which is the default in ", StyleBox["Mathematica", FontSlant->"Italic"], "), you can use either ", StyleBox["\[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]", "InlineInput"], " or ", StyleBox["Norm[x]", "InlineInput"], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\[LeftDoubleBracketingBar]5\ x\[RightDoubleBracketingBar]\ - Norm[2 x]\^2\)], "Input"], Cell[BoxData[ \(5\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar] - 4\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\)], \ "Output"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["ExpandNorm", "Subsection", CellTags->"ExpandNorm"], Cell[TextData[{ StyleBox["ExpandNorm", "InlineInput"], " expands norms of sums (and differences) by replacing expressions of the \ form ", Cell[BoxData[ \(TraditionalForm\`\[LeftDoubleBracketingBar]x + y\[RightDoubleBracketingBar]\)]], " with (", Cell[BoxData[ \(TraditionalForm\`\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2 + \[LeftDoubleBracketingBar]y\ \[RightDoubleBracketingBar]\^2\)]], "+ ", Cell[BoxData[ \(TraditionalForm\`\(\(x . y\)\()\)\)\^\(1/2\)\)]], ". ", StyleBox["ExpandNorm", "InlineInput"], " is often useful for verifying identities. For example, to prove the \ Symmetry Lemma (1.13 in [", ButtonBox["ABR", ButtonData:>"ABR", ButtonStyle->"Hyperlink"], "]), which states that" }], "Text"], Cell[BoxData[ \(TraditionalForm\`\[LeftDoubleBracketingBar]y\/\[LeftDoubleBracketingBar]\ y\[RightDoubleBracketingBar] - \[LeftDoubleBracketingBar]y\ \[RightDoubleBracketingBar]\ x\[RightDoubleBracketingBar] = \ \[LeftDoubleBracketingBar]x\/\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar] - \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\ y\[RightDoubleBracketingBar]\)], "Text", TextAlignment->Center], Cell[TextData[{ " for all nonzero ", Cell[BoxData[ \(TraditionalForm\`x\)]], ", ", Cell[BoxData[ \(TraditionalForm\`y\)]], " \[Epsilon] ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], "n"], TraditionalForm]]], ", we subtract the left-hand side of the alleged equality from the \ right-hand side, hoping that the result equals 0:" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\[LeftDoubleBracketingBar]x\/\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar] - \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\ y\[RightDoubleBracketingBar] - \ \[LeftDoubleBracketingBar]y\/\[LeftDoubleBracketingBar]y\ \[RightDoubleBracketingBar] - \[LeftDoubleBracketingBar]y\ \[RightDoubleBracketingBar]\ x\[RightDoubleBracketingBar]\)], "Input"], Cell[BoxData[ \(\[LeftDoubleBracketingBar]x\/\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar] - y\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\ \[RightDoubleBracketingBar] - \[LeftDoubleBracketingBar]y\/\ \[LeftDoubleBracketingBar]y\[RightDoubleBracketingBar] - x\ \[LeftDoubleBracketingBar]y\[RightDoubleBracketingBar]\ \[RightDoubleBracketingBar]\)], "Output"] }, Closed]], Cell[TextData[{ "The last output does not look like 0, so we apply ", StyleBox["ExpandNorm", "InlineInput"], " to it. The symbol ", StyleBox["%", "InlineInput"], " used below is the ", StyleBox["Mathematica", FontSlant->"Italic"], " abbreviation for the last output:" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(ExpandNorm[%]\)], "Input"], Cell[BoxData[ \(0\)], "Output"] }, Closed]], Cell["\<\ Because the last output equals 0, the Symmetry Lemma has been \ proved.\ \>", "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Partial", "Subsection", CellTags->"Partial"], Cell[TextData[{ StyleBox["Partial[f, ", "InlineInput"], StyleBox[Cell[BoxData[ \(x\_j\)], "InlineInput"], "InlineInput"], StyleBox["]", "InlineInput"], " is the partial derivative of ", Cell[BoxData[ \(TraditionalForm\`f\)]], " with respect to ", Cell[BoxData[ \(TraditionalForm\`x\_j\)]], ". Here ", Cell[BoxData[ \(TraditionalForm\`x\)]], " denotes a vector in Euclidean space, and ", Cell[BoxData[ \(TraditionalForm\`x\_j\)]], " is the ", Cell[BoxData[ \(TraditionalForm\`j\^th\)]], " coordinate of ", Cell[BoxData[ \(TraditionalForm\`x\)]], ". The advantage of using ", StyleBox["Partial", "InlineInput"], " rather than the built-in ", Cell[BoxData[ \(TraditionalForm\`Mathematica\)]], " function ", StyleBox["D", "InlineInput"], " or ", Cell[BoxData[ FormBox[ StyleBox["\[PartialD]", "InlineInput"], TraditionalForm]]], " is that ", StyleBox["Partial", "InlineInput"], " can deal with norms and dot products. Note that the dot product of ", Cell[BoxData[ \(TraditionalForm\`b\)]], " and ", Cell[BoxData[ \(TraditionalForm\`x\)]], " is denoted by ", StyleBox["b.x", "InlineInput"], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Partial[\[LeftDoubleBracketingBar]a + x\[RightDoubleBracketingBar]\^\(b \ . x\), x\_5]\)], "Input"], Cell[BoxData[ \(Log[\[LeftDoubleBracketingBar]a + x\[RightDoubleBracketingBar]]\ \[LeftDoubleBracketingBar]a + x\ \[RightDoubleBracketingBar]\^\(b . x\)\ b\_5 + b . x\ \[LeftDoubleBracketingBar]a + \ x\[RightDoubleBracketingBar]\^\(\(-2\) + b . x\)\ \((a\_5 + x\_5)\)\)], "Output"] }, Closed]], Cell[TextData[{ "A subscript can be typed in ", StyleBox["Mathematica", FontSlant->"Italic"], " by pressing control-dash. Return to normal mode by pressing \ control-space. A suberscript or exponent can be typed by pressing control-6. \ Instead of entering ", Cell[BoxData[ StyleBox[\(x\_j\), "InlineInput"]]], ", you can type ", StyleBox["x[j]", "InlineInput"], "." }], "Text"], Cell[TextData[{ "For taking multiple partial derivatives, ", StyleBox["Partial", "InlineInput"], " uses the same syntax as the built-in ", StyleBox["Mathematica", FontSlant->"Italic"], " function ", StyleBox["D", "InlineInput"], ". For example, the following command computes the partial derivative of \ |", Cell[BoxData[ \(TraditionalForm\`x\)]], "| once with respect to the second coordinate, twice with respect to the \ first coordinate and three times with respect to thefourth coordinate:" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Partial[\[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar], x\_2, {x\_1, 2}, {x\_4, 3}]\)], "Input"], Cell[BoxData[ \(\(-\(\(15\ \((3\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\ \^4\ x\_2\ x\_4 - 21\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ \ x\_1\%2\ x\_2\ x\_4 - 7\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ \ x\_2\ x\_4\%3 + 63\ x\_1\%2\ x\_2\ x\_4\%3)\)\)\/\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^11\)\)\)], "Output"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Laplacian", "Subsection", CellTags->"Laplacian"], Cell[TextData[{ StyleBox["Laplacian[f, x]", "InlineInput"], " is the Laplacian of ", Cell[BoxData[ \(TraditionalForm\`f\)]], " with respect to ", Cell[BoxData[ \(TraditionalForm\`x\)]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Laplacian[x\_3\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar], x]\)], "Input"], Cell[BoxData[ \(\(x\_3 + Dimension[x]\ x\_3\)\/\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\)], "Output"] }, Closed]], Cell[TextData[{ "Note that in the last result, the Laplacian depends upon ", StyleBox["Dimension[x]", "Output"], ", which is the dimension of the Euclidean space in which ", Cell[BoxData[ \(TraditionalForm\`x\)]], " lives. For work in ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], "n"], TraditionalForm]]], ", ", StyleBox["SetDimension[x, n]", "InlineInput"], " should be used to set the dimension of ", Cell[BoxData[ \(TraditionalForm\`x\)]], " equal to ", Cell[BoxData[ \(TraditionalForm\`n\)]], "; here ", Cell[BoxData[ \(TraditionalForm\`n\)]], " can be a symbol or a specific integer, say 8. We illustrate this \ procedure by showing that for each ", Cell[BoxData[ \(TraditionalForm\`z\)]], " with |", Cell[BoxData[ \(TraditionalForm\`z\)]], "| = 1, the Poisson kernel ", Cell[BoxData[ \(TraditionalForm\`P\)]], "(. , ", Cell[BoxData[ \(TraditionalForm\`z\)]], ") is harmonic (in other words, what follows is a proof of Proposition 1.18 \ of [", ButtonBox["ABR", ButtonData:>"ABR", ButtonStyle->"Hyperlink"], "]):" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(SetDimension[x, n]\)], "Input"], Cell[BoxData[ \(SetDimension::"Vector" \(\(:\)\(\ \)\) "\!\(x\) will be considered to be a vector in \!\(n\)-dimensional real \ Euclidean space."\)], "Message"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(Laplacian[\((1 - \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\ \^2)\)/\[LeftDoubleBracketingBar]x - z\[RightDoubleBracketingBar]\^n, x]\)], "Input"], Cell[BoxData[ \(4\ n\ \((\(-x . z\) + \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^\ 2)\)\ \[LeftDoubleBracketingBar]x - z\[RightDoubleBracketingBar]\^\(\(-2\) - \ n\) - 2\ n\ \[LeftDoubleBracketingBar]x - \ z\[RightDoubleBracketingBar]\^\(-n\) + \((1 - \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2)\)\ \((\(-\((\(-1\) + n)\)\)\ n\ \[LeftDoubleBracketingBar]x - z\ \[RightDoubleBracketingBar]\^\(\(-2\) - n\) - n\ \((1 + n)\)\ \[LeftDoubleBracketingBar]x - z\ \[RightDoubleBracketingBar]\^\(\(-4\) - n\)\ \((2\ x . z - \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2 - \[LeftDoubleBracketingBar]z\ \[RightDoubleBracketingBar]\^2)\))\)\)], "Output"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(ExpandNorm[%]\ /. \ Norm[z] \[Rule] 1\)], "Input"], Cell[BoxData[ \(0\)], "Output"] }, Closed]], Cell[TextData[{ "Thus the Laplacian of ", Cell[BoxData[ \(TraditionalForm\`P\)]], "(. , ", Cell[BoxData[ \(TraditionalForm\`z\)]], ") is 0, and hence ", Cell[BoxData[ \(TraditionalForm\`P\)]], "(. , ", Cell[BoxData[ \(TraditionalForm\`z\)]], ") is harmonic, as claimed." }], "Text"], Cell[TextData[{ Cell[BoxData[ FormBox[ StyleBox[ SuperscriptBox["Laplacian", StyleBox["m", FontSlant->"Plain"]], "InlineInput"], TraditionalForm]]], " can be used, with the same syntax as Laplacian, to evaluate the ", Cell[BoxData[ \(TraditionalForm\`m\^th\)]], " power of the Laplacian. For example, here we find the biLaplacian (the \ Laplacian of the Laplacian) of 1/|", Cell[BoxData[ \(TraditionalForm\`x\)]], "| on ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], "n"], TraditionalForm]]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(Laplacian\^2\)[ 1/\[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar], x]\)], "Input"], Cell[BoxData[ \(\(3\ \((15 - 8\ n + n\^2)\)\)\/\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^5\)], "Output"] }, Closed]], Cell[TextData[{ "If ", Cell[BoxData[ \(TraditionalForm\`x\)]], " and ", Cell[BoxData[ \(TraditionalForm\`y\)]], " are symbols,then ", StyleBox["Laplacian[f,x,y]", "InlineInput"], " gives the Laplacian of ", Cell[BoxData[ \(TraditionalForm\`f\)]], " with respect to the vector (", Cell[BoxData[ \(TraditionalForm\`x\)]], ", ", Cell[BoxData[ \(TraditionalForm\`y\)]], "), where ", Cell[BoxData[ \(TraditionalForm\`x\)]], " is thought of as a vector, ", Cell[BoxData[ \(TraditionalForm\`y\)]], " is thought of as a real variable, and (", Cell[BoxData[ \(TraditionalForm\`x\)]], ", ", Cell[BoxData[ \(TraditionalForm\`y\)]], ") is thought of as a vector in a Euclidean space whose dimension is one \ more than the dimension of ", Cell[BoxData[ \(TraditionalForm\`x\)]], ".This format is often useful when working with functions defined on the \ upper half-space, as in Chapter 7 of [", ButtonBox["ABR", ButtonData:>"ABR", ButtonStyle->"Hyperlink"], "].Note that if we are thinking of (", Cell[BoxData[ \(TraditionalForm\`x\)]], ", ", Cell[BoxData[ \(TraditionalForm\`y\)]], ") as an element of ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], "n"], TraditionalForm]]], ", then ", Cell[BoxData[ \(TraditionalForm\`x\)]], " should be defined to have dimension ", Cell[BoxData[ \(TraditionalForm\`n - 1\)]], ". We illustrate the use of this format of the ", StyleBox["Laplacian", "InlineInput"], " function by showing that for each ", Cell[BoxData[ \(TraditionalForm\`t\)]], " \[Epsilon] ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], \(n - 1\)], TraditionalForm]]], ", the Poisson kernel ", Cell[BoxData[ \(TraditionalForm\`P\_H\)]], "(,. ", Cell[BoxData[ \(TraditionalForm\`t\)]], ") for the upper half-space is harmonic (see page 145 of [", ButtonBox["ABR", ButtonData:>"ABR", ButtonStyle->"Hyperlink"], "] for another proof of this):" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(SetDimension[x, n - 1]\)], "Input"], Cell[BoxData[ \(SetDimension::"Vector" \(\(:\)\(\ \)\) "\!\(x\) will be considered to be a vector in \!\(\(\(-1\)\) + \ n\)-dimensional real Euclidean space."\)], "Message"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(Laplacian[ y/\((\[LeftDoubleBracketingBar]x - t\[RightDoubleBracketingBar]\^2 + \ y\^2)\)\^\(n/2\), x, y]\)], "Input"], Cell[BoxData[ \(\(-\(\(n\ y\ \((y\^2 + \[LeftDoubleBracketingBar]\(-t\) + x\ \[RightDoubleBracketingBar]\^2)\)\^\(\(-2\) - n\/2\)\ \((2\ t . x - \[LeftDoubleBracketingBar]t\[RightDoubleBracketingBar]\ \^2 - \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2 + \ \[LeftDoubleBracketingBar]\(-t\) + x\[RightDoubleBracketingBar]\^2)\)\ \ \((\(-y\^2\) + \[LeftDoubleBracketingBar]\(-t\) + \ x\[RightDoubleBracketingBar]\^2 + n\ \[LeftDoubleBracketingBar]\(-t\) + x\ \[RightDoubleBracketingBar]\^2)\)\)\/\[LeftDoubleBracketingBar]\(-t\) + x\ \[RightDoubleBracketingBar]\^2\)\)\)], "Output"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(ExpandNorm[%]\)], "Input"], Cell[BoxData[ \(0\)], "Output"] }, Closed]], Cell[TextData[{ "Thus the Laplacian of ", Cell[BoxData[ \(TraditionalForm\`P\_H\)]], "(,. ", Cell[BoxData[ \(TraditionalForm\`t\)]], ") is 0, and hence ", Cell[BoxData[ \(TraditionalForm\`P\_H\)]], "(,. ", Cell[BoxData[ \(TraditionalForm\`t\)]], ") is harmonic, as claimed." }], "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Grad", "Subsection", CellTags->"Grad"], Cell[TextData[{ StyleBox["Grad[f, x]", "InlineInput"], " is the gradient of ", Cell[BoxData[ \(TraditionalForm\`f\)]], " with respect to the vector ", Cell[BoxData[ \(TraditionalForm\`x\)]], " (", StyleBox["Mathematica", FontSlant->"Italic"], "'s convention of spelling out names in full would imply that this function \ should be called ", StyleBox["Gradient", "InlineInput"], " instead of ", StyleBox["Grad", "InlineInput"], ", but ", StyleBox["Gradient", "InlineInput"], " is already used by ", StyleBox["Mathematica", FontSlant->"Italic"], " for an unrelated purpose):" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Grad[ a . x + x\_k + \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar], x]\)], "Input"], Cell[BoxData[ \(a + Delta[k] + x\/\[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\)], "Output"] }, Closed]], Cell[TextData[{ "In the last output, ", StyleBox["Delta[k]", "Output"], " denotes the vector that equals 1 in the ", Cell[BoxData[ \(TraditionalForm\`k\^th\)]], " coordinate and 0 in the other coordinates." }], "Text", CellTags->"Delta"] }, Closed]], Cell[CellGroupData[{ Cell["NormalD", "Subsection", CellTags->"NormalD"], Cell[TextData[{ StyleBox["NormalD[f, z]", "InlineInput"], " equals the outward normal derivative of ", Cell[BoxData[ \(TraditionalForm\`f\)]], " at a point ", Cell[BoxData[ \(TraditionalForm\`z\)]], " on the unit sphere." }], "Text"], Cell[TextData[{ "In the section of Chapter 1 of [", ButtonBox["ABR", ButtonData:>"ABR", ButtonStyle->"Hyperlink"], "] titled ", StyleBox["The Poisson Kernel for the Ball", FontSlant->"Italic"], ", the formula for the Poisson kernel was derived by showing that ", Cell[BoxData[ \(TraditionalForm\`P\)]], "(", Cell[BoxData[ \(TraditionalForm\`x\)]], ",\[NonBreakingSpace]", Cell[BoxData[ \(TraditionalForm\`z\)]], ") equals the normal derivative (with respect to ", Cell[BoxData[ \(TraditionalForm\`z\)]], ") of" }], "Text"], Cell[BoxData[ \(TraditionalForm\`\((\[LeftDoubleBracketingBar]z - x\ \[RightDoubleBracketingBar]\^\(2 - n\) - \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^\(2 - n\)\ \[LeftDoubleBracketingBar]z - x\/\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ \[RightDoubleBracketingBar]\^\(2 - n\))\)/\(\((2 - n)\)\(.\)\)\)], "Text", TextAlignment->Center], Cell["\<\ The computation of that normal derivative is a bit complicated and \ was left to the reader. Now we show how this computation can be done easily \ by a computer. We begin by taking the normal derivative of the function \ above:\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(NormalD[\((\[LeftDoubleBracketingBar]z - x\[RightDoubleBracketingBar]\^\ \(2 - n\) - \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^\(2 - n\)\ \ \[LeftDoubleBracketingBar]z - x\/\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2\[RightDoubleBracketingBar]\^\(2 - n\))\)/\((2 \ - n)\), z]\)], "Input"], Cell[BoxData[ \(\(\((2 - n)\)\ \((1 - x . z)\)\ \[LeftDoubleBracketingBar]\(-x\) + z\ \[RightDoubleBracketingBar]\^\(-n\) - \((\(-2\) + n)\)\ \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^\(-n\)\ \((x . z - \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2)\)\ \ \[LeftDoubleBracketingBar]z - x\/\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2\[RightDoubleBracketingBar]\^\(-n\)\)\/\(2 - \ n\)\)], "Output"] }, Closed]], Cell[TextData[{ "Now we ask the computer to replace ", Cell[BoxData[ \(TraditionalForm\`\[LeftDoubleBracketingBar]z - x\/\[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ \[RightDoubleBracketingBar]\)]], " in the last output with ", Cell[BoxData[ \(TraditionalForm\`\[LeftDoubleBracketingBar]z - x\[RightDoubleBracketingBar]/\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\)]], "; the Symmetry Lemma (1.13 of [", ButtonBox["ABR", ButtonData:>"ABR", ButtonStyle->"Hyperlink"], "]) implies that the two expressions are equal:" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(%\ /. \[LeftDoubleBracketingBar]z - x\/\[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ \[RightDoubleBracketingBar] \[Rule] \[LeftDoubleBracketingBar]z - x\[RightDoubleBracketingBar]/\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\)], "Input"], Cell[BoxData[ \(\(\((2 - n)\)\ \((1 - x . z)\)\ \[LeftDoubleBracketingBar]\(-x\) + z\ \[RightDoubleBracketingBar]\^\(-n\) + \((\(-2\) + n)\)\ \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^\(-n\)\ \((\(-x . z\) \ + \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2)\)\ \((\ \[LeftDoubleBracketingBar]\(-x\) + z\[RightDoubleBracketingBar]\/\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar])\)\^\(-n\)\)\/\(2 - \ n\)\)], "Output"] }, Closed]], Cell[TextData[{ "Applying the ", StyleBox["Mathematica", FontSlant->"Italic"], " function ", StyleBox["PowerExpand", "InlineInput"], " to the last output gives the desired result:" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(PowerExpand[%]\)], "Input"], Cell[BoxData[ \(\(-\((\(-1\) + \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2)\)\)\ \ \[LeftDoubleBracketingBar]\(-x\) + z\[RightDoubleBracketingBar]\^\(-n\)\)], \ "Output"] }, Closed]], Cell["\<\ The last output completes the derivation of the formula for the \ Poisson kernel for the ball.\ \>", "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Matrices", "Subsection", CellTags->"Matrices"], Cell[CellGroupData[{ Cell["Matrix dimensions", "Subsubsection"], Cell[TextData[{ StyleBox["Mathematica", FontSlant->"Italic"], " uses ", StyleBox[".", "InlineInput"], " to represent matrix multiplication as well as dot product. When using \ this package, you must use the ", StyleBox["SetDimension", "InlineInput"], " command to tell ", StyleBox["Mathematica ", FontSlant->"Italic"], "whenever a symbol is being thought of as a matrix. To think of ", Cell[BoxData[ \(TraditionalForm\`A\)]], " as an ", Cell[BoxData[ \(TraditionalForm\`m\)]], "-by-", Cell[BoxData[ \(TraditionalForm\`n\)]], " matrix, enter the command ", StyleBox["SetDimension[A, {m, n}]", "InlineInput"], ". For the examples in this section, we want to think of ", Cell[BoxData[ \(TraditionalForm\`A\)]], " as a square matrix, so we make the two dimensions of ", Cell[BoxData[ \(TraditionalForm\`A\)]], " equal:" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(SetDimension[A, \ {n, n}]\)], "Input"], Cell[BoxData[ \(SetDimension::"Matrix" \(\(:\)\(\ \)\) "\!\(A\) will be considered to be a matrix of size \!\(n\)-by-\!\(n\)."\ \)], "Message"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(Grad[\[LeftDoubleBracketingBar]A . x\[RightDoubleBracketingBar], x]\)], "Input"], Cell[BoxData[ \(\((A . x)\) . A\/\[LeftDoubleBracketingBar]A . x\ \[RightDoubleBracketingBar]\)], "Output"] }, Closed]], Cell[TextData[{ "To interpret input or output involving products of matrices and vectors, \ think of vectors as either column vectors or row vectors, whichever makes \ sense in context. Thus in the input above, ", Cell[BoxData[ \(TraditionalForm\`x\)]], " is obviously a vector, because we are taking the gradient of some \ function with respect to ", Cell[BoxData[ \(TraditionalForm\`x\)]], ". For ", Cell[BoxData[ \(TraditionalForm\`A . x\)]], " to make sense as a vector in ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], "n"], TraditionalForm]]], ", we must think of ", Cell[BoxData[ \(TraditionalForm\`x\)]], " as a column vector (an ", Cell[BoxData[ \(TraditionalForm\`n\)]], "-by-1 matrix). To interpret ", Cell[BoxData[ \(TraditionalForm\`\((A . x)\) . A\)]], " in the last output, we again think of ", Cell[BoxData[ \(TraditionalForm\`x\)]], " as a column vector (an ", Cell[BoxData[ \(TraditionalForm\`n\)]], "-by-1 matrix), so that ", Cell[BoxData[ \(TraditionalForm\`A . x\)]], " makes sense as an element of ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], "n"], TraditionalForm]]], ". Because ", Cell[BoxData[ \(TraditionalForm\`A . x\)]], " is then multiplied by the ", Cell[BoxData[ \(TraditionalForm\`n\)]], "-by-", Cell[BoxData[ \(TraditionalForm\`n\)]], " matrix ", Cell[BoxData[ \(TraditionalForm\`A\)]], ", we must think of ", Cell[BoxData[ \(TraditionalForm\`A . x\)]], " as a row vector (an 1-by-", Cell[BoxData[ \(TraditionalForm\`n\)]], " matrix), so that ", Cell[BoxData[ \(TraditionalForm\`\((A . x)\) . A\)]], " is a vector, as expected here (because it is the gradient of a \ function)." }], "Text"], Cell[TextData[{ "In the example above we did not enter the command ", StyleBox["SetDimension[x, n]", "InlineInput"], " to tell ", StyleBox["Mathematica", FontSlant->"Italic"], " that ", Cell[BoxData[ \(TraditionalForm\`x\)]], " is a vector (although it would not have hurt to do so). The HFT.m package \ can almost always use the context to distinguish scalars from vectors (if \ both interpretations make sense, the package assumes that a symbol represents \ a scalar). However, you must always explicitly use the ", StyleBox["SetDimension", "InlineInput"], " command to tell ", StyleBox["Mathematica", FontSlant->"Italic"], " which objects are matrices." }], "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Rows and columns", "Subsubsection"], Cell[TextData[{ "If ", Cell[BoxData[ \(TraditionalForm\`A\)]], " is a matrix, then ", Cell[BoxData[ \(TraditionalForm\`A\_\(j, . \)\)]], " denotes the ", Cell[BoxData[ \(TraditionalForm\`j\^th\)]], " row of ", Cell[BoxData[ \(TraditionalForm\`A\)]], " and ", Cell[BoxData[ \(TraditionalForm\`A\_\(\(.\)\(\(,\)\(j\)\)\)\)]], " denotes the ", Cell[BoxData[ \(TraditionalForm\`j\^th\)]], " column of ", Cell[BoxData[ \(TraditionalForm\`A\)]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Partial[\[LeftDoubleBracketingBar]A . x\[RightDoubleBracketingBar] + 5 \[LeftDoubleBracketingBar]x . A\[RightDoubleBracketingBar], x\_3]\)], "Input"], Cell[BoxData[ \(\((A . x)\) . A\_\(".", 3\)\/\[LeftDoubleBracketingBar]A . x\ \[RightDoubleBracketingBar] + \(5\ \((x . A)\) . A\_\(3, "."\)\)\/\ \[LeftDoubleBracketingBar]x . A\[RightDoubleBracketingBar]\)], "Output"] }, Closed]], Cell[TextData[{ "Note that in the input above, ", Cell[BoxData[ \(TraditionalForm\`x\)]], " is thought of as a column vector in the term ", Cell[BoxData[ \(TraditionalForm\`A . x\)]], " and as a row vector in the term ", Cell[BoxData[ \(TraditionalForm\`x . A\)]], ". To interpret ", Cell[BoxData[ \(TraditionalForm\`\((A . x)\) . A\_\(\(.\)\(\(,\)\(3\)\)\)\)]], " in the last output, we think of ", Cell[BoxData[ \(TraditionalForm\`x\)]], " as a column vector, so that ", Cell[BoxData[ \(TraditionalForm\`A . x\)]], " is a vector. Then ", Cell[BoxData[ \(TraditionalForm\`\((A . x)\) . A\_\(\(.\)\(\(,\)\(3\)\)\)\)]], " is just the dot product of two vectors, so that it is a number, as \ expected here." }], "Text"] }, Closed]], Cell[CellGroupData[{ Cell["HilbertSchmidt", "Subsubsection"], Cell[TextData[{ StyleBox["HilbertSchmidt[A]", "InlineInput"], " is the Hilbert-Schmidt norm of a matrix ", Cell[BoxData[ \(TraditionalForm\`A\)]], ", which is the square root of the sum of the squares of all entries of ", Cell[BoxData[ \(TraditionalForm\`A\)]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Laplacian[\[LeftDoubleBracketingBar]x . A\[RightDoubleBracketingBar], x]\)], "Input"], Cell[BoxData[ \(\(HilbertSchmidt[A]\^2\ \[LeftDoubleBracketingBar]x . A\ \[RightDoubleBracketingBar]\^2 - \[LeftDoubleBracketingBar]x . A . \ Transpose[A]\[RightDoubleBracketingBar]\^2\)\/\[LeftDoubleBracketingBar]x . A\ \[RightDoubleBracketingBar]\^3\)], "Output"] }, Closed]], Cell[TextData[{ "Here ", StyleBox["Transpose[A]", "Output"], " is the matrix obtained from ", Cell[BoxData[ \(TraditionalForm\`A\)]], " by interchanging the rows and columns of ", Cell[BoxData[ \(TraditionalForm\`A\)]], "." }], "Text"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Divergence", "Subsection", CellTags->"Divergence"], Cell[TextData[{ StyleBox["Divergence[f, x]", "InlineInput"], " is the divergence of ", Cell[BoxData[ \(TraditionalForm\`f\)]], " with respect to the vector ", Cell[BoxData[ \(TraditionalForm\`x\)]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(SetDimension[A, \ {n, n}]\)], "Input"], Cell[BoxData[ \(SetDimension::"Matrix" \(\(:\)\(\ \)\) "\!\(A\) will be considered to be a matrix of size \!\(n\)-by-\!\(n\)."\ \)], "Message"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(Divergence[ A . x/\[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar], x]\)], "Input"], Cell[BoxData[ \(\(-\(x . \((A . x)\)\/\[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\ \^3\)\) + Tr[A]\/\[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\)], \ "Output"] }, Closed]], Cell["Here Tr[A] is the trace of the square matrix A.", "Text"] }, Closed]], Cell[CellGroupData[{ Cell["J", "Subsection", CellTags->"J"], Cell[TextData[{ StyleBox["J[f, x]", "InlineInput"], " is the Jacobian derivative of ", Cell[BoxData[ \(TraditionalForm\`f\)]], " with respect to ", Cell[BoxData[ \(TraditionalForm\`x\)]], ". Here ", Cell[BoxData[ \(TraditionalForm\`f\)]], " should be a function of ", Cell[BoxData[ \(TraditionalForm\`x\)]], " taking values in some Euclidean space, and the Jacobian derivative is the \ usual matrix consisting of partial derivatives of the coordinates of ", Cell[BoxData[ \(TraditionalForm\`f\)]], " (", StyleBox["Mathematica", FontSlant->"Italic"], "'s convention of spelling out names in full would imply that this function \ should be called ", StyleBox["Jacobian", "InlineInput"], " instead of ", StyleBox["J", "InlineInput"], ", but ", StyleBox["Jacobian", "InlineInput"], " is already used by ", StyleBox["Mathematica", FontSlant->"Italic"], " for an unrelated purpose):" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(SetDimension[x, n]\)], "Input"], Cell[BoxData[ \(SetDimension::"Vector" \(\(:\)\(\ \)\) "\!\(x\) will be considered to be a vector in \!\(n\)-dimensional real \ Euclidean space."\)], "Message"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(J[x/\[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2, x]\)], "Input"], Cell[BoxData[ \(\(-\(\(2\ Transpose[{x}] . {x}\)\/\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4\)\) + IdentityMatrix[n]\/\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2\)], "Output"] }, Closed]], Cell[TextData[{ "Although ", Cell[BoxData[ \(TraditionalForm\`x\)]], " can be thought of as a row vector or a column vector, depending on the \ context, if we were using explicit coordinates we would represent ", Cell[BoxData[ \(TraditionalForm\`x\)]], " in ", StyleBox["Mathematica", FontSlant->"Italic"], " by something like ", Cell[BoxData[ StyleBox[\({x\_1, x\_2, ... \ , \ x\_n}\), "InlineInput"]]], ". Thus ", StyleBox["{x}", "InlineInput"], " would be ", Cell[BoxData[ FormBox[ StyleBox[\({{x\_1, x\_2, ... \ , \ x\_n}}\), "InlineInput"], InputForm]]], ", which is a 1-by-", Cell[BoxData[ \(TraditionalForm\`n\)]], " matrix. Thus ", StyleBox["Transpose[{x}]", "InlineInput"], " is an ", Cell[BoxData[ \(TraditionalForm\`n\)]], "-by-1 matrix, and the product ", StyleBox["Transpose[{x}].{x}", "Output"], ", which appears in the last output, is an ", Cell[BoxData[ \(TraditionalForm\`n\)]], "-by-", Cell[BoxData[ \(TraditionalForm\`n\)]], " matrix, as expected." }], "Text"], Cell[TextData[{ StyleBox["IdentityMatrix[n]", "Output"], ", which also appears in the last output, denotes the ", Cell[BoxData[ \(TraditionalForm\`n\)]], "-by-", Cell[BoxData[ \(TraditionalForm\`n\)]], " matrix with 1's on the diagonal and 0's elsewhere." }], "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Homogeneous", "Subsection", CellTags->"Homogeneous"], Cell[TextData[{ StyleBox["Homogeneous[u, m, x]", "InlineInput"], " is the term of degree ", Cell[BoxData[ \(TraditionalForm\`m\)]], " in the homogeneous expansion of ", Cell[BoxData[ \(TraditionalForm\`u\)]], " at the origin; here ", Cell[BoxData[ \(TraditionalForm\`u\)]], " is thought of as a function of the vector ", Cell[BoxData[ \(TraditionalForm\`x\)]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(SetDimension[x, 3]\)], "Input"], Cell[BoxData[ \(SetDimension::"Vector" \(\(:\)\(\ \)\) "\!\(x\) will be considered to be a vector in \!\(3\)-dimensional real \ Euclidean space."\)], "Message"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(\(\(Homogeneous[\((1 - \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2)\)/Cos[x\_1]\^\(3/2\), 4, x]\)\(\n\) \)\)], "Input"], Cell[BoxData[ \(1\/32\ \((\(-11\)\ x\_1\%4 - 24\ x\_1\%2\ x\_2\%2 - 24\ x\_1\%2\ x\_3\%2)\)\)], "Output"] }, Closed]], Cell[TextData[{ "To find homogeneous expansions about points other than the origin, use ", StyleBox["Homogeneous[u, m, x, b]", "InlineInput"], ", which gives the term of degree ", Cell[BoxData[ \(TraditionalForm\`m\)]], " in the homogeneous expansion of ", Cell[BoxData[ \(TraditionalForm\`u\)]], ", as a function of ", Cell[BoxData[ \(TraditionalForm\`x\)]], ", about ", Cell[BoxData[ \(TraditionalForm\`b\)]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Homogeneous[x\_1\ x\_2 + x\_3\^4, 2, x, b]\)], "Input"], Cell[BoxData[ \(Togetherness::"Off" \(\(:\)\(\ \)\) "Togetherness has been turned off. The command TurnOn[Togetherness] \ will turn it back on."\)], "Message"], Cell[BoxData[ \(\((\(-b\_1\) + x\_1)\)\ \((\(-b\_2\) + x\_2)\) + 6\ b\_3\%2\ \((\(-b\_3\) + x\_3)\)\^2\)], "Output"] }, Closed]], Cell[TextData[{ "The first time in each ", StyleBox["Mathematica", FontSlant->"Italic"], " session that you use ", StyleBox["Homogeneous", "InlineInput"], " to find an expansion about a point other than the origin, you may see a \ message that ", StyleBox["Togetherness", "Output"], " has been turned off. The ", ButtonBox["Togetherness", ButtonData:>"TurnOff and TurnOn", ButtonStyle->"Hyperlink"], " subsection later in this notebook provides an explanation for this \ message." }], "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Taylor", "Subsection", CellTags->"Taylor"], Cell[TextData[{ StyleBox["Taylor[u, m, x]", "InlineInput"], " is the sum of all terms of degree at most ", Cell[BoxData[ \(TraditionalForm\`m\)]], " in the Taylor series expansion of ", Cell[BoxData[ \(TraditionalForm\`u\)]], " at the origin; here ", Cell[BoxData[ \(TraditionalForm\`u\)]], " is thought of as a function of the vector ", Cell[BoxData[ \(TraditionalForm\`x\)]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(\(Taylor[x\_1\^2/\((6 + x\_2 + Cos[x\_3])\), 4, x]\)\(\n\) \)\)], "Input"], Cell[BoxData[ \(x\_1\%2\/7 - 1\/49\ x\_1\%2\ x\_2 + 1\/343\ x\_1\%2\ x\_2\%2 + 1\/98\ x\_1\%2\ x\_3\%2\)], "Output"] }, Closed]], Cell[TextData[{ "To find Taylor series expansions about points other than the origin, use \ ", StyleBox["Taylor[u, m, x, b]", "InlineInput"], ", which gives the sum of all terms of degree at most ", Cell[BoxData[ \(TraditionalForm\`m\)]], " in the Taylor series expansion of ", Cell[BoxData[ \(TraditionalForm\`u\)]], ", as a function of ", Cell[BoxData[ \(TraditionalForm\`x\)]], ", about ", Cell[BoxData[ \(TraditionalForm\`b\)]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Taylor[1 + x\_1\ x\_2 + x\_1\^2, 2, x, b]\)], "Input"], Cell[BoxData[ \(1 + b\_1\%2 + b\_1\ b\_2 + \((2\ b\_1 + b\_2)\)\ \((\(-b\_1\) + x\_1)\) + \((\(-b\_1\) + x\_1)\)\^2 + b\_1\ \((\(-b\_2\) + x\_2)\) + \((\(-b\_1\) + x\_1)\)\ \((\(-b\_2\) + x\_2)\)\)], "Output"] }, Closed]], Cell[TextData[{ "The first time in each ", StyleBox["Mathematica", FontSlant->"Italic"], " session that you use ", StyleBox["Taylor", "InlineInput"], " to find an expansion about a point other than the origin, you may see a \ message that ", StyleBox["Togetherness", "Output"], " has been turned off. The ", ButtonBox["Togetherness", ButtonData:>"TurnOff and TurnOn", ButtonStyle->"Hyperlink"], " subsection later in this notebook provides an explanation for this \ message. ", "For now, we turn ", StyleBox["Togetherness", "Output"], " back on so that further output in this notebook will be displayed \ nicely." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(TurnOn[Togetherness]\)], "Input"], Cell[BoxData[ \(Togetherness::"On" \(\(:\)\(\ \)\) "Togetherness has been turned on. The command TurnOff[Togetherness] \ will turn it back off."\)], "Message"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Nonexplicit functions", "Subsection", CellTags->"Nonexplicit Functions"], Cell[TextData[{ "Our examples so far have involved only concretely defined functions. But \ functions in symbolic form can also be used with each of the differentiation \ commands in this package. Here, for example, is how to find the gradient of \ the function whose value at ", Cell[BoxData[ \(TraditionalForm\`x\)]], " is ", Cell[BoxData[ \(TraditionalForm\`f(\((g(3 x))\)\^2)\)]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Grad[f[g[3 x]\^2], x]\)], "Input"], Cell[BoxData[ RowBox[{"6", " ", \(g[3\ x]\), " ", \(\(Grad[g]\)[3\ x]\), " ", RowBox[{ SuperscriptBox["f", "\[Prime]", MultilineFunction->None], "[", \(g[3\ x]\^2\), "]"}]}]], "Output"] }, Closed]], Cell[TextData[{ "Here ", StyleBox["Grad[g][3x]", "Output"], " denotes the gradient of ", Cell[BoxData[ \(TraditionalForm\`g\)]], ", evaluated at ", Cell[BoxData[ \(TraditionalForm\`3\ x\)]], ". For the example above to make sense, we (and the computer) must think of \ ", Cell[BoxData[ \(TraditionalForm\`g\)]], " as a real-valued function on some Euclidean space (where ", Cell[BoxData[ \(TraditionalForm\`x\)]], " lives) and ", Cell[BoxData[ \(TraditionalForm\`f\)]], " as a function from ", StyleBox["R", FontWeight->"Bold"], " to ", StyleBox["R", FontWeight->"Bold"], ". Let's find the Laplacian of the same function:" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Laplacian[f[g[3 x]\^2], x]\)], "Input"], Cell[BoxData[ RowBox[{ RowBox[{ "18", " ", \((\[LeftDoubleBracketingBar]\(Grad[g]\)[3\ x]\ \[RightDoubleBracketingBar]\^2 + g[3\ x]\ \(Laplacian[g]\)[3\ x])\), " ", RowBox[{ SuperscriptBox["f", "\[Prime]", MultilineFunction->None], "[", \(g[3\ x]\^2\), "]"}]}], "+", RowBox[{ "36", " ", \(g[3\ x]\^2\), " ", \(\[LeftDoubleBracketingBar]\(Grad[g]\)[ 3\ x]\[RightDoubleBracketingBar]\^2\), " ", RowBox[{ SuperscriptBox["f", "\[Prime]\[Prime]", MultilineFunction->None], "[", \(g[3\ x]\^2\), "]"}]}]}]], "Output"] }, Closed]], Cell[TextData[{ StyleBox["Laplacian[g][3x]", "InlineInput"], " denotes, of course, the Laplacian of ", Cell[BoxData[ \(TraditionalForm\`g\)]], ", evaluated at ", Cell[BoxData[ \(TraditionalForm\`3\ x\)]], "." }], "Text"], Cell[TextData[{ "All our differentiation commands (", StyleBox["Partial", "InlineInput"], ", ", StyleBox["Laplacian", "InlineInput"], ", ", StyleBox["Gradient", "InlineInput"], ", ", StyleBox["NormalD", "InlineInput"], ", ", StyleBox["Divergence", "InlineInput"], ", ", StyleBox["Jacobian", "InlineInput"], ") and ", StyleBox["Homogeneous", "InlineInput"], " and ", StyleBox["Taylor", "InlineInput"], " can be used with non-explicit functions. For example, if working in ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], "2"], TraditionalForm]]], ", to find the term of degree 3 in the homogeneous expansion of ", Cell[BoxData[ \(TraditionalForm\`f(\((g(3 x))\)\^2)\)]], " about the origin, you would enter the command ", StyleBox["SetDimension[x, 2]", "InlineInput"], " and then the command ", StyleBox["Homogeneous[", "InlineInput"], StyleBox[Cell[BoxData[ \(f[g[3 x]\^2]\)], "InlineInput"], "InlineInput"], StyleBox[", 3, x].", "InlineInput"], " Try it! In the answer you will see terms such as ", Cell[BoxData[ StyleBox[\(\(Partial\_{1, 1, 2}[g]\)[0]\), "Output"]]], ", which denotes the partial derivative of ", Cell[BoxData[ \(TraditionalForm\`g\)]], ", twice with respect to the first variable and once with respect to the \ second variable, evaluated at 0." }], "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Vector-valued functions", "Subsection", CellTags->"Vector-valued Functions"], Cell[TextData[{ "Suppose we compute the partial derivative with respect to ", Cell[BoxData[ \(TraditionalForm\`x\_1\)]], " of the function that takes ", Cell[BoxData[ \(TraditionalForm\`x\)]], " to ", Cell[BoxData[ \(TraditionalForm\`f(g(\(h(x)\)\^2))\)]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Partial[f[g[h[x]\^2]], x\_1]\)], "Input"], Cell[BoxData[ RowBox[{"2", " ", \(h[x]\), " ", RowBox[{ SuperscriptBox["f", "\[Prime]", MultilineFunction->None], "[", \(g[h[x]\^2]\), "]"}], " ", RowBox[{ SuperscriptBox["g", "\[Prime]", MultilineFunction->None], "[", \(h[x]\^2\), "]"}], " ", \(\(Partial\_{1}[h]\)[x]\)}]], "Output"] }, Closed]], Cell[TextData[{ "The example above illustrates a general principle: This package assumes \ that all functions are real valued, unless told otherwise. Thus the last \ output is correct if we are thinking of ", Cell[BoxData[ \(TraditionalForm\`g\)]], " as a real-valued function. If we want to think of ", Cell[BoxData[ \(TraditionalForm\`g\)]], " as taking values in ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], "n"], TraditionalForm]]], ", we must first enter the \ncommand ", StyleBox["SetDimension[g[_], n]", "InlineInput"], ", which instructs the computer that ", Cell[BoxData[ \(TraditionalForm\`g\)]], " is a function with range in ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], "n"], TraditionalForm]]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ StyleBox[\(SetDimension[g[_], \ n]\), "InlineInput"]], "Input"], Cell[BoxData[ \(SetDimension::"VectorValuedFunction" \(\(:\)\(\ \)\) "\!\(g\) will be considered to be a function taking values in \ \!\(n\)-dimensional Euclidean space."\)], "Message"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(Partial[f[g[h[x]\^2]], x\_1]\)], "Input"], Cell[BoxData[ RowBox[{"2", " ", RowBox[{\(\(Grad[f]\)[g[h[x]\^2]]\), ".", RowBox[{ SuperscriptBox["g", "\[Prime]", MultilineFunction->None], "[", \(h[x]\^2\), "]"}]}], " ", \(h[x]\), " ", \(\(Partial\_{1}[h]\)[x]\)}]], "Output"] }, Closed]], Cell[TextData[{ "Note that the last output involves the dot product of two vectors: the \ gradient of ", Cell[BoxData[ \(TraditionalForm\`f\)]], ", evaluated at ", Cell[BoxData[ \(TraditionalForm\`g(\(h(x)\)\^2)\)]], ", and the derivative of \n", Cell[BoxData[ \(TraditionalForm\`g\)]], ", evaluated at ", Cell[BoxData[ \(TraditionalForm\`\(h(x)\)\^2\)]], ". The last two outputs should be compared." }], "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Volume", "Subsection", CellTags->"Volume"], Cell[TextData[{ StyleBox["Volume[n]", "InlineInput"], " is the volume (unnormalized) of the unit ball in ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], StyleBox["n", FontSize->10]], TraditionalForm]]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Volume[4]\)], "Input"], Cell[BoxData[ \(\[Pi]\^2\/2\)], "Output"] }, Closed]], Cell[TextData[{ StyleBox["Volume", "InlineInput"], " is computed using the formula given by Exercise 6 in Appendix A of [", ButtonBox["ABR", ButtonData:>"ABR", ButtonStyle->"Hyperlink"], "]." }], "Text"] }, Closed]], Cell[CellGroupData[{ Cell["SurfaceArea", "Subsection", CellTags->"SurfaceArea"], Cell[TextData[{ StyleBox["SurfaceArea[n]", "InlineInput"], " is the surface area (unnormalized) of the unit sphere in ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], StyleBox["n", FontSize->10]], TraditionalForm]]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(SurfaceArea[57]\)], "Input"], Cell[BoxData[ \(\(536870912\ \[Pi]\^28\)\/8687364368561751199826958100282265625\)], \ "Output"] }, Closed]], Cell[TextData[{ StyleBox["SurfaceArea[n]", "InlineInput"], " is computed by multiplying the formula for ", StyleBox["Volume[n]", "InlineInput"], " by ", Cell[BoxData[ \(TraditionalForm\`n\)]], "; see A.2 in Appendix A of [", ButtonBox["ABR", ButtonData:>"ABR", ButtonStyle->"Hyperlink"], "]." }], "Text"] }, Closed]], Cell[CellGroupData[{ Cell["IntegrateSphere", "Subsection", CellTags->"IntegrateSphere"], Cell[TextData[{ StyleBox["IntegrateSphere[f, x]", "InlineInput"], " equals the integral of ", Cell[BoxData[ \(TraditionalForm\`f\)]], ", with respect to normalized surface area measure, over the unit sphere in \ the Euclidean space defined by ", Cell[BoxData[ \(TraditionalForm\`x\)]], ". Here ", Cell[BoxData[ \(TraditionalForm\`f\)]], " should be a polynomial function of ", Cell[BoxData[ \(TraditionalForm\`x\)]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(SetDimension[x, n]\)], "Input"], Cell[BoxData[ \(SetDimension::"Vector" \(\(:\)\(\ \)\) "\!\(x\) will be considered to be a vector in \!\(n\)-dimensional real \ Euclidean space."\)], "Message"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(IntegrateSphere[x\_1\^2\ x\_2\^4\ x\_3\^6, x]\)], "Input"], Cell[BoxData[ \(45\/\(n\ \((2 + n)\)\ \((4 + n)\)\ \((6 + n)\)\ \((8 + n)\)\ \((10 + n)\ \)\)\)], "Output"] }, Closed]], Cell[TextData[{ StyleBox["IntegrateSphere", "InlineInput"], " is computed by using the results in Section 3 of [", ButtonBox["W", ButtonData:>"W", ButtonStyle->"Hyperlink"], "]." }], "Text"] }, Closed]], Cell[CellGroupData[{ Cell["IntegrateBall", "Subsection", CellTags->"IntegrateBall"], Cell[TextData[{ StyleBox["IntegrateBall[f, x]", "InlineInput"], " equals the integral of ", Cell[BoxData[ \(TraditionalForm\`f\)]], ", with respect to (unnormalized) volume measure, over the unit ball in the \ Euclidean space defined by ", Cell[BoxData[ \(TraditionalForm\`x\)]], ". Here ", Cell[BoxData[ \(TraditionalForm\`f\)]], " should be a function of ", Cell[BoxData[ \(TraditionalForm\`x\)]], " and ||", Cell[BoxData[ \(TraditionalForm\`\(\(x\)\(||\)\)\)]], " that is a polynomial in ", Cell[BoxData[ \(TraditionalForm\`x\)]], " and a function in ||", Cell[BoxData[ \(TraditionalForm\`\(\(x\)\(||\)\)\)]], " for which ", StyleBox["Mathematica", FontSlant->"Italic"], " can find an explicit antiderivative:" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(SetDimension[x, 7]\)], "Input"], Cell[BoxData[ \(SetDimension::"Vector" \(\(:\)\(\ \)\) "\!\(x\) will be considered to be a vector in \!\(7\)-dimensional real \ Euclidean space."\)], "Message"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(IntegrateBall[ x\_1\^2\ x\_2\^4/\((1 + \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar])\), x]\)], "Input"], Cell[BoxData[ \(\(16\ \[Pi]\^3\ \((\(-\(18107\/27720\)\) + Log[2])\)\)\/3465\)], \ "Output"] }, Closed]], Cell[TextData[{ StyleBox["IntegrateBall", "InlineInput"], " is computed by converting to polar coordinates and then using the \ function ", StyleBox["IntegrateSphere ", "InlineInput"], "(see [", ButtonBox["R", ButtonData:>"R", ButtonStyle->"Hyperlink"], "], Chapter 8, Exercise 6)." }], "Text"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Boundary Value Problems", "Section", CellTags->"Boundary Value Problems"], Cell[CellGroupData[{ Cell["Dirichlet problems", "Subsection", CellTags->"Dirichlet"], Cell[CellGroupData[{ Cell["The Dirichlet problem on the sphere", "Subsubsection"], Cell[TextData[{ StyleBox["Dirichlet[p, x]", "InlineInput"], " is the solution to the standard Dirichlet problem: find the harmonic \ function on the unit ball in the Euclidean space defined by ", Cell[BoxData[ \(TraditionalForm\`x\)]], " that equals ", Cell[BoxData[ \(TraditionalForm\`p\)]], " on the unit sphere. Thus ", StyleBox["Dirichlet[p, x]", "InlineInput"], " is the Poisson integral of ", Cell[BoxData[ \(TraditionalForm\`p\)]], " as a function of ", Cell[BoxData[ \(TraditionalForm\`x\)]], ". Here ", Cell[BoxData[ \(TraditionalForm\`p\)]], " must be a polynomial function of ", Cell[BoxData[ \(TraditionalForm\`x\)]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(SetDimension[x, 5]\)], "Input"], Cell[BoxData[ \(SetDimension::"Vector" \(\(:\)\(\ \)\) "\!\(x\) will be considered to be a vector in \!\(5\)-dimensional real \ Euclidean space."\)], "Message"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(Dirichlet[x\_1\^4\ x\_2\^2, x]\)], "Input"], Cell[BoxData[ \(\(\(1\/15015\)\((143 - 273\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2 + 165\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^4 - 35\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^6 + 910\ x\_1\%2 - 1540\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ x\_1\ \%2 + 630\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^4\ x\_1\%2 \ + 1155\ x\_1\%4 - 1155\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ x\_1\ \%4 + 455\ x\_2\%2 - 770\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ \ x\_2\%2 + 315\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^4\ \ x\_2\%2 + 6930\ x\_1\%2\ x\_2\%2 - 6930\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ x\_1\ \%2\ x\_2\%2 + 15015\ x\_1\%4\ x\_2\%2)\)\)\)], "Output"] }, Closed]], Cell[TextData[{ "The last output is a harmonic function on ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], "5"], TraditionalForm]]], "that equals ", Cell[BoxData[ \(TraditionalForm\`\(x\_1\^4\) x\_2\^2\)]], " on the unit sphere. To check this, first we take the Laplacian of the \ last output, and then we evaluate the last output on the unit sphere:" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Laplacian[%, \ x]\)], "Input"], Cell[BoxData[ \(0\)], "Output"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(%%\ /. \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar] \ \[Rule] 1\)], "Input"], Cell[BoxData[ \(x\_1\%4\ x\_2\%2\)], "Output"] }, Closed]], Cell["Thus we have indeed solved the specified Dirichlet problem.", "Text"], Cell[TextData[{ "The solution to the Dirichlet problem on the sphere is computed by using \ the algorithm described in [", ButtonBox["AR", ButtonData:>"AR", ButtonStyle->"Hyperlink"], "]." }], "Text"] }, Closed]], Cell[CellGroupData[{ Cell["The Dirichlet problem on the exterior of the sphere", "Subsubsection"], Cell[TextData[{ "The ", StyleBox["Region", "InlineInput"], " option allows the user to solve Dirichlet problems on regions other than \ the sphere. Currently supported values for ", StyleBox["Region", "InlineInput"], " are ", StyleBox["Sphere", "InlineInput"], ", ", StyleBox["ExteriorSphere", "InlineInput"], ", ", StyleBox["Annulus", "InlineInput"], ", and ", StyleBox["Quadratic", "InlineInput"], ". The default value of ", StyleBox["Region", "InlineInput"], " is ", StyleBox["Sphere", "InlineInput"], "; thus ", StyleBox["Dirichlet[p, x, Region\[Rule]Sphere]", "InlineInput"], " is the same as ", StyleBox["Dirichlet[p, x]", "InlineInput"], "." }], "Text"], Cell[TextData[{ Cell[BoxData[ \(Dirichlet[p, x, \ Region \[Rule] ExteriorSphere]\)], "InlineInput"], " gives the solution to the standard exterior Dirichlet problem: find the \ harmonic function on the exterior (including \[Infinity]) of the unit ball in \ the Euclidean space defined by ", Cell[BoxData[ \(TraditionalForm\`x\)]], " that equals ", Cell[BoxData[ \(TraditionalForm\`p\)]], " on the unit sphere. This function is the exterior Poisson integral of ", Cell[BoxData[ \(TraditionalForm\`p\)]], " as a function of ", Cell[BoxData[ \(TraditionalForm\`x\)]], " (see Theorem 4.11 of [", ButtonBox["ABR", ButtonData:>"ABR", ButtonStyle->"Hyperlink"], "]). Here ", Cell[BoxData[ \(TraditionalForm\`p\)]], " must be a polynomial function of ", Cell[BoxData[ \(TraditionalForm\`x\)]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Dirichlet[x\_1\^4\ x\_2\^2, x, \ Region \[Rule] ExteriorSphere]\)], "Input"], Cell[BoxData[ \(\(\(1\/\(15015\ \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^15\)\)\((\(-35\)\ \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^6 + 165\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^8 - 273\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^10 + 143\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^12 + 630\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^4\ \ x\_1\%2 - 1540\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^6\ x\_1\ \%2 + 910\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^8\ x\_1\%2 \ - 1155\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ x\_1\%4 + 1155\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^4\ x\_1\ \%4 + 315\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^4\ x\_2\%2 \ - 770\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^6\ x\_2\%2 + 455\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^8\ \ x\_2\%2 - 6930\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ x\_1\ \%2\ x\_2\%2 + 6930\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^4\ x\_1\ \%2\ x\_2\%2 + 15015\ x\_1\%4\ x\_2\%2)\)\)\)], "Output"] }, Closed]], Cell[TextData[{ "The last output is a harmonic function on the exterior of the unit ball in \ ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], "5"], TraditionalForm]]], " (because the dimension of ", Cell[BoxData[ \(TraditionalForm\`x\)]], " was set to 5 earlier) that equals ", Cell[BoxData[ \(TraditionalForm\`\(x\_1\^4\) x\_2\^2\)]], " on the unit sphere. This function is the Kelvin transform of the solution \ that would have been obtained without the ", StyleBox["Region\[Rule]Sphere", "InlineInput"], " option; see Chapter 4 of [", ButtonBox["ABR", ButtonData:>"ABR", ButtonStyle->"Hyperlink"], "]." }], "Text"] }, Closed]], Cell[CellGroupData[{ Cell["The Dirichlet problem on annular regions", "Subsubsection"], Cell[TextData[{ Cell[BoxData[ \(Dirichlet[{p, q}, x, \ Region \[Rule] Annulus[r, s]\ ]\)], "InlineInput"], " gives the solution to the annular Dirichlet problem: find the harmonic \ function on the annular region with inner radius ", Cell[BoxData[ \(TraditionalForm\`r\)]], " and outer radius ", Cell[BoxData[ \(TraditionalForm\`s\)]], " that equals ", Cell[BoxData[ \(TraditionalForm\`p\)]], " on the sphere of radius ", Cell[BoxData[ \(TraditionalForm\`r\)]], " and equals ", Cell[BoxData[ \(TraditionalForm\`q\)]], " on the sphere of radius ", Cell[BoxData[ \(TraditionalForm\`s\)]], ". Here ", Cell[BoxData[ \(TraditionalForm\`p\)]], " and ", Cell[BoxData[ \(TraditionalForm\`q\)]], " must be polynomial functions of ", Cell[BoxData[ \(TraditionalForm\`x\)]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Dirichlet[{x\_1\^3, x\_3\^2}, x, \ Region \[Rule] Annulus[1, 4]]\)], "Input"], Cell[BoxData[ \(\(-\(1024\/315\)\)\ \((\(-1\) + 1\/\[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^3)\) + \ \(1024\ \((\(-\(1\/1024\)\) + 1\/\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^5)\)\ x\_1\)\/2387 + \(\((\(-262144\) + \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^9)\)\ \((3\ \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ x\_1 - 7\ x\_1\%3)\ \)\)\/\(1835001\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^9\) \ - \(16384\ \((\(-1\) + 1\/\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^7)\)\ \((\(-\(\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2\/5\)\) + x\_3\%2)\)\)\/16383\)], "Output"] }, Closed]], Cell[TextData[{ "Now we check that the last output is harmonic on ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], "5"], TraditionalForm]]], " (because the dimension of ", Cell[BoxData[ \(TraditionalForm\`x\)]], " was set to 5 earlier), that it equals ", Cell[BoxData[ \(TraditionalForm\`x\_1\^3\)]], " on the sphere of radius 1, and that it equals ", Cell[BoxData[ \(TraditionalForm\`x\_3\^2\)]], " on the sphere of radius 4:" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Laplacian[%, \ x]\)], "Input"], Cell[BoxData[ \(0\)], "Output"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(%%\ /. \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar] \ \[Rule] 1\)], "Input"], Cell[BoxData[ \(x\_1\%3\)], "Output"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(%%%\ /. \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar] \ \[Rule] 4\)], "Input"], Cell[BoxData[ \(x\_3\%2\)], "Output"] }, Closed]], Cell[TextData[{ "If ", Cell[BoxData[ \(TraditionalForm\`p = q\)]], ", then the shortcut ", Cell[BoxData[ \(Dirichlet[p, x, \ Region \[Rule] Annulus[r, s]\ ]\)], "InlineInput"], " can be used instead of ", Cell[BoxData[ \(Dirichlet[{p, q}, x, \ Region \[Rule] Annulus[r, s]\ ]\)], "InlineInput"], "." }], "Text"], Cell[TextData[{ "The solution to the Dirichlet problem on an annulus is computed by using \ the techniques described in Chapter 10 of [", ButtonBox["ABR", ButtonData:>"ABR", ButtonStyle->"Hyperlink"], "]." }], "Text"] }, Closed]], Cell[CellGroupData[{ Cell["The Dirichlet problem on quadratic surfaces", "Subsubsection"], Cell[TextData[{ Cell[BoxData[ \(Dirichlet[p, x, \ Region \[Rule] Quadratic[b, \ c, d]\ ]\)], "InlineInput"], " gives the harmonic polynomial that equals ", Cell[BoxData[ \(TraditionalForm\`p\)]], " on the quadratic surface" }], "Text"], Cell[TextData[Cell[BoxData[ \(TraditionalForm\`b . x\^2 + \ c . x\ + \ d\ = \ 0\)]]], "Text", TextAlignment->Center], Cell[TextData[{ "Here ", Cell[BoxData[ \(TraditionalForm\`b\)]], " and ", Cell[BoxData[ \(TraditionalForm\`c\)]], " must be lists whose length equals the dimension of ", Cell[BoxData[ \(TraditionalForm\`x\)]], ", and ", Cell[BoxData[ \(TraditionalForm\`p\)]], " must be a polynomial function of ", Cell[BoxData[ \(TraditionalForm\`x\)]], ". For example, here we find the harmonic polynomial that equals ", Cell[BoxData[ \(TraditionalForm\`\(x\_1\^3\) x\_3\^2\)]], "on the elliptic paraboloid given by the equation" }], "Text"], Cell[TextData[Cell[BoxData[ \(TraditionalForm\`2 x\_1\^2 + 3 x\_2\^2\ = \ 4 x\_3 + \ 1\)]]], "Text", TextAlignment->Center], Cell[TextData[{ "in ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], "3"], TraditionalForm]]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(SetDimension[x, 3]\)], "Input"], Cell[BoxData[ \(SetDimension::"Vector" \(\(:\)\(\ \)\) "\!\(x\) will be considered to be a vector in \!\(3\)-dimensional real \ Euclidean space."\)], "Message"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(Dirichlet[\(x\_1\^3\) x\_3\^2, x, Region \[Rule] Quadratic[{2, 3, 0}, {0, 0, \(-4\)}, \(-1\)]]\)], "Input"], Cell[BoxData[ \(x\_1\%3\ x\_3\%2 + \(\((\(-1\) + 2\ x\_1\%2 + 3\ x\_2\%2 - 4\ x\_3)\)\ \ \((\(-5123\)\ x\_1 - 405\ x\_1\%3 + 1053\ x\_1\ x\_2\%2 - 9684\ x\_1\ x\_3 - \ 7209\ x\_1\ x\_3\%2)\)\)\/21627\)], "Output"] }, Closed]], Cell[TextData[{ "The last output is of the form ", Cell[BoxData[ \(TraditionalForm\`\(x\_1\^3\) x\_3\^2 + \((2 x\_1\^2 + 3 x\_2\^2 - 4 x\_3 - 1)\) f\)]], ", where ", Cell[BoxData[ \(TraditionalForm\`f\)]], " is a polynomial. Thus the last output obviously equals ", Cell[BoxData[ \(TraditionalForm\`\(x\_1\^3\) x\_3\^2\)]], " on the elliptic parabolic given by the equation ", Cell[BoxData[ \(TraditionalForm\`2 x\_1\^2 + 3 x\_2\^2\ = \ 4 x\_3 + \ 1\)]], ". Thus to verify that the last output is correct, we only need check that \ it is harmonic:" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Laplacian[%, \ x]\)], "Input"], Cell[BoxData[ \(0\)], "Output"] }, Closed]], Cell[TextData[{ "The solution to the Dirichlet problem on a quadratic surface is computed \ by using the algorithm developed in [", ButtonBox["AGV", ButtonData:>"AGV", ButtonStyle->"Hyperlink"], "]. That paper also shows that if each coordinate of ", Cell[BoxData[ \(TraditionalForm\`b\)]], " is nonnegative and at least one coordinate of ", Cell[BoxData[ \(TraditionalForm\`b\)]], " is nonzero, and if the quadratic surface in question is nontrivial in the \ sense that there exits ", Cell[BoxData[ FormBox[ RowBox[{"x", " ", "\[Epsilon]", " ", SuperscriptBox[ StyleBox["R", FontWeight->"Bold"], "n"]}], TraditionalForm]]], " such that" }], "Text"], Cell[TextData[{ Cell[BoxData[ \(TraditionalForm\`b . x\^2 + \ c . x\ + \ d\ < \ 0\)]], "," }], "Text", TextAlignment->Center], Cell[TextData[{ "then the polynomial produced by this algorithm is the unique harmonic \ polynomial that equals ", Cell[BoxData[ \(TraditionalForm\`p\)]], " on the quadratic surface in question." }], "Text"], Cell[TextData[{ "Using the notation above, if ", Cell[BoxData[ \(TraditionalForm\`c\)]], " consists of all 0's, then it may be omitted. For example, here we find \ the harmonic polynomial that equals ", Cell[BoxData[ \(TraditionalForm\`\(x\_1\^4\) x\_3\^2\)]], "on the ellipsoid given by the equation ", Cell[BoxData[ \(TraditionalForm\`2 x\_1\^2 + 3 x\_2\^2 + 4 x\_3\^2 = 1\)]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Dirichlet[\(x\_1\^4\) x\_3\^2, x, Region \[Rule] Quadratic[{2, 3, 4}, \(-1\)]]\)], "Input"], Cell[BoxData[ \(x\_1\%4\ x\_3\%2 + \(\(1\/39309793479\)\((\((\(-1\) + 2\ x\_1\%2 + 3\ x\_2\%2 + 4\ x\_3\%2)\)\ \((\(-52529359\) - 511000770\ x\_1\%2 - 801788415\ x\_1\%4 + 102950118\ x\_2\%2 + 945182934\ x\_1\%2\ x\_2\%2 - 67605435\ x\_2\%4 - 64713579\ x\_3\%2 - 5766993996\ x\_1\%2\ x\_3\%2 + 204109461\ x\_2\%2\ x\_3\%2 + 342331356\ x\_3\%4)\))\)\)\)], "Output"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Generalized Dirichlet problems", "Subsubsection"], Cell[TextData[{ "The generalized Dirichlet problem asks for a function with specified \ boundary values on some surface and with specified Laplacian inside that \ surface. Thus if the Laplacian is required to be 0, then this is the same as \ the usual Dirichlet problem. The generalized Dirichlet problem with specified \ Laplacian equal to ", Cell[BoxData[ \(TraditionalForm\`p\)]], " is solved by adding the option ", Cell[BoxData[ StyleBox[\(Laplacian \[Rule] \ p\), "InlineInput"]]], " to the ", StyleBox["Dirichlet", "InlineInput"], " function; here ", Cell[BoxData[ \(TraditionalForm\`p\)]], " must be a polynomial. For example, we can find the function that equals \ ", Cell[BoxData[ \(TraditionalForm\`\(x\_1\^3\) x\_2\^2\)]], "on the unit sphere in ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], "3"], TraditionalForm]]], " and whose Laplacian equals ", Cell[BoxData[ \(TraditionalForm\`\(x\_2\^2\) x\_3\)]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Dirichlet[\(x\_1\^3\) x\_2\^2, \ x, \ Laplacian \[Rule] \ \(x\_2\^2\) x\_3]\)], "Input"], Cell[BoxData[ \(\(\(1\/1260\)\((108\ x\_1 - 168\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ x\_1 \ + 60\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^4\ x\_1 + 140\ x\_1\%3 - 140\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ \ x\_1\%3 + 420\ x\_1\ x\_2\%2 - 420\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ x\_1\ \ x\_2\%2 + 1260\ x\_1\%3\ x\_2\%2 - 9\ x\_3 + 14\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ x\_3 - 5\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^4\ x\_3 - 70\ x\_2\%2\ x\_3 + 70\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ \ x\_2\%2\ x\_3)\)\)\)], "Output"] }, Closed]], Cell[TextData[{ "We can check that output above correctly solves the generalized Dirichlet \ problem by verifying that the Laplacian of the last output indeed equals ", Cell[BoxData[ \(TraditionalForm\`\(x\_2\^2\) x\_3\)]], " and that the last output restricted to the unit sphere indeed equals ", Cell[BoxData[ \(TraditionalForm\`\(x\_1\^3\) x\_2\^2\)]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Laplacian[%, \ x]\)], "Input"], Cell[BoxData[ \(x\_2\%2\ x\_3\)], "Output"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(%%\ /. \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar] \ \[Rule] 1\)], "Input"], Cell[BoxData[ \(x\_1\%3\ x\_2\%2\)], "Output"] }, Closed]], Cell[TextData[{ "The ", StyleBox["Laplacian", "InlineInput"], " option can be used combined with the ", StyleBox["Region", "InlineInput"], " option to solve the generalized Dirichlet problem on any region for which \ this package can solve the usual Dirichlet problem. The order of the options \ does not matter. Here we find the function on ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], "3"], TraditionalForm]]], " whose Laplacian equals ", Cell[BoxData[ \(TraditionalForm\`x\_2\^2\)]], "and that equals ", Cell[BoxData[ \(TraditionalForm\`\(x\_1\^4\) x\_3\^2\)]], "on the ellipsoid ", Cell[BoxData[ \(TraditionalForm\`2 x\_1\^2 + 3 x\_2\^2 + 4 x\_3\^2 - \ 1\ = \ 0\)]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Dirichlet[\(x\_1\^4\) x\_3\^2, x, Laplacian \[Rule] x\_2\^2, Region \[Rule] Quadratic[{2, 3, 4}, \(-1\)]]\)], "Input"], Cell[BoxData[ \(x\_1\%4\ x\_3\%2 + \(\(1\/157239173916\)\((\((\(-1\) + 2\ x\_1\%2 + 3\ x\_2\%2 + 4\ x\_3\%2)\)\ \((82719889 - 2354066130\ x\_1\%2 - 3207153660\ x\_1\%4 + 3779085195\ x\_2\%2 + 3780731736\ x\_1\%2\ x\_2\%2 - 270421740\ x\_2\%4 - 680540064\ x\_3\%2 - 23067975984\ x\_1\%2\ x\_3\%2 + 816437844\ x\_2\%2\ x\_3\%2 + 1369325424\ x\_3\%4)\))\)\)\)], "Output"] }, Closed]], Cell[TextData[{ "The form of the last output shows, without calculutation, that it \ obviously equals ", Cell[BoxData[ \(TraditionalForm\`\(x\_1\^4\) x\_3\^2\)]], "on the ellipsoid ", Cell[BoxData[ \(TraditionalForm\`2 x\_1\^2 + 3 x\_2\^2 + 4 x\_3\^2 - \ 1\ = \ 0\)]], ". Thus to verify that we have correctly solved this generalized Dirichlet \ problem, we only need to check that the Laplacian equals ", Cell[BoxData[ \(TraditionalForm\`x\_2\^2\)]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Laplacian[%, \ x]\)], "Input"], Cell[BoxData[ \(x\_2\%2\)], "Output"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Dirichlet problems with explicit coordinates", "Subsubsection"], Cell[TextData[{ "So far we have worked with symbolic vectors, which we have usually called \ ", Cell[BoxData[ \(TraditionalForm\`x\)]], " or ", Cell[BoxData[ \(TraditionalForm\`z\)]], ". Vectors can also be described by giving explicit coordinates in the form \ of a list. Both formats (symbolic vectors and explicit lists) work with all \ functions in this package. For example, suppose we are working in ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], "3"], TraditionalForm]]], " and want to use ", Cell[BoxData[ \(TraditionalForm\`x\)]], ", ", Cell[BoxData[ \(TraditionalForm\`y\)]], ", and ", Cell[BoxData[ \(TraditionalForm\`z\)]], " instead of ", Cell[BoxData[ \(TraditionalForm\`x\_1\)]], ", ", Cell[BoxData[ \(TraditionalForm\`x\_2\)]], ", and ", Cell[BoxData[ \(TraditionalForm\`x\_3\)]], ". Here is how to find the Poisson integral of ", Cell[BoxData[ FormBox[ RowBox[{ FormBox[\(\(x\^3\) y\), "TraditionalForm"], \(z\^2\)}], TraditionalForm]]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Dirichlet[\(x\^3\) y\ z\^2, \ {x, y, z}]\)], "Input"], Cell[BoxData[ \(1\/231\ \((11\ x\ y + 3\ x\^3\ y - 14\ x\^5\ y - 18\ x\ y\^3 - 7\ x\^3\ y\^3 + 7\ x\ y\^5 + 45\ x\ y\ z\^2 + 161\ x\^3\ y\ z\^2 - 49\ x\ y\^3\ z\^2 - 56\ x\ y\ z\^4)\)\)], "Output"] }, Closed]], Cell["\<\ To check that the last output is correct, first we verify that is \ harmonic by checking that its Laplacian equals 0:\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Laplacian[%, \ {x, y, z}]\)], "Input"], Cell[BoxData[ \(0\)], "Output"] }, Closed]], Cell[TextData[{ "Now we check that the difference between the claimed solution to the \ Dirichlet problem equals ", Cell[BoxData[ \(TraditionalForm\`\(x\^3\) yz\^2\)]], " on the unit sphere by verifying that the difference between these two \ functions, when restricted to the unit sphere, equals 0:" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(x\^3\) y\ z\^2 - \ %%\ /. \ z \[Rule] \@\(1 - x\^2 - y\^2\)\)], "Input"], Cell[BoxData[ \(0\)], "Output"] }, Closed]], Cell[TextData[{ "Here is another example using explicit coordinates. In this example, we \ find the function on ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], "3"], TraditionalForm]]], " whose Laplacian equals ", Cell[BoxData[ \(TraditionalForm\`\(y\^2\) z\)]], " and that equals ", Cell[BoxData[ FormBox[ RowBox[{ FormBox[\(\(x\^3\) y\), "TraditionalForm"], \(z\^2\)}], TraditionalForm]]], " on the ellipsoind ", Cell[BoxData[ \(TraditionalForm\`2 x\^2 + 3 y\^2 + 4 z\^2 - \ 1\ = \ 0\)]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Dirichlet[\(x\^3\) y\ z\^2, \ {x, y, z}, \ Region \[Rule] Quadratic[{2, 3, 4}, \(-1\)], \ Laplacian \[Rule] \(y\^2\) z\^3]\)], "Input"], Cell[BoxData[ \(x\^3\ y\ z\^2 + \((\(-1\) + 2\ x\^2 + 3\ y\^2 + 4\ z\^2)\)\ \((\(-\(\(961\ x\ y\)\/150917\)\) - \(223\ x\^3\ \ y\)\/7943 + \(93\ x\ y\^3\)\/7943 + \(6128862523\ z\)\/154091469268302 - \ \(424717558\ x\^2\ z\)\/4532102037303 + \(44102\ x\^4\ z\)\/734657487 + \ \(3416529117\ y\^2\ z\)\/6042802716404 - \(448445\ x\^2\ y\^2\ z\)\/489771658 \ - \(1320573\ y\^4\ z\)\/979543316 - \(571\ x\ y\ z\^2\)\/7943 + \(1235669309\ \ z\^3\)\/18128408149212 - \(213085\ x\^2\ z\^3\)\/1469314974 + \(8956053\ y\^2\ \ z\^3\)\/979543316 - \(297101\ z\^5\)\/734657487)\)\)], "Output"] }, Closed]], Cell[TextData[{ "Obviously the last output equals ", Cell[BoxData[ FormBox[ RowBox[{ FormBox[\(\(x\^3\) y\), "TraditionalForm"], \(z\^2\)}], TraditionalForm]]], " on the ellipsoind ", Cell[BoxData[ \(TraditionalForm\`2 x\^2 + 3 y\^2 + 4 z\^2 - \ 1\ = \ 0\)]], ". We now check that its Laplacian is the desired function:" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Laplacian[%, \ {x, y, z}]\)], "Input"], Cell[BoxData[ \(y\^2\ z\^3\)], "Output"] }, Closed]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["HarmonicDecomposition", "Subsection", CellTags->"HarmonicDecomposition"], Cell[TextData[{ StyleBox["HarmonicDecomposition[p, x]", "InlineInput"], " gives the decomposition of ", Cell[BoxData[ \(TraditionalForm\`p\)]], " into a sum of harmonic polynomials (on the Euclidean space defined by ", Cell[BoxData[ \(TraditionalForm\`x\)]], ") times powers of ||", Cell[BoxData[ \(TraditionalForm\`x\)]], "||. Here ", Cell[BoxData[ \(TraditionalForm\`p\)]], " must be a polynomial function of ", Cell[BoxData[ \(TraditionalForm\`x\)]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(SetDimension[x, n]\)], "Input"], Cell[BoxData[ \(SetDimension::"Vector" \(\(:\)\(\ \)\) "\!\(x\) will be considered to be a vector in \!\(n\)-dimensional real \ Euclidean space."\)], "Message"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(HarmonicDecomposition[x\_1\^4, x]\)], "Input"], Cell[BoxData[ \({{\(3\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^4\)\/\(8 \ + 6\ n + n\^2\) - \(6\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\ \^2\ x\_1\%2\)\/\(4 + n\) + x\_1\%4, 0}, {\(6\ \ \((\(-\[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\) + n\ \ x\_1\%2)\)\)\/\(n\ \((4 + n)\)\), 2}, {3\/\(n\ \((2 + n)\)\), 4}}\)], "Output"] }, Closed]], Cell[TextData[{ "The output given by ", StyleBox["HarmonicDecomposition[p, x]", "InlineInput"], " consists of a list of pairs. The first entry in each pair is a harmonic \ function, the second entry is the power of ||", Cell[BoxData[ \(TraditionalForm\`x\)]], "|| by which the first entry should be multiplied so that the sum of the \ resulting terms equals ", Cell[BoxData[ \(TraditionalForm\`p\)]], ". For example, in the last output ", Cell[BoxData[ FormBox[ RowBox[{ StyleBox[ FractionBox[ RowBox[{"3", "||", FormBox["x", "TraditionalForm"], \( || \^4\)}], \(\((2 + n)\) \((4 + n)\)\)], FontSize->16], "-", StyleBox[ FractionBox[ RowBox[{"6", "||", FormBox["x", "TraditionalForm"], \( || \^2\), \(x\_1\^2\)}], \(4 + n\)], FontSize->16], "+", \(x\_1\^4\)}], TraditionalForm]]], " and ", Cell[BoxData[ FormBox[ StyleBox[ FractionBox[ RowBox[{"6", RowBox[{"(", RowBox[{"-", RowBox[{"||", FormBox["x", "TraditionalForm"], \( || \^2\), \(\(+\ n\)\ x\_1\^2\)}]}], ")"}]}], \(n(4 + n)\)], FontSize->16], TraditionalForm]]], " and ", Cell[BoxData[ FormBox[ StyleBox[\(3\/\(n(2 + n)\)\), FontSize->16], TraditionalForm]]], " are harmonic functions of ", Cell[BoxData[ \(TraditionalForm\`x\)]], "; furthermore" }], "Text"], Cell[TextData[{ Cell[BoxData[ \(TraditionalForm\`\(\(x\_1\^4\)\(\ \)\(=\)\(\ \)\)\)]], Cell[BoxData[ FormBox[ RowBox[{ StyleBox[ FractionBox[ RowBox[{"3", "||", FormBox["x", "TraditionalForm"], \( || \^4\)}], \(\((2 + n)\) \((4 + n)\)\)], FontSize->16], "-", StyleBox[ FractionBox[ RowBox[{"6", "||", FormBox["x", "TraditionalForm"], \( || \^2\), \(x\_1\^2\)}], \(4 + n\)], FontSize->16], "+", \(x\_1\^4\)}], TraditionalForm]]], " + ", Cell[BoxData[ FormBox[ RowBox[{ FormBox[ StyleBox[ FractionBox[ RowBox[{"6", RowBox[{"(", RowBox[{"-", RowBox[{"||", FormBox["x", "TraditionalForm"], \( || \^2\), \(\(+\ n\)\ x\_1\^2\)}]}], ")"}]}], \(n(4 + n)\)], FontSize->16], "TraditionalForm"], "||", "x", \( || \^2\)}], TraditionalForm]]], " + ", Cell[BoxData[ FormBox[ RowBox[{ StyleBox[ FormBox[ StyleBox[\(3\/\(n(2 + n)\)\), FontSize->16], "TraditionalForm"], FontSize->14], "||", "x", \( || \^4\)}], TraditionalForm]]], "." }], "Text", TextAlignment->Center], Cell[TextData[{ "For a proof of the existence and uniqueness of the harmonic decomposition, \ see [", ButtonBox["ABR", ButtonData:>"ABR", ButtonStyle->"Hyperlink"], "], Theorem 5.7. ", StyleBox["HarmonicDecomposition", "InlineInput"], " is computed using the algorithm described in Section 2 of [", ButtonBox["AR", ButtonData:>"AR", ButtonStyle->"Hyperlink"], "]." }], "Text"] }, Closed]], Cell[CellGroupData[{ Cell["AntiLaplacian", "Subsection", CellTags->"AntiLaplacian"], Cell[TextData[{ StyleBox["AntiLaplacian[u, x]", "InlineInput"], " gives an anti-Laplacian of ", Cell[BoxData[ \(TraditionalForm\`u\)]], " with respect to ", Cell[BoxData[ \(TraditionalForm\`x\)]], "; this is a function whose Laplacian with respect to ", Cell[BoxData[ \(TraditionalForm\`x\)]], " equals ", Cell[BoxData[ \(TraditionalForm\`u\)]], ". Here ", Cell[BoxData[ \(TraditionalForm\`u\)]], " must be a polynomial function of ", Cell[BoxData[ \(TraditionalForm\`x\)]], " or a sum of terms, each of which is a polynomial in ", Cell[BoxData[ \(TraditionalForm\`x\)]], " times a function of ||", Cell[BoxData[ \(TraditionalForm\`x\)]], "||:" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(SetDimension[x, 6]\)], "Input"], Cell[BoxData[ \(SetDimension::"Vector" \(\(:\)\(\ \)\) "\!\(x\) will be considered to be a vector in \!\(6\)-dimensional real \ Euclidean space."\)], "Message"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(\(\(AntiLaplacian[ x\_1\^2\ x\_2\ \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^3\ Log[\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]], x]\)\(\n\) \)\)], "Input"], Cell[BoxData[ \(\(\((\(-20\)\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^7 \ + 91\ Log[\[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]]\ \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^7)\)\ x\_2\)\/66248 - \ \(\((\(-4\)\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^5 + 15\ \ Log[\[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]]\ \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^5)\)\ \((\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ x\_2 - 8\ x\_1\%2\ \ x\_2)\)\)\/9000\)], "Output"] }, Closed]], Cell[TextData[{ "The function given by the last output has Laplacian equal to ", Cell[BoxData[ \(TraditionalForm\`\(x\_1\^2\) \(x\_2\) \(\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^3\) \(log(\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar])\)\)]], "on ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], "6"], TraditionalForm]]], ", as we can easily verify:" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Laplacian[%, \ x]\)], "Input"], Cell[BoxData[ \(Log[\[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]]\ \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^3\ x\_1\%2\ x\_2\)], \ "Output"] }, Closed]], Cell[TextData[{ "To understand how ", StyleBox["AntiLaplacian", "InlineInput"], " is computed, suppose we want to find an anti-Laplacian of ", Cell[BoxData[ \(TraditionalForm\`p\)]], "(", Cell[BoxData[ \(TraditionalForm\`x\)]], ")", Cell[BoxData[ \(TraditionalForm\`f\)]], "(||", Cell[BoxData[ \(TraditionalForm\`x\)]], "||), where ", Cell[BoxData[ \(TraditionalForm\`p\)]], " is a polynomial on ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], "n"], TraditionalForm]]], " and ", Cell[BoxData[ \(TraditionalForm\`f\)]], " is a continuous function on (0, \[Infinity]). Applying ", StyleBox["HarmonicDecomposition", "InlineInput"], " to ", Cell[BoxData[ \(TraditionalForm\`p\)]], ", using linearity, and replacing ", Cell[BoxData[ \(TraditionalForm\`f\)]], "(||", Cell[BoxData[ \(TraditionalForm\`x\)]], "||) with a power of ||", Cell[BoxData[ \(TraditionalForm\`x\)]], "|| times ", Cell[BoxData[ \(TraditionalForm\`f\)]], "(||", Cell[BoxData[ \(TraditionalForm\`x\)]], "||), we see that we only need to find anti-Laplacians of functions of the \ form ", Cell[BoxData[ \(TraditionalForm\`q\)]], "(", Cell[BoxData[ \(TraditionalForm\`x\)]], ")", Cell[BoxData[ \(TraditionalForm\`f\)]], "(||", Cell[BoxData[ \(TraditionalForm\`x\)]], "||), where ", Cell[BoxData[ \(TraditionalForm\`q\)]], " is a harmonic polynomial on ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], "n"], TraditionalForm]]], " homogeneous of degree ", Cell[BoxData[ \(TraditionalForm\`m\)]], ". To find an anti-Laplacian of ", Cell[BoxData[ \(TraditionalForm\`q\)]], "(", Cell[BoxData[ \(TraditionalForm\`x\)]], ")", Cell[BoxData[ \(TraditionalForm\`f\)]], "(||", Cell[BoxData[ \(TraditionalForm\`x\)]], "||), suppose ", Cell[BoxData[ \(TraditionalForm\`h\)]], " is a twice-differentiable function on (0, \[Infinity]). The Laplacian of \ ", Cell[BoxData[ \(TraditionalForm\`q\)]], "(", Cell[BoxData[ \(TraditionalForm\`x\)]], ")", Cell[BoxData[ \(TraditionalForm\`h\)]], "(||", Cell[BoxData[ \(TraditionalForm\`x\)]], "||) equals" }], "Text"], Cell[TextData[{ Cell[BoxData[ \(TraditionalForm\`q\)]], "(", Cell[BoxData[ \(TraditionalForm\`x\)]], ") ", Cell[BoxData[ FormBox[ RowBox[{ StyleBox[ FractionBox[ RowBox[{ RowBox[{ RowBox[{\((2 m\ + \ n\ - \ 1)\), " ", \(h'\), RowBox[{"(", RowBox[{"||", FormBox["x", "TraditionalForm"], "||"}], ")"}]}], " ", "+"}], " ", "||", FormBox["x", "TraditionalForm"], "||", " ", RowBox[{\(h''\), RowBox[{"(", RowBox[{"||", FormBox["x", "TraditionalForm"], "||"}], ")"}]}]}], RowBox[{"||", FormBox["x", "TraditionalForm"], "||"}]], FontSize->16], ","}], TraditionalForm]]] }], "Text", TextAlignment->Center], Cell[TextData[{ "where we have used the product rule for Laplacians (see 1.19 in [", ButtonBox["ABR", ButtonData:>"ABR", ButtonStyle->"Hyperlink"], "]) and Exercise 29, Chapter 1 of [ABR]. We want to make the expression \ above equal ", Cell[BoxData[ \(TraditionalForm\`q\)]], "(", Cell[BoxData[ \(TraditionalForm\`x\)]], ")", Cell[BoxData[ \(TraditionalForm\`f\)]], "(||", Cell[BoxData[ \(TraditionalForm\`x\)]], "||), so we need only solve the differential equation" }], "Text"], Cell[TextData[Cell[BoxData[ FormBox[ RowBox[{ StyleBox[\(\(\((2 m\ + \ n\ - \ 1)\)\ h' \((t)\)\ + \ t\ h'' \((t)\)\)\/t\), FontSize->16], " ", "=", " ", \(\(f(t)\)\(.\)\)}], TraditionalForm]]]], "Text", TextAlignment->Center], Cell["A solution to this equation is given by", "Text"], Cell[BoxData[ \(TraditionalForm\`h( t)\ = \ \[Integral]\_a\%t s\^\(1 - 2 m - n\)\ \(\[Integral]\_b\%s\( r\^\(2 m + n - 1\)\) \(f( r)\) \[DifferentialD]r \[DifferentialD]s\)\)], "Text", TextAlignment->Center], Cell[TextData[{ "for any choice of the constants ", Cell[BoxData[ \(TraditionalForm\`a\)]], " and ", Cell[BoxData[ \(TraditionalForm\`b\)]], ". ", StyleBox["AntiLaplacian", "InlineInput"], " uses the formula above with ", Cell[BoxData[ \(TraditionalForm\`b\)]], " = 0, although if a singularity is encountered at 0 it automatically makes \ a different choice. If you know there is a singularity at 0, you can save \ some time by using the option ", StyleBox["Singularity \[Rule] 0", "InlineInput"], ", as illustrated by the following example. The two timing tests below show \ a large speed-up when using the option ", StyleBox["Singularity \[Rule] 0", "InlineInput"], ":\n" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Timing[ AntiLaplacian[ x\_1\^2\ x\_2\ \ \ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^10, x]]\)], "Input"], Cell[BoxData[ \({3.4059999999999997`\ Second, \(\(1\/512000000000\)\((\((9228128553\ \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^4 - 36910191780\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4 + 73808771400\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^2\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4 - 98372988000\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^3\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4 + 98276220000\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^4\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4 - 78427440000\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^5\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4 + 51962400000\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^6\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4 - 29232000000\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^7\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4 + 14040000000\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^8\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4 - 5600000000\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^9\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4 + 1600000000\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^10\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4)\)\ x\_2)\)\) - \ \(\(1\/573308928\)\((\((12697896925\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2 - 25395793500\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2 + 25395791400\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^2\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2 - 16930519200\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^3\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2 + 8465234400\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^4\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2 - 3386033280\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^5\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2 + 1128556800\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^6\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2 - 322237440\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^7\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2 + 80248320\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^8\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2 - 17418240\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^9\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2 + 2985984\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^10\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2)\)\ \((\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2\ x\_2 - 8\ x\_1\%2\ x\_2)\))\)\)}\)], "Output"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(Timing[ AntiLaplacian[ x\_1\^2\ x\_2\ \ \ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^10, x, \ Singularity \[Rule] \ 0]]\)], "Input"], Cell[BoxData[ \({0.10899999999999999`\ Second, \(\(1\/512000000000\)\((\((9228128553\ \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^4 - 36910191780\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4 + 73808771400\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^2\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4 - 98372988000\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^3\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4 + 98276220000\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^4\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4 - 78427440000\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^5\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4 + 51962400000\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^6\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4 - 29232000000\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^7\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4 + 14040000000\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^8\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4 - 5600000000\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^9\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4 + 1600000000\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^10\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4)\)\ x\_2)\)\) - \ \(\(1\/573308928\)\((\((12697896925\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2 - 25395793500\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2 + 25395791400\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^2\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2 - 16930519200\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^3\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2 + 8465234400\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^4\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2 - 3386033280\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^5\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2 + 1128556800\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^6\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2 - 322237440\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^7\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2 + 80248320\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^8\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2 - 17418240\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^9\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2 + 2985984\ Log[\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]]\^10\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2)\)\ \((\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2\ x\_2 - 8\ x\_1\%2\ x\_2)\))\)\)}\)], "Output"] }, Closed]], Cell[TextData[{ "The anti-Laplacian of a given function is never unique. However, each \ polynomial has a unique anti-Laplacian that is a polynomial multiple of ", Cell[BoxData[ \(TraditionalForm\`\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2\)]], ", where ", Cell[BoxData[ \(TraditionalForm\`x\)]], " is the variable. The option ", StyleBox["Multiple \[Rule] ", "InlineInput"], Cell[BoxData[ FormBox[ StyleBox[\(Norm\^2\), "InlineInput", FontFamily->"Courier New"], TraditionalForm]]], " produces the unique anti-Laplacian that is a polynomial multiple of ", Cell[BoxData[ \(TraditionalForm\`\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2\)]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(AntiLaplacian[x\_1\^2\ x\_2\^5, x, Multiple \[Rule] Norm\^2]\)], "Input"], Cell[BoxData[ \(\(\(-45\)\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^8\ x\ \_2 + 840\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^6\ x\_1\%2\ \ x\_2 + 560\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^6\ x\_2\ \%3 - 13440\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^4\ \ x\_1\%2\ x\_2\%3 - 1344\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4\ x\_2\%5 + 48384\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2\ x\_1\%2\ x\_2\%5\)\/1935360\)], "Output"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Neumann", "Subsection", CellTags->"Neumann"], Cell[TextData[{ StyleBox["Neumann[f, x]", "InlineInput"], " is the solution to the standard Neumann problem: find the harmonic \ function on the unit ball in the Euclidean space defined by ", Cell[BoxData[ \(TraditionalForm\`x\)]], " whose outward normal derivative on the unit sphere equals ", Cell[BoxData[ \(TraditionalForm\`f\)]], " and whose value at the origin equals 0. Here ", Cell[BoxData[ \(TraditionalForm\`f\)]], " must be a polynomial function of ", Cell[BoxData[ \(TraditionalForm\`x\)]], ". Furthermore, the integral of ", Cell[BoxData[ \(TraditionalForm\`f\)]], " over the unit sphere with respect to surface area measure must equal 0 \ (Green's identity shows that this condition is necessary for the existence of \ a solution to the standard Neumann problem):" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(SetDimension[x, 4]\)], "Input"], Cell[BoxData[ \(SetDimension::"Vector" \(\(:\)\(\ \)\) "\!\(x\) will be considered to be a vector in \!\(4\)-dimensional real \ Euclidean space."\)], "Message"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(\(\(Neumann[x\_1\^6\ x\_2, x]\)\(\n\) \)\)], "Input"], Cell[BoxData[ \(x\_2\/32 + 1\/48\ \((\(-\[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\)\ \ x\_2 + 6\ x\_1\%2\ x\_2)\) + \(3\ \((3\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4\ x\_2 - 48\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2\ x\_1\%2\ x\_2 + 80\ x\_1\%4\ x\_2)\)\)\/1120 \ + 1\/784\ \((\(-\[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^6\)\ \ x\_2 + 30\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^4\ x\_1\%2\ \ x\_2 - 120\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ x\_1\ \%4\ x\_2 + 112\ x\_1\%6\ x\_2)\)\)], "Output"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["ExteriorNeumann", "Subsection", CellTags->"ExteriorNeumann"], Cell[TextData[{ StyleBox["ExteriorNeumann[f, x]", "InlineInput"], " is the solution to the standard exterior Neumann problem: find the \ harmonic function on the exterior of the unit ball in theEuclidean space \ defined by ", Cell[BoxData[ \(TraditionalForm\`x\)]], " whose outward normal derivative on the unit sphere equals ", Cell[BoxData[ \(TraditionalForm\`f\)]], " and whose limit at \[Infinity] equals 0. Here ", Cell[BoxData[ \(TraditionalForm\`f\)]], " must be a polynomial function of ", Cell[BoxData[ \(TraditionalForm\`x\)]], ". If the dimension of the Euclidean space equals 2, then the integral of \ ", Cell[BoxData[ \(TraditionalForm\`f\)]], " over the unit circle with respect to arc length measure must equal 0:" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(SetDimension[x, 5]\)], "Input"], Cell[BoxData[ \(SetDimension::"Vector" \(\(:\)\(\ \)\) "\!\(x\) will be considered to be a vector in \!\(5\)-dimensional real \ Euclidean space."\)], "Message"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(ExteriorNeumann[x\_1\^6\ x\_2, x]\)], "Input"], Cell[BoxData[ \(\(5\ x\_2\)\/\(924\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^5\) - \(15\ \((\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2\ x\_2 - 7\ x\_1\%2\ x\_2)\)\)\/\(2002\ \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^9\) + \(\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^4\ x\_2 - 18\ \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ x\_1\%2\ x\_2 + 33\ \ x\_1\%4\ x\_2\)\/\(264\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^13\) + \(\(-\(1\/143\)\)\ \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^6\ x\_2 + 3\/13\ \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^4\ x\_1\%2\ x\_2 - \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ x\_1\%4\ x\_2 + \ x\_1\%6\ x\_2\)\/\(10\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\ \^17\)\)], "Output"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["BiDirichlet", "Subsection", CellTags->"BiDirichlet"], Cell[TextData[{ StyleBox["BiDirichlet[f, x]", "InlineInput"], " is the solution to the standard biDirichlet problem: find the biharmonic \ function on the unit ball in the Euclidean space defined by ", Cell[BoxData[ \(TraditionalForm\`x\)]], " that equals ", Cell[BoxData[ \(TraditionalForm\`f\)]], " on the unit sphere and whose normal derivative on the unit sphere equals \ 0. (A function is called biharmonic if the Laplacian of its Laplacian \ equals 0.) Here ", Cell[BoxData[ \(TraditionalForm\`f\)]], " must be a polynomial function of ", Cell[BoxData[ \(TraditionalForm\`x\)]], ":" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(SetDimension[x, 3]\)], "Input"], Cell[BoxData[ \(SetDimension::"Vector" \(\(:\)\(\ \)\) "\!\(x\) will be considered to be a vector in \!\(3\)-dimensional real \ Euclidean space."\)], "Message"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(BiDirichlet[x\_1\^4\ x\_2\^3, x]\)], "Input"], Cell[BoxData[ \(\(\(1\/30030\)\((1287\ x\_2 - 4524\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ x\_2 \ + 5922\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^4\ x\_2 - 3420\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^6\ x\_2 \ + 735\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^8\ x\_2 + 13650\ x\_1\%2\ x\_2 - 40530\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ \ x\_1\%2\ x\_2 + 40110\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^4\ \ x\_1\%2\ x\_2 - 13230\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^6\ \ x\_1\%2\ x\_2 + 24255\ x\_1\%4\ x\_2 - 48510\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ \ x\_1\%4\ x\_2 + 24255\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^4\ \ x\_1\%4\ x\_2 + 2275\ x\_2\%3 - 6755\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ x\_2\ \%3 + 6685\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^4\ \ x\_2\%3 - 2205\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^6\ x\_2\ \%3 + 48510\ x\_1\%2\ x\_2\%3 - 97020\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ \ x\_1\%2\ x\_2\%3 + 48510\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^4\ \ x\_1\%2\ x\_2\%3 + 135135\ x\_1\%4\ x\_2\%3 - 105105\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ \ x\_1\%4\ x\_2\%3)\)\)\)], "Output"] }, Closed]], Cell["\<\ To check that the last output is correct, first we take its \ Laplacian squared to check that we have a biharmonic function:\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(Laplacian\^2\)[%, \ x]\)], "Input"], Cell[BoxData[ \(0\)], "Output"] }, Closed]], Cell["\<\ Next we check that the outward normal derivative on the unit sphere \ indeed equals 0:\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(NormalD[%%, \ x]\)], "Input"], Cell[BoxData[ \(0\)], "Output"] }, Closed]], Cell["Finally, we check that we have the correct boundary values:", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(%%%\ /. \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar] \ \[Rule] 1\)], "Input"], Cell[BoxData[ \(x\_1\%4\ x\_2\%3\)], "Output"] }, Closed]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Spherical Harmonics", "Section", CellTags->"Spherical Harmonics"], Cell[CellGroupData[{ Cell["BasisH", "Subsection", CellTags->"BasisH"], Cell[TextData[{ StyleBox["BasisH[m, x]", "InlineInput"], " gives a vector space basis for ", Cell[BoxData[ FormBox[ RowBox[{\(H\_m\), "(", SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], "n"], ")"}], TraditionalForm]]], ", the space of homogeneous harmonic polynomials on ", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], "n"], TraditionalForm]]], "of degree ", Cell[BoxData[ \(TraditionalForm\`m\)]], ", where ", Cell[BoxData[ \(TraditionalForm\`n\)]], " is the dimension of ", Cell[BoxData[ \(TraditionalForm\`x\)]], ". The user must first set the dimension of ", Cell[BoxData[ \(TraditionalForm\`x\)]], " to an positive integer value. Wrapping the ", StyleBox["Mathematica", FontSlant->"Italic"], " command ", StyleBox["TableForm", "InlineInput"], " around ", StyleBox["BasisH[m, x]", "InlineInput"], " will produce an output display that is more readable than the usual list \ format:" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(SetDimension[x, 3]\)], "Input"], Cell[BoxData[ \(SetDimension::"Vector" \(\(:\)\(\ \)\) "\!\(x\) will be considered to be a vector in \!\(3\)-dimensional real \ Euclidean space."\)], "Message"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[BasisH[4, x]]\)], "Input"], Cell[BoxData[ InterpretationBox[GridBox[{ {\(3\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^4 - 30\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ \ x\_2\%2 + 35\ x\_2\%4\)}, {\(3\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ \ x\_2\ x\_3 - 7\ x\_2\%3\ x\_3\)}, {\(\[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^4 - 5\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ x\ \_2\%2 - 5\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ \ x\_3\%2 + 35\ x\_2\%2\ x\_3\%2\)}, {\(3\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ \ x\_2\ x\_3 - 7\ x\_2\ x\_3\%3\)}, {\(3\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^4 - 30\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ \ x\_3\%2 + 35\ x\_3\%4\)}, {\(3\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ \ x\_1\ x\_2 - 7\ x\_1\ x\_2\%3\)}, {\(\[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ x\_1\ \ x\_3 - 7\ x\_1\ x\_2\%2\ x\_3\)}, {\(\[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ x\_1\ \ x\_2 - 7\ x\_1\ x\_2\ x\_3\%2\)}, {\(3\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ \ x\_1\ x\_3 - 7\ x\_1\ x\_3\%3\)} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], TableForm[ { Plus[ Times[ 3, Power[ Norm[ x], 4]], Times[ -30, Power[ Norm[ x], 2], Power[ Subscript[ x, 2], 2]], Times[ 35, Power[ Subscript[ x, 2], 4]]], Plus[ Times[ 3, Power[ Norm[ x], 2], Subscript[ x, 2], Subscript[ x, 3]], Times[ -7, Power[ Subscript[ x, 2], 3], Subscript[ x, 3]]], Plus[ Power[ Norm[ x], 4], Times[ -5, Power[ Norm[ x], 2], Power[ Subscript[ x, 2], 2]], Times[ -5, Power[ Norm[ x], 2], Power[ Subscript[ x, 3], 2]], Times[ 35, Power[ Subscript[ x, 2], 2], Power[ Subscript[ x, 3], 2]]], Plus[ Times[ 3, Power[ Norm[ x], 2], Subscript[ x, 2], Subscript[ x, 3]], Times[ -7, Subscript[ x, 2], Power[ Subscript[ x, 3], 3]]], Plus[ Times[ 3, Power[ Norm[ x], 4]], Times[ -30, Power[ Norm[ x], 2], Power[ Subscript[ x, 3], 2]], Times[ 35, Power[ Subscript[ x, 3], 4]]], Plus[ Times[ 3, Power[ Norm[ x], 2], Subscript[ x, 1], Subscript[ x, 2]], Times[ -7, Subscript[ x, 1], Power[ Subscript[ x, 2], 3]]], Plus[ Times[ Power[ Norm[ x], 2], Subscript[ x, 1], Subscript[ x, 3]], Times[ -7, Subscript[ x, 1], Power[ Subscript[ x, 2], 2], Subscript[ x, 3]]], Plus[ Times[ Power[ Norm[ x], 2], Subscript[ x, 1], Subscript[ x, 2]], Times[ -7, Subscript[ x, 1], Subscript[ x, 2], Power[ Subscript[ x, 3], 2]]], Plus[ Times[ 3, Power[ Norm[ x], 2], Subscript[ x, 1], Subscript[ x, 3]], Times[ -7, Subscript[ x, 1], Power[ Subscript[ x, 3], 3]]]}]]], "Output"] }, Closed]], Cell[TextData[{ "The option the option ", StyleBox["Orthonormal \[Rule] Ball", "InlineInput"], ", when used with ", StyleBox["BasisH", "InlineInput"], ", will produce a basis for ", Cell[BoxData[ FormBox[ RowBox[{\(H\_m\), "(", SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], "n"], ")"}], TraditionalForm]]], "that is orthonormal with respect to the inner product on ", Cell[BoxData[ \(TraditionalForm\`L\^2\)]], "(", StyleBox["B", FontSlant->"Italic"], ", ", StyleBox["dV", FontSlant->"Italic"], ") (here ", Cell[BoxData[ \(TraditionalForm\`B\)]], " denotes the open unit ball in Euclidean space and ", Cell[BoxData[ \(TraditionalForm\`V\)]], " denotes volume measure on ", Cell[BoxData[ \(TraditionalForm\`B\)]], "):" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[BasisH[4, x, Orthonormal \[Rule] Ball]]\)], "Input"], Cell[BoxData[ InterpretationBox[GridBox[{ {\(3\/16\ \@\(11\/\[Pi]\)\ \((3\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4 - 30\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^\ 2\ x\_2\%2 + 35\ x\_2\%4)\)\)}, {\(\(-\(3\/4\)\)\ \@\(55\/\(2\ \[Pi]\)\)\ \((3\ \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ x\_2\ x\_3 - 7\ x\_2\%3\ x\_3)\)\)}, {\(3\/8\ \@\(55\/\[Pi]\)\ \((\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4 - 8\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^\ 2\ x\_2\%2 + 7\ x\_2\%4 - 2\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^\ 2\ x\_3\%2 + 14\ x\_2\%2\ x\_3\%2)\)\)}, {\(\(-\(3\/4\)\)\ \@\(385\/\(2\ \[Pi]\)\)\ \((3\ \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ x\_2\ x\_3 - 3\ x\_2\%3\ x\_3 - 4\ x\_2\ x\_3\%3)\)\)}, {\(3\/16\ \@\(385\/\[Pi]\)\ \((\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4 - 2\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^\ 2\ x\_2\%2 + x\_2\%4 - 8\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^\ 2\ x\_3\%2 + 8\ x\_2\%2\ x\_3\%2 + 8\ x\_3\%4)\)\)}, {\(\(-\(3\/4\)\)\ \@\(55\/\(2\ \[Pi]\)\)\ \((3\ \ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ x\_1\ x\_2 - 7\ x\_1\ x\_2\%3)\)\)}, {\(\(-\(3\/4\)\)\ \@\(55\/\[Pi]\)\ \((\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2\ x\_1\ x\_3 - 7\ x\_1\ x\_2\%2\ x\_3)\)\)}, {\(\(-\(3\/4\)\)\ \@\(385\/\(2\ \[Pi]\)\)\ \((\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^2\ x\_1\ x\_2 - x\_1\ x\_2\%3 - 4\ x\_1\ x\_2\ x\_3\%2)\)\)}, {\(\(-\(3\/4\)\)\ \@\(385\/\[Pi]\)\ \((\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2\ x\_1\ x\_3 - x\_1\ x\_2\%2\ x\_3 - 2\ x\_1\ x\_3\%3)\)\)} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], TableForm[ { Times[ Rational[ 3, 16], Power[ Times[ 11, Power[ Pi, -1]], Rational[ 1, 2]], Plus[ Times[ 3, Power[ Norm[ x], 4]], Times[ -30, Power[ Norm[ x], 2], Power[ Subscript[ x, 2], 2]], Times[ 35, Power[ Subscript[ x, 2], 4]]]], Times[ Rational[ -3, 4], Power[ Times[ Rational[ 55, 2], Power[ Pi, -1]], Rational[ 1, 2]], Plus[ Times[ 3, Power[ Norm[ x], 2], Subscript[ x, 2], Subscript[ x, 3]], Times[ -7, Power[ Subscript[ x, 2], 3], Subscript[ x, 3]]]], Times[ Rational[ 3, 8], Power[ Times[ 55, Power[ Pi, -1]], Rational[ 1, 2]], Plus[ Power[ Norm[ x], 4], Times[ -8, Power[ Norm[ x], 2], Power[ Subscript[ x, 2], 2]], Times[ 7, Power[ Subscript[ x, 2], 4]], Times[ -2, Power[ Norm[ x], 2], Power[ Subscript[ x, 3], 2]], Times[ 14, Power[ Subscript[ x, 2], 2], Power[ Subscript[ x, 3], 2]]]], Times[ Rational[ -3, 4], Power[ Times[ Rational[ 385, 2], Power[ Pi, -1]], Rational[ 1, 2]], Plus[ Times[ 3, Power[ Norm[ x], 2], Subscript[ x, 2], Subscript[ x, 3]], Times[ -3, Power[ Subscript[ x, 2], 3], Subscript[ x, 3]], Times[ -4, Subscript[ x, 2], Power[ Subscript[ x, 3], 3]]]], Times[ Rational[ 3, 16], Power[ Times[ 385, Power[ Pi, -1]], Rational[ 1, 2]], Plus[ Power[ Norm[ x], 4], Times[ -2, Power[ Norm[ x], 2], Power[ Subscript[ x, 2], 2]], Power[ Subscript[ x, 2], 4], Times[ -8, Power[ Norm[ x], 2], Power[ Subscript[ x, 3], 2]], Times[ 8, Power[ Subscript[ x, 2], 2], Power[ Subscript[ x, 3], 2]], Times[ 8, Power[ Subscript[ x, 3], 4]]]], Times[ Rational[ -3, 4], Power[ Times[ Rational[ 55, 2], Power[ Pi, -1]], Rational[ 1, 2]], Plus[ Times[ 3, Power[ Norm[ x], 2], Subscript[ x, 1], Subscript[ x, 2]], Times[ -7, Subscript[ x, 1], Power[ Subscript[ x, 2], 3]]]], Times[ Rational[ -3, 4], Power[ Times[ 55, Power[ Pi, -1]], Rational[ 1, 2]], Plus[ Times[ Power[ Norm[ x], 2], Subscript[ x, 1], Subscript[ x, 3]], Times[ -7, Subscript[ x, 1], Power[ Subscript[ x, 2], 2], Subscript[ x, 3]]]], Times[ Rational[ -3, 4], Power[ Times[ Rational[ 385, 2], Power[ Pi, -1]], Rational[ 1, 2]], Plus[ Times[ Power[ Norm[ x], 2], Subscript[ x, 1], Subscript[ x, 2]], Times[ -1, Subscript[ x, 1], Power[ Subscript[ x, 2], 3]], Times[ -4, Subscript[ x, 1], Subscript[ x, 2], Power[ Subscript[ x, 3], 2]]]], Times[ Rational[ -3, 4], Power[ Times[ 385, Power[ Pi, -1]], Rational[ 1, 2]], Plus[ Times[ Power[ Norm[ x], 2], Subscript[ x, 1], Subscript[ x, 3]], Times[ -1, Subscript[ x, 1], Power[ Subscript[ x, 2], 2], Subscript[ x, 3]], Times[ -2, Subscript[ x, 1], Power[ Subscript[ x, 3], 3]]]]}]]], "Output"] }, Closed]], Cell[TextData[{ "The option ", StyleBox["Orthonormal \[Rule] Sphere", "InlineInput"], ", when used with ", StyleBox["BasisH", "InlineInput"], ", will produce a basis for ", Cell[BoxData[ FormBox[ RowBox[{\(H\_m\), "(", SuperscriptBox[ StyleBox["R", FontWeight->"Bold", FontSlant->"Plain"], "n"], ")"}], TraditionalForm]]], "that is orthonormal with respect to the inner product on ", Cell[BoxData[ \(TraditionalForm\`\(L\^2\)(S, \ d\[Sigma])\)]], " (here ", Cell[BoxData[ \(TraditionalForm\`S\)]], " denotes the unit sphere in Euclidean space and \[Sigma] denotes \ normalized surface area measure on ", Cell[BoxData[ \(TraditionalForm\`S\)]], "):" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[BasisH[4, x, Orthonormal \[Rule] Sphere]]\)], "Input"], Cell[BoxData[ InterpretationBox[GridBox[{ {\(3\/8\ \((3\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4 - 30\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^\ 2\ x\_2\%2 + 35\ x\_2\%4)\)\)}, {\(\(-\(3\/2\)\)\ \@\(5\/2\)\ \((3\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2\ x\_2\ x\_3 - 7\ x\_2\%3\ x\_3)\)\)}, {\(3\/4\ \@5\ \((\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4 - 8\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^\ 2\ x\_2\%2 + 7\ x\_2\%4 - 2\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^\ 2\ x\_3\%2 + 14\ x\_2\%2\ x\_3\%2)\)\)}, {\(\(-\(3\/2\)\)\ \@\(35\/2\)\ \((3\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2\ x\_2\ x\_3 - 3\ x\_2\%3\ x\_3 - 4\ x\_2\ x\_3\%3)\)\)}, {\(3\/8\ \@35\ \((\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^4 - 2\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^\ 2\ x\_2\%2 + x\_2\%4 - 8\ \[LeftDoubleBracketingBar]x\[RightDoubleBracketingBar]\^\ 2\ x\_3\%2 + 8\ x\_2\%2\ x\_3\%2 + 8\ x\_3\%4)\)\)}, {\(\(-\(3\/2\)\)\ \@\(5\/2\)\ \((3\ \[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2\ x\_1\ x\_2 - 7\ x\_1\ x\_2\%3)\)\)}, {\(\(-\(3\/2\)\)\ \@5\ \((\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2\ x\_1\ x\_3 - 7\ x\_1\ x\_2\%2\ x\_3)\)\)}, {\(\(-\(3\/2\)\)\ \@\(35\/2\)\ \((\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2\ x\_1\ x\_2 - x\_1\ x\_2\%3 - 4\ x\_1\ x\_2\ x\_3\%2)\)\)}, {\(\(-\(3\/2\)\)\ \@35\ \((\[LeftDoubleBracketingBar]x\ \[RightDoubleBracketingBar]\^2\ x\_1\ x\_3 - x\_1\ x\_2\%2\ x\_3 - 2\ x\_1\ x\_3\%3)\)\)} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], TableForm[ { Times[ Rational[ 3, 8], Plus[ Times[ 3, Power[ Norm[ x], 4]], Times[ -30, Power[ Norm[ x], 2], Power[ Subscript[ x, 2], 2]], Times[ 35, Power[ Subscript[ x, 2], 4]]]], Times[ Rational[ -3, 2], Power[ Rational[ 5, 2], Rational[ 1, 2]], Plus[ Times[ 3, Power[ Norm[ x], 2], Subscript[ x, 2], Subscript[ x, 3]], Times[ -7, Power[ Subscript[ x, 2], 3], Subscript[ x, 3]]]], Times[