(* Content-type: application/mathematica *)
(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)
(* CreatedBy='Mathematica 7.0' *)
(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[ 145, 7]
NotebookDataLength[ 231196, 5986]
NotebookOptionsPosition[ 220450, 5636]
NotebookOutlinePosition[ 220791, 5651]
CellTagsIndexPosition[ 220748, 5648]
WindowFrame->Normal*)
(* Beginning of Notebook Content *)
Notebook[{
Cell[CellGroupData[{
Cell["Legendre Polynomials and Gaussian Quadrature.", "Title",
CellChangeTimes->{{3.45935692137237*^9, 3.4593569317653513`*^9}, {
3.4607117550848846`*^9, 3.460711757462351*^9}, {3.4628103729791317`*^9,
3.4628103799851313`*^9}, {3.4631289395372868`*^9, 3.4631289443887*^9}, {
3.463131783331028*^9, 3.463131783759733*^9}, {3.463267785963086*^9,
3.4632677914475946`*^9}, {3.464955709570415*^9, 3.464955714328041*^9}, {
3.465052498952744*^9, 3.465052502307136*^9}, {3.4662882589015217`*^9,
3.466288264296402*^9}, {3.466448733601061*^9, 3.466448739484322*^9}, {
3.466450326475368*^9, 3.4664503326505013`*^9}}],
Cell[CellGroupData[{
Cell["The Vector Space L^2(-1,1).", "Section",
CellChangeTimes->{{3.466289288953817*^9, 3.46628930114227*^9}, {
3.466448744494334*^9, 3.466448763778812*^9}}],
Cell[TextData[{
StyleBox["We are going to find this set of orthogonal polynomials with \
respect to the L^2 inner product on [-1,1]. We define this inner product in ",
FontSize->24],
StyleBox["Mathematica",
FontSize->24,
FontSlant->"Italic"],
StyleBox[":",
FontSize->24]
}], "Text",
CellChangeTimes->{{3.4593569408336782`*^9, 3.45935695814388*^9}, {
3.4593590985378*^9, 3.459359115229948*^9}, {3.4594349808851347`*^9,
3.459434996514577*^9}, {3.459605724870706*^9, 3.4596058280034733`*^9}, {
3.460711763709217*^9, 3.460711819888723*^9}, 3.460723860603013*^9, {
3.462810383441132*^9, 3.462810431198669*^9}, {3.462811221415543*^9,
3.462811222380672*^9}, {3.4631289484385023`*^9, 3.463129040368252*^9}, {
3.463267796592626*^9, 3.4632678722440443`*^9}, {3.46326809367575*^9,
3.463268116200026*^9}, {3.4649557190639772`*^9, 3.464955747941551*^9}, {
3.464955879317561*^9, 3.464955915649474*^9}, {3.465058857471272*^9,
3.465058946216278*^9}, {3.466288270200478*^9, 3.466288336852558*^9}, {
3.466448768140876*^9, 3.4664487984720984`*^9}, {3.466448831839458*^9,
3.466448837614242*^9}},
FontSlant->"Italic"],
Cell[BoxData[
RowBox[{
RowBox[{
RowBox[{"IP", "[",
RowBox[{"f_", ",", "g_"}], "]"}], " ", ":=", " ",
RowBox[{"Integrate", "[",
RowBox[{
RowBox[{"f", "*", "g"}], ",",
RowBox[{"{",
RowBox[{"x", ",",
RowBox[{"-", "1"}], ",", "1"}], "}"}]}], "]"}]}], ";"}]], "Input",
CellChangeTimes->CompressedData["
1:eJwd0EsowwEAx/E1h2V57OGAbWIHyU5bkTbkb4eVjEJe4YAt2tq/5XEgoVHa
yRw4KC5LKE1L899wQDat1H9NjpvHqL9QFprHNv/fDt8+92/ZINlm4HI4HBkb
9KeaottXDLFUb8zomja/3tIMId7R/UJjKcW7Y7ULj3JgNLKgEIQYYr9ZVQUD
igcNFNTN66FKNNoBg3kFi9BxSNFC1lpe8h6unpd8Qo69IuPuse0PFmhWkpC4
7s8RsdbEJLnwJ9QghJEetwKSGzIlvKTFKsinNtVwl9Z0wr3Wi15osHRbIBMf
GYNWhTlj6iVrDi5ozmxQHo/a4Y1aegLftLpT2Kfmv8Plp6I/6JiRZpSMf+SL
WbmkRQirp7ILobOxXAaHlUNySCkfldDlzCdg+mtACxm/uB22+CaGYcLjNcGt
FDkJ99xr66Yw+z0R9MBZvc8Hn3/1AXjQpSPNrNKw2wpj9NS3l7W4kkrDf2mO
854=
"],
FontSize->18],
Cell[TextData[StyleBox["We try a few simple examples:",
FontSize->24]], "Text",
CellChangeTimes->{{3.4662887032999496`*^9, 3.4662887268392763`*^9}, {
3.46644886942245*^9, 3.466448877514593*^9}},
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[
StyleBox[
RowBox[{"IP", "[",
RowBox[{
RowBox[{"x", "^", "2"}], ",",
RowBox[{
RowBox[{"x", "^", "3"}], " ", "+", " ",
RowBox[{"4", "x"}], " ", "+", " ", "2"}]}], "]"}],
FontSize->18]], "Input",
CellChangeTimes->{{3.466288729303548*^9, 3.466288735704373*^9}, {
3.466290068816893*^9, 3.466290068904633*^9}, {3.466448884039074*^9,
3.4664489012911587`*^9}},
FontSize->18],
Cell[BoxData[
FractionBox["4", "3"]], "Output",
CellChangeTimes->{
3.466288736670124*^9, {3.466290064077317*^9, 3.466290069405649*^9}, {
3.4664489027301903`*^9, 3.466448908330352*^9}, 3.46676291102024*^9,
3.466763823204652*^9, 3.466950539662032*^9},
FontSize->18]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
StyleBox[
RowBox[{"IP", "[",
RowBox[{"x", ",", "1"}], "]"}],
FontSize->18]], "Input",
CellChangeTimes->{{3.4662887458823643`*^9, 3.46628875140688*^9}, {
3.466290076452511*^9, 3.466290076525653*^9}, {3.4664489292984056`*^9,
3.466448936615922*^9}},
FontSize->16],
Cell[BoxData["0"], "Output",
CellChangeTimes->{3.46628875242277*^9, 3.466290077059125*^9,
3.466448937113501*^9, 3.4667629110895*^9, 3.466763823262321*^9,
3.466950539724962*^9},
FontSize->16]
}, Open ]]
}, Open ]],
Cell[CellGroupData[{
Cell["Gram-Schmidt Orthogonalization", "Section",
CellChangeTimes->{{3.4664495768405237`*^9, 3.4664495821920443`*^9}}],
Cell[TextData[StyleBox["We now need to define Gram-Schmidt orthogonalization \
given a set of polynomials. The big idea is that given a list of orthogonal \
polynomials \nq0, ...., qn and some p of degree n+1 we should transform p to \
\n\n p - (
/) q0 - (/) q1 - ... ",
FontSize->24]], "Text",
CellChangeTimes->{{3.4662888517060957`*^9, 3.466288852934658*^9}, {
3.46628896505418*^9, 3.4662889763823023`*^9}, {3.466448953541369*^9,
3.466449090715459*^9}, {3.466449545037994*^9, 3.466449561905937*^9}},
FontSlant->"Italic"],
Cell[BoxData[{
RowBox[{
RowBox[{
RowBox[{
RowBox[{"GramSchmidtCoefficient", "[",
RowBox[{"p_", ",", "q_"}], "]"}], " ", ":=",
RowBox[{
RowBox[{"IP", "[",
RowBox[{"p", ",", "q"}], "]"}], "/",
RowBox[{"IP", "[",
RowBox[{"q", ",", "q"}], "]"}]}]}], ";"}], " "}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"GramSchmidt", "[",
RowBox[{"p_", ",", "Q_"}], "]"}], " ", ":=", " ",
RowBox[{"p", " ", "-", " ",
RowBox[{"Sum", "[",
RowBox[{
RowBox[{
RowBox[{"GramSchmidtCoefficient", "[",
RowBox[{"p", ",",
RowBox[{"Q", "[",
RowBox[{"[", "i", "]"}], "]"}]}], "]"}], "*",
RowBox[{"Q", "[",
RowBox[{"[", "i", "]"}], "]"}]}], ",",
RowBox[{"{",
RowBox[{"i", ",", "1", ",",
RowBox[{"Length", "[", "Q", "]"}]}], "}"}]}], "]"}]}]}],
";"}]}], "Input",
CellChangeTimes->{{3.466288979727849*^9, 3.466289008940282*^9}, {
3.466290086537156*^9, 3.466290086606728*^9}, {3.466449137268396*^9,
3.466449479811267*^9}, {3.466450173729802*^9, 3.466450182780966*^9}},
FontSize->18],
Cell[TextData[StyleBox["We now try this out:",
FontSize->24]], "Text",
CellChangeTimes->{{3.466289070953718*^9, 3.4662890867812233`*^9}, {
3.466449486279272*^9, 3.466449489982807*^9}},
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"GramSchmidt", "[",
RowBox[{"x", ",",
RowBox[{"{", "1", "}"}]}], "]"}]], "Input",
CellChangeTimes->{{3.466289091312962*^9, 3.4662890997094727`*^9}, {
3.466290089545116*^9, 3.4662900896067533`*^9}, {3.466449494303649*^9,
3.466449521390236*^9}},
FontSize->18],
Cell[BoxData["x"], "Output",
CellChangeTimes->{
3.4662891035284367`*^9, 3.4662900903601418`*^9, {3.4664495045496798`*^9,
3.466449521731079*^9}, 3.4664501852509823`*^9, 3.466762911156309*^9,
3.466763823329247*^9, 3.466950539791458*^9},
FontSize->24]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"GramSchmidt", "[",
RowBox[{
RowBox[{"x", "^", "2"}], ",",
RowBox[{"{",
RowBox[{"1", ",", "x"}], "}"}]}], "]"}]], "Input",
CellChangeTimes->{{3.466449526246716*^9, 3.466449537184531*^9}},
FontSize->18],
Cell[BoxData[
RowBox[{
RowBox[{"-",
FractionBox["1", "3"]}], "+",
SuperscriptBox["x", "2"]}]], "Output",
CellChangeTimes->{3.466449537832697*^9, 3.466450186668377*^9,
3.466762911288096*^9, 3.4667638234470787`*^9, 3.466950539828371*^9},
FontSize->18]
}, Open ]]
}, Open ]],
Cell[CellGroupData[{
Cell["Putting everything together.", "Section",
CellChangeTimes->{{3.466449587775968*^9, 3.466449591783491*^9}}],
Cell["We now recursively apply GramSchmidt.", "Text",
CellChangeTimes->{{3.466289128586503*^9, 3.466289140562277*^9}, {
3.466449594719119*^9, 3.466449608454404*^9}},
FontSize->24,
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[{
RowBox[{
RowBox[{"LegendrePolylist", " ", "=", " ",
RowBox[{"{", "1", "}"}]}], ";"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"Do", "[",
RowBox[{
RowBox[{"LegendrePolylist", " ", "=", " ",
RowBox[{"Append", "[",
RowBox[{"LegendrePolylist", ",",
RowBox[{"GramSchmidt", "[",
RowBox[{
RowBox[{"x", "^", "n"}], ",", "LegendrePolylist"}], "]"}]}],
"]"}]}], ",",
RowBox[{"{",
RowBox[{"n", ",", "1", ",", "15"}], "}"}]}], "]"}], ";"}],
"\[IndentingNewLine]", " "}], "\[IndentingNewLine]",
RowBox[{"Simplify", "[",
RowBox[{"Collect", "[",
RowBox[{"LegendrePolylist", ",", "x"}], "]"}], "]"}]}], "Input",
CellChangeTimes->{{3.466289124546322*^9, 3.4662891714172688`*^9}, {
3.466290092889367*^9, 3.466290092976762*^9}, {3.466449615512285*^9,
3.466449796939872*^9}, {3.4664498298194637`*^9, 3.466449843456403*^9}, {
3.466449936570816*^9, 3.4664501331316977`*^9}, {3.466450243485468*^9,
3.466450289271408*^9}, {3.466450537241145*^9, 3.466450537319957*^9}, {
3.466761984732848*^9, 3.466761984930841*^9}},
FontSize->24],
Cell[BoxData[
RowBox[{"{",
RowBox[{"1", ",", "x", ",",
RowBox[{
RowBox[{"-",
FractionBox["1", "3"]}], "+",
SuperscriptBox["x", "2"]}], ",",
RowBox[{
RowBox[{"-",
FractionBox[
RowBox[{"3", " ", "x"}], "5"]}], "+",
SuperscriptBox["x", "3"]}], ",",
RowBox[{
FractionBox["3", "35"], "-",
FractionBox[
RowBox[{"6", " ",
SuperscriptBox["x", "2"]}], "7"], "+",
SuperscriptBox["x", "4"]}], ",",
RowBox[{
FractionBox[
RowBox[{"5", " ", "x"}], "21"], "-",
FractionBox[
RowBox[{"10", " ",
SuperscriptBox["x", "3"]}], "9"], "+",
SuperscriptBox["x", "5"]}], ",",
RowBox[{
RowBox[{"-",
FractionBox["5", "231"]}], "+",
FractionBox[
RowBox[{"5", " ",
SuperscriptBox["x", "2"]}], "11"], "-",
FractionBox[
RowBox[{"15", " ",
SuperscriptBox["x", "4"]}], "11"], "+",
SuperscriptBox["x", "6"]}], ",",
RowBox[{
FractionBox["1", "429"], " ", "x", " ",
RowBox[{"(",
RowBox[{
RowBox[{"-", "35"}], "+",
RowBox[{"315", " ",
SuperscriptBox["x", "2"]}], "-",
RowBox[{"693", " ",
SuperscriptBox["x", "4"]}], "+",
RowBox[{"429", " ",
SuperscriptBox["x", "6"]}]}], ")"}]}], ",",
RowBox[{
FractionBox["7", "1287"], "-",
FractionBox[
RowBox[{"28", " ",
SuperscriptBox["x", "2"]}], "143"], "+",
FractionBox[
RowBox[{"14", " ",
SuperscriptBox["x", "4"]}], "13"], "-",
FractionBox[
RowBox[{"28", " ",
SuperscriptBox["x", "6"]}], "15"], "+",
SuperscriptBox["x", "8"]}], ",",
RowBox[{
FractionBox[
RowBox[{"63", " ", "x"}], "2431"], "-",
FractionBox[
RowBox[{"84", " ",
SuperscriptBox["x", "3"]}], "221"], "+",
FractionBox[
RowBox[{"126", " ",
SuperscriptBox["x", "5"]}], "85"], "-",
FractionBox[
RowBox[{"36", " ",
SuperscriptBox["x", "7"]}], "17"], "+",
SuperscriptBox["x", "9"]}], ",",
RowBox[{
RowBox[{"-",
FractionBox["63", "46189"]}], "+",
FractionBox[
RowBox[{"315", " ",
SuperscriptBox["x", "2"]}], "4199"], "-",
FractionBox[
RowBox[{"210", " ",
SuperscriptBox["x", "4"]}], "323"], "+",
FractionBox[
RowBox[{"630", " ",
SuperscriptBox["x", "6"]}], "323"], "-",
FractionBox[
RowBox[{"45", " ",
SuperscriptBox["x", "8"]}], "19"], "+",
SuperscriptBox["x", "10"]}], ",",
RowBox[{
RowBox[{"-",
FractionBox[
RowBox[{"33", " ", "x"}], "4199"]}], "+",
FractionBox[
RowBox[{"55", " ",
SuperscriptBox["x", "3"]}], "323"], "-",
FractionBox[
RowBox[{"330", " ",
SuperscriptBox["x", "5"]}], "323"], "+",
FractionBox[
RowBox[{"330", " ",
SuperscriptBox["x", "7"]}], "133"], "-",
FractionBox[
RowBox[{"55", " ",
SuperscriptBox["x", "9"]}], "21"], "+",
SuperscriptBox["x", "11"]}], ",",
RowBox[{
FractionBox["33", "96577"], "-",
FractionBox[
RowBox[{"198", " ",
SuperscriptBox["x", "2"]}], "7429"], "+",
FractionBox[
RowBox[{"2475", " ",
SuperscriptBox["x", "4"]}], "7429"], "-",
FractionBox[
RowBox[{"660", " ",
SuperscriptBox["x", "6"]}], "437"], "+",
FractionBox[
RowBox[{"495", " ",
SuperscriptBox["x", "8"]}], "161"], "-",
FractionBox[
RowBox[{"66", " ",
SuperscriptBox["x", "10"]}], "23"], "+",
SuperscriptBox["x", "12"]}], ",",
RowBox[{
FractionBox[
RowBox[{"429", " ", "x"}], "185725"], "-",
FractionBox[
RowBox[{"2574", " ",
SuperscriptBox["x", "3"]}], "37145"], "+",
FractionBox[
RowBox[{"1287", " ",
SuperscriptBox["x", "5"]}], "2185"], "-",
FractionBox[
RowBox[{"1716", " ",
SuperscriptBox["x", "7"]}], "805"], "+",
FractionBox[
RowBox[{"429", " ",
SuperscriptBox["x", "9"]}], "115"], "-",
FractionBox[
RowBox[{"78", " ",
SuperscriptBox["x", "11"]}], "25"], "+",
SuperscriptBox["x", "13"]}], ",",
RowBox[{
RowBox[{"-",
FractionBox["143", "1671525"]}], "+",
FractionBox[
RowBox[{"1001", " ",
SuperscriptBox["x", "2"]}], "111435"], "-",
FractionBox[
RowBox[{"1001", " ",
SuperscriptBox["x", "4"]}], "6555"], "+",
FractionBox[
RowBox[{"1001", " ",
SuperscriptBox["x", "6"]}], "1035"], "-",
FractionBox[
RowBox[{"1001", " ",
SuperscriptBox["x", "8"]}], "345"], "+",
FractionBox[
RowBox[{"1001", " ",
SuperscriptBox["x", "10"]}], "225"], "-",
FractionBox[
RowBox[{"91", " ",
SuperscriptBox["x", "12"]}], "27"], "+",
SuperscriptBox["x", "14"]}], ",",
RowBox[{
RowBox[{"-",
FractionBox[
RowBox[{"143", " ", "x"}], "215441"]}], "+",
FractionBox[
RowBox[{"1001", " ",
SuperscriptBox["x", "3"]}], "38019"], "-",
FractionBox[
RowBox[{"1001", " ",
SuperscriptBox["x", "5"]}], "3335"], "+",
FractionBox[
RowBox[{"1001", " ",
SuperscriptBox["x", "7"]}], "667"], "-",
FractionBox[
RowBox[{"1001", " ",
SuperscriptBox["x", "9"]}], "261"], "+",
FractionBox[
RowBox[{"455", " ",
SuperscriptBox["x", "11"]}], "87"], "-",
FractionBox[
RowBox[{"105", " ",
SuperscriptBox["x", "13"]}], "29"], "+",
SuperscriptBox["x", "15"]}]}], "}"}]], "Output",
CellChangeTimes->{{3.466450129233713*^9, 3.466450134296747*^9},
3.4664501916956387`*^9, {3.4664502495158253`*^9, 3.466450289870541*^9},
3.466450538218276*^9, 3.4667619904743013`*^9, 3.466762915073247*^9,
3.466763827395212*^9, 3.46695054366322*^9},
FontSize->24]
}, Open ]],
Cell[TextData[StyleBox["This gives us the list of Legendre polynomials.",
FontSize->24]], "Text",
CellChangeTimes->{{3.466289231861706*^9, 3.466289248385892*^9}, {
3.46645031141392*^9, 3.466450321411351*^9}},
FontSlant->"Italic"]
}, Open ]],
Cell[CellGroupData[{
Cell["Generating a Quadrature Rule from the Legendre Polynomials", "Section",
CellChangeTimes->{{3.466289557843656*^9, 3.466289563427253*^9}, {
3.466450353945446*^9, 3.466450369399723*^9}}],
Cell[TextData[{
StyleBox["In order to generate a (numerical) quadrature rule from the \
collection of Legendre polynomials, we need to find their roots. Luckily, ",
FontSize->24],
StyleBox["Mathematica",
FontSize->24,
FontSlant->"Italic"],
StyleBox[" is pretty good at this.",
FontSize->24]
}], "Text",
CellChangeTimes->{{3.466289571355747*^9, 3.466289583129471*^9}, {
3.466289628926409*^9, 3.466289684641883*^9}, {3.4664503741066713`*^9,
3.466450416829124*^9}},
FontSlant->"Italic"],
Cell[BoxData[
RowBox[{
RowBox[{
StyleBox["RL",
FontSize->24],
StyleBox[" ",
FontSize->24],
StyleBox["=",
FontSize->24],
StyleBox[" ",
FontSize->24],
RowBox[{
StyleBox["Table",
FontSize->24],
StyleBox["[",
FontSize->24],
RowBox[{
RowBox[{
StyleBox["Solve",
FontSize->24],
StyleBox["[",
FontSize->24],
RowBox[{
RowBox[{
StyleBox[
RowBox[{"LegendrePolylist", "[",
RowBox[{"[", "i", "]"}], "]"}],
FontSize->24],
StyleBox[" ",
FontSize->24],
StyleBox["\[Equal]",
FontSize->24], " ",
StyleBox["0",
FontSize->24]}],
StyleBox[",",
FontSize->24],
StyleBox[" ",
FontSize->24],
StyleBox["x",
FontSize->24]}],
StyleBox["]",
FontSize->24]}],
StyleBox[",",
FontSize->24],
StyleBox[
RowBox[{"{",
RowBox[{"i", ",", "2", ",", "15"}], "}"}],
FontSize->24]}],
StyleBox["]",
FontSize->24]}]}],
StyleBox[";",
FontSize->24]}]], "Input",
CellChangeTimes->{{3.466289594893577*^9, 3.466289623678459*^9}, {
3.466289689667583*^9, 3.466289734339295*^9}, {3.466289805775094*^9,
3.466289806333344*^9}, {3.4662900991302633`*^9, 3.466290103815893*^9}, {
3.4664504852509212`*^9, 3.466450543935302*^9}, {3.466450665253286*^9,
3.466450680811166*^9}, {3.466450741912986*^9, 3.466450741983073*^9}, {
3.466761995075844*^9, 3.466762010098392*^9}},
FontSize->18],
Cell[TextData[{
StyleBox["As you can see, these are not rational numbers, but they are \
numbers that we can evaluate numerically relatively easily with ",
FontSize->24],
StyleBox["Mathematica",
FontSize->24,
FontSlant->"Italic"],
StyleBox[". To do this, we'll need to actually get these guys out of rule \
form and expressed just as numbers. ",
FontSize->24],
StyleBox["Mathematica",
FontSize->24,
FontSlant->"Italic"],
StyleBox[" makes this easy by intelligently applying /. across the nested \
list which is RL.",
FontSize->24]
}], "Text",
CellChangeTimes->{{3.466289746470099*^9, 3.466289759165419*^9}, {
3.4664505727403917`*^9, 3.4664506614671097`*^9}, {3.4664507593099413`*^9,
3.466450782650261*^9}},
FontSlant->"Italic"],
Cell[BoxData[
RowBox[{
RowBox[{"RootList", " ", "=", " ",
RowBox[{"x", " ", "/.", " ", "RL"}]}], ";"}]], "Input",
CellChangeTimes->{{3.4662897641297083`*^9, 3.4662897788223963`*^9}, {
3.466290108542562*^9, 3.466290108645464*^9}, {3.466450685812071*^9,
3.466450703505837*^9}, 3.466762015777066*^9},
FontSize->24],
Cell[TextData[StyleBox["Evaluating numerically, we get",
FontSize->24]], "Text",
CellChangeTimes->{{3.466289903054167*^9, 3.466289929736965*^9}, {
3.46645078731557*^9, 3.466450792297505*^9}},
FontSlant->"Italic"],
Cell[BoxData[
RowBox[{
RowBox[{"GaussQuadratureNodes", " ", "=", " ",
RowBox[{"N", "[",
RowBox[{"RootList", ",", "20"}], "]"}]}], ";"}]], "Input",
CellChangeTimes->{{3.466289868875905*^9, 3.466289878670897*^9}, {
3.466290113454867*^9, 3.466290113540846*^9}, {3.466450797922271*^9,
3.466450812025423*^9}, 3.466950473171196*^9},
FontSize->24]
}, Open ]],
Cell[CellGroupData[{
Cell["Weights for Gaussian Quadrature. ", "Section",
CellChangeTimes->{{3.466450879580562*^9, 3.466450886795114*^9}}],
Cell[TextData[{
StyleBox["We now have to figure out the appropriate (exact and numerical) \
weights for Gaussian quadrature. By construction, in the Gauss quadrature \
theorem, we know that \n\nA_i = Integral_a^b l_i(x). \n\nWe could be more \
clever about the algebra if we were doing this by hand, but ",
FontSize->24],
StyleBox["Mathematica",
FontSize->24,
FontSlant->"Italic"],
StyleBox[" is happy to construct and integrate the l_i for us. Suppose that \
x is the list of roots. Then we have\n\n",
FontSize->24],
StyleBox["L_i = ",
FontSize->96],
Cell[BoxData[
FormBox[
RowBox[{
UnderoverscriptBox["\[Product]",
RowBox[{"j", "=", "1"}], "n"],
FractionBox[
RowBox[{"x", " ", "-", " ",
SubscriptBox["x", "j"]}],
RowBox[{
SubscriptBox["x", "i"], "-",
SubscriptBox["x", "j"]}]]}], TraditionalForm]],
FormatType->"TraditionalForm",
FontSize->96],
",\n\n",
StyleBox["where j=i is supposed to be missing from the sum, but I don't know \
how to write that!",
FontSize->24]
}], "Text",
CellChangeTimes->{{3.4664508905092278`*^9, 3.466450926927966*^9}, {
3.466502102321617*^9, 3.466502225259839*^9}, {3.4665025561179247`*^9,
3.466502693611712*^9}},
FontSlant->"Italic"],
Cell[BoxData[
RowBox[{
RowBox[{
RowBox[{
RowBox[{"L", "[",
RowBox[{"i_", ",", "X_"}], "]"}], " ", ":=", "\[IndentingNewLine]",
RowBox[{
RowBox[{"If", "[",
RowBox[{
RowBox[{"i", ">", "1"}], ",",
RowBox[{"Product", "[",
RowBox[{
RowBox[{
RowBox[{"(",
RowBox[{"x", " ", "-", " ",
RowBox[{"X", "[",
RowBox[{"[", "j", "]"}], "]"}]}], ")"}], "/",
RowBox[{"(",
RowBox[{
RowBox[{"X", "[",
RowBox[{"[", "i", "]"}], "]"}], " ", "-", " ",
RowBox[{"X", "[",
RowBox[{"[", "j", "]"}], "]"}]}], ")"}]}], ",",
RowBox[{"{",
RowBox[{"j", ",", "1", ",",
RowBox[{"i", "-", "1"}]}], "}"}]}], "]"}], ",", "1"}], "]"}], "*",
"\[IndentingNewLine]",
RowBox[{"If", "[",
RowBox[{
RowBox[{"i", "<",
RowBox[{"Length", "[", "X", "]"}]}], ",",
RowBox[{"Product", "[",
RowBox[{
RowBox[{
RowBox[{"(",
RowBox[{"x", " ", "-", " ",
RowBox[{"X", "[",
RowBox[{"[", "j", "]"}], "]"}]}], ")"}], "/",
RowBox[{"(",
RowBox[{
RowBox[{"X", "[",
RowBox[{"[", "i", "]"}], "]"}], " ", "-", " ",
RowBox[{"X", "[",
RowBox[{"[", "j", "]"}], "]"}]}], ")"}]}], ",",
RowBox[{"{",
RowBox[{"j", ",",
RowBox[{"i", "+", "1"}], ",",
RowBox[{"Length", "[", "X", "]"}]}], "}"}]}], "]"}], ",", "1"}],
"]"}]}]}], ";"}], "\[IndentingNewLine]"}]], "Input",
CellChangeTimes->{{3.466502196607983*^9, 3.466502542296793*^9}, {
3.466502704656268*^9, 3.4665027052867413`*^9}, {3.466503066621882*^9,
3.466503067899097*^9}, {3.466503194100566*^9, 3.46650331903331*^9}},
FontSize->18],
Cell[TextData[StyleBox["We can now try this out:",
FontSize->24]], "Text",
CellChangeTimes->{{3.466502714851324*^9, 3.4665027264161158`*^9}},
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"RootList", "[",
RowBox[{"[", "3", "]"}], "]"}]], "Input",
CellChangeTimes->{{3.4665033728387957`*^9, 3.466503391337256*^9}},
FontSize->18],
Cell[BoxData[
RowBox[{"{",
RowBox[{"0", ",",
RowBox[{"-",
SqrtBox[
FractionBox["3", "5"]]}], ",",
SqrtBox[
FractionBox["3", "5"]]}], "}"}]], "Output",
CellChangeTimes->{{3.466503384475108*^9, 3.466503391944846*^9},
3.466762915903345*^9, 3.4667638281587133`*^9, 3.4669505441745872`*^9},
FontSize->18]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"L", "[",
RowBox[{"1", ",",
RowBox[{"RootList", "[",
RowBox[{"[", "3", "]"}], "]"}]}], "]"}]], "Input",
CellChangeTimes->{{3.4665034023533983`*^9, 3.466503409264325*^9}},
FontSize->18],
Cell[BoxData[
RowBox[{
RowBox[{"-",
FractionBox["5", "3"]}], " ",
RowBox[{"(",
RowBox[{
RowBox[{"-",
SqrtBox[
FractionBox["3", "5"]]}], "+", "x"}], ")"}], " ",
RowBox[{"(",
RowBox[{
SqrtBox[
FractionBox["3", "5"]], "+", "x"}], ")"}]}]], "Output",
CellChangeTimes->{3.466503409740253*^9, 3.466762915956633*^9,
3.466763828211631*^9, 3.466950544211378*^9},
FontSize->18]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"L", "[",
RowBox[{"2", ",",
RowBox[{"RootList", "[",
RowBox[{"[", "3", "]"}], "]"}]}], "]"}]], "Input",
CellChangeTimes->{{3.466503422306962*^9, 3.466503428230654*^9}},
FontSize->18],
Cell[BoxData[
RowBox[{
FractionBox["5", "6"], " ", "x", " ",
RowBox[{"(",
RowBox[{
RowBox[{"-",
SqrtBox[
FractionBox["3", "5"]]}], "+", "x"}], ")"}]}]], "Output",
CellChangeTimes->{3.466503428700981*^9, 3.466762915989499*^9,
3.466763828244611*^9, 3.466950544274782*^9},
FontSize->18]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"L", "[",
RowBox[{"3", ",",
RowBox[{"RootList", "[",
RowBox[{"[", "3", "]"}], "]"}]}], "]"}]], "Input",
CellChangeTimes->{{3.466503434988399*^9, 3.4665034425975943`*^9}},
FontSize->18],
Cell[BoxData[
RowBox[{
FractionBox["5", "6"], " ", "x", " ",
RowBox[{"(",
RowBox[{
SqrtBox[
FractionBox["3", "5"]], "+", "x"}], ")"}]}]], "Output",
CellChangeTimes->{3.466503443321682*^9, 3.466762916025062*^9,
3.4667638282824993`*^9, 3.4669505443253613`*^9},
FontSize->18]
}, Open ]],
Cell[TextData[StyleBox["We can now build a table of all the L_i with a couple \
of nested Table commands (you don't want to look at it):",
FontSize->24]], "Text",
CellChangeTimes->{{3.46650346506092*^9, 3.466503486817503*^9}, {
3.466503544528446*^9, 3.466503549637021*^9}},
FontSlant->"Italic"],
Cell[BoxData[
RowBox[{
RowBox[{"LTable", " ", "=", " ",
RowBox[{"Table", "[", "\[IndentingNewLine]",
RowBox[{
RowBox[{"Table", "[",
RowBox[{
RowBox[{"L", "[",
RowBox[{"i", ",",
RowBox[{"RootList", "[",
RowBox[{"[", "j", "]"}], "]"}]}], "]"}], ",",
RowBox[{"{",
RowBox[{"i", ",", "1", ",",
RowBox[{"Length", "[",
RowBox[{"RootList", "[",
RowBox[{"[", "j", "]"}], "]"}], "]"}]}], "}"}]}], "]"}], ",",
"\[IndentingNewLine]",
RowBox[{"{",
RowBox[{"j", ",", "2", ",", "6"}], "}"}]}], "]"}]}], ";"}]], "Input",
CellChangeTimes->{{3.466502730033963*^9, 3.4665027948610077`*^9}, {
3.4665029891357327`*^9, 3.466503044626418*^9}, {3.466503078377734*^9,
3.466503078456807*^9}, {3.466503114351598*^9, 3.4665031601548433`*^9}, {
3.466503334048805*^9, 3.466503334111837*^9}, 3.466503365980474*^9, {
3.466503490336979*^9, 3.4665034954837*^9}, 3.466762037161282*^9, {
3.466762072678611*^9, 3.466762075956373*^9}, {3.4667624468358803`*^9,
3.46676245067307*^9}, {3.466762826416521*^9, 3.466762830950488*^9},
3.466854182846998*^9},
FontSize->18],
Cell[TextData[StyleBox["We now want to integrate the L_i to get the weights \
A_i for Gauss Quadrature. For instance,",
FontSize->24]], "Text",
CellChangeTimes->{{3.466503656406712*^9, 3.466503678387536*^9}, {
3.466503723490416*^9, 3.46650372621601*^9}},
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"Integrate", "[",
RowBox[{
RowBox[{"L", "[",
RowBox[{"3", ",",
RowBox[{"RootList", "[",
RowBox[{"[", "3", "]"}], "]"}]}], "]"}], ",",
RowBox[{"{",
RowBox[{"x", ",",
RowBox[{"-", "1"}], ",", "1"}], "}"}]}], "]"}]], "Input",
CellChangeTimes->{{3.466503682230835*^9, 3.466503701372311*^9}},
FontSize->18],
Cell[BoxData[
FractionBox["5", "9"]], "Output",
CellChangeTimes->{3.466503702051653*^9, 3.466762083827675*^9,
3.466762453609177*^9, 3.4667628491584*^9, 3.4667629164845953`*^9,
3.466763828775498*^9, 3.466950544412734*^9},
FontSize->18]
}, Open ]],
Cell[TextData[StyleBox["In general, we should make a table of integrals, of \
course:",
FontSize->24]], "Text",
CellChangeTimes->{{3.466503732783721*^9, 3.46650374806253*^9}},
FontSlant->"Italic"],
Cell[BoxData[
RowBox[{
RowBox[{"ATable", " ", "=", " ",
RowBox[{"Integrate", "[",
RowBox[{"LTable", ",",
RowBox[{"{",
RowBox[{"x", ",",
RowBox[{"-", "1"}], ",", "1"}], "}"}]}], "]"}]}], ";"}]], "Input",
CellChangeTimes->{{3.466503750590808*^9, 3.466503759126977*^9}, {
3.4665037991104393`*^9, 3.4665038014278584`*^9}, 3.466763579223995*^9},
FontSize->18],
Cell[TextData[StyleBox["Remember that the RootList table starts with the \
polynomial x, with single root 0, while the LTable and ATable start one \
degree higher. To keep our notation straight, we just prepend a fake weight \
to the table.",
FontSize->24]], "Text",
CellChangeTimes->{{3.466504487515621*^9, 3.466504544053706*^9}},
FontSlant->"Italic"],
Cell[BoxData[
RowBox[{
RowBox[{"ATable", " ", "=", " ",
RowBox[{"Prepend", "[",
RowBox[{"ATable", ",", "0"}], "]"}]}], ";"}]], "Input",
CellChangeTimes->{{3.4665044288350697`*^9, 3.4665044752123737`*^9},
3.4667635731929703`*^9},
FontSize->18]
}, Open ]],
Cell[CellGroupData[{
Cell["Testing the actual Gaussian Quadrature Rule (exactly)", "Section",
CellChangeTimes->{{3.4662893246864223`*^9, 3.4662893353872633`*^9}, {
3.466450825361017*^9, 3.466450835822694*^9}}],
Cell[TextData[StyleBox["We now have tables of nodes (RootList and \
GaussQuadratureNodes) and weights (ATable) for the Gauss quadrature rules \
with between 2 and 5 nodes. The n node formula should correctly integrate all \
polynomials up to degree 2n -1. \n\nOf course, it will be no fun whatsoever \
unless we actually test this hypothesis on some real examples. First, we code \
the actual Gauss quadrature rule:",
FontSize->24]], "Text",
CellChangeTimes->{{3.466289342853265*^9, 3.466289362913412*^9}, {
3.466289437484515*^9, 3.4662895453882437`*^9}, {3.466289944099111*^9,
3.466290028266542*^9}, {3.466450839374762*^9, 3.466450866596517*^9}, {
3.4665038145401278`*^9, 3.466503938832987*^9}, {3.46650402050117*^9,
3.466504031226389*^9}},
FontSlant->"Italic"],
Cell[BoxData[
RowBox[{
StyleBox["\[IndentingNewLine]",
FontSize->18],
StyleBox[
RowBox[{
RowBox[{
RowBox[{"GaussQuadrature", "[",
RowBox[{"f_", ",", "n_"}], "]"}], " ", ":=", " ",
RowBox[{"Sum", "[",
RowBox[{
RowBox[{
RowBox[{"ATable", "[",
RowBox[{"[",
RowBox[{"n", ",", "i"}], "]"}], "]"}], "*",
RowBox[{"(",
RowBox[{"f", " ", "/.", " ",
RowBox[{"{",
RowBox[{"x", " ", "->",
RowBox[{"RootList", "[",
RowBox[{"[",
RowBox[{"n", ",", "i"}], "]"}], "]"}]}], "}"}]}], ")"}]}], ",",
RowBox[{"{",
RowBox[{"i", ",", "1", ",",
RowBox[{"Length", "[",
RowBox[{"RootList", "[",
RowBox[{"[", "n", "]"}], "]"}], "]"}]}], "}"}]}], "]"}]}], ";"}],
FontSize->24]}]], "Input",
CellChangeTimes->{{3.4593569823699703`*^9, 3.459357060924468*^9}, {
3.459357125913353*^9, 3.459357242135627*^9}, {3.459357282638081*^9,
3.459357287498719*^9}, {3.459357327354567*^9, 3.459357418675777*^9}, {
3.4593574512799788`*^9, 3.459357533754788*^9}, {3.4593575910701027`*^9,
3.4593578296705017`*^9}, {3.4593578661205397`*^9, 3.459358004695141*^9}, {
3.459358095085375*^9, 3.459358097142673*^9}, {3.4593581351365757`*^9,
3.4593582071607447`*^9}, {3.459358240852594*^9, 3.459358326449738*^9}, {
3.4593584120244627`*^9, 3.459358436914117*^9}, {3.4593586611555157`*^9,
3.459358714250257*^9}, 3.4594348852639112`*^9, {3.4594349462914133`*^9,
3.459434950679678*^9}, {3.459435003099393*^9, 3.4594350039682817`*^9},
3.459435086775653*^9, 3.459605884824007*^9, 3.459605920241057*^9, {
3.459606896996472*^9, 3.459606923242097*^9}, {3.459606976945345*^9,
3.4596069805766363`*^9}, {3.460711823893104*^9, 3.4607119174122267`*^9}, {
3.460712041643588*^9, 3.460712067016101*^9}, {3.4607121074082747`*^9,
3.460712205911663*^9}, {3.460712237522114*^9, 3.460712399948258*^9}, {
3.460712448574892*^9, 3.460712503761948*^9}, {3.460723642260371*^9,
3.460723846467607*^9}, {3.460723928394636*^9, 3.460723931884945*^9}, {
3.4607239645831623`*^9, 3.460723964661027*^9}, {3.460724010427746*^9,
3.4607240153132277`*^9}, {3.460724049319186*^9, 3.460724075660923*^9}, {
3.460724156210074*^9, 3.46072440087633*^9}, {3.4607246148168793`*^9,
3.460724637251401*^9}, {3.460724722342664*^9, 3.460724749594469*^9}, {
3.460725252497422*^9, 3.460725257104268*^9}, {3.460725462883502*^9,
3.460725462957391*^9}, {3.4607255067444983`*^9, 3.460725544954211*^9}, {
3.460726398679769*^9, 3.460726402398378*^9}, {3.4607264900948553`*^9,
3.4607264901745653`*^9}, {3.4607265294878273`*^9,
3.4607266215497017`*^9}, {3.4607266525953207`*^9, 3.460726681753384*^9}, {
3.460726752152919*^9, 3.4607267894035387`*^9}, {3.460726855113059*^9,
3.460726869029655*^9}, {3.46072691208464*^9, 3.4607269130429163`*^9}, {
3.462810496255804*^9, 3.4628106689504423`*^9}, {3.4628107717913227`*^9,
3.4628109235808897`*^9}, {3.462810983700308*^9, 3.4628110766815243`*^9}, {
3.462811127076709*^9, 3.4628111528220673`*^9}, {3.462811229670088*^9,
3.462811293001821*^9}, {3.46283378934337*^9, 3.4628337951398773`*^9}, {
3.4631290526031237`*^9, 3.463129546157691*^9}, {3.463129580196995*^9,
3.4631296579474783`*^9}, {3.463129719884845*^9, 3.463129728505199*^9}, {
3.463129770568388*^9, 3.463129778902116*^9}, 3.4631298155788097`*^9, {
3.463129981040122*^9, 3.463129996098414*^9}, {3.463267897707822*^9,
3.4632680814171467`*^9}, {3.464955922484514*^9, 3.464955941574931*^9}, {
3.464955973439563*^9, 3.464955975390871*^9}, {3.464956013341967*^9,
3.464956044843781*^9}, {3.465053231859507*^9, 3.465053250147496*^9}, {
3.4650560793532047`*^9, 3.4650560797597427`*^9}, {3.465056664390491*^9,
3.4650566960111723`*^9}, 3.4650569376592827`*^9, {3.465056970289137*^9,
3.465056972239704*^9}, {3.465057167971636*^9, 3.465057170744871*^9}, {
3.465058711700664*^9, 3.465058743481477*^9}, {3.4650589543877163`*^9,
3.465058954713431*^9}, {3.465059148797021*^9, 3.465059199586472*^9}, {
3.466290120418395*^9, 3.4662901934840183`*^9}, {3.466290224439309*^9,
3.4662902801611233`*^9}, {3.466290426849051*^9, 3.466290465499984*^9}, {
3.466503949089745*^9, 3.4665040085749474`*^9}, {3.466504091198346*^9,
3.466504143470744*^9}, {3.466504233066687*^9, 3.466504235568334*^9}, {
3.466504271143498*^9, 3.466504273452917*^9}},
FontSize->18],
Cell[TextData[StyleBox["Now we try it out!",
FontSize->24]], "Text",
CellChangeTimes->{{3.466504038985654*^9, 3.466504041441484*^9}},
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"GaussQuadrature", "[",
RowBox[{
RowBox[{"x", "+", "4"}], ",", "3"}], "]"}]], "Input",
CellChangeTimes->{{3.4650592568534184`*^9, 3.465059265162096*^9}, {
3.4662907274504213`*^9, 3.466290733159842*^9}, {3.466504044322845*^9,
3.466504078555258*^9}, {3.4665041499154243`*^9, 3.466504204998868*^9}, {
3.466504286475122*^9, 3.466504289673333*^9}, {3.466504324664812*^9,
3.4665043571092052`*^9}, {3.466504564103753*^9, 3.466504564173525*^9}},
FontSize->24],
Cell[BoxData[
RowBox[{
FractionBox["32", "9"], "+",
RowBox[{
FractionBox["5", "9"], " ",
RowBox[{"(",
RowBox[{"4", "-",
SqrtBox[
FractionBox["3", "5"]]}], ")"}]}], "+",
RowBox[{
FractionBox["5", "9"], " ",
RowBox[{"(",
RowBox[{"4", "+",
SqrtBox[
FractionBox["3", "5"]]}], ")"}]}]}]], "Output",
CellChangeTimes->{
3.465059265568036*^9, 3.466290733575822*^9, {3.466504064279872*^9,
3.466504079187958*^9}, {3.466504150485165*^9, 3.466504205405698*^9},
3.466504238271122*^9, {3.466504276265025*^9, 3.466504290074918*^9}, {
3.466504325133547*^9, 3.466504357504047*^9}, {3.46650454958323*^9,
3.466504564672474*^9}, 3.466763228118126*^9, 3.4667641412903013`*^9,
3.4669508584186687`*^9},
FontSize->24]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"Simplify", "[",
RowBox[{"GaussQuadrature", "[",
RowBox[{
RowBox[{"x", "+", "4"}], ",", "3"}], "]"}], "]"}]], "Input",
CellChangeTimes->{{3.4665045885103607`*^9, 3.466504599498612*^9}},
FontSize->24],
Cell[BoxData["8"], "Output",
CellChangeTimes->{3.4665046002141857`*^9, 3.466763228154313*^9,
3.466764141333458*^9, 3.466950858438847*^9},
FontSize->24]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"Integrate", "[",
RowBox[{
RowBox[{"x", "+", "4"}], ",",
RowBox[{"{",
RowBox[{"x", ",",
RowBox[{"-", "1"}], ",", "1"}], "}"}]}], "]"}]], "Input",
CellChangeTimes->{{3.466504607568671*^9, 3.46650461604169*^9}},
FontSize->24],
Cell[BoxData["8"], "Output",
CellChangeTimes->{3.466504616447118*^9, 3.466763228187941*^9,
3.466764141412183*^9, 3.4669508584575987`*^9},
FontSize->24]
}, Open ]],
Cell[TextData[StyleBox["So the three node GQ rule should integrate \
polynomials up to degree 5. Let's try it!",
FontSize->24]], "Text",
CellChangeTimes->{{3.463130018320093*^9, 3.463130065587366*^9}, {
3.463130425603314*^9, 3.463130473085669*^9}, {3.4649560514239492`*^9,
3.464956086485146*^9}, {3.464956293303894*^9, 3.464956300030287*^9}, {
3.465059292224649*^9, 3.4650593610749683`*^9}, {3.4662907603191442`*^9,
3.4662907752918673`*^9}, {3.4665046257948103`*^9, 3.466504643678502*^9}},
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[{
RowBox[{
RowBox[{"P", " ", "=", " ",
RowBox[{
RowBox[{"x", "^", "5"}], " ", "-", " ",
RowBox[{"4", "*",
RowBox[{"x", "^", "2"}]}], " ", "+", " ",
RowBox[{"17", "*",
RowBox[{"x", "^", "3"}]}], " ", "-", " ",
RowBox[{"2", "*", "x"}], " ", "+", " ", "1"}]}],
";"}], "\[IndentingNewLine]",
RowBox[{"Simplify", "[",
RowBox[{"GaussQuadrature", "[",
RowBox[{"P", ",", "3"}], "]"}], "]"}], "\[IndentingNewLine]",
RowBox[{"Integrate", "[",
RowBox[{"P", ",",
RowBox[{"{",
RowBox[{"x", ",",
RowBox[{"-", "1"}], ",", "1"}], "}"}]}], "]"}]}], "Input",
CellChangeTimes->{{3.466504654395762*^9, 3.466504739392647*^9}},
FontSize->24],
Cell[BoxData[
RowBox[{"-",
FractionBox["2", "3"]}]], "Output",
CellChangeTimes->{{3.466504681654579*^9, 3.4665046912804203`*^9}, {
3.466504731320878*^9, 3.466504739869355*^9}, 3.4667632282206907`*^9,
3.466764141598744*^9, 3.466950858476571*^9}],
Cell[BoxData[
RowBox[{"-",
FractionBox["2", "3"]}]], "Output",
CellChangeTimes->{{3.466504681654579*^9, 3.4665046912804203`*^9}, {
3.466504731320878*^9, 3.466504739869355*^9}, 3.4667632282206907`*^9,
3.466764141598744*^9, 3.4669508584979773`*^9}]
}, Open ]]
}, Open ]],
Cell[CellGroupData[{
Cell[TextData[StyleBox["Trying out Gauss Quadrature on a non-polynomial \
integrand",
FontSize->24]], "Section",
CellChangeTimes->{{3.466504758574342*^9, 3.4665047714930763`*^9}}],
Cell[TextData[StyleBox["We now return to our favorite example: integrating \
trig functions. Let's try Cos[x].",
FontSize->24]], "Text",
CellChangeTimes->{{3.4665047785016193`*^9, 3.466504810922244*^9}, {
3.466530116656575*^9, 3.4665301168006477`*^9}},
FontSlant->"Italic"],
Cell[BoxData[
RowBox[{
StyleBox[
RowBox[{
RowBox[{"Digits", "[",
RowBox[{"a_", ",", "b_"}], "]"}], " ", ":=", " ",
RowBox[{"N", "[",
RowBox[{"Abs", "[",
RowBox[{"Log", "[",
RowBox[{"10", ",",
RowBox[{"Abs", "[",
RowBox[{"a", " ", "-", "b"}], "]"}]}], "]"}], "]"}], "]"}]}],
FontSize->18], ";"}]], "Input",
CellChangeTimes->{{3.465059384075498*^9, 3.4650593989216747`*^9}}],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"GaussQuadrature", "[",
RowBox[{
RowBox[{"Cos", "[", "x", "]"}], ",", "3"}], "]"}]], "Input",
CellChangeTimes->{{3.464956303401608*^9, 3.464956448997182*^9}, {
3.4649566064281054`*^9, 3.464956652398765*^9}, {3.465059419156137*^9,
3.465059522184515*^9}, {3.465059558382962*^9, 3.465059609386078*^9}, {
3.465059679944145*^9, 3.465059691205207*^9}, {3.46506018804387*^9,
3.465060255566668*^9}, {3.465060287445633*^9, 3.465060415876306*^9}, {
3.466290785614829*^9, 3.46629082012286*^9}, {3.466504816909683*^9,
3.466504831250959*^9}},
FontSize->18],
Cell[BoxData[
RowBox[{
FractionBox["8", "9"], "+",
RowBox[{
FractionBox["10", "9"], " ",
RowBox[{"Cos", "[",
SqrtBox[
FractionBox["3", "5"]], "]"}]}]}]], "Output",
CellChangeTimes->{{3.465059508156816*^9, 3.4650595227476397`*^9},
3.4650595931948566`*^9, 3.4650596917528963`*^9, {3.4650601932303133`*^9,
3.465060256072105*^9}, {3.465060298708591*^9, 3.465060416207316*^9}, {
3.4662908204746647`*^9, 3.466290830884931*^9}, {3.466504826273233*^9,
3.466504835088429*^9}, 3.466763228300529*^9, 3.4667641418590508`*^9,
3.466950858520825*^9},
FontSize->24]
}, Open ]],
Cell["Ok, we'll have to N it:", "Text",
CellChangeTimes->{{3.465059736009935*^9, 3.4650597760606737`*^9}, {
3.465059857583255*^9, 3.465059869397875*^9}, {3.466290902748053*^9,
3.466290928713098*^9}, {3.4662910788567038`*^9, 3.466291083422214*^9}, {
3.4665048457536087`*^9, 3.46650485071138*^9}},
FontSize->24,
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"N", "[",
RowBox[{
RowBox[{"GaussQuadrature", "[",
RowBox[{
RowBox[{"Cos", "[", "x", "]"}], ",", "5"}], "]"}], ",", "20"}],
"]"}]], "Input",
CellChangeTimes->{{3.466504856881709*^9, 3.466504923980658*^9}, {
3.466763790466119*^9, 3.466763790526413*^9}},
FontSize->18],
Cell[BoxData["1.6829419704071920695077183702761741944732051955638725722138`20.\
"], "Output",
CellChangeTimes->{{3.466504886995756*^9, 3.466504924378277*^9},
3.4667632283371773`*^9, 3.466763791178585*^9, 3.466764141885652*^9,
3.466950858537911*^9},
FontSize->18]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"N", "[",
RowBox[{
RowBox[{"Integrate", "[",
RowBox[{
RowBox[{"Cos", "[", "x", "]"}], ",",
RowBox[{"{",
RowBox[{"x", ",",
RowBox[{"-", "1"}], ",", "1"}], "}"}]}], "]"}], ",", "20"}],
"]"}]], "Input",
CellChangeTimes->{{3.466504894267798*^9, 3.466504904965652*^9}},
FontSize->18],
Cell[BoxData["1.6829419696157930133050046432605979992451261215967421327513`20.\
"], "Output",
CellChangeTimes->{3.466504905395775*^9, 3.4667632283917217`*^9,
3.466764141929593*^9, 3.466950858599346*^9},
FontSize->18]
}, Open ]],
Cell[TextData[StyleBox["Of course, in order to make a serious test of these \
methods, we ought to count digits and make a graph, as we usually do:",
FontSize->24]], "Text",
CellChangeTimes->{{3.466530095441999*^9, 3.4665301455661488`*^9}},
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[{
RowBox[{
StyleBox[
RowBox[{
RowBox[{"Digits", "[",
RowBox[{"a_", ",", "b_"}], "]"}], " ", ":=", " ",
RowBox[{"N", "[",
RowBox[{"Abs", "[",
RowBox[{"Log", "[",
RowBox[{"10", ",",
RowBox[{"Abs", "[",
RowBox[{"a", " ", "-", "b"}], "]"}]}], "]"}], "]"}], "]"}]}],
FontSize->18], ";"}], "\[IndentingNewLine]",
StyleBox[
RowBox[{"GQDigits", " ", "=", " ",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"Digits", "[",
RowBox[{
RowBox[{"N", "[",
RowBox[{
RowBox[{"GaussQuadrature", "[",
RowBox[{
RowBox[{"Cos", "[", "x", "]"}], ",", "i"}], "]"}], ",", "20"}],
"]"}], ",",
RowBox[{"N", "[",
RowBox[{
RowBox[{"Integrate", "[",
RowBox[{
RowBox[{"Cos", "[", "x", "]"}], ",",
RowBox[{"{",
RowBox[{"x", ",",
RowBox[{"-", "1"}], ",", "1"}], "}"}]}], "]"}], ",", "20"}],
"]"}]}], "]"}], ",",
RowBox[{"{",
RowBox[{"i", ",", "2", ",", "5"}], "}"}]}], "]"}]}],
FontSize->18], "\[IndentingNewLine]",
RowBox[{
StyleBox["ListLinePlot",
FontSize->16],
StyleBox["[",
FontSize->16],
RowBox[{
StyleBox["GQDigits",
FontSize->16],
StyleBox[",",
FontSize->16],
StyleBox[
RowBox[{"Filling", "\[Rule]", "Axis"}],
FontSize->16],
StyleBox[",",
FontSize->16],
StyleBox[
RowBox[{"PlotRange", "\[Rule]", "Full"}],
FontSize->16],
StyleBox[",",
FontSize->16],
RowBox[{
StyleBox["AxesOrigin",
FontSize->16],
StyleBox["\[Rule]",
FontSize->16],
StyleBox[
RowBox[{"{",
RowBox[{"0", ",", "0"}], "}"}],
FontSize->14]}],
StyleBox[",",
FontSize->14],
StyleBox[" ",
FontSize->14],
StyleBox[
RowBox[{"PlotMarkers", "\[Rule]", "Automatic"}],
FontSize->14]}],
StyleBox["]",
FontSize->16]}]}], "Input",
CellChangeTimes->{{3.466530147776668*^9, 3.466530236156166*^9}, {
3.4665302719387083`*^9, 3.466530276215641*^9}},
FontSize->24],
Cell[BoxData[
RowBox[{"{",
RowBox[{
"2.1476228447219095`", ",", "4.210573636983393`", ",", "6.551417619174976`",
",", "9.101604471995437`"}], "}"}]], "Output",
CellChangeTimes->{3.46653023813414*^9, 3.466530277624794*^9,
3.4667632285728617`*^9, 3.466764141989197*^9, 3.466950858656646*^9},
FontSize->24],
Cell[BoxData[
GraphicsBox[
GraphicsComplexBox[{{1., 2.1476228447219095`}, {2., 4.210573636983393}, {3.,
6.551417619174976}, {4., 9.101604471995437}, {1., 0.}, {4., 0.}}, {{{},
{Hue[0.67, 0.6, 0.6], Opacity[0.2], EdgeForm[None],
GraphicsGroupBox[PolygonBox[{{1, 5, 6, 4, 3, 2}}]]}, {}, {}}, {{}, {},
{Hue[0.67, 0.6, 0.6], LineBox[{1, 2, 3, 4}]}}, {
{Hue[0.67, 0.6, 0.6], InsetBox[
StyleBox["\<\"\[FilledCircle]\"\>",
StripOnInput->False,
FontSize->8.96], 1], InsetBox[
StyleBox["\<\"\[FilledCircle]\"\>",
StripOnInput->False,
FontSize->8.96], 2], InsetBox[
StyleBox["\<\"\[FilledCircle]\"\>",
StripOnInput->False,
FontSize->8.96], 3], InsetBox[
StyleBox["\<\"\[FilledCircle]\"\>",
StripOnInput->False,
FontSize->8.96], 4]}, {}}}],
AspectRatio->NCache[GoldenRatio^(-1), 0.6180339887498948],
Axes->True,
AxesOrigin->{0, 0},
ImageSize->{857., Automatic},
PlotRange->{{0, 4.}, {0, 9.101604471995437}},
PlotRangeClipping->True,
PlotRangePadding->{
Scaled[0.02],
Scaled[0.02]}]], "Output",
CellChangeTimes->{3.46653023813414*^9, 3.466530277624794*^9,
3.4667632285728617`*^9, 3.466764141989197*^9, 3.46695085872698*^9},
FontSize->24]
}, Open ]],
Cell[TextData[StyleBox["We now compare these digits to the original \
NewtonCotes rules:",
FontSize->24]], "Text",
CellChangeTimes->{{3.466530315395068*^9, 3.4665303292648706`*^9}},
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[{
RowBox[{
RowBox[{
RowBox[{"FitData", "[",
RowBox[{"n_", ",", "a_", ",", " ", "h_", ",", "f_"}], "]"}], " ", ":=",
" ",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"{",
RowBox[{
RowBox[{"a", " ", "+", " ",
RowBox[{"i", "*", "h"}]}], ",",
RowBox[{"f", "[",
RowBox[{"a", " ", "+", " ",
RowBox[{"i", "*", "h"}]}], "]"}]}], "}"}], ",",
RowBox[{"{",
RowBox[{"i", ",", "0", ",", "n"}], "}"}]}], "]"}]}],
";"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"Poly", "[",
RowBox[{"n_", ",", "a_", ",", "h_", ",", "f_"}], "]"}], " ", ":=", " ",
RowBox[{"Collect", "[",
RowBox[{
RowBox[{"Simplify", "[",
RowBox[{"InterpolatingPolynomial", "[",
RowBox[{
RowBox[{"FitData", "[",
RowBox[{"n", ",", "a", ",", "h", ",", "f"}], "]"}], ",", "x"}],
"]"}], "]"}], ",", "x"}], "]"}]}], ";"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"NewtonCotes", "[",
RowBox[{"n_", ",", "a_", ",", "h_", ",", "f_"}], "]"}], " ", ":=", " ",
RowBox[{"Integrate", "[",
RowBox[{
RowBox[{"Poly", "[",
RowBox[{"n", ",", "a", ",", "h", ",", "f"}], "]"}], ",",
RowBox[{"{",
RowBox[{"x", ",", "a", ",",
RowBox[{"a", "+",
RowBox[{"n", "*", "h"}]}]}], "}"}]}], "]"}]}],
";"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"CompositeNewtonCotes", "[",
RowBox[{"k_", ",", "n_", ",", "a_", ",", "h_", ",", "f_"}], "]"}], " ", ":=",
" ",
RowBox[{"Sum", "[",
RowBox[{
RowBox[{"NewtonCotes", "[",
RowBox[{"n", ",",
RowBox[{"a", "+",
RowBox[{"i", "*", "n", "*", "h"}]}], ",", "h", ",", "f"}], "]"}], ",",
RowBox[{"{",
RowBox[{"i", ",", "0", ",",
RowBox[{"k", "-", "1"}]}], "}"}]}], "]"}]}],
";"}], "\[IndentingNewLine]",
RowBox[{"NCDigits", " ", "=", " ",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"Digits", "[",
RowBox[{
RowBox[{"N", "[",
RowBox[{
RowBox[{"NewtonCotes", "[",
RowBox[{"i", ",",
RowBox[{"-", "1"}], ",",
RowBox[{"2", "/", "i"}], ",", "Cos"}], "]"}], ",", "20"}], "]"}],
",",
RowBox[{"N", "[",
RowBox[{
RowBox[{"Integrate", "[",
RowBox[{
RowBox[{"Cos", "[", "x", "]"}], ",",
RowBox[{"{",
RowBox[{"x", ",",
RowBox[{"-", "1"}], ",", "1"}], "}"}]}], "]"}], ",", "20"}],
"]"}]}], "]"}], ",",
RowBox[{"{",
RowBox[{"i", ",", "2", ",", "5"}], "}"}]}], "]"}]}]}], "Input",
CellChangeTimes->{{3.466529783853426*^9, 3.466529785907711*^9}, {
3.466530349491346*^9, 3.4665304211884813`*^9}, {3.4665305183871098`*^9,
3.466530520161227*^9}},
FontSize->24],
Cell[BoxData[
RowBox[{"{",
RowBox[{
"1.9749850880814515`", ",", "2.3330514212442632`", ",",
"4.194969172259257`", ",", "4.4460511746245315`"}], "}"}]], "Output",
CellChangeTimes->{3.4665304222072763`*^9, 3.466530521113822*^9,
3.466763229057626*^9, 3.4667641423735456`*^9, 3.466950859085313*^9},
FontSize->24]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{
StyleBox["ListLinePlot",
FontSize->16],
StyleBox["[",
FontSize->16],
RowBox[{
StyleBox[
RowBox[{"{",
RowBox[{"GQDigits", ",", "NCDigits"}], "}"}],
FontSize->16],
StyleBox[",",
FontSize->16],
StyleBox[
RowBox[{"Filling", "\[Rule]", "Axis"}],
FontSize->16],
StyleBox[",",
FontSize->16],
StyleBox[
RowBox[{"PlotRange", "\[Rule]", "Full"}],
FontSize->16],
StyleBox[",",
FontSize->16],
RowBox[{
StyleBox["AxesOrigin",
FontSize->16],
StyleBox["\[Rule]",
FontSize->16],
StyleBox[
RowBox[{"{",
RowBox[{"0", ",", "0"}], "}"}],
FontSize->14]}],
StyleBox[",",
FontSize->14],
StyleBox[" ",
FontSize->14],
StyleBox[
RowBox[{"PlotMarkers", "\[Rule]", "Automatic"}],
FontSize->14]}],
StyleBox["]",
FontSize->16]}]], "Input",
CellChangeTimes->{{3.466530459658372*^9, 3.46653046418495*^9}}],
Cell[BoxData[
GraphicsBox[
GraphicsComplexBox[{{1., 2.1476228447219095`}, {2., 4.210573636983393}, {3.,
6.551417619174976}, {4., 9.101604471995437}, {1., 1.9749850880814515`}, {
2., 2.3330514212442632`}, {3., 4.194969172259257}, {4.,
4.4460511746245315`}, {1., 0.}, {4., 0.}, {1., 0.}, {4., 0.}}, {{{},
{Hue[0.67, 0.6, 0.6], Opacity[0.2], EdgeForm[None],
GraphicsGroupBox[PolygonBox[{{1, 11, 12, 4, 3, 2}}]]}, {},
{Hue[0.9060679774997897, 0.6, 0.6], Opacity[0.2], EdgeForm[None],
GraphicsGroupBox[
PolygonBox[{{5, 9, 10, 8, 7,
6}}]]}, {}, {}, {}, {}, {}, {}}, {{}, {},
{Hue[0.67, 0.6, 0.6], LineBox[{1, 2, 3, 4}]},
{Hue[0.9060679774997897, 0.6, 0.6], LineBox[{5, 6, 7, 8}]}}, {
{Hue[0.67, 0.6, 0.6], InsetBox[
StyleBox["\<\"\[FilledCircle]\"\>",
StripOnInput->False,
FontSize->8.96], 1], InsetBox[
StyleBox["\<\"\[FilledCircle]\"\>",
StripOnInput->False,
FontSize->8.96], 2], InsetBox[
StyleBox["\<\"\[FilledCircle]\"\>",
StripOnInput->False,
FontSize->8.96], 3], InsetBox[
StyleBox["\<\"\[FilledCircle]\"\>",
StripOnInput->False,
FontSize->8.96], 4]},
{Hue[0.9060679774997897, 0.6, 0.6], InsetBox[
StyleBox["\<\"\[FilledSquare]\"\>",
StripOnInput->False,
FontSize->8.96], 5], InsetBox[
StyleBox["\<\"\[FilledSquare]\"\>",
StripOnInput->False,
FontSize->8.96], 6], InsetBox[
StyleBox["\<\"\[FilledSquare]\"\>",
StripOnInput->False,
FontSize->8.96], 7], InsetBox[
StyleBox["\<\"\[FilledSquare]\"\>",
StripOnInput->False,
FontSize->8.96], 8]}, {}}}],
AspectRatio->NCache[GoldenRatio^(-1), 0.6180339887498948],
Axes->True,
AxesOrigin->{0, 0},
ImageSize->{840., Automatic},
PlotRange->{{0, 4.}, {0, 9.101604471995437}},
PlotRangeClipping->True,
PlotRangePadding->{
Scaled[0.02],
Scaled[0.02]}]], "Output",
CellChangeTimes->{3.4665304652451563`*^9, 3.466530526465968*^9,
3.466763229143362*^9, 3.466764142466568*^9, 3.46695085910472*^9}]
}, Open ]],
Cell[TextData[StyleBox["We can see that the Gauss Quadrature rules (top) are \
substantially better than the equally spaced Newton-Cotes rules (bottom).",
FontSize->24]], "Text",
CellChangeTimes->{{3.466530545027265*^9, 3.46653057292771*^9}},
FontSlant->"Italic"]
}, Open ]],
Cell[CellGroupData[{
Cell[TextData[StyleBox["Integrands for which polynomial interpolation is \
particularly poorly behaved -- does Gauss Quadrature do better?",
FontSize->24]], "Section",
CellChangeTimes->{{3.466292723746792*^9, 3.4662927408665237`*^9}, {
3.466512530636594*^9, 3.4665125417619123`*^9}},
FontSize->36],
Cell[TextData[StyleBox["Recall that when we were first studying polynomial \
interpolation, we saw that some functions were unusually difficult to model \
with an interpolating polynomial based on equally spaced gridpoints. How do \
they perform under Gauss Quadrature?",
FontSize->24]], "Text",
CellChangeTimes->{{3.4662928207553577`*^9, 3.466292840335904*^9}, {
3.466292889774303*^9, 3.466292912010927*^9}, {3.4665290471661673`*^9,
3.4665290562363853`*^9}},
FontSlant->"Italic"],
Cell[BoxData[
RowBox[{
StyleBox["\[IndentingNewLine]",
FontSize->18],
RowBox[{
StyleBox[
RowBox[{
RowBox[{
RowBox[{"ff", "[", "x_", "]"}], " ", ":=", " ",
RowBox[{"1", "/",
RowBox[{"(",
RowBox[{"1", " ", "+", " ",
RowBox[{
RowBox[{"(",
RowBox[{"10", "*", "x"}], ")"}], "^", "2"}]}], ")"}]}]}], ";"}],
FontSize->18],
StyleBox["\[IndentingNewLine]",
FontSize->18],
StyleBox["\[IndentingNewLine]",
FontSize->18],
StyleBox[
RowBox[{
RowBox[{"a", " ", "=", " ",
RowBox[{"-", "1"}]}], ";"}],
FontSize->18],
StyleBox["\[IndentingNewLine]",
FontSize->18],
StyleBox[
RowBox[{
RowBox[{"b", " ", "=", " ", "1"}], ";"}],
FontSize->18],
StyleBox["\[IndentingNewLine]",
FontSize->18],
StyleBox[
RowBox[{
RowBox[{"n", " ", "=", " ", "40"}], ";"}],
FontSize->18],
StyleBox["\[IndentingNewLine]",
FontSize->18],
StyleBox["\[IndentingNewLine]",
FontSize->18],
StyleBox[
RowBox[{"EqualNodes", " ", ":=", " ",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"{",
RowBox[{
RowBox[{"a", " ", "+", " ",
RowBox[{
RowBox[{"(",
RowBox[{"b", "-", "a"}], ")"}],
RowBox[{"i", "/", "n"}]}]}], ",",
RowBox[{"ff", "[",
RowBox[{"a", "+",
RowBox[{
RowBox[{"(",
RowBox[{"b", "-", "a"}], ")"}],
RowBox[{"i", "/", "n"}]}]}], "]"}]}], "}"}], ",",
RowBox[{"{",
RowBox[{"i", ",", "0", ",", "n"}], "}"}]}], "]"}]}],
FontSize->18],
StyleBox["\[IndentingNewLine]",
FontSize->18],
StyleBox[
RowBox[{
RowBox[{"EqP", " ", ":=", " ",
RowBox[{"InterpolatingPolynomial", "[",
RowBox[{"EqualNodes", ",", "x"}], "]"}]}], ";"}],
FontSize->24],
StyleBox["\[IndentingNewLine]",
FontSize->24]}]}]], "Input",
CellChangeTimes->{{3.4593569823699703`*^9, 3.459357060924468*^9}, {
3.459357125913353*^9, 3.459357242135627*^9}, {3.459357282638081*^9,
3.459357287498719*^9}, {3.459357327354567*^9, 3.459357418675777*^9}, {
3.4593574512799788`*^9, 3.459357533754788*^9}, {3.4593575910701027`*^9,
3.4593578296705017`*^9}, {3.4593578661205397`*^9, 3.459358004695141*^9}, {
3.459358095085375*^9, 3.459358097142673*^9}, {3.4593581351365757`*^9,
3.4593582071607447`*^9}, {3.459358240852594*^9, 3.459358326449738*^9}, {
3.4593584120244627`*^9, 3.459358436914117*^9}, {3.4593586611555157`*^9,
3.459358714250257*^9}, 3.4594348852639112`*^9, {3.4594349462914133`*^9,
3.459434950679678*^9}, {3.459435003099393*^9, 3.4594350039682817`*^9},
3.459435086775653*^9, 3.459605884824007*^9, 3.459605920241057*^9, {
3.459606896996472*^9, 3.459606923242097*^9}, {3.459606976945345*^9,
3.4596069805766363`*^9}, {3.460711823893104*^9, 3.4607119174122267`*^9}, {
3.460712041643588*^9, 3.460712067016101*^9}, {3.4607121074082747`*^9,
3.460712205911663*^9}, {3.460712237522114*^9, 3.460712399948258*^9}, {
3.460712448574892*^9, 3.460712503761948*^9}, {3.460723642260371*^9,
3.460723846467607*^9}, {3.460723928394636*^9, 3.460723931884945*^9}, {
3.4607239645831623`*^9, 3.460723964661027*^9}, {3.460724010427746*^9,
3.4607240153132277`*^9}, {3.460724049319186*^9, 3.460724075660923*^9}, {
3.460724156210074*^9, 3.46072440087633*^9}, {3.4607246148168793`*^9,
3.460724637251401*^9}, {3.460724722342664*^9, 3.460724749594469*^9}, {
3.460725252497422*^9, 3.460725257104268*^9}, {3.460725462883502*^9,
3.460725462957391*^9}, {3.4607255067444983`*^9, 3.460725544954211*^9}, {
3.460726398679769*^9, 3.460726402398378*^9}, {3.4607264900948553`*^9,
3.4607264901745653`*^9}, {3.4607265294878273`*^9,
3.4607266215497017`*^9}, {3.4607266525953207`*^9, 3.460726681753384*^9}, {
3.460726752152919*^9, 3.4607267894035387`*^9}, {3.460726855113059*^9,
3.460726869029655*^9}, {3.46072691208464*^9, 3.4607269130429163`*^9}, {
3.462810496255804*^9, 3.4628106689504423`*^9}, {3.4628107717913227`*^9,
3.4628109235808897`*^9}, {3.462810983700308*^9, 3.4628110766815243`*^9}, {
3.462811127076709*^9, 3.4628111528220673`*^9}, {3.462811229670088*^9,
3.462811293001821*^9}, {3.46283378934337*^9, 3.4628337951398773`*^9}, {
3.466292926855472*^9, 3.466292952086853*^9}}],
Cell[TextData[StyleBox["Here's the equally-spaced nodes interpolating \
polynomial:",
FontSize->24]], "Text",
CellChangeTimes->{{3.462811298861794*^9, 3.4628113895448303`*^9}, {
3.4662929633135767`*^9, 3.466292964823864*^9}},
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{
StyleBox["Show",
FontSize->18],
StyleBox["[",
FontSize->18],
RowBox[{
StyleBox[
RowBox[{"Plot", "[",
RowBox[{
RowBox[{"{",
RowBox[{
RowBox[{"ff", "[", "x", "]"}], ",", "EqP"}], "}"}], ",",
RowBox[{"{",
RowBox[{"x", ",", "a", ",", "b"}], "}"}]}], "]"}],
FontSize->18],
StyleBox[",",
FontSize->18],
RowBox[{
StyleBox["ListPlot",
FontSize->18],
StyleBox["[",
FontSize->18],
RowBox[{
StyleBox["EqualNodes",
FontSize->18],
StyleBox[",",
FontSize->18],
RowBox[{
StyleBox["PlotStyle",
FontSize->18],
StyleBox["\[Rule]",
FontSize->18],
RowBox[{"{",
RowBox[{"PointSize", "[", "Large", "]"}], "}"}]}]}], "]"}], ",",
RowBox[{"PlotRange", "\[Rule]",
RowBox[{"{",
RowBox[{
RowBox[{"{",
RowBox[{
RowBox[{"-", "1"}], ",", "1"}], "}"}], ",",
RowBox[{"{",
RowBox[{
RowBox[{"-", "2"}], ",", "2"}], "}"}]}], "}"}]}]}], "]"}]], "Input",
CellChangeTimes->{{3.462811393598528*^9, 3.462811489515983*^9}, {
3.462834098867559*^9, 3.4628341147422647`*^9}, {3.4662929978093157`*^9,
3.46629300758186*^9}, {3.466293050678116*^9, 3.466293096193738*^9},
3.46629322447388*^9}],
Cell[BoxData[
GraphicsBox[{{{}, {},
{Hue[0.67, 0.6, 0.6], LineBox[CompressedData["
1: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
"]]},
{Hue[0.9060679774997897, 0.6, 0.6], LineBox[CompressedData["
1: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
ZsL//z/+P0dJtys=
"]],
LineBox[{{0.644453900010964, 1.4939733121931327`}, {0.6456495625463687,
1.2270039994303523`}, {0.6463178478629343, 1.065127735568726}, {
0.6469861331794998, 0.8948176379761763}, {0.6483227038126309,
0.5290212333336353}, {0.6509958450788932, -0.3013400007973836}, {
0.6516641303954587, -0.5288698017320573}, {
0.6523324157120243, -0.764072398569898}, {
0.6526405114894017, -0.8776317742213655}}],
LineBox[{{-0.6526456065221119, -0.8776317742213655}, \
{-0.6522794467954502, -0.7451543482264735}, {-0.6510562108332374, \
-0.3215728289235744}, {-0.650444592852131, -0.11955073681925664`}, \
{-0.6498329748710244, 0.07580176932959767}, {-0.6486097389088115,
0.4461169843866611}, {-0.647998120927705,
0.6209255107502393}, {-0.6473865029465985,
0.7887553050559095}, {-0.6461632669843855,
1.1033216900012215`}, {-0.6455516490032791,
1.250012100843176}, {-0.6449400310221726,
1.389630583396551}, {-0.6444454374805454, 1.4939733121931327`}}],
LineBox[{{0.6993592216457766, -0.8776317742213655}, {
0.6999373968825339, -0.0695637948368497}, {0.7009883709585549,
1.4939733121931327`}}],
LineBox[{{0.7498087917008329, 1.4939733121931327`}, {0.749869887081741,
1.0308747812866192`}, {0.7501055972662788, -0.8776317742213655}}],
LineBox[{{-0.7009934458709799, 1.4939733121931327`}, {-0.700613260696038,
0.9163391774274043}, {-0.6993583618226042, -0.8776317742213655}}],
LineBox[{{-0.9499962379170894, -0.8776317742213655}, \
{-0.9499962140416526, 1.4939733121931327`}}],
LineBox[{{-0.7501019532855859, -0.8776317742213655}, {-0.749808093609376,
1.4939733121931327`}}],
LineBox[{{-0.8000204951457103,
1.4939733121931327`}, {-0.7999775328709671, -0.8776317742213655}}],
LineBox[{{0.7999732892671402, -0.8776317742213655}, {0.8000168431486189,
1.4939733121931327`}}],
LineBox[{{0.8999800576846408, -0.8776317742213655}, {0.8999804755658681,
1.4939733121931327`}}],
LineBox[{{0.8499854437401588, 1.4939733121931327`}, {
0.849990757667366, -0.8776317742213655}}],
LineBox[{{0.9499943077890758, 1.4939733121931327`}, {
0.9499943294482632, -0.8776317742213655}}],
LineBox[{{-0.8499859287814369, -0.8776317742213655}, \
{-0.8499807121377811, 1.4939733121931327`}}],
LineBox[{{-0.8999960347596714,
1.4939733121931327`}, {-0.8999955997759791, -0.8776317742213655}}]}},
{Hue[0.67, 0.6, 0.6], PointSize[Large], PointBox[CompressedData["
1:eJxVUj1LA1EQPK3svSIE8asTS8Hmium0ssk/MBAtRbAQUwUlCEGCIIofoGCh
AQ0EGy/NcqQ6UAgGhIBFoiIGQ4yFcDEWenezgQwcj+Ptm92dmYn4SiwxaBjG
1P/nnyHa0q3GE97cFpYCtCS6PDB7uprG/Z2PpvxETrJOZxszAT4ks5NubX5n
cHTooyHjXmrMS2UR8r3L2i2sz+dd8r1J0szP1zf2yPcqpWZtaPL6gHwvUi46
ZufqmHx1+c19PSzEz8hXE9MqDFuFc75/kkiAS9ZXZTRAnv0exVmf7o7Ebshf
kbDOJl9Z9pPRRfvC4XuX9y7rS+xX4b0tnIP/OdY3YPShrfeqC/r71pQf/fxu
7+R80Pk4f4+H+0H34/7Q/akPVB/tq/pRX6i+1B+qP/2B+kP/oP7RX6i/uqf6
z3xA88H8QPPDfEHzpbpp/v4A/e4tuw==
"]]}},
AspectRatio->NCache[GoldenRatio^(-1), 0.6180339887498948],
Axes->True,
AxesOrigin->{0, 0},
ImageSize->{758., Automatic},
PlotRange->{{-1, 1}, {-2, 2}},
PlotRangeClipping->True,
PlotRangePadding->{
Scaled[0.02],
Scaled[0.02]}]], "Output",
CellChangeTimes->{
3.462811423039942*^9, 3.462811492544859*^9, 3.462832731271908*^9,
3.4628338036662617`*^9, {3.4628341055853148`*^9, 3.4628341177938557`*^9},
3.466292971153399*^9, 3.466293010589386*^9, 3.46629306257163*^9, {
3.466293093874545*^9, 3.466293099530531*^9}, {3.466293225183845*^9,
3.466293233665998*^9}, 3.466512553888257*^9, 3.466763231769576*^9,
3.466764145077744*^9, 3.466950861676021*^9}]
}, Open ]],
Cell[TextData[StyleBox["If we reduce the number of nodes to six, we get a \
better looking polynomial graph, but you can still see there's substantial \
error.",
FontSize->24]], "Text",
CellChangeTimes->{{3.466293119326522*^9, 3.466293141803891*^9}, {
3.4662934370872602`*^9, 3.466293446380628*^9}},
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[{
StyleBox[
RowBox[{
RowBox[{
RowBox[{
RowBox[{"ff", "[", "x_", "]"}], " ", ":=", " ",
RowBox[{"1", "/",
RowBox[{"(",
RowBox[{"1", " ", "+", " ",
RowBox[{
RowBox[{"(",
RowBox[{"10", "*", "x"}], ")"}], "^", "2"}]}], ")"}]}]}], ";"}],
"\[IndentingNewLine]"}],
FontSize->18], "\[IndentingNewLine]",
StyleBox[
RowBox[{
RowBox[{"a", " ", "=", " ",
RowBox[{"-", "1"}]}], ";"}],
FontSize->18], "\[IndentingNewLine]",
StyleBox[
RowBox[{
RowBox[{"b", " ", "=", " ", "1"}], ";"}],
FontSize->18], "\[IndentingNewLine]",
RowBox[{
StyleBox[
RowBox[{
RowBox[{"n", " ", "=", " ", "6"}], ";"}],
FontSize->18], "\[IndentingNewLine]"}], "\[IndentingNewLine]",
StyleBox[
RowBox[{"EqualNodes", " ", ":=", " ",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"{",
RowBox[{
RowBox[{"a", " ", "+", " ",
RowBox[{
RowBox[{"(",
RowBox[{"b", "-", "a"}], ")"}],
RowBox[{"i", "/", "n"}]}]}], ",",
RowBox[{"ff", "[",
RowBox[{"a", "+",
RowBox[{
RowBox[{"(",
RowBox[{"b", "-", "a"}], ")"}],
RowBox[{"i", "/", "n"}]}]}], "]"}]}], "}"}], ",",
RowBox[{"{",
RowBox[{"i", ",", "0", ",", "n"}], "}"}]}], "]"}]}],
FontSize->18], "\[IndentingNewLine]",
RowBox[{
StyleBox[
RowBox[{
RowBox[{"EqP", " ", ":=", " ",
RowBox[{"InterpolatingPolynomial", "[",
RowBox[{"EqualNodes", ",", "x"}], "]"}]}], ";"}],
FontSize->24], "\[IndentingNewLine]"}], "\[IndentingNewLine]",
RowBox[{
StyleBox["Show",
FontSize->18],
StyleBox["[",
FontSize->18],
RowBox[{
RowBox[{
StyleBox["Plot",
FontSize->18],
StyleBox["[",
FontSize->18],
RowBox[{
StyleBox[
RowBox[{"{",
RowBox[{
RowBox[{"ff", "[", "x", "]"}], ",", "EqP"}], "}"}],
FontSize->18],
StyleBox[",",
FontSize->18],
StyleBox[
RowBox[{"{",
RowBox[{"x", ",",
RowBox[{"-", "1.1"}], ",", "1.1"}], "}"}],
FontSize->18],
StyleBox[",",
FontSize->18],
RowBox[{
StyleBox["Filling",
FontSize->18],
StyleBox["\[Rule]",
FontSize->18],
RowBox[{
StyleBox["{",
FontSize->18],
StyleBox["2",
FontSize->18], "}"}]}]}],
StyleBox["]",
FontSize->18]}],
StyleBox[",",
FontSize->18],
RowBox[{
StyleBox["ListPlot",
FontSize->18],
StyleBox["[",
FontSize->18],
RowBox[{
StyleBox["EqualNodes",
FontSize->18],
StyleBox[",",
FontSize->18],
RowBox[{
StyleBox["PlotStyle",
FontSize->18],
StyleBox["\[Rule]",
FontSize->18],
RowBox[{"{",
RowBox[{"PointSize", "[", "Large", "]"}], "}"}]}]}], "]"}]}],
"]"}], "\[IndentingNewLine]"}], "Input",
CellChangeTimes->{{3.466293161663723*^9, 3.466293218788742*^9}, {
3.466293255762719*^9, 3.466293288127391*^9}, {3.4662933648353243`*^9,
3.466293416949897*^9}, {3.466529526353238*^9, 3.466529537747854*^9}}],
Cell[BoxData[
GraphicsBox[{GraphicsComplexBox[CompressedData["
1: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
20TQFKtNG0kkIheBR4LS7CR4MfWjwfffOJLIJQ2/SGtFF+u8jstGjSEZtTnn
Bj4s+jHcVK4rikdRFqvmHvT3Sz0l4XeqDsPIyiUoVZe+H+NtvD4rs35DJ9vz
uYKzSExvMuVo7bVvK5XpTUQigy1Mfv/nTYz02MVS3tHPJ0MxN36RIfh5/YDu
p33t6K62xXrOrxGIWo8A2kUs2klQSRRbwIOW68zEz404VJvEc0PLcByOP3R2
GmftQmp/t/YR1+bgFh5rVPZ1Du6wvN5fRH+OXm/8YuxM3z+12TKeYHvJENC8
h3hdYwYMTU1/WQMVeGasZ5xv9cLkvzrZyHYycjxn6q38cgbG17lfGhqSUNtN
otyiIwlKn3l/F6fOoYr0tr+mAXNQKdL3zUNnHPHaHhPW3t+F3PvrzDUG8Gjj
u+q/Gnw4dJK/dE2JQN8/qw34uuWwiOFlhOyyXpvnUJle5pw7y3gPjQqhK+d2
p7DlQsWtL9aqTRT4++1e3S7PYbh45dzLH65dKPV13P1T5/AQt/qutFgYh5wP
Dy1cTx2D63vbGriXMajvmdiOyxVESKOKOSVLk2DyXp2S2REyWLlJ4B1kiPD4
nu7zFR8KBHGdUC66PwG2K5O/TVXJiDjNySvYNQcyoZhxrTYiyvlQ0xxFn09p
lYWE9MYx9PnCZ3W+LAx6vvOSVIIOHv0oFttTehSHGJ6n5wjLx/sUKryY/x0Z
pBsPticya1e/UCEjUepHRcQI3HtvkHh/HINO95j9MG3AA0WdhbWUfv1V4pK8
WzVIsDrAx179nP4c5LjKcWaTofgrSe6x9CxoH41wdflDRuuJ2v4PX01D6zHc
n3kfEqq05UORhiQ4hlvcVcMxhtqPBEka0+eTILfcoQHFUZS5YbhxgysW3RXW
CH5yIgnFsX/R+hH4nzdK5XOr7fpDf79O26gNW/EQdKhDDPMPi+J3/RLydRmD
z1U79gvoYJF8n3CNwzsibPb8dDN4jgiXAp+c/vqHBFk3CFibJCLEhd38I0Yg
oWyTby/62olgWfbV1sGJiH4GcHp2ISKENOu5Fj0YQ/KSX3fm2mGRom5szDba
KLL5TVj1pWARwzttPvr9Ly99/xJaiZSLNxiFWj/d3cdDsIi4JP50XngMDq8t
s73sxiKWwfbDtz+R4OL79pyU8yT406q1Wn6EhI465o3G0e9f50hYTnsmHi3z
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
9Xodl9eS8TzI/6pD3XI=
"], {{{}, {}, {}, {}, {}, {},
{Hue[0.67, 0.6, 0.6], Opacity[0.2], EdgeForm[None],
GraphicsGroupBox[{PolygonBox[CompressedData["
1:eJwV0DtPU3EYBvBjWxMTJ+otAZSwmCACcXDBFvQjWKCCmyUoENAJ8DIwyVXb
LyAsJqKURItGYydZuLl4gcVE7cBQJWDYQBd/Z/jlfZ/nn57T/6nN3EndjgRB
cIinZIV2s468so0o7+X7dHCOBV07MYryA9LUc54GGmninWe+ZZpNWqJBsM69
WBBckbfDd8olcrp++Q01cp7rulPyX7rlP8zqpuQNkvIad3WX5d+0yT/J6vrk
QfsBz+XX8hn7PF3ySXnMHrcvcSBn5F1m5El5xB61L/JVrjY/ktCvMmJv1V8w
S4zqjppFfulrzU+k9NvmD/Ox2esscth3s39jQL9n7ptz4fuc/wvvzzKn9WXz
hdlpnnB+xO8v2rd4qN83K/gQPsf5WXOTG852eGKf0A/bI/YCX+RL8grDcotc
5qr8nUe6W3IhvHv4HbmmOy6P85lm3TJD+qR8k1dUhXchrT8mJ+jhJZX6Z3Q4
i8sV4f8gx39ZtVRB
"]], PolygonBox[CompressedData["
1:eJwV0DlMFGEYBuBBWEVCZwMhCCygjRUgh9IIBhSoSNCoUY5Ay4I0koBaImAi
Z9RGWkxUDhtBLGxo8GqISsVhY1auhEYQeaZ48n3v+8/O/Nmcllh9+7EgCBJ4
xW9LkhnhOCdIpl9fwJr9KTco4iQD+kLW7c+4yXlSGNQXsWF/zi2KqfTRDD5w
NjEIZmnx4Vy5jnESdI8p1+96xw5RfS1j4aWdDXLR+bazLt0CZ3QzNOtz5BpG
+c+A/oJ+y/Ob8nV5nWHdXfk9+fI0Tbpsudsesb9lRb4sf+WBfDW8v7lMm26H
CfuI/pT5kUP7L7PfWZm56dsRf3CBfZWH+j0zlXn+eP7QjPKNa87j5po5ZHY6
T/T7c+F9iOl3zX3zZfgO52nmInm6KRrtWfp79iT7LD/lTHOJSv0X7tuv6Fvt
27yQh+V/PJJLw/u5f1xukFd5ouuQ2+1/mZTn5Fz7G+7Ip+UfVMif6dVVy0Mc
0Kcr0cW9Oya/I6p7zW19pvydS/InenRVcjpHbIZaJw==
"]],
PolygonBox[CompressedData["
1:eJwV1FdU1mUcB/BXxTJT0BQ1G84cJ4Gs65zIvvKoqaG5BQV3w1wnWe1x4d6A
lpbjQjMHaIYKDrRjAlrmqqzOKUuwqdbnufjw+32/Dy/8eXihy4SZQ2c0jkQi
jfjIh0Sh2D6RfuzWZdKCI3IebVgmP8sv9hIm0Z89ujG05As5n7Ysl/vxq72U
yVTKs+hMjTyAT+1jiaZCLiCWFXJ/bto3M4UqeTZdqJUHstf+AjEclQtpx0p5
AL/ZtzCVE/IculInD+Iz+zhacUwuoj2r5IH8bv+QLAazTzee1hyXX6cDq+VB
3Ar3SjYn5bl044KcyH77BB6iUn6Ds/ZX6MW3co25mHgelteYg6m3XzBfY6v9
nLmAJ7lEAdP0p8x5XKM7X5PHD1x0ft5cxHfEcZkibjDE+QFzIldpE17DUr6n
yvlX5kKu0yc8M4W86exLcz69+Yb88PX1teYSEugorw3vPRrs25jOaflFngjP
LCdx0D6JtpyQ3+IR1oVn5bb9Y3JIpkw3mVhOym/zKOvlJP6wf0Iu1fJL9AjP
KqdQbp9CO07J7/AYG+Rk/rRvZwZn5JfpGe5fTuWQfSrtOS2/y+NslFP4y76D
maRxWJdFB6rl9+jEJjmVv+07mUU6n+uyw/uCM/L7dKZYTuMf+y5mk8GR8J4I
d85Z+YPwM/mbz6UZ93Mfz5DJFlo3cb9kREUiTeWneZ7NtNKvJd1ZlLyEqvA5
unJy9X3l0ZQSo1tDmr6J3MAY+SdW6hbLlfSVy8jRPSVfJ0Ouo0g3Ss6236ZU
LpGj7atJlRvLefYYezn1cnfzHJn6H1lhX6SPNy8xV1dv/mfuMI87u2N2pCo8
R3hO86A53UxwHtVUb7/MQn2D2Yy9XHN+1+xENenOfzZrzUJzpPPeZh1Z4bWU
2Iv1sWYFLXWrSLE30i+1R9vLuBV+D/INlofvL8+x32O7fExOsB9gmhwvXyVN
rqFA95y8iRbh/knWReQFHA13o9tPtj5OvkKqfJ583Qh5Iw+G+yQp3J/31qu6
CuJ0+8jS95GHs4Hm4ZkZor8X/mfphrGeB/TLSHR219kd/iXH2f9z+tu1
"]]}]},
{Hue[0.67, 0.6, 0.6], Opacity[0.2], EdgeForm[None],
GraphicsGroupBox[{
PolygonBox[{{489, 1290, 581, 1147, 972, 832, 727, 540, 1116, 941,
801, 696, 622, 491, 1078, 903, 763, 656, 537, 490, 3, 2, 51, 88,
151, 225, 305, 393, 1}}],
PolygonBox[{{694, 536, 1115, 940, 800, 693, 619, 578, 1146, 971, 831,
726, 652, 1289, 538, 50, 488, 392, 480, 304, 384, 472, 224, 298,
378, 466, 150, 213, 287, 367, 455, 87, 124, 187, 261, 341, 429, 49,
48, 695}}], PolygonBox[CompressedData["
1:eJwt0klsjHEcBuCv20yp2uIiEonYpsVJ0M1a28VWCW3tRXsRS2IXdOqs64il
LepK7C2H0paLi4OSuFgS0bHHUluF8Ezi8OT3e99//zPfNN+osm1FW5ODIEji
LSOEnfQqpqcGQXVKECRzXLeIMWzUX9dF6JB38dXfz9DX6FI4oVtMpe6BPI8n
8lg26VrlLDrl3TToXsrFfJS/+byZulo5lZO6FvmLvZwlclTuts/nqdwqh9gv
j5M329vs2dyzD6dLf978rdueeCb7JPboY2aP7oNZYnabo/nLJ+ftZibfiTp/
YU5OfGeazvPOstfp42aaedccRh+n3D9n9iZ+n1lhPjYjJLm/1HmV/aF+Afft
I3mmbzPDHNCPl8vtN+wTuCNfkP/Yd7BXPibH7aV8ln94ttm6ejlEo24ZR3SP
5IU8lyNU6G7KExPPL+/jp/tz9A26ME26IrLoc1boLKZPp1m3nGx+OdtizuW9
d6tAjjHUXkUXGfIqriXeN7mMFt6Rr2tgiD1KJ/3lUq5SIG/g7P93N09Xz2B7
JR30k0u4Qr68njO8IVdXxyD7YW6TLhdzmTx5Had5TY6uloH2Q9wiLK/kErny
Wpp5xTRdDZn2g7QTkldwkRx5DU3EmaqrZkDiLqtppIcp+qNk2Av9P/8BFHV2
Rg==
"]], PolygonBox[CompressedData["
1:eJwl0slvjHEYB/C3RaS1NXYpoiji4qAt9S8wM52pq5bqSXVKO7UciKXEEiSW
AxJb99r3OhXtONiXXoq42BIEF5rYP28cPnme7/c3b9533rx5FTWJZGYQBBl8
oVrIIjIwCI4NCIKRtMpLKCCp79LN5a68iWyi+uO6UbTJZRRSo7+pK+CevJkh
xPQndKNpl8vZoeuTI7yRi1iluyUXcl/ewmHdB7mMb/JQSnQn5TF0yM3yd/sK
lso75ef2KG/lTjmLDfI8ebX9tr0o/F/2XB7oz5sBKf0rcw5b9UfMj7rPZrnZ
a+aHvx3kvs677Dn00+D8tVnAYOfDnMftp/TvzbFmOpz84LTzlvBa/Vezyuwz
Z7PM2S7zhS7GI/sU3ulvmNls1M+Xa+3d4f/joXxBzqBebpCP2j+F74d+eTgJ
XaM8jjNyBbt1L+WS8HnlYup0PeF9wmeQtzGCUn2Tbjxn5eUsIKVP64p5LG8n
h8X6Zt0EzsmV7GMv673OTjJ9nAk6mCWXso7r4Xeri9POTDnBWq4F/z/qEtqY
IcZZw1X+EtO3km8/RC+T5SR3wmvleq7wh6iuhen2gzxjklxNmpic4jK/ieia
mWY/wFMmyivpISrXcYlfLNI1MdW+nyfkylV0E5FruchPFuoaybPv8b7+Ae0v
eQA=
"]]}]}, {}, {}}, {{}, {},
{Hue[0.67, 0.6, 0.6], LineBox[CompressedData["
1:eJwV1XO8l2cYB+Bse6tl2wurpWXb5rJt281qbMi27cXZa21rNq/7j+vc3+/9
nk6/3p7nc/L1Ht56WMIECRLc8yXmQl/K8bH8GB2pQCISc9ezJGZSkpGcFCyy
L88n8uN0oiIpWWxfgU/lJ+hMJVKxxL4in8lP0oXK1PUXpjaXelaJz+Wn6MqD
pGGZfWW+kJ+mG1XYaNeeZOzXp5KW5fqDfCk/Q3eqssmuA8k5oE8jHSv0KtyR
n6UH1dhs15EUHNSnk56VelW+kp+jJ9XZYteJlBzSZ5CBVXo17srP04uH2GrX
mVQc1meSkdV6db6WX6A3Ndhm14XUHNFnkYk1+kN8I9fzPtebfajJdvuupOGo
PpvMrNVr8K38In15mB123UjLMX0OWVin1+Se/BL9OK2PIC839FrslLuTjuP6
XLLGGdMf5jv5ZfpzRh9JPm7qtdkl9yA9J/R5ZIuzptfie/kVBnBWH0V+bul1
2C33JAMn9flkj/Oo1+YH+VUGxtljj10vMnJKX0COOKN6HX6UX2MQ5/TRFOB2
vGv2yr3JxGl9IZflCRTlA/2GOY3S3Bfn26zLT/JtcyYb5LfNyZTgfebyqP15
c0zcOQryLrPjPvCO59fNqXG3KMWHzI/zzyOe7zP7xF0nc/wZZsVd44zn18wp
cW8pGZ+ZeSzy7Io5kWK8x5z4+fY3zemU4f64l2Y9fpZfZzAX9LEUis+s12e/
3JcsnNUXkzPuaXxWfpHfYAgNOGDXj6yc05eQK+6pXp9f5TcZykV9HIXjs+oN
OSj3Jxvn9aU8EPdWb8Bv8lsM45I+niLx/vVGHJIHkJ0L+jJyxz3WG/K7vJHh
NOaw3UBycFFfTp64x3oj/pA3MYImHLEbFOeCS/oK8rJeb8yf8mZG0pSjcSbi
nXNZXxn/Jnc+X9xjuyb8JW9hFM04ZjeYnFzRV5E/7rHelL/lrYymOcfthpCL
q/pqCsS91Zvxj7yNMbTghN1QHuBtfQ0F457qzflX3s5YWnLSLn4Z5eaavpZC
cS/1Fvwn72AcrSgcd9C+JfHLa6cxntYUYYNdKxKyS59AG4rGWbRrTSJ26xPj
/9D7amsWi7Nm34bE7NEn0Y7ica7s2pKEvfpk2lOCkpSiNGXY5WeWNcvFefL9
7UjKPn0KHTilDycP1/V1XJUnUZyP9FvmDMpGZwF3KO/Z/0uW7+4=
"]]},
{Hue[0.9060679774997897, 0.6, 0.6], LineBox[CompressedData["
1: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
/wMFf5t9
"]]}}}],
{Hue[0.67, 0.6, 0.6], PointSize[Large],
PointBox[{{-1., 0.009900990099009901}, {-0.6666666666666666,
0.022004889975550123`}, {-0.3333333333333333, 0.08256880733944955}, {0.,
1.}, {0.3333333333333333, 0.08256880733944955}, {0.6666666666666666,
0.022004889975550123`}, {1., 0.009900990099009901}}]}},
AspectRatio->NCache[GoldenRatio^(-1), 0.6180339887498948],
Axes->True,
AxesOrigin->{0, 0},
ImageSize->{762., Automatic},
Method->{"AxesInFront" -> True},
PlotRange->{{-1.1, 1.1}, {-1.1285125052341154`, 0.9999996799255141}},
PlotRangeClipping->True,
PlotRangePadding->{
Scaled[0.02],
Scaled[0.02]}]], "Output",
CellChangeTimes->{{3.466293184123383*^9, 3.466293260483562*^9}, {
3.466293366195752*^9, 3.466293417510198*^9}, 3.466512564809608*^9,
3.466529479213159*^9, {3.4665295278927193`*^9, 3.466529538325491*^9},
3.466763231915501*^9, 3.4667641452994823`*^9, 3.466950861817512*^9}]
}, Open ]],
Cell[TextData[StyleBox["We need to integrate this over [-1,1] using our \
various rules, so let's reestablish the Newton-Cotes formulas:",
FontSize->24]], "Text",
CellChangeTimes->{{3.46651259383123*^9, 3.466512607507641*^9}, {
3.466529070058947*^9, 3.46652909315327*^9}, {3.466529177795582*^9,
3.466529201617442*^9}},
FontSlant->"Italic"],
Cell[TextData[StyleBox["It's immediately clear that the regular NC rules are \
a disaster:",
FontSize->24]], "Text",
CellChangeTimes->{{3.466529711239705*^9, 3.466529732523446*^9}},
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[
StyleBox[
RowBox[{"\[IndentingNewLine]",
RowBox[{"N", "[",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"NewtonCotes", "[",
RowBox[{"i", ",",
RowBox[{"-", "1"}], ",",
RowBox[{"2", "/", "i"}], ",", "ff"}], "]"}], ",",
RowBox[{"{",
RowBox[{"i", ",", "2", ",", "13"}], "}"}]}], "]"}], "]"}]}],
FontSize->18]], "Input",
CellChangeTimes->{{3.4593569823699703`*^9, 3.459357060924468*^9}, {
3.459357125913353*^9, 3.459357242135627*^9}, {3.459357282638081*^9,
3.459357287498719*^9}, {3.459357327354567*^9, 3.459357418675777*^9}, {
3.4593574512799788`*^9, 3.459357533754788*^9}, {3.4593575910701027`*^9,
3.4593578296705017`*^9}, {3.4593578661205397`*^9, 3.459358004695141*^9}, {
3.459358095085375*^9, 3.459358097142673*^9}, {3.4593581351365757`*^9,
3.4593582071607447`*^9}, {3.459358240852594*^9, 3.459358326449738*^9}, {
3.4593584120244627`*^9, 3.459358436914117*^9}, {3.4593586611555157`*^9,
3.459358714250257*^9}, 3.4594348852639112`*^9, {3.4594349462914133`*^9,
3.459434950679678*^9}, {3.459435003099393*^9, 3.4594350039682817`*^9},
3.459435086775653*^9, 3.459605884824007*^9, 3.459605920241057*^9, {
3.459606896996472*^9, 3.459606923242097*^9}, {3.459606976945345*^9,
3.4596069805766363`*^9}, {3.460711823893104*^9, 3.4607119174122267`*^9}, {
3.460712041643588*^9, 3.460712067016101*^9}, {3.4607121074082747`*^9,
3.460712205911663*^9}, {3.460712237522114*^9, 3.460712399948258*^9}, {
3.460712448574892*^9, 3.460712503761948*^9}, {3.460723642260371*^9,
3.460723846467607*^9}, {3.460723928394636*^9, 3.460723931884945*^9}, {
3.4607239645831623`*^9, 3.460723964661027*^9}, {3.460724010427746*^9,
3.4607240153132277`*^9}, {3.460724049319186*^9, 3.460724075660923*^9}, {
3.460724156210074*^9, 3.46072440087633*^9}, {3.4607246148168793`*^9,
3.460724637251401*^9}, {3.460724722342664*^9, 3.460724749594469*^9}, {
3.460725252497422*^9, 3.460725257104268*^9}, {3.460725462883502*^9,
3.460725462957391*^9}, {3.4607255067444983`*^9, 3.460725544954211*^9}, {
3.460726398679769*^9, 3.460726402398378*^9}, {3.4607264900948553`*^9,
3.4607264901745653`*^9}, {3.4607265294878273`*^9,
3.4607266215497017`*^9}, {3.4607266525953207`*^9, 3.460726681753384*^9}, {
3.460726752152919*^9, 3.4607267894035387`*^9}, {3.460726855113059*^9,
3.460726869029655*^9}, {3.46072691208464*^9, 3.4607269130429163`*^9}, {
3.462810496255804*^9, 3.4628106689504423`*^9}, {3.4628107717913227`*^9,
3.4628109235808897`*^9}, {3.462810983700308*^9, 3.4628110766815243`*^9}, {
3.462811127076709*^9, 3.4628111528220673`*^9}, {3.462811229670088*^9,
3.462811293001821*^9}, {3.46283378934337*^9, 3.4628337951398773`*^9}, {
3.4631290526031237`*^9, 3.463129546157691*^9}, {3.463129580196995*^9,
3.4631296579474783`*^9}, {3.463129719884845*^9, 3.463129728505199*^9}, {
3.463129770568388*^9, 3.463129778902116*^9}, 3.4631298155788097`*^9, {
3.463129981040122*^9, 3.463129996098414*^9}, {3.463267897707822*^9,
3.4632680814171467`*^9}, {3.464955922484514*^9, 3.464955941574931*^9}, {
3.464955973439563*^9, 3.464955975390871*^9}, {3.464956013341967*^9,
3.464956044843781*^9}, {3.465053231859507*^9, 3.465053250147496*^9}, {
3.4650560793532047`*^9, 3.4650560797597427`*^9}, {3.465056664390491*^9,
3.4650566960111723`*^9}, 3.4650569376592827`*^9, {3.465056970289137*^9,
3.465056972239704*^9}, {3.465057167971636*^9, 3.465057170744871*^9}, {
3.465058711700664*^9, 3.465058743481477*^9}, {3.4650589543877163`*^9,
3.465058954713431*^9}, {3.465059148797021*^9, 3.465059199586472*^9}, {
3.466290120418395*^9, 3.4662901934840183`*^9}, {3.466290224439309*^9,
3.4662902801611233`*^9}, {3.466290426849051*^9, 3.466290465499984*^9}, {
3.4662934851581173`*^9, 3.466293503706719*^9}, {3.466529096370887*^9,
3.466529106912327*^9}, {3.4665293951742992`*^9, 3.466529442562298*^9}, {
3.466529490744052*^9, 3.4665295146530247`*^9}, {3.46652957099411*^9,
3.4665296390925417`*^9}, {3.466529739086266*^9, 3.46652974025303*^9}},
FontSize->18],
Cell[BoxData[
RowBox[{"{",
RowBox[{
"1.33993399339934`", ",", "0.12880370605867927`", ",",
"0.32444782939832445`", ",", "0.16965480331816965`", ",",
"0.6828016886997303`", ",", "0.26098789438108383`", ",",
RowBox[{"-", "0.10516104818078308`"}], ",", "0.2009421293027092`", ",",
"1.1896779083733073`", ",", "0.3973911038689333`", ",",
RowBox[{"-", "1.4983683599901714`"}], ",", "0.013991230643524083`"}],
"}"}]], "Output",
CellChangeTimes->{
3.465058788666234*^9, 3.4650589550672283`*^9, {3.465059050740754*^9,
3.465059068261134*^9}, 3.465059116885633*^9, {3.465059152639443*^9,
3.465059190537497*^9}, 3.466290210581208*^9, 3.466290241357595*^9,
3.4662902825253696`*^9, 3.466290576087883*^9, 3.466293514108889*^9,
3.466529111143538*^9, {3.466529431667965*^9, 3.466529442983797*^9}, {
3.4665295069552517`*^9, 3.466529515089719*^9}, {3.466529629225235*^9,
3.466529639578474*^9}, 3.466529741109617*^9, 3.466763232237206*^9,
3.4667641456394978`*^9, 3.466950862135315*^9},
FontSize->18]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"N", "[",
RowBox[{
RowBox[{"Integrate", "[",
RowBox[{
RowBox[{"ff", "[", "x", "]"}], ",",
RowBox[{"{",
RowBox[{"x", ",",
RowBox[{"-", "1"}], ",", "1"}], "}"}]}], "]"}], ",", "20"}],
"]"}]], "Input",
CellChangeTimes->{{3.4665296530859327`*^9, 3.466529668857692*^9}},
FontSize->24],
Cell[BoxData["0.2942255348607469183705751143523461703710612754366476524942`20.\
"], "Output",
CellChangeTimes->{{3.466529662133996*^9, 3.466529669259347*^9},
3.4665297477671423`*^9, 3.4667632323594837`*^9, 3.466764145890696*^9,
3.4669508622671757`*^9},
FontSize->24]
}, Open ]],
Cell[TextData[StyleBox["The composite rules fare better (with a lot more \
function evaluations):",
FontSize->24]], "Text",
CellChangeTimes->{{3.46652975345997*^9, 3.466529765481163*^9}, {
3.466529866171728*^9, 3.4665298843050823`*^9}},
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"N", "[",
RowBox[{
RowBox[{"Table", "[",
RowBox[{
RowBox[{"CompositeNewtonCotes", "[",
RowBox[{
RowBox[{"60", "/", "i"}], ",", "i", ",",
RowBox[{"-", "1"}], ",",
RowBox[{"2", "/", "60"}], ",", "ff"}], "]"}], ",",
RowBox[{"{",
RowBox[{"i", ",", "2", ",", "5"}], "}"}]}], "]"}], ",", "20"}],
"]"}]], "Input",
CellChangeTimes->{{3.4665298029528427`*^9, 3.466529844613483*^9}},
FontSize->24],
Cell[BoxData[
RowBox[{"{",
RowBox[{
"0.2942086341648109398148959364563493967590108724285306006976`20.", ",",
"0.2940785894529092738789181409269572930184350889300791281317`20.", ",",
"0.2940786896090024534254951386165433807186295753936908800676`20.", ",",
"0.2943368851086944158913781506882158763779156718619031418601`20."}],
"}"}]], "Output",
CellChangeTimes->{3.4665298470644608`*^9, 3.466763234470574*^9,
3.466764148148095*^9, 3.466950864356472*^9},
FontSize->24]
}, Open ]],
Cell[TextData[StyleBox["We now compare the GaussQuadrature performance:",
FontSize->24]], "Text",
CellChangeTimes->{{3.466529135863887*^9, 3.4665291557324944`*^9}},
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"GQData", " ", "=", " ",
RowBox[{"N", "[",
RowBox[{
RowBox[{"Table", "[",
RowBox[{
RowBox[{"GaussQuadrature", "[",
RowBox[{
RowBox[{"ff", "[", "x", "]"}], ",", "i"}], "]"}], ",",
RowBox[{"{",
RowBox[{"i", ",", "2", ",", "5"}], "}"}]}], "]"}], ",", "20"}],
"]"}]}]], "Input",
CellChangeTimes->{{3.4650592568534184`*^9, 3.465059265162096*^9}, {
3.4662907274504213`*^9, 3.466290733159842*^9}, {3.466293508530467*^9,
3.466293508721039*^9}, {3.4665291582375174`*^9, 3.4665291691089277`*^9}, {
3.466529889620266*^9, 3.466529956237615*^9}},
FontSize->24],
Cell[BoxData[
RowBox[{"{",
RowBox[{
"0.0582524271844660194174757281553398058252427184466019417476`20.", ",",
"0.9071038251366120218579234972677595628415300546448087431693`20.", ",",
"0.1131123555824630442460017153524040159426869646217062759294`20.", ",",
"0.6065039718669153991285874670249093251328023611402766333822`20."}],
"}"}]], "Output",
CellChangeTimes->{
3.465059265568036*^9, 3.466290733575822*^9, 3.46629352130346*^9, {
3.4665299179415007`*^9, 3.466529956617811*^9}, 3.4667632345426407`*^9,
3.4667641482740383`*^9, 3.466950864400794*^9},
FontSize->24]
}, Open ]],
Cell[TextData[StyleBox["This is still a disaster! Clearly, we're going to \
have to come up with a new idea in order to handle this integrand correctly. ",
FontSize->24]], "Text",
CellChangeTimes->{{3.4665299776757193`*^9, 3.4665299986010227`*^9}},
FontSlant->"Italic"]
}, Open ]],
Cell[CellGroupData[{
Cell["Numerical Gauss Quadrature Rules.", "Section",
CellChangeTimes->{{3.466763400862404*^9, 3.46676340924183*^9}},
FontSize->36],
Cell[TextData[{
StyleBox["It's not hard to see that even ",
FontSize->24],
StyleBox["Mathematica",
FontSize->24,
FontSlant->"Italic"],
StyleBox[" is going to have a hard time computing the weights for Gauss \
Quadrature exactly after a certain point (I tried to get the first 15 Gauss \
Quadrature rules exactly, which takes more than 1/2 hour on my desktop \
machine). \n\nBut we can easily compute floating point approximations to the \
weights:",
FontSize->24]
}], "Text",
CellChangeTimes->{{3.466763418577321*^9, 3.466763489212101*^9}, {
3.466950997041078*^9, 3.4669509972960987`*^9}},
FontSlant->"Italic"],
Cell[BoxData[
RowBox[{
RowBox[{"NLTable", " ", "=", " ",
RowBox[{"Table", "[", "\[IndentingNewLine]",
RowBox[{
RowBox[{"Table", "[",
RowBox[{
RowBox[{"L", "[",
RowBox[{"i", ",",
RowBox[{"GaussQuadratureNodes", "[",
RowBox[{"[", "j", "]"}], "]"}]}], "]"}], ",",
RowBox[{"{",
RowBox[{"i", ",", "1", ",",
RowBox[{"Length", "[",
RowBox[{"GaussQuadratureNodes", "[",
RowBox[{"[", "j", "]"}], "]"}], "]"}]}], "}"}]}], "]"}], ",",
"\[IndentingNewLine]",
RowBox[{"{",
RowBox[{"j", ",", "2", ",", "14"}], "}"}]}], "]"}]}], ";"}]], "Input",
CellChangeTimes->{{3.4667635213504753`*^9, 3.4667635606571493`*^9}},
FontSize->24],
Cell[BoxData[
RowBox[{
RowBox[{
RowBox[{"NATable", " ", "=", " ",
RowBox[{"Integrate", "[",
RowBox[{"NLTable", ",",
RowBox[{"{",
RowBox[{"x", ",",
RowBox[{"-", "1"}], ",", "1"}], "}"}]}], "]"}]}], ";"}],
" "}]], "Input",
CellChangeTimes->{{3.466763598168581*^9, 3.4667636010138397`*^9}, {
3.4667636939049177`*^9, 3.466763702790414*^9}, {3.466951059918928*^9,
3.466951072244183*^9}},
FontSize->24],
Cell[BoxData[
StyleBox[
RowBox[{
RowBox[{"NATable", " ", "=", " ",
RowBox[{"Prepend", "[",
RowBox[{"NATable", ",", "0"}], "]"}]}], ";"}],
FontSize->24]], "Input",
CellChangeTimes->{{3.4669510744836197`*^9, 3.466951086386174*^9}}],
Cell[TextData[StyleBox["Comparing the numerical weight table and the ordinary \
weight table, we see:",
FontSize->24]], "Text",
CellChangeTimes->{{3.466951002904954*^9, 3.466951024044982*^9}},
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[{
RowBox[{"NATable", "[",
RowBox[{"[", "5", "]"}], "]"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{"N", "[",
RowBox[{"ATable", ",", "18"}], "]"}], "[",
RowBox[{"[", "5", "]"}], "]"}]}], "Input",
CellChangeTimes->{{3.466951027176612*^9, 3.4669510366774673`*^9}, {
3.466951170534045*^9, 3.466951201379044*^9}, {3.4669515981344357`*^9,
3.466951606741056*^9}},
FontSize->24],
Cell[BoxData[
RowBox[{"{",
RowBox[{
"0.56888888888888888888888888888888888889`17.901059325611808", ",",
"0.23692688505618908751426404071991736264`18.30223083935861", ",",
"0.23692688505618908752334183928674168603`18.330549319848753", ",",
"0.47862867049936646804129151483563819291`18.039298583355926", ",",
"0.47862867049936646804129151483563819291`18.060800872329207"}],
"}"}]], "Output",
CellChangeTimes->{
3.466951037404757*^9, 3.4669510978060837`*^9, {3.466951171824046*^9,
3.4669512016711483`*^9}, {3.4669515989264517`*^9, 3.466951607096106*^9}}],
Cell[BoxData[
RowBox[{"{",
RowBox[{
"0.56888888888888888888888888888888888889`18.", ",",
"0.23692688505618908751426404071991736264`18.", ",",
"0.23692688505618908751426404071991736264`18.", ",",
"0.47862867049936646804129151483563819291`18.", ",",
"0.47862867049936646804129151483563819291`18."}], "}"}]], "Output",
CellChangeTimes->{
3.466951037404757*^9, 3.4669510978060837`*^9, {3.466951171824046*^9,
3.4669512016711483`*^9}, {3.4669515989264517`*^9, 3.4669516070990267`*^9}}]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[{
RowBox[{"GaussQuadratureNodes", "[",
RowBox[{"[", "5", "]"}], "]"}], "\[IndentingNewLine]",
RowBox[{"N", "[",
RowBox[{
RowBox[{"RootList", "[",
RowBox[{"[", "5", "]"}], "]"}], ",", "20"}], "]"}]}], "Input",
CellChangeTimes->{{3.4669512123961697`*^9, 3.4669512454947987`*^9}, {
3.46695158891175*^9, 3.466951609501664*^9}},
FontSize->24],
Cell[BoxData[
RowBox[{"{",
RowBox[{"0", ",",
RowBox[{
"-", "0.9061798459386639927976268782993929651256519107625308628737`20."}],
",", "0.9061798459386639927976268782993929651256519107625308628737`20.",
",",
RowBox[{
"-", "0.538469310105683091036314420700208804967286606905559956202`20."}],
",", "0.538469310105683091036314420700208804967286606905559956202`20."}],
"}"}]], "Output",
CellChangeTimes->{{3.466951238157136*^9, 3.466951245810096*^9}, {
3.4669515901958933`*^9, 3.4669516098487673`*^9}}],
Cell[BoxData[
RowBox[{"{",
RowBox[{"0", ",",
RowBox[{
"-", "0.9061798459386639927976268782993929651256519107625308628737`20."}],
",", "0.9061798459386639927976268782993929651256519107625308628737`20.",
",",
RowBox[{
"-", "0.538469310105683091036314420700208804967286606905559956202`20."}],
",", "0.538469310105683091036314420700208804967286606905559956202`20."}],
"}"}]], "Output",
CellChangeTimes->{{3.466951238157136*^9, 3.466951245810096*^9}, {
3.4669515901958933`*^9, 3.466951609851602*^9}}]
}, Open ]],
Cell[BoxData[
StyleBox[
RowBox[{
RowBox[{
RowBox[{"NGaussQuadrature", "[",
RowBox[{"f_", ",", "n_"}], "]"}], " ", ":=", " ",
RowBox[{"Sum", "[",
RowBox[{
RowBox[{
RowBox[{"NATable", "[",
RowBox[{"[",
RowBox[{"n", ",", "i"}], "]"}], "]"}], "*",
RowBox[{"(",
RowBox[{"f", " ", "/.", " ",
RowBox[{"{",
RowBox[{"x", " ", "->",
RowBox[{"GaussQuadratureNodes", "[",
RowBox[{"[",
RowBox[{"n", ",", "i"}], "]"}], "]"}]}], "}"}]}], ")"}]}], ",",
RowBox[{"{",
RowBox[{"i", ",", "1", ",",
RowBox[{"Length", "[",
RowBox[{"GaussQuadratureNodes", "[",
RowBox[{"[", "n", "]"}], "]"}], "]"}]}], "}"}]}], "]"}]}], ";"}],
FontSize->24]], "Input",
CellChangeTimes->{{3.4667636411653423`*^9, 3.466763656382979*^9}}],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"N", "[",
RowBox[{
RowBox[{"Integrate", "[",
RowBox[{
RowBox[{"Cos", "[", "x", "]"}], ",",
RowBox[{"{",
RowBox[{"x", ",",
RowBox[{"-", "1"}], ",", "1"}], "}"}]}], "]"}], ",", "20"}],
"]"}]], "Input",
CellChangeTimes->{{3.466763745114382*^9, 3.466763760850625*^9}},
FontSize->18],
Cell[BoxData["1.6829419696157930133050046432605979992451261215967421327513`20.\
"], "Output",
CellChangeTimes->{3.46676376128683*^9, 3.466764152822698*^9,
3.466950868814685*^9},
FontSize->18]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"NGaussQuadrature", "[",
RowBox[{
RowBox[{"Cos", "[", "x", "]"}], ",", "4"}], "]"}]], "Input",
CellChangeTimes->{{3.466763663208578*^9, 3.466763682247191*^9}, {
3.466763726286373*^9, 3.4667637347632933`*^9}, {3.466951268318535*^9,
3.466951269253023*^9}, {3.466951302624189*^9, 3.466951339663591*^9}, {
3.466951579152542*^9, 3.466951579990876*^9}, {3.466951619286084*^9,
3.4669516193445997`*^9}},
FontSize->18],
Cell[BoxData["1.68294168869597342997364621284341376469`18.465856164849033"], \
"Output",
CellChangeTimes->{{3.466763682890646*^9, 3.466763735065299*^9},
3.4667641528587437`*^9, 3.4669508688319674`*^9, 3.466951269681284*^9, {
3.4669513032130203`*^9, 3.4669513402794724`*^9}, 3.4669515803185997`*^9,
3.466951619643244*^9},
FontSize->18]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"N", "[",
RowBox[{
RowBox[{"GaussQuadrature", "[",
RowBox[{
RowBox[{"Cos", "[", "x", "]"}], ",", "4"}], "]"}], ",", "20"}],
"]"}]], "Input",
CellChangeTimes->{{3.466951276823785*^9, 3.4669513077145557`*^9}, {
3.46695156683425*^9, 3.4669515768228493`*^9}},
FontSize->18],
Cell[BoxData["1.6829416886959734299736462128434137646965884273153304429687`20.\
"], "Output",
CellChangeTimes->{{3.466951284532249*^9, 3.466951308409212*^9}, {
3.466951567588869*^9, 3.4669515771298103`*^9}},
FontSize->18]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
StyleBox[
RowBox[{"NGQDigits", " ", "=", " ",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"Digits", "[",
RowBox[{
RowBox[{"NGaussQuadrature", "[",
RowBox[{
RowBox[{"Cos", "[", "x", "]"}], ",", "i"}], "]"}], ",",
RowBox[{"N", "[",
RowBox[{
RowBox[{"Integrate", "[",
RowBox[{
RowBox[{"Cos", "[", "x", "]"}], ",",
RowBox[{"{",
RowBox[{"x", ",",
RowBox[{"-", "1"}], ",", "1"}], "}"}]}], "]"}], ",", "40"}],
"]"}]}], "]"}], ",",
RowBox[{"{",
RowBox[{"i", ",", "2", ",", "8"}], "}"}]}], "]"}]}],
FontSize->18]], "Input",
CellChangeTimes->{{3.4669513827517843`*^9, 3.4669514824314003`*^9}}],
Cell[BoxData[
RowBox[{"{",
RowBox[{
"2.1476228447219095`", ",", "4.210573636983393`", ",", "6.551417619174976`",
",", "9.101604471992365`", ",", "11.81994714389421`", ",",
"14.678903026618562`", ",", "0.36259051333139514`"}], "}"}]], "Output",
CellChangeTimes->{{3.4669514012912807`*^9, 3.46695148292404*^9}}]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{
StyleBox["ListLinePlot",
FontSize->16],
StyleBox["[",
FontSize->16],
RowBox[{
StyleBox[
RowBox[{"{",
RowBox[{"GQDigits", ",", "NCDigits", ",", "NGQDigits"}], "}"}],
FontSize->16],
StyleBox[",",
FontSize->16],
StyleBox[
RowBox[{"Filling", "\[Rule]", "Axis"}],
FontSize->16],
StyleBox[",",
FontSize->16],
StyleBox[
RowBox[{"PlotRange", "\[Rule]", "Full"}],
FontSize->16],
StyleBox[",",
FontSize->16],
RowBox[{
StyleBox["AxesOrigin",
FontSize->16],
StyleBox["\[Rule]",
FontSize->16],
StyleBox[
RowBox[{"{",
RowBox[{"0", ",", "0"}], "}"}],
FontSize->14]}],
StyleBox[",",
FontSize->14],
StyleBox[" ",
FontSize->14],
StyleBox[
RowBox[{"PlotMarkers", "\[Rule]", "Automatic"}],
FontSize->14]}],
StyleBox["]",
FontSize->16]}]], "Input",
CellChangeTimes->{{3.4669515029028893`*^9, 3.4669515082604847`*^9}},
FontSize->18],
Cell[BoxData[
GraphicsBox[GraphicsComplexBox[CompressedData["
1:eJxTTMoPSmViYGAQBWIQDQEf7B+duPgoRI/RASrg4P1zwtwF1wWgfA6H47rM
l5aZSEH5Ag48myIaWE2UHGD6zWO2feuc+d8epl+eW/Cu2ComuP6Vwav+Lz0u
ANfvnD138cETgnD9pNrvvRrZfhGH85/WyVxYrA7lSzjc/lagOzNaF8qXcbjg
oXZ9ncl1e5h9DChAxgGVjy4vQLQ8AOG7Q9A=
"], {{{},
{Hue[0.67, 0.6, 0.6], Opacity[0.2], EdgeForm[None],
GraphicsGroupBox[PolygonBox[{{1, 20, 21, 4, 3, 2}}]]}, {},
{Hue[0.9060679774997897, 0.6, 0.6], Opacity[0.2], EdgeForm[None],
GraphicsGroupBox[PolygonBox[{{5, 18, 19, 8, 7, 6}}]]}, {},
{Hue[0.1421359549995791, 0.6, 0.6], Opacity[0.2], EdgeForm[None],
GraphicsGroupBox[
PolygonBox[{{9, 16, 17, 15, 14, 13, 12, 11,
10}}]]}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}}, {{}, {},
{Hue[0.67, 0.6, 0.6], LineBox[{1, 2, 3, 4}]},
{Hue[0.9060679774997897, 0.6, 0.6], LineBox[{5, 6, 7, 8}]},
{Hue[0.1421359549995791, 0.6, 0.6],
LineBox[{9, 10, 11, 12, 13, 14, 15}]}}, {
{Hue[0.67, 0.6, 0.6], InsetBox[
StyleBox["\<\"\[FilledCircle]\"\>",
StripOnInput->False,
FontSize->8.96], 1], InsetBox[
StyleBox["\<\"\[FilledCircle]\"\>",
StripOnInput->False,
FontSize->8.96], 2], InsetBox[
StyleBox["\<\"\[FilledCircle]\"\>",
StripOnInput->False,
FontSize->8.96], 3], InsetBox[
StyleBox["\<\"\[FilledCircle]\"\>",
StripOnInput->False,
FontSize->8.96], 4]},
{Hue[0.9060679774997897, 0.6, 0.6], InsetBox[
StyleBox["\<\"\[FilledSquare]\"\>",
StripOnInput->False,
FontSize->8.96], 5], InsetBox[
StyleBox["\<\"\[FilledSquare]\"\>",
StripOnInput->False,
FontSize->8.96], 6], InsetBox[
StyleBox["\<\"\[FilledSquare]\"\>",
StripOnInput->False,
FontSize->8.96], 7], InsetBox[
StyleBox["\<\"\[FilledSquare]\"\>",
StripOnInput->False,
FontSize->8.96], 8]},
{Hue[0.1421359549995791, 0.6, 0.6], InsetBox[
StyleBox["\<\"\[FilledDiamond]\"\>",
StripOnInput->False,
FontSize->10.88], 9], InsetBox[
StyleBox["\<\"\[FilledDiamond]\"\>",
StripOnInput->False,
FontSize->10.88], 10], InsetBox[
StyleBox["\<\"\[FilledDiamond]\"\>",
StripOnInput->False,
FontSize->10.88], 11], InsetBox[
StyleBox["\<\"\[FilledDiamond]\"\>",
StripOnInput->False,
FontSize->10.88], 12], InsetBox[
StyleBox["\<\"\[FilledDiamond]\"\>",
StripOnInput->False,
FontSize->10.88], 13], InsetBox[
StyleBox["\<\"\[FilledDiamond]\"\>",
StripOnInput->False,
FontSize->10.88], 14], InsetBox[
StyleBox["\<\"\[FilledDiamond]\"\>",
StripOnInput->False,
FontSize->10.88], 15]}, {}}}],
AspectRatio->NCache[GoldenRatio^(-1), 0.6180339887498948],
Axes->True,
AxesOrigin->{0, 0},
ImageSize->{833., Automatic},
PlotRange->{{0, 7.}, {0, 14.678903026618562`}},
PlotRangeClipping->True,
PlotRangePadding->{
Scaled[0.02],
Scaled[0.02]}]], "Output",
CellChangeTimes->{3.466951508796023*^9},
FontSize->18]
}, Open ]],
Cell[TextData[StyleBox["We see from this graph the expected result that Gauss \
Quadrature with numerically computed weights and nodes performs quite well \
until we reach 8 nodes. At that point, there seems to be a precipitous loss \
of accuracy!\n\nExtra Credit: Explain this phenomenon. What's going wrong in \
our code?",
FontSize->24]], "Text",
CellChangeTimes->{{3.466951634719009*^9, 3.4669517113401623`*^9}},
FontSlant->"Italic"]
}, Open ]],
Cell[CellGroupData[{
Cell[TextData[StyleBox["Singular integrands and Gauss Quadrature.",
FontSize->36]], "Section",
CellChangeTimes->{{3.466531566747999*^9, 3.466531584048038*^9}},
FontSize->18],
Cell[TextData[{
StyleBox["You often have to deal with integrals such as \n\n",
FontSize->24],
Cell[BoxData[
FormBox[
RowBox[{"\[Integral]",
RowBox[{
FractionBox["1",
SqrtBox[
RowBox[{"x", "+", "1"}]]],
RowBox[{"\[DifferentialD]", "x"}]}]}], TraditionalForm]],
FontSize->72],
"\n",
StyleBox["which are certainly well-defined, but have a singularity. Does \
Gauss quadrature help? Not really, as the examples below show. The real \
problem is that Gauss quadrature is based on integration with result ",
FontSize->24]
}], "Text",
CellChangeTimes->{{3.466531592543002*^9, 3.466531673497098*^9}, {
3.4667613127623787`*^9, 3.466761340528454*^9}, {3.466761385398018*^9,
3.466761385730864*^9}, {3.46695172414323*^9, 3.466951768703776*^9}},
FontSize->18,
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"Integrate", "[",
RowBox[{
RowBox[{"1", "/",
RowBox[{"Sqrt", "[",
RowBox[{"x", "+", "1"}], "]"}]}], ",",
RowBox[{"{",
RowBox[{"x", ",",
RowBox[{"-", "1"}], ",", "1"}], "}"}]}], "]"}]], "Input",
CellChangeTimes->{{3.466761346566341*^9, 3.466761389093215*^9}},
FontSize->18],
Cell[BoxData[
RowBox[{"2", " ",
SqrtBox["2"]}]], "Output",
CellChangeTimes->{{3.46676137133805*^9, 3.466761389823408*^9},
3.4667632349924917`*^9, 3.466764153217285*^9, 3.4669508689875317`*^9},
FontSize->18]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"N", "[",
RowBox[{
RowBox[{"Integrate", "[",
RowBox[{
RowBox[{"1", "/",
RowBox[{"Sqrt", "[",
RowBox[{"x", "+", "1"}], "]"}]}], ",",
RowBox[{"{",
RowBox[{"x", ",",
RowBox[{"-", "1"}], ",", "1"}], "}"}]}], "]"}], ",", "20"}],
"]"}]], "Input",
CellChangeTimes->{{3.466761415456964*^9, 3.4667614234185963`*^9}},
FontSize->18],
Cell[BoxData["2.8284271247461900976033774484193961571393437507538961463534`20.\
"], "Output",
CellChangeTimes->{3.4667614240494003`*^9, 3.466763235034759*^9,
3.466764153261397*^9, 3.4669508690346947`*^9},
FontSize->18]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"GQData", " ", "=", " ",
RowBox[{"N", "[",
RowBox[{
RowBox[{"Table", "[",
RowBox[{
RowBox[{"GaussQuadrature", "[",
RowBox[{
RowBox[{"1", "/",
RowBox[{"Sqrt", "[",
RowBox[{"x", "+", "1"}], "]"}]}], ",", "i"}], "]"}], ",",
RowBox[{"{",
RowBox[{"i", ",", "2", ",", "5"}], "}"}]}], "]"}], ",", "20"}],
"]"}]}]], "Input",
CellChangeTimes->{{3.466761402359481*^9, 3.4667614354661093`*^9}},
FontSize->16],
Cell[BoxData[
RowBox[{"{",
RowBox[{
"2.3344142183389772393175122672103621944890707102161406718292`20.", ",",
"2.4760944521515586967568357022256212968195557442323828061526`20.", ",",
"2.5545541189301317403412123460307532895173520760513802272375`20.", ",",
"2.6044155272572925528264291509120047232759551936893388145653`20."}],
"}"}]], "Output",
CellChangeTimes->{3.466761436438099*^9, 3.466763235078866*^9,
3.466764153307109*^9, 3.4669508690520983`*^9},
FontSize->16]
}, Open ]]
}, Open ]],
Cell[CellGroupData[{
Cell["Gauss Quadrature with respect to a weight function. ", "Section",
CellChangeTimes->{{3.4669518555974407`*^9, 3.466951865496707*^9}},
FontSize->36],
Cell[TextData[StyleBox["Note: The following code doesn't quite work. Since \
the class is moving on, I'm posting it for historical value, but I won't \
debug it now.\n\nSuppose we have a collection of integrals in the form \n\n\
polynomial(x) * exp(x) \n\nor \n\npolynomial(x) * 1/sqrt(1+x)\n\nor \n\n\
polynomial(x) * sin(x)\n\nAs long as the nonpolynomial (weight) function has \
a single sign, we can construct specialized Gauss quadrature rules for \
functions in this form without any new ideas. We start with a new inner \
product",
FontSize->24]], "Text",
CellChangeTimes->{{3.46695188467948*^9, 3.4669519771210947`*^9}, {
3.466952020639699*^9, 3.4669520292852716`*^9}, {3.466954336699321*^9,
3.466954362334227*^9}},
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell["The weighted inner product of functions.", "Subsection",
CellChangeTimes->{{3.466952171773965*^9, 3.466952177979039*^9}}],
Cell[BoxData[
RowBox[{
RowBox[{
RowBox[{"wIP", "[",
RowBox[{"f_", ",", "g_", ",", "w_"}], "]"}], " ", ":=", " ",
RowBox[{"Integrate", "[",
RowBox[{
RowBox[{"f", "*", "g", "*", "w"}], ",",
RowBox[{"{",
RowBox[{"x", ",",
RowBox[{"-", "1"}], ",", "1"}], "}"}]}], "]"}]}], ";"}]], "Input",
CellChangeTimes->CompressedData["
1:eJwd0E8oQwEAx/EXh0WYtzlgm38HyU5bkTaWZ4eVDCH/wsGfRWYv+XOYhDal
nXDgoLhIyJqW5hkOyJ+UemvLcfO/nlhZaP5t3m+Hb5/7N7eTruuJIwgiiw+e
RSoD61ccNaMxxHSMGV9vWI4Sb+h+oCGHEdzy2sj9JBjwW+WpHo7arlIWwXP5
vRqmlk3poVLU1wAvU9Km4dwuw5K8pYK/O7hwkvUBCVtBzM0Dyy9MU8//QcrX
niTiLXmQJMNvTzkJ/S1OOaSXZQp4wYqVMJFZUcFNVt0I7TWnrbDH1GyCXKh3
CA7KjTEjL/GT0Ko+tsC8UMAGr1XSQxjU6o5gmyrxDc4+ZfzCuXFpTMnwu1DM
G0ebSFhsTkiHqxX5Mtit6MqDjOJRAR2rQgpGPzu0kDsT18Nq90g3DLv2+uFa
hB6FdufiUr+X/x6+dMEJvdsNn3/053CnSUcbeaVe5yB8YM1fe7yZhUwUBh2a
LYePo2oHsu3wH/kM/Qk=
"],
FontSize->18],
Cell[TextData[StyleBox["We try a few simple examples:",
FontSize->24]], "Text",
CellChangeTimes->{{3.4662887032999496`*^9, 3.4662887268392763`*^9}, {
3.46644886942245*^9, 3.466448877514593*^9}},
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[
StyleBox[
RowBox[{"wIP", "[",
RowBox[{
RowBox[{"x", "^", "2"}], ",",
RowBox[{
RowBox[{"x", "^", "3"}], " ", "+", " ",
RowBox[{"4", "x"}], " ", "+", " ", "2"}], ",",
RowBox[{"1", "/",
RowBox[{"Sqrt", "[",
RowBox[{"1", "+", "x"}], "]"}]}]}], "]"}],
FontSize->18]], "Input",
CellChangeTimes->{{3.466288729303548*^9, 3.466288735704373*^9}, {
3.466290068816893*^9, 3.466290068904633*^9}, {3.466448884039074*^9,
3.4664489012911587`*^9}, {3.466952044968018*^9, 3.466952056606244*^9}},
FontSize->18],
Cell[BoxData[
RowBox[{"-",
FractionBox[
RowBox[{"62", " ",
SqrtBox["2"]}], "99"]}]], "Output",
CellChangeTimes->{
3.466288736670124*^9, {3.466290064077317*^9, 3.466290069405649*^9}, {
3.4664489027301903`*^9, 3.466448908330352*^9}, 3.46676291102024*^9,
3.466763823204652*^9, 3.466950539662032*^9, {3.466952057387986*^9,
3.466952061903294*^9}},
FontSize->18]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
StyleBox[
RowBox[{"wIP", "[",
RowBox[{"x", ",", "1", ",",
RowBox[{"1", "/",
RowBox[{"Sqrt", "[",
RowBox[{"1", "+", "x"}], "]"}]}]}], "]"}],
FontSize->18]], "Input",
CellChangeTimes->{{3.4662887458823643`*^9, 3.46628875140688*^9}, {
3.466290076452511*^9, 3.466290076525653*^9}, {3.4664489292984056`*^9,
3.466448936615922*^9}, {3.4669520643163424`*^9, 3.466952070228788*^9}},
FontSize->16],
Cell[BoxData[
RowBox[{"-",
FractionBox[
RowBox[{"2", " ",
SqrtBox["2"]}], "3"]}]], "Output",
CellChangeTimes->{3.46628875242277*^9, 3.466290077059125*^9,
3.466448937113501*^9, 3.4667629110895*^9, 3.466763823262321*^9,
3.466950539724962*^9, 3.4669520710083523`*^9},
FontSize->16]
}, Open ]]
}, Open ]],
Cell[CellGroupData[{
Cell["Weighted Gram-Schmidt Orthogonalization", "Subsection",
CellChangeTimes->{{3.4664495768405237`*^9, 3.4664495821920443`*^9}, {
3.4669521859231777`*^9, 3.466952186858021*^9}}],
Cell[TextData[StyleBox["We now need to define weighted Gram-Schmidt \
orthogonalization given a set of polynomials. This is exactly the same as \
ordinary Gram-Schmidt orthogonalization, except that we use the weighted \
inner product wIP.",
FontSize->24]], "Text",
CellChangeTimes->{{3.4662888517060957`*^9, 3.466288852934658*^9}, {
3.46628896505418*^9, 3.4662889763823023`*^9}, {3.466448953541369*^9,
3.466449090715459*^9}, {3.466449545037994*^9, 3.466449561905937*^9}, {
3.466952189843137*^9, 3.466952221503634*^9}},
FontSlant->"Italic"],
Cell[BoxData[{
RowBox[{
RowBox[{
RowBox[{
RowBox[{"wGramSchmidtCoefficient", "[",
RowBox[{"p_", ",", "q_", ",", "w_"}], "]"}], " ", ":=",
RowBox[{
RowBox[{"wIP", "[",
RowBox[{"p", ",", "q", ",", "w"}], "]"}], "/",
RowBox[{"wIP", "[",
RowBox[{"q", ",", "q", ",", "w"}], "]"}]}]}], ";"}],
" "}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"wGramSchmidt", "[",
RowBox[{"p_", ",", "Q_", ",", "w_"}], "]"}], " ", ":=", " ",
RowBox[{"p", " ", "-", " ",
RowBox[{"Sum", "[",
RowBox[{
RowBox[{
RowBox[{"wGramSchmidtCoefficient", "[",
RowBox[{"p", ",",
RowBox[{"Q", "[",
RowBox[{"[", "i", "]"}], "]"}], ",", "w"}], "]"}], "*",
RowBox[{"Q", "[",
RowBox[{"[", "i", "]"}], "]"}]}], ",",
RowBox[{"{",
RowBox[{"i", ",", "1", ",",
RowBox[{"Length", "[", "Q", "]"}]}], "}"}]}], "]"}]}]}],
";"}]}], "Input",
CellChangeTimes->{{3.466288979727849*^9, 3.466289008940282*^9}, {
3.466290086537156*^9, 3.466290086606728*^9}, {3.466449137268396*^9,
3.466449479811267*^9}, {3.466450173729802*^9, 3.466450182780966*^9}, {
3.466952076471385*^9, 3.466952129129524*^9}},
FontSize->18],
Cell[TextData[StyleBox["We now try this out:",
FontSize->24]], "Text",
CellChangeTimes->{{3.466289070953718*^9, 3.4662890867812233`*^9}, {
3.466449486279272*^9, 3.466449489982807*^9}},
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"wGramSchmidt", "[",
RowBox[{"x", ",",
RowBox[{"{", "1", "}"}], ",",
RowBox[{"1", "/",
RowBox[{"Sqrt", "[",
RowBox[{"1", "+", "x"}], "]"}]}]}], "]"}]], "Input",
CellChangeTimes->{{3.466289091312962*^9, 3.4662890997094727`*^9}, {
3.466290089545116*^9, 3.4662900896067533`*^9}, {3.466449494303649*^9,
3.466449521390236*^9}, {3.466952110369316*^9, 3.466952114968685*^9}},
FontSize->18],
Cell[BoxData[
RowBox[{
FractionBox["1", "3"], "+", "x"}]], "Output",
CellChangeTimes->{
3.4662891035284367`*^9, 3.4662900903601418`*^9, {3.4664495045496798`*^9,
3.466449521731079*^9}, 3.4664501852509823`*^9, 3.466762911156309*^9,
3.466763823329247*^9, 3.466950539791458*^9, {3.466952115439115*^9,
3.466952132844146*^9}, 3.466952226531608*^9},
FontSize->24]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"wGramSchmidt", "[",
RowBox[{
RowBox[{"x", "^", "2"}], ",",
RowBox[{"{",
RowBox[{"1", ",", "x"}], "}"}], ",",
RowBox[{"1", "/",
RowBox[{"Sqrt", "[",
RowBox[{"1", "+", "x"}], "]"}]}]}], "]"}]], "Input",
CellChangeTimes->{{3.466449526246716*^9, 3.466449537184531*^9}, {
3.4669521430248537`*^9, 3.4669521447193823`*^9}},
FontSize->18],
Cell[BoxData[
RowBox[{
RowBox[{"-",
FractionBox["7", "15"]}], "+",
FractionBox[
RowBox[{"27", " ", "x"}], "49"], "+",
SuperscriptBox["x", "2"]}]], "Output",
CellChangeTimes->{3.466449537832697*^9, 3.466450186668377*^9,
3.466762911288096*^9, 3.4667638234470787`*^9, 3.466950539828371*^9,
3.466952145969349*^9},
FontSize->18]
}, Open ]]
}, Open ]],
Cell[CellGroupData[{
Cell["Putting everything together.", "Subsection",
CellChangeTimes->{{3.466449587775968*^9, 3.466449591783491*^9}}],
Cell["We now recursively apply GramSchmidt.", "Text",
CellChangeTimes->{{3.466289128586503*^9, 3.466289140562277*^9}, {
3.466449594719119*^9, 3.466449608454404*^9}},
FontSize->24,
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[{
RowBox[{
RowBox[{"wLegendrePolylist", " ", "=", " ",
RowBox[{"{", "1", "}"}]}], ";"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"Do", "[",
RowBox[{
RowBox[{"wLegendrePolylist", " ", "=", " ",
RowBox[{"Append", "[",
RowBox[{"wLegendrePolylist", ",",
RowBox[{"wGramSchmidt", "[",
RowBox[{
RowBox[{"x", "^", "n"}], ",", "wLegendrePolylist", ",",
RowBox[{"1", "/",
RowBox[{"Sqrt", "[",
RowBox[{"1", "+", "x"}], "]"}]}]}], "]"}]}], "]"}]}], ",",
RowBox[{"{",
RowBox[{"n", ",", "1", ",", "5"}], "}"}]}], "]"}], ";"}],
"\[IndentingNewLine]", " "}], "\[IndentingNewLine]",
RowBox[{"Simplify", "[",
RowBox[{"Collect", "[",
RowBox[{"wLegendrePolylist", ",", "x"}], "]"}], "]"}]}], "Input",
CellChangeTimes->{{3.466289124546322*^9, 3.4662891714172688`*^9}, {
3.466290092889367*^9, 3.466290092976762*^9}, {3.466449615512285*^9,
3.466449796939872*^9}, {3.4664498298194637`*^9, 3.466449843456403*^9}, {
3.466449936570816*^9, 3.4664501331316977`*^9}, {3.466450243485468*^9,
3.466450289271408*^9}, {3.466450537241145*^9, 3.466450537319957*^9}, {
3.466761984732848*^9, 3.466761984930841*^9}, {3.466952400126648*^9,
3.466952414637282*^9}, {3.4669524919439383`*^9, 3.466952494254364*^9}},
FontSize->24],
Cell[BoxData[
RowBox[{"{",
RowBox[{"1", ",",
RowBox[{
FractionBox["1", "3"], "+", "x"}], ",",
RowBox[{
RowBox[{"-",
FractionBox["13", "35"]}], "+",
FractionBox[
RowBox[{"2", " ", "x"}], "7"], "+",
SuperscriptBox["x", "2"]}], ",",
RowBox[{
RowBox[{"-",
FractionBox["19", "231"]}], "-",
FractionBox[
RowBox[{"7", " ", "x"}], "11"], "+",
FractionBox[
RowBox[{"3", " ",
SuperscriptBox["x", "2"]}], "11"], "+",
SuperscriptBox["x", "3"]}], ",",
RowBox[{
FractionBox["47", "495"], "-",
FractionBox[
RowBox[{"108", " ", "x"}], "715"], "-",
FractionBox[
RowBox[{"58", " ",
SuperscriptBox["x", "2"]}], "65"], "+",
FractionBox[
RowBox[{"4", " ",
SuperscriptBox["x", "3"]}], "15"], "+",
SuperscriptBox["x", "4"]}], ",",
RowBox[{
FractionBox["943", "46189"], "+",
FractionBox[
RowBox[{"1075", " ", "x"}], "4199"], "-",
FractionBox[
RowBox[{"70", " ",
SuperscriptBox["x", "2"]}], "323"], "-",
FractionBox[
RowBox[{"370", " ",
SuperscriptBox["x", "3"]}], "323"], "+",
FractionBox[
RowBox[{"5", " ",
SuperscriptBox["x", "4"]}], "19"], "+",
SuperscriptBox["x", "5"]}]}], "}"}]], "Output",
CellChangeTimes->{{3.466450129233713*^9, 3.466450134296747*^9},
3.4664501916956387`*^9, {3.4664502495158253`*^9, 3.466450289870541*^9},
3.466450538218276*^9, 3.4667619904743013`*^9, 3.466762915073247*^9,
3.466763827395212*^9, 3.46695054366322*^9, {3.466952496297851*^9,
3.466952507754509*^9}},
FontSize->24]
}, Open ]],
Cell[TextData[StyleBox["This gives us the list of Legendre polynomials.",
FontSize->24]], "Text",
CellChangeTimes->{{3.466289231861706*^9, 3.466289248385892*^9}, {
3.46645031141392*^9, 3.466450321411351*^9}},
FontSlant->"Italic"]
}, Open ]],
Cell[CellGroupData[{
Cell["Generating a Quadrature Rule from the Legendre Polynomials", \
"Subsection",
CellChangeTimes->{{3.466289557843656*^9, 3.466289563427253*^9}, {
3.466450353945446*^9, 3.466450369399723*^9}}],
Cell[TextData[{
StyleBox["In order to generate a (numerical) quadrature rule from the \
collection of weighted Legendre polynomials, we need to find their roots. \
Luckily, ",
FontSize->24],
StyleBox["Mathematica",
FontSize->24,
FontSlant->"Italic"],
StyleBox[" is pretty good at this.",
FontSize->24]
}], "Text",
CellChangeTimes->{{3.466289571355747*^9, 3.466289583129471*^9}, {
3.466289628926409*^9, 3.466289684641883*^9}, {3.4664503741066713`*^9,
3.466450416829124*^9}, {3.466952584215371*^9, 3.4669525850777273`*^9}},
FontSlant->"Italic"],
Cell[BoxData[
RowBox[{
RowBox[{
StyleBox[
StyleBox[
RowBox[{"w", "RL"}]],
FontSize->24],
StyleBox[" ",
FontSize->24],
StyleBox["=",
FontSize->24],
StyleBox[" ",
FontSize->24],
RowBox[{
StyleBox["Table",
FontSize->24],
StyleBox["[",
FontSize->24],
RowBox[{
RowBox[{
StyleBox["Solve",
FontSize->24],
StyleBox["[",
FontSize->24],
RowBox[{
RowBox[{
StyleBox[
RowBox[{"wLegendrePolylist", "[",
RowBox[{"[", "i", "]"}], "]"}],
FontSize->24],
StyleBox[" ",
FontSize->24],
StyleBox["\[Equal]",
FontSize->24], " ",
StyleBox["0",
FontSize->24]}],
StyleBox[",",
FontSize->24],
StyleBox[" ",
FontSize->24],
StyleBox["x",
FontSize->24]}],
StyleBox["]",
FontSize->24]}],
StyleBox[",",
FontSize->24],
StyleBox[
RowBox[{"{",
RowBox[{"i", ",", "2", ",", "5"}], "}"}],
FontSize->24]}],
StyleBox["]",
FontSize->24]}]}],
StyleBox[";",
FontSize->24]}]], "Input",
CellChangeTimes->{{3.466289594893577*^9, 3.466289623678459*^9}, {
3.466289689667583*^9, 3.466289734339295*^9}, {3.466289805775094*^9,
3.466289806333344*^9}, {3.4662900991302633`*^9, 3.466290103815893*^9}, {
3.4664504852509212`*^9, 3.466450543935302*^9}, {3.466450665253286*^9,
3.466450680811166*^9}, {3.466450741912986*^9, 3.466450741983073*^9}, {
3.466761995075844*^9, 3.466762010098392*^9}, {3.466952514150053*^9,
3.466952525027659*^9}},
FontSize->18],
Cell[TextData[{
StyleBox["As you can see, these are not rational numbers, but they are \
numbers that we can evaluate numerically relatively easily with ",
FontSize->24],
StyleBox["Mathematica",
FontSize->24,
FontSlant->"Italic"],
StyleBox[". To do this, we'll need to actually get these guys out of rule \
form and expressed just as numbers. ",
FontSize->24],
StyleBox["Mathematica",
FontSize->24,
FontSlant->"Italic"],
StyleBox[" makes this easy by intelligently applying /. across the nested \
list which is RL.",
FontSize->24]
}], "Text",
CellChangeTimes->{{3.466289746470099*^9, 3.466289759165419*^9}, {
3.4664505727403917`*^9, 3.4664506614671097`*^9}, {3.4664507593099413`*^9,
3.466450782650261*^9}},
FontSlant->"Italic"],
Cell[BoxData[
RowBox[{
RowBox[{"wRootList", " ", "=", " ",
RowBox[{"x", " ", "/.", " ", "wRL"}]}], ";"}]], "Input",
CellChangeTimes->{{3.4662897641297083`*^9, 3.4662897788223963`*^9}, {
3.466290108542562*^9, 3.466290108645464*^9}, {3.466450685812071*^9,
3.466450703505837*^9}, 3.466762015777066*^9, {3.466952519540032*^9,
3.46695254861392*^9}},
FontSize->24],
Cell[TextData[StyleBox["Evaluating numerically, we get",
FontSize->24]], "Text",
CellChangeTimes->{{3.466289903054167*^9, 3.466289929736965*^9}, {
3.46645078731557*^9, 3.466450792297505*^9}},
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"wGaussQuadratureNodes", " ", "=", " ",
RowBox[{"N", "[",
RowBox[{"wRootList", ",", "20"}], "]"}]}]], "Input",
CellChangeTimes->{{3.466289868875905*^9, 3.466289878670897*^9}, {
3.466290113454867*^9, 3.466290113540846*^9}, {3.466450797922271*^9,
3.466450812025423*^9}, 3.466950473171196*^9, {3.466952530938781*^9,
3.466952558753915*^9}},
FontSize->24],
Cell[BoxData[
RowBox[{"{",
RowBox[{
RowBox[{"{",
RowBox[{
"-", "0.3333333333333333333333333333333333333333333333333333333333`20."}],
"}"}], ",",
RowBox[{"{",
RowBox[{
RowBox[{
"-", "0.7688257800059041296651083232009167245174225085691237191163`20."}]\
, ",", "0.4831114942916184153793940374866310102317082228548380048306`20."}],
"}"}], ",",
RowBox[{"{",
RowBox[{
RowBox[{
"0.738998789836524682651546747770338965036551359351643149609`20.\
15051499783199", "+",
RowBox[{"0``20.28187127062492", " ", "\[ImaginaryI]"}]}], ",",
RowBox[{
RowBox[{
"-", "0.8861217680659852935256497663924557605545942215933839271806`20.\
15051499783199"}], "+",
RowBox[{"0``20.203021592462502", " ", "\[ImaginaryI]"}]}], ",",
RowBox[{
RowBox[{
"-", "0.1256042944978121163986242541051559317546844104855319497011`20.\
15051499783199"}], "+",
RowBox[{"0``21.05151050934787", " ", "\[ImaginaryI]"}]}]}], "}"}], ",",
RowBox[{"{",
RowBox[{
RowBox[{
RowBox[{
"-", "0.932703463864986293402891990361392968749797443336804156671`20.\
15051499783199"}], "+",
RowBox[{"0``20.180771408187553", " ", "\[ImaginaryI]"}]}], ",",
RowBox[{
RowBox[{
"-", "0.4476313722550711189073894296852910540829037320161324684977`20.\
15051499783199"}], "+",
RowBox[{"0``20.49959448137022", " ", "\[ImaginaryI]"}]}], ",",
RowBox[{
"0.2693549524692732880357729335210048645060782074256418117801`20.\
15051499783199", "+",
RowBox[{"0``20.72019003276233", " ", "\[ImaginaryI]"}]}], ",",
RowBox[{
"0.8443132169841174576078418198590124916599563012606281467219`20.\
15051499783199", "+",
RowBox[{"0``20.22401141000572", " ", "\[ImaginaryI]"}]}]}], "}"}]}],
"}"}]], "Output",
CellChangeTimes->{3.466952559588328*^9}]
}, Open ]]
}, Open ]],
Cell[CellGroupData[{
Cell["Weights for Gaussian Quadrature. ", "Subsection",
CellChangeTimes->{{3.466450879580562*^9, 3.466450886795114*^9}}],
Cell[TextData[{
StyleBox["We now have to figure out the appropriate (exact and numerical) \
weights for Gaussian quadrature. By construction, in the Gauss quadrature \
theorem, we know that \n\nA_i = Integral_a^b l_i(x). \n\nWe could be more \
clever about the algebra if we were doing this by hand, but ",
FontSize->24],
StyleBox["Mathematica",
FontSize->24,
FontSlant->"Italic"],
StyleBox[" is happy to construct and integrate the l_i for us. Suppose that \
x is the list of roots. Then we have\n\n",
FontSize->24],
StyleBox["L_i = ",
FontSize->36],
Cell[BoxData[
FormBox[
RowBox[{
UnderoverscriptBox["\[Product]",
RowBox[{"j", "=", "1"}], "n"],
FractionBox[
RowBox[{"x", " ", "-", " ",
SubscriptBox["x", "j"]}],
RowBox[{
SubscriptBox["x", "i"], "-",
SubscriptBox["x", "j"]}]]}], TraditionalForm]],
FontSize->36],
StyleBox[",",
FontSize->36],
"\n\n",
StyleBox["where j=i is supposed to be missing from the sum, but I don't know \
how to write that!",
FontSize->24]
}], "Text",
CellChangeTimes->{{3.4664508905092278`*^9, 3.466450926927966*^9}, {
3.466502102321617*^9, 3.466502225259839*^9}, {3.4665025561179247`*^9,
3.466502693611712*^9}},
FontSlant->"Italic"],
Cell[BoxData[
RowBox[{
RowBox[{
RowBox[{
RowBox[{"L", "[",
RowBox[{"i_", ",", "X_"}], "]"}], " ", ":=", "\[IndentingNewLine]",
RowBox[{
RowBox[{"If", "[",
RowBox[{
RowBox[{"i", ">", "1"}], ",",
RowBox[{"Product", "[",
RowBox[{
RowBox[{
RowBox[{"(",
RowBox[{"x", " ", "-", " ",
RowBox[{"X", "[",
RowBox[{"[", "j", "]"}], "]"}]}], ")"}], "/",
RowBox[{"(",
RowBox[{
RowBox[{"X", "[",
RowBox[{"[", "i", "]"}], "]"}], " ", "-", " ",
RowBox[{"X", "[",
RowBox[{"[", "j", "]"}], "]"}]}], ")"}]}], ",",
RowBox[{"{",
RowBox[{"j", ",", "1", ",",
RowBox[{"i", "-", "1"}]}], "}"}]}], "]"}], ",", "1"}], "]"}], "*",
"\[IndentingNewLine]",
RowBox[{"If", "[",
RowBox[{
RowBox[{"i", "<",
RowBox[{"Length", "[", "X", "]"}]}], ",",
RowBox[{"Product", "[",
RowBox[{
RowBox[{
RowBox[{"(",
RowBox[{"x", " ", "-", " ",
RowBox[{"X", "[",
RowBox[{"[", "j", "]"}], "]"}]}], ")"}], "/",
RowBox[{"(",
RowBox[{
RowBox[{"X", "[",
RowBox[{"[", "i", "]"}], "]"}], " ", "-", " ",
RowBox[{"X", "[",
RowBox[{"[", "j", "]"}], "]"}]}], ")"}]}], ",",
RowBox[{"{",
RowBox[{"j", ",",
RowBox[{"i", "+", "1"}], ",",
RowBox[{"Length", "[", "X", "]"}]}], "}"}]}], "]"}], ",", "1"}],
"]"}]}]}], ";"}], "\[IndentingNewLine]"}]], "Input",
CellChangeTimes->{{3.466502196607983*^9, 3.466502542296793*^9}, {
3.466502704656268*^9, 3.4665027052867413`*^9}, {3.466503066621882*^9,
3.466503067899097*^9}, {3.466503194100566*^9, 3.46650331903331*^9}},
FontSize->18],
Cell[TextData[StyleBox["We can now try this out:",
FontSize->24]], "Text",
CellChangeTimes->{{3.466502714851324*^9, 3.4665027264161158`*^9}},
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"wRootList", "[",
RowBox[{"[", "3", "]"}], "]"}]], "Input",
CellChangeTimes->{{3.4665033728387957`*^9, 3.466503391337256*^9},
3.46695262288346*^9},
FontSize->18],
Cell[BoxData[
RowBox[{"{",
RowBox[{
RowBox[{
RowBox[{"-",
FractionBox["1", "11"]}], "+",
FractionBox[
RowBox[{"4", " ",
SuperscriptBox["5",
RowBox[{"2", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["3", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}]], "+",
FractionBox[
RowBox[{"4", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["5", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox["3",
RowBox[{"2", "/", "3"}]]}]]}], ",",
RowBox[{
RowBox[{"-",
FractionBox["1", "11"]}], "-",
FractionBox[
RowBox[{"2", " ",
SuperscriptBox["5",
RowBox[{"2", "/", "3"}]], " ",
RowBox[{"(",
RowBox[{"1", "+",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}]}],
RowBox[{"11", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["3", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}]], "-",
FractionBox[
RowBox[{"2", " ",
RowBox[{"(",
RowBox[{"1", "-",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}], " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["5", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox["3",
RowBox[{"2", "/", "3"}]]}]]}], ",",
RowBox[{
RowBox[{"-",
FractionBox["1", "11"]}], "-",
FractionBox[
RowBox[{"2", " ",
SuperscriptBox["5",
RowBox[{"2", "/", "3"}]], " ",
RowBox[{"(",
RowBox[{"1", "-",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}]}],
RowBox[{"11", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["3", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}]], "-",
FractionBox[
RowBox[{"2", " ",
RowBox[{"(",
RowBox[{"1", "+",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}], " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["5", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox["3",
RowBox[{"2", "/", "3"}]]}]]}]}], "}"}]], "Output",
CellChangeTimes->{{3.466503384475108*^9, 3.466503391944846*^9},
3.466762915903345*^9, 3.4667638281587133`*^9, 3.4669505441745872`*^9,
3.466952623300234*^9},
FontSize->18]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"L", "[",
RowBox[{"1", ",",
RowBox[{"wRootList", "[",
RowBox[{"[", "3", "]"}], "]"}]}], "]"}]], "Input",
CellChangeTimes->{{3.4665034023533983`*^9, 3.466503409264325*^9},
3.466952628626408*^9},
FontSize->18],
Cell[BoxData[
RowBox[{
RowBox[{"(",
RowBox[{
RowBox[{"(",
RowBox[{
FractionBox["1", "11"], "+",
FractionBox[
RowBox[{"2", " ",
SuperscriptBox["5",
RowBox[{"2", "/", "3"}]], " ",
RowBox[{"(",
RowBox[{"1", "+",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}]}],
RowBox[{"11", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["3", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}]], "+",
FractionBox[
RowBox[{"2", " ",
RowBox[{"(",
RowBox[{"1", "-",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}], " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["5", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox["3",
RowBox[{"2", "/", "3"}]]}]], "+", "x"}], ")"}], " ",
RowBox[{"(",
RowBox[{
FractionBox["1", "11"], "+",
FractionBox[
RowBox[{"2", " ",
SuperscriptBox["5",
RowBox[{"2", "/", "3"}]], " ",
RowBox[{"(",
RowBox[{"1", "-",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}]}],
RowBox[{"11", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["3", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}]], "+",
FractionBox[
RowBox[{"2", " ",
RowBox[{"(",
RowBox[{"1", "+",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}], " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["5", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox["3",
RowBox[{"2", "/", "3"}]]}]], "+", "x"}], ")"}]}], ")"}], "/",
RowBox[{"(",
RowBox[{
RowBox[{"(",
RowBox[{
FractionBox[
RowBox[{"4", " ",
SuperscriptBox["5",
RowBox[{"2", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["3", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}]], "+",
FractionBox[
RowBox[{"2", " ",
SuperscriptBox["5",
RowBox[{"2", "/", "3"}]], " ",
RowBox[{"(",
RowBox[{"1", "+",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}]}],
RowBox[{"11", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["3", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}]], "+",
FractionBox[
RowBox[{"4", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["5", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox["3",
RowBox[{"2", "/", "3"}]]}]], "+",
FractionBox[
RowBox[{"2", " ",
RowBox[{"(",
RowBox[{"1", "-",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}], " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["5", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox["3",
RowBox[{"2", "/", "3"}]]}]]}], ")"}], " ",
RowBox[{"(",
RowBox[{
FractionBox[
RowBox[{"4", " ",
SuperscriptBox["5",
RowBox[{"2", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["3", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}]], "+",
FractionBox[
RowBox[{"2", " ",
SuperscriptBox["5",
RowBox[{"2", "/", "3"}]], " ",
RowBox[{"(",
RowBox[{"1", "-",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}]}],
RowBox[{"11", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["3", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}]], "+",
FractionBox[
RowBox[{"4", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["5", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox["3",
RowBox[{"2", "/", "3"}]]}]], "+",
FractionBox[
RowBox[{"2", " ",
RowBox[{"(",
RowBox[{"1", "+",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}], " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["5", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox["3",
RowBox[{"2", "/", "3"}]]}]]}], ")"}]}], ")"}]}]], "Output",
CellChangeTimes->{3.466503409740253*^9, 3.466762915956633*^9,
3.466763828211631*^9, 3.466950544211378*^9, 3.466952629472905*^9},
FontSize->18]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"L", "[",
RowBox[{"2", ",",
RowBox[{"wRootList", "[",
RowBox[{"[", "3", "]"}], "]"}]}], "]"}]], "Input",
CellChangeTimes->{{3.466503422306962*^9, 3.466503428230654*^9},
3.466952634994677*^9},
FontSize->18],
Cell[BoxData[
RowBox[{
RowBox[{"(",
RowBox[{
RowBox[{"(",
RowBox[{
FractionBox["1", "11"], "-",
FractionBox[
RowBox[{"4", " ",
SuperscriptBox["5",
RowBox[{"2", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["3", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}]], "-",
FractionBox[
RowBox[{"4", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["5", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox["3",
RowBox[{"2", "/", "3"}]]}]], "+", "x"}], ")"}], " ",
RowBox[{"(",
RowBox[{
FractionBox["1", "11"], "+",
FractionBox[
RowBox[{"2", " ",
SuperscriptBox["5",
RowBox[{"2", "/", "3"}]], " ",
RowBox[{"(",
RowBox[{"1", "-",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}]}],
RowBox[{"11", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["3", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}]], "+",
FractionBox[
RowBox[{"2", " ",
RowBox[{"(",
RowBox[{"1", "+",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}], " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["5", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox["3",
RowBox[{"2", "/", "3"}]]}]], "+", "x"}], ")"}]}], ")"}], "/",
RowBox[{"(",
RowBox[{
RowBox[{"(",
RowBox[{
RowBox[{"-",
FractionBox[
RowBox[{"4", " ",
SuperscriptBox["5",
RowBox[{"2", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["3", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}]]}], "-",
FractionBox[
RowBox[{"2", " ",
SuperscriptBox["5",
RowBox[{"2", "/", "3"}]], " ",
RowBox[{"(",
RowBox[{"1", "+",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}]}],
RowBox[{"11", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["3", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}]], "-",
FractionBox[
RowBox[{"4", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["5", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox["3",
RowBox[{"2", "/", "3"}]]}]], "-",
FractionBox[
RowBox[{"2", " ",
RowBox[{"(",
RowBox[{"1", "-",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}], " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["5", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox["3",
RowBox[{"2", "/", "3"}]]}]]}], ")"}], " ",
RowBox[{"(",
RowBox[{
FractionBox[
RowBox[{"2", " ",
SuperscriptBox["5",
RowBox[{"2", "/", "3"}]], " ",
RowBox[{"(",
RowBox[{"1", "-",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}]}],
RowBox[{"11", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["3", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}]], "-",
FractionBox[
RowBox[{"2", " ",
SuperscriptBox["5",
RowBox[{"2", "/", "3"}]], " ",
RowBox[{"(",
RowBox[{"1", "+",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}]}],
RowBox[{"11", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["3", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}]], "-",
FractionBox[
RowBox[{"2", " ",
RowBox[{"(",
RowBox[{"1", "-",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}], " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["5", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox["3",
RowBox[{"2", "/", "3"}]]}]], "+",
FractionBox[
RowBox[{"2", " ",
RowBox[{"(",
RowBox[{"1", "+",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}], " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["5", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox["3",
RowBox[{"2", "/", "3"}]]}]]}], ")"}]}], ")"}]}]], "Output",
CellChangeTimes->{3.466503428700981*^9, 3.466762915989499*^9,
3.466763828244611*^9, 3.466950544274782*^9, 3.4669526355239353`*^9},
FontSize->18]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"L", "[",
RowBox[{"3", ",",
RowBox[{"wRootList", "[",
RowBox[{"[", "3", "]"}], "]"}]}], "]"}]], "Input",
CellChangeTimes->{{3.466503434988399*^9, 3.4665034425975943`*^9},
3.466952640066927*^9},
FontSize->18],
Cell[BoxData[
RowBox[{
RowBox[{"(",
RowBox[{
RowBox[{"(",
RowBox[{
FractionBox["1", "11"], "-",
FractionBox[
RowBox[{"4", " ",
SuperscriptBox["5",
RowBox[{"2", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["3", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}]], "-",
FractionBox[
RowBox[{"4", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["5", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox["3",
RowBox[{"2", "/", "3"}]]}]], "+", "x"}], ")"}], " ",
RowBox[{"(",
RowBox[{
FractionBox["1", "11"], "+",
FractionBox[
RowBox[{"2", " ",
SuperscriptBox["5",
RowBox[{"2", "/", "3"}]], " ",
RowBox[{"(",
RowBox[{"1", "+",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}]}],
RowBox[{"11", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["3", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}]], "+",
FractionBox[
RowBox[{"2", " ",
RowBox[{"(",
RowBox[{"1", "-",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}], " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["5", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox["3",
RowBox[{"2", "/", "3"}]]}]], "+", "x"}], ")"}]}], ")"}], "/",
RowBox[{"(",
RowBox[{
RowBox[{"(",
RowBox[{
RowBox[{"-",
FractionBox[
RowBox[{"4", " ",
SuperscriptBox["5",
RowBox[{"2", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["3", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}]]}], "-",
FractionBox[
RowBox[{"2", " ",
SuperscriptBox["5",
RowBox[{"2", "/", "3"}]], " ",
RowBox[{"(",
RowBox[{"1", "-",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}]}],
RowBox[{"11", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["3", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}]], "-",
FractionBox[
RowBox[{"4", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["5", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox["3",
RowBox[{"2", "/", "3"}]]}]], "-",
FractionBox[
RowBox[{"2", " ",
RowBox[{"(",
RowBox[{"1", "+",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}], " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["5", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox["3",
RowBox[{"2", "/", "3"}]]}]]}], ")"}], " ",
RowBox[{"(",
RowBox[{
RowBox[{"-",
FractionBox[
RowBox[{"2", " ",
SuperscriptBox["5",
RowBox[{"2", "/", "3"}]], " ",
RowBox[{"(",
RowBox[{"1", "-",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}]}],
RowBox[{"11", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["3", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}]]}], "+",
FractionBox[
RowBox[{"2", " ",
SuperscriptBox["5",
RowBox[{"2", "/", "3"}]], " ",
RowBox[{"(",
RowBox[{"1", "+",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}]}],
RowBox[{"11", " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["3", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}]], "+",
FractionBox[
RowBox[{"2", " ",
RowBox[{"(",
RowBox[{"1", "-",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}], " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["5", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox["3",
RowBox[{"2", "/", "3"}]]}]], "-",
FractionBox[
RowBox[{"2", " ",
RowBox[{"(",
RowBox[{"1", "+",
RowBox[{"\[ImaginaryI]", " ",
SqrtBox["3"]}]}], ")"}], " ",
SuperscriptBox[
RowBox[{"(",
RowBox[{
FractionBox["5", "7"], " ",
RowBox[{"(",
RowBox[{"3", "+",
RowBox[{"11", " ", "\[ImaginaryI]", " ",
SqrtBox["6"]}]}], ")"}]}], ")"}],
RowBox[{"1", "/", "3"}]]}],
RowBox[{"11", " ",
SuperscriptBox["3",
RowBox[{"2", "/", "3"}]]}]]}], ")"}]}], ")"}]}]], "Output",
CellChangeTimes->{3.466503443321682*^9, 3.466762916025062*^9,
3.4667638282824993`*^9, 3.4669505443253613`*^9, 3.466952641189247*^9},
FontSize->18]
}, Open ]],
Cell[TextData[StyleBox["We can now build a table of all the L_i with a couple \
of nested Table commands (you don't want to look at it):",
FontSize->24]], "Text",
CellChangeTimes->{{3.46650346506092*^9, 3.466503486817503*^9}, {
3.466503544528446*^9, 3.466503549637021*^9}},
FontSlant->"Italic"],
Cell[BoxData[
RowBox[{
RowBox[{"wLTable", " ", "=", " ",
RowBox[{"Table", "[", "\[IndentingNewLine]",
RowBox[{
RowBox[{"Table", "[",
RowBox[{
RowBox[{"L", "[",
RowBox[{"i", ",",
RowBox[{"wRootList", "[",
RowBox[{"[", "j", "]"}], "]"}]}], "]"}], ",",
RowBox[{"{",
RowBox[{"i", ",", "1", ",",
RowBox[{"Length", "[",
RowBox[{"wRootList", "[",
RowBox[{"[", "j", "]"}], "]"}], "]"}]}], "}"}]}], "]"}], ",",
"\[IndentingNewLine]",
RowBox[{"{",
RowBox[{"j", ",", "2", ",", "4"}], "}"}]}], "]"}]}], ";"}]], "Input",
CellChangeTimes->{{3.466502730033963*^9, 3.4665027948610077`*^9}, {
3.4665029891357327`*^9, 3.466503044626418*^9}, {3.466503078377734*^9,
3.466503078456807*^9}, {3.466503114351598*^9, 3.4665031601548433`*^9}, {
3.466503334048805*^9, 3.466503334111837*^9}, 3.466503365980474*^9, {
3.466503490336979*^9, 3.4665034954837*^9}, 3.466762037161282*^9, {
3.466762072678611*^9, 3.466762075956373*^9}, {3.4667624468358803`*^9,
3.46676245067307*^9}, {3.466762826416521*^9, 3.466762830950488*^9},
3.466854182846998*^9, {3.466952648269127*^9, 3.4669526665505943`*^9}, {
3.4669529928282537`*^9, 3.4669529945703783`*^9}},
FontSize->18],
Cell[TextData[StyleBox["We now want to integrate the L_i to get the weights \
A_i for Gauss Quadrature. For instance,",
FontSize->24]], "Text",
CellChangeTimes->{{3.466503656406712*^9, 3.466503678387536*^9}, {
3.466503723490416*^9, 3.46650372621601*^9}},
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"N", "[",
RowBox[{
RowBox[{"Integrate", "[",
RowBox[{
RowBox[{"L", "[",
RowBox[{"3", ",",
RowBox[{"wRootList", "[",
RowBox[{"[", "3", "]"}], "]"}]}], "]"}], ",",
RowBox[{"{",
RowBox[{"x", ",",
RowBox[{"-", "1"}], ",", "1"}], "}"}]}], "]"}], ",", "20"}],
"]"}]], "Input",
CellChangeTimes->{{3.466503682230835*^9, 3.466503701372311*^9},
3.466952996554192*^9, {3.466953092035544*^9, 3.466953095522599*^9}},
FontSize->18],
Cell[BoxData[
RowBox[{"0.9779078620263132941131418405037705886478488527926177435143`20.\
15051499783199", "+",
RowBox[{"0``20.160217060118605", " ", "\[ImaginaryI]"}]}]], "Output",
CellChangeTimes->{3.466503702051653*^9, 3.466762083827675*^9,
3.466762453609177*^9, 3.4667628491584*^9, 3.4667629164845953`*^9,
3.466763828775498*^9, 3.466950544412734*^9, 3.466953013022143*^9,
3.466953102669259*^9},
FontSize->18]
}, Open ]],
Cell[TextData[StyleBox["In general, we should make a table of integrals, of \
course:",
FontSize->24]], "Text",
CellChangeTimes->{{3.466503732783721*^9, 3.46650374806253*^9}},
FontSlant->"Italic"],
Cell[BoxData[
RowBox[{
RowBox[{"wATable", " ", "=", " ",
RowBox[{"Integrate", "[",
RowBox[{"wLTable", ",",
RowBox[{"{",
RowBox[{"x", ",",
RowBox[{"-", "1"}], ",", "1"}], "}"}]}], "]"}]}], ";"}]], "Input",
CellChangeTimes->{{3.466503750590808*^9, 3.466503759126977*^9}, {
3.4665037991104393`*^9, 3.4665038014278584`*^9}, 3.466763579223995*^9, {
3.466953076349379*^9, 3.466953078195953*^9}, {3.4669531091227407`*^9,
3.466953115617338*^9}},
FontSize->18],
Cell[TextData[StyleBox["Remember that the RootList table starts with the \
polynomial x, with single root 0, while the LTable and ATable start one \
degree higher. To keep our notation straight, we just prepend a fake weight \
to the table.",
FontSize->24]], "Text",
CellChangeTimes->{{3.466504487515621*^9, 3.466504544053706*^9}},
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[{
RowBox[{
RowBox[{"wATable", " ", "=", " ",
RowBox[{"Prepend", "[",
RowBox[{"wATable", ",", "0"}], "]"}]}], ";"}], "\[IndentingNewLine]",
RowBox[{"N", "[",
RowBox[{"wATable", ",", "20"}], "]"}]}], "Input",
CellChangeTimes->{{3.4665044288350697`*^9, 3.4665044752123737`*^9},
3.4667635731929703`*^9, {3.4669531188251677`*^9, 3.466953133462859*^9}},
FontSize->18],
Cell[BoxData[
RowBox[{"{",
RowBox[{"0", ",",
RowBox[{"{",
RowBox[{
"0.7717822677061807860595959238329991108530230437508403107388`20.", ",",
"1.2282177322938192139404040761670008891469769562491596892612`20."}],
"}"}], ",",
RowBox[{"{",
RowBox[{
RowBox[{
"0.6328930580071868634274500334445138311120472766157660035545`20.\
15051499783199", "+",
RowBox[{"0``20.349184665762607", " ", "\[ImaginaryI]"}]}], ",",
RowBox[{
"0.3891990799664998424594081260517155802401099739371212408694`20.\
15051499783199", "+",
RowBox[{"0``20.560343192869656", " ", "\[ImaginaryI]"}]}], ",",
RowBox[{
"0.9779078620263132941131418405037705886478438225908753961939`20.\
15051499783199", "+",
RowBox[{"0``20.160217060118605", " ", "\[ImaginaryI]"}]}]}], "}"}], ",",
RowBox[{"{",
RowBox[{
RowBox[{
"0.2320354379891957524513633444281516583427821961643119757046`20.\
15051499783199", "+",
RowBox[{"0``20.78496067954529", " ", "\[ImaginaryI]"}]}], ",",
RowBox[{
"0.6756518807855574795030430284035284252530538989800184902305`20.\
15051499783199", "+",
RowBox[{"0``20.320792007800687", " ", "\[ImaginaryI]"}]}], ",",
RowBox[{
"0.7016001393831765758404075367311474054149729423618537503022`20.\
15051499783199", "+",
RowBox[{"0``20.304425331195016", " ", "\[ImaginaryI]"}]}], ",",
RowBox[{
"0.3907125418420701922051860904534326864328454846023224831291`20.\
15051499783199", "+",
RowBox[{"0``20.558657645564512", " ", "\[ImaginaryI]"}]}]}], "}"}]}],
"}"}]], "Output",
CellChangeTimes->{3.466953619830906*^9}]
}, Open ]]
}, Open ]],
Cell[CellGroupData[{
Cell["Testing the Gaussian Quadrature Rule (exactly)", "Subsection",
CellChangeTimes->{{3.4662893246864223`*^9, 3.4662893353872633`*^9}, {
3.466450825361017*^9, 3.466450835822694*^9}, 3.4669536744886837`*^9}],
Cell[TextData[StyleBox["We now have tables of nodes (wRootList and \
wGaussQuadratureNodes) and weights (wATable) for the weighted Gauss \
quadrature rules with between 2 and 5 nodes. The n node formula should \
correctly integrate all polynomials up to degree 2n -1. \n\nOf course, it \
will be no fun whatsoever unless we actually test this hypothesis on some \
real examples. First, we code the actual Gauss quadrature rule:",
FontSize->24]], "Text",
CellChangeTimes->{{3.466289342853265*^9, 3.466289362913412*^9}, {
3.466289437484515*^9, 3.4662895453882437`*^9}, {3.466289944099111*^9,
3.466290028266542*^9}, {3.466450839374762*^9, 3.466450866596517*^9}, {
3.4665038145401278`*^9, 3.466503938832987*^9}, {3.46650402050117*^9,
3.466504031226389*^9}, {3.466953677736713*^9, 3.4669537045653067`*^9}},
FontSlant->"Italic"],
Cell[CellGroupData[{
Cell[BoxData[{
RowBox[{"N", "[",
RowBox[{"wATable", "[",
RowBox[{"[", "3", "]"}], "]"}], "]"}], "\[IndentingNewLine]",
RowBox[{"N", "[",
RowBox[{"wRootList", "[",
RowBox[{"[", "3", "]"}], "]"}], "]"}]}], "Input",
CellChangeTimes->{{3.466953836369624*^9, 3.466953865315238*^9}}],
Cell[BoxData[
RowBox[{"{",
RowBox[{
RowBox[{"0.632893058007187`", "\[InvisibleSpace]", "+",
RowBox[{"0.`", " ", "\[ImaginaryI]"}]}], ",",
RowBox[{"0.3891990799665`", "\[InvisibleSpace]", "-",
RowBox[{"8.694461958684523`*^-17", " ", "\[ImaginaryI]"}]}], ",",
RowBox[{"0.9779078620263136`", "\[InvisibleSpace]", "+",
RowBox[{"2.6083385876053567`*^-16", " ", "\[ImaginaryI]"}]}]}],
"}"}]], "Output",
CellChangeTimes->{{3.4669538471413317`*^9, 3.466953865715365*^9}}],
Cell[BoxData[
RowBox[{"{",
RowBox[{
RowBox[{"0.7389987898365248`", "\[InvisibleSpace]", "+",
RowBox[{"0.`", " ", "\[ImaginaryI]"}]}], ",",
RowBox[{
RowBox[{"-", "0.8861217680659854`"}], "+",
RowBox[{"5.551115123125783`*^-17", " ", "\[ImaginaryI]"}]}], ",",
RowBox[{
RowBox[{"-", "0.12560429449781216`"}], "+",
RowBox[{"0.`", " ", "\[ImaginaryI]"}]}]}], "}"}]], "Output",
CellChangeTimes->{{3.4669538471413317`*^9, 3.466953865717897*^9}}]
}, Open ]],
Cell[BoxData[
RowBox[{
StyleBox["\[IndentingNewLine]",
FontSize->18],
RowBox[{
RowBox[{
RowBox[{
StyleBox[
RowBox[{
StyleBox["w",
FontSize->18],
StyleBox["GaussQuadrature",
FontSize->24]}]],
StyleBox["[",
FontSize->24],
StyleBox[
RowBox[{"f_", ",", "n_"}],
FontSize->24],
StyleBox["]",
FontSize->24]}],
StyleBox[" ",
FontSize->24],
StyleBox[":=",
FontSize->24],
StyleBox[" ",
FontSize->24],
RowBox[{
StyleBox["Sum",
FontSize->24],
StyleBox["[",
FontSize->24],
RowBox[{
RowBox[{
StyleBox[
RowBox[{"wATable", "[",
RowBox[{"[",
RowBox[{"n", ",", "i"}], "]"}], "]"}],
FontSize->24],
StyleBox["*",
FontSize->24],
RowBox[{
StyleBox["(",
FontSize->24],
RowBox[{
StyleBox["f",
FontSize->24],
StyleBox[" ",
FontSize->24],
StyleBox["/.",
FontSize->24],
StyleBox[" ",
FontSize->24],
RowBox[{
StyleBox["{",
FontSize->24],
RowBox[{
StyleBox["x",
FontSize->24],
StyleBox[" ",
FontSize->24],
StyleBox["\[Rule]",
FontSize->24],
RowBox[{
StyleBox[
RowBox[{"w",
StyleBox["RootList",
FontSize->24]}]],
StyleBox["[",
FontSize->24],
StyleBox[
RowBox[{"[",
RowBox[{"n", ",", "i"}], "]"}],
FontSize->24],
StyleBox["]",
FontSize->24]}]}],
StyleBox["}",
FontSize->24]}]}],
StyleBox[")",
FontSize->24]}]}],
StyleBox[",",
FontSize->24],
StyleBox[
RowBox[{"{",
RowBox[{"i", ",", "1", ",",
RowBox[{"Length", "[",
RowBox[{
StyleBox[
RowBox[{"w", "RootList"}]], "[",
RowBox[{"[", "n", "]"}], "]"}], "]"}]}], "}"}],
FontSize->24]}],
StyleBox["]",
FontSize->24]}]}],
StyleBox[";",
FontSize->24]}]}]], "Input",
CellChangeTimes->{{3.4593569823699703`*^9, 3.459357060924468*^9}, {
3.459357125913353*^9, 3.459357242135627*^9}, {3.459357282638081*^9,
3.459357287498719*^9}, {3.459357327354567*^9, 3.459357418675777*^9}, {
3.4593574512799788`*^9, 3.459357533754788*^9}, {3.4593575910701027`*^9,
3.4593578296705017`*^9}, {3.4593578661205397`*^9, 3.459358004695141*^9}, {
3.459358095085375*^9, 3.459358097142673*^9}, {3.4593581351365757`*^9,
3.4593582071607447`*^9}, {3.459358240852594*^9, 3.459358326449738*^9}, {
3.4593584120244627`*^9, 3.459358436914117*^9}, {3.4593586611555157`*^9,
3.459358714250257*^9}, 3.4594348852639112`*^9, {3.4594349462914133`*^9,
3.459434950679678*^9}, {3.459435003099393*^9, 3.4594350039682817`*^9},
3.459435086775653*^9, 3.459605884824007*^9, 3.459605920241057*^9, {
3.459606896996472*^9, 3.459606923242097*^9}, {3.459606976945345*^9,
3.4596069805766363`*^9}, {3.460711823893104*^9, 3.4607119174122267`*^9}, {
3.460712041643588*^9, 3.460712067016101*^9}, {3.4607121074082747`*^9,
3.460712205911663*^9}, {3.460712237522114*^9, 3.460712399948258*^9}, {
3.460712448574892*^9, 3.460712503761948*^9}, {3.460723642260371*^9,
3.460723846467607*^9}, {3.460723928394636*^9, 3.460723931884945*^9}, {
3.4607239645831623`*^9, 3.460723964661027*^9}, {3.460724010427746*^9,
3.4607240153132277`*^9}, {3.460724049319186*^9, 3.460724075660923*^9}, {
3.460724156210074*^9, 3.46072440087633*^9}, {3.4607246148168793`*^9,
3.460724637251401*^9}, {3.460724722342664*^9, 3.460724749594469*^9}, {
3.460725252497422*^9, 3.460725257104268*^9}, {3.460725462883502*^9,
3.460725462957391*^9}, {3.4607255067444983`*^9, 3.460725544954211*^9}, {
3.460726398679769*^9, 3.460726402398378*^9}, {3.4607264900948553`*^9,
3.4607264901745653`*^9}, {3.4607265294878273`*^9,
3.4607266215497017`*^9}, {3.4607266525953207`*^9, 3.460726681753384*^9}, {
3.460726752152919*^9, 3.4607267894035387`*^9}, {3.460726855113059*^9,
3.460726869029655*^9}, {3.46072691208464*^9, 3.4607269130429163`*^9}, {
3.462810496255804*^9, 3.4628106689504423`*^9}, {3.4628107717913227`*^9,
3.4628109235808897`*^9}, {3.462810983700308*^9, 3.4628110766815243`*^9}, {
3.462811127076709*^9, 3.4628111528220673`*^9}, {3.462811229670088*^9,
3.462811293001821*^9}, {3.46283378934337*^9, 3.4628337951398773`*^9}, {
3.4631290526031237`*^9, 3.463129546157691*^9}, {3.463129580196995*^9,
3.4631296579474783`*^9}, {3.463129719884845*^9, 3.463129728505199*^9}, {
3.463129770568388*^9, 3.463129778902116*^9}, 3.4631298155788097`*^9, {
3.463129981040122*^9, 3.463129996098414*^9}, {3.463267897707822*^9,
3.4632680814171467`*^9}, {3.464955922484514*^9, 3.464955941574931*^9}, {
3.464955973439563*^9, 3.464955975390871*^9}, {3.464956013341967*^9,
3.464956044843781*^9}, {3.465053231859507*^9, 3.465053250147496*^9}, {
3.4650560793532047`*^9, 3.4650560797597427`*^9}, {3.465056664390491*^9,
3.4650566960111723`*^9}, 3.4650569376592827`*^9, {3.465056970289137*^9,
3.465056972239704*^9}, {3.465057167971636*^9, 3.465057170744871*^9}, {
3.465058711700664*^9, 3.465058743481477*^9}, {3.4650589543877163`*^9,
3.465058954713431*^9}, {3.465059148797021*^9, 3.465059199586472*^9}, {
3.466290120418395*^9, 3.4662901934840183`*^9}, {3.466290224439309*^9,
3.4662902801611233`*^9}, {3.466290426849051*^9, 3.466290465499984*^9}, {
3.466503949089745*^9, 3.4665040085749474`*^9}, {3.466504091198346*^9,
3.466504143470744*^9}, {3.466504233066687*^9, 3.466504235568334*^9}, {
3.466504271143498*^9, 3.466504273452917*^9}, {3.466953708992591*^9,
3.4669537185077677`*^9}},
FontSize->18],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"N", "[",
RowBox[{
RowBox[{"wGaussQuadrature", "[",
RowBox[{
RowBox[{
RowBox[{"(",
RowBox[{
RowBox[{"x", "^", "2"}], " ", "+", " ",
RowBox[{"5", "x"}], " ", "+", " ", "2"}], ")"}], "/",
RowBox[{"Sqrt", "[",
RowBox[{"1", "+", "x"}], "]"}]}], ",", "2"}], "]"}], ",", "20"}],
"]"}]], "Input",
CellChangeTimes->{{3.466953727704487*^9, 3.46695376937013*^9}, {
3.466953811329177*^9, 3.4669538175282373`*^9}, {3.466954272192306*^9,
3.466954294957432*^9}},
FontSize->18],
Cell[BoxData["2.6772515792729386289584732989948671563666238639083657185368`20.\
"], "Output",
CellChangeTimes->{{3.46695375552374*^9, 3.466953769664695*^9}, {
3.466953811979108*^9, 3.4669538178230667`*^9}, {3.466954272580468*^9,
3.466954295455677*^9}}]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"N", "[",
RowBox[{
RowBox[{"Integrate", "[",
RowBox[{
RowBox[{
RowBox[{"(",
RowBox[{
RowBox[{"x", "^", "2"}], "+",
RowBox[{"5", "x"}], "+", "2"}], ")"}], "/",
RowBox[{"Sqrt", "[",
RowBox[{"1", "+", "x"}], "]"}]}], ",",
RowBox[{"{",
RowBox[{"x", ",",
RowBox[{"-", "1"}], ",", "1"}], "}"}]}], "]"}], ",", "20"}],
"]"}]], "Input",
CellChangeTimes->{{3.46695377496241*^9, 3.466953795136936*^9}}],
Cell[BoxData["2.2627416997969520780827019587355169257114750006031169170829`20.\
"], "Output",
CellChangeTimes->{3.466953795932057*^9, 3.466954278741207*^9}]
}, Open ]]
}, Open ]]
}, Open ]]
}, Open ]]
},
WindowSize->{1070, 966},
WindowMargins->{{Automatic, 357}, {Automatic, 0}},
FrontEndVersion->"7.0 for Mac OS X x86 (32-bit) (November 11, 2008)",
StyleDefinitions->"Default.nb"
]
(* End of Notebook Content *)
(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{}
*)
(*CellTagsIndex
CellTagsIndex->{}
*)
(*NotebookFileOutline
Notebook[{
Cell[CellGroupData[{
Cell[567, 22, 622, 8, 76, "Title"],
Cell[CellGroupData[{
Cell[1214, 34, 160, 2, 67, "Section"],
Cell[1377, 38, 1150, 23, 65, "Text"],
Cell[2530, 63, 860, 22, 35, "Input"],
Cell[3393, 87, 220, 4, 38, "Text"],
Cell[CellGroupData[{
Cell[3638, 95, 416, 12, 33, "Input"],
Cell[4057, 109, 275, 6, 55, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[4369, 120, 290, 8, 33, "Input"],
Cell[4662, 130, 198, 4, 31, "Output"]
}, Open ]]
}, Open ]],
Cell[CellGroupData[{
Cell[4909, 140, 119, 1, 67, "Section"],
Cell[5031, 143, 567, 8, 146, "Text"],
Cell[5601, 153, 1123, 32, 82, "Input"],
Cell[6727, 187, 210, 4, 38, "Text"],
Cell[CellGroupData[{
Cell[6962, 195, 294, 7, 33, "Input"],
Cell[7259, 204, 260, 5, 39, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[7556, 214, 241, 7, 33, "Input"],
Cell[7800, 223, 264, 7, 55, "Output"]
}, Open ]]
}, Open ]],
Cell[CellGroupData[{
Cell[8113, 236, 113, 1, 67, "Section"],
Cell[8229, 239, 205, 4, 38, "Text"],
Cell[CellGroupData[{
Cell[8459, 247, 1145, 27, 190, "Input"],
Cell[9607, 276, 5763, 190, 581, "Output"]
}, Open ]],
Cell[15385, 469, 234, 4, 38, "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell[15656, 478, 192, 2, 67, "Section"],
Cell[15851, 482, 501, 13, 65, "Text"],
Cell[16355, 497, 1551, 58, 39, "Input"],
Cell[17909, 557, 753, 20, 119, "Text"],
Cell[18665, 579, 327, 7, 39, "Input"],
Cell[18995, 588, 217, 4, 38, "Text"],
Cell[19215, 594, 361, 8, 39, "Input"]
}, Open ]],
Cell[CellGroupData[{
Cell[19613, 607, 118, 1, 67, "Section"],
Cell[19734, 610, 1245, 35, 415, "Text"],
Cell[20982, 647, 1879, 52, 104, "Input"],
Cell[22864, 701, 165, 3, 38, "Text"],
Cell[CellGroupData[{
Cell[23054, 708, 167, 4, 33, "Input"],
Cell[23224, 714, 331, 10, 70, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[23592, 729, 221, 6, 33, "Input"],
Cell[23816, 737, 418, 15, 74, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[24271, 757, 219, 6, 33, "Input"],
Cell[24493, 765, 314, 10, 74, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[24844, 780, 221, 6, 33, "Input"],
Cell[25068, 788, 296, 9, 74, "Output"]
}, Open ]],
Cell[25379, 800, 299, 5, 65, "Text"],
Cell[25681, 807, 1182, 27, 80, "Input"],
Cell[26866, 836, 280, 5, 38, "Text"],
Cell[CellGroupData[{
Cell[27171, 845, 365, 11, 33, "Input"],
Cell[27539, 858, 243, 5, 55, "Output"]
}, Open ]],
Cell[27797, 866, 199, 4, 38, "Text"],
Cell[27999, 872, 392, 10, 33, "Input"],
Cell[28394, 884, 355, 6, 92, "Text"],
Cell[28752, 892, 260, 7, 33, "Input"]
}, Open ]],
Cell[CellGroupData[{
Cell[29049, 904, 191, 2, 67, "Section"],
Cell[29243, 908, 775, 12, 173, "Text"],
Cell[30021, 922, 4500, 78, 116, "Input"],
Cell[34524, 1002, 157, 3, 38, "Text"],
Cell[CellGroupData[{
Cell[34706, 1009, 492, 9, 39, "Input"],
Cell[35201, 1020, 773, 22, 92, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[36011, 1047, 235, 6, 39, "Input"],
Cell[36249, 1055, 156, 3, 39, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[36442, 1063, 269, 8, 39, "Input"],
Cell[36714, 1073, 156, 3, 39, "Output"]
}, Open ]],
Cell[36885, 1079, 523, 8, 38, "Text"],
Cell[CellGroupData[{
Cell[37433, 1091, 704, 20, 100, "Input"],
Cell[38140, 1113, 256, 5, 47, "Output"],
Cell[38399, 1120, 258, 5, 47, "Output"]
}, Open ]]
}, Open ]],
Cell[CellGroupData[{
Cell[38706, 1131, 181, 3, 71, "Section"],
Cell[38890, 1136, 278, 5, 38, "Text"],
Cell[39171, 1143, 437, 13, 35, "Input"],
Cell[CellGroupData[{
Cell[39633, 1160, 589, 11, 33, "Input"],
Cell[40225, 1173, 593, 14, 88, "Output"]
}, Open ]],
Cell[40833, 1190, 340, 6, 38, "Text"],
Cell[CellGroupData[{
Cell[41198, 1200, 312, 9, 33, "Input"],
Cell[41513, 1211, 272, 5, 33, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[41822, 1221, 343, 11, 33, "Input"],
Cell[42168, 1234, 221, 4, 33, "Output"]
}, Open ]],
Cell[42404, 1241, 264, 4, 65, "Text"],
Cell[CellGroupData[{
Cell[42693, 1249, 2097, 77, 190, "Input"],
Cell[44793, 1328, 318, 7, 39, "Output"],
Cell[45114, 1337, 1276, 31, 548, "Output"]
}, Open ]],
Cell[46405, 1371, 205, 4, 38, "Text"],
Cell[CellGroupData[{
Cell[46635, 1379, 2815, 84, 340, "Input"],
Cell[49453, 1465, 323, 7, 39, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[49813, 1477, 956, 41, 49, "Input"],
Cell[50772, 1520, 2121, 50, 538, "Output"]
}, Open ]],
Cell[52908, 1573, 266, 4, 65, "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell[53211, 1582, 302, 5, 97, "Section"],
Cell[53516, 1589, 488, 8, 92, "Text"],
Cell[54007, 1599, 4389, 103, 204, "Input"],
Cell[58399, 1704, 251, 5, 38, "Text"],
Cell[CellGroupData[{
Cell[58675, 1713, 1315, 47, 61, "Input"],
Cell[59993, 1762, 34397, 574, 484, "Output"]
}, Open ]],
Cell[94405, 2339, 325, 6, 65, "Text"],
Cell[CellGroupData[{
Cell[94755, 2349, 3127, 115, 253, "Input"],
Cell[97885, 2466, 33277, 558, 486, "Output"]
}, Open ]],
Cell[131177, 3027, 347, 6, 65, "Text"],
Cell[131527, 3035, 205, 4, 38, "Text"],
Cell[CellGroupData[{
Cell[131757, 3043, 4108, 63, 57, "Input"],
Cell[135868, 3108, 1040, 19, 57, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[136945, 3132, 344, 11, 39, "Input"],
Cell[137292, 3145, 276, 5, 39, "Output"]
}, Open ]],
Cell[137583, 3153, 262, 5, 38, "Text"],
Cell[CellGroupData[{
Cell[137870, 3162, 474, 14, 70, "Input"],
Cell[138347, 3178, 491, 10, 70, "Output"]
}, Open ]],
Cell[138853, 3191, 188, 3, 38, "Text"],
Cell[CellGroupData[{
Cell[139066, 3198, 637, 16, 39, "Input"],
Cell[139706, 3216, 592, 12, 70, "Output"]
}, Open ]],
Cell[140313, 3231, 272, 4, 65, "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell[140622, 3240, 132, 2, 83, "Section"],
Cell[140757, 3244, 625, 15, 146, "Text"],
Cell[141385, 3261, 745, 20, 130, "Input"],
Cell[142133, 3283, 447, 13, 39, "Input"],
Cell[142583, 3298, 249, 7, 39, "Input"],
Cell[142835, 3307, 216, 4, 38, "Text"],
Cell[CellGroupData[{
Cell[143076, 3315, 404, 10, 70, "Input"],
Cell[143483, 3327, 583, 11, 27, "Output"],
Cell[144069, 3340, 508, 10, 27, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[144614, 3355, 371, 9, 70, "Input"],
Cell[144988, 3366, 533, 12, 27, "Output"],
Cell[145524, 3380, 531, 12, 27, "Output"]
}, Open ]],
Cell[146070, 3395, 879, 25, 100, "Input"],
Cell[CellGroupData[{
Cell[146974, 3424, 343, 11, 33, "Input"],
Cell[147320, 3437, 196, 4, 33, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[147553, 3446, 450, 9, 33, "Input"],
Cell[148006, 3457, 347, 6, 33, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[148390, 3468, 315, 9, 33, "Input"],
Cell[148708, 3479, 225, 4, 33, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[148970, 3488, 753, 22, 80, "Input"],
Cell[149726, 3512, 324, 6, 27, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[150087, 3523, 994, 42, 57, "Input"],
Cell[151084, 3567, 3133, 77, 534, "Output"]
}, Open ]],
Cell[154232, 3647, 440, 7, 146, "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell[154709, 3659, 176, 3, 83, "Section"],
Cell[154888, 3664, 820, 22, 258, "Text"],
Cell[CellGroupData[{
Cell[155733, 3690, 329, 10, 33, "Input"],
Cell[156065, 3702, 216, 5, 39, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[156318, 3712, 401, 13, 33, "Input"],
Cell[156722, 3727, 223, 4, 33, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[156982, 3736, 501, 15, 31, "Input"],
Cell[157486, 3753, 491, 10, 31, "Output"]
}, Open ]]
}, Open ]],
Cell[CellGroupData[{
Cell[158026, 3769, 154, 2, 83, "Section"],
Cell[158183, 3773, 752, 12, 497, "Text"],
Cell[CellGroupData[{
Cell[158960, 3789, 128, 1, 34, "Subsection"],
Cell[159091, 3792, 898, 22, 35, "Input"],
Cell[159992, 3816, 220, 4, 38, "Text"],
Cell[CellGroupData[{
Cell[160237, 3824, 559, 15, 33, "Input"],
Cell[160799, 3841, 383, 10, 62, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[161219, 3856, 435, 11, 33, "Input"],
Cell[161657, 3869, 298, 8, 57, "Output"]
}, Open ]]
}, Open ]],
Cell[CellGroupData[{
Cell[162004, 3883, 182, 2, 34, "Subsection"],
Cell[162189, 3887, 550, 9, 92, "Text"],
Cell[162742, 3898, 1232, 34, 82, "Input"],
Cell[163977, 3934, 210, 4, 38, "Text"],
Cell[CellGroupData[{
Cell[164212, 3942, 434, 10, 33, "Input"],
Cell[164649, 3954, 375, 8, 65, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[165061, 3967, 388, 11, 33, "Input"],
Cell[165452, 3980, 347, 10, 55, "Output"]
}, Open ]]
}, Open ]],
Cell[CellGroupData[{
Cell[165848, 3996, 116, 1, 34, "Subsection"],
Cell[165967, 3999, 205, 4, 38, "Text"],
Cell[CellGroupData[{
Cell[166197, 4007, 1353, 30, 220, "Input"],
Cell[167553, 4039, 1615, 50, 192, "Output"]
}, Open ]],
Cell[169183, 4092, 234, 4, 38, "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell[169454, 4101, 197, 3, 34, "Subsection"],
Cell[169654, 4106, 560, 14, 65, "Text"],
Cell[170217, 4122, 1636, 61, 39, "Input"],
Cell[171856, 4185, 753, 20, 119, "Text"],
Cell[172612, 4207, 378, 8, 39, "Input"],
Cell[172993, 4217, 217, 4, 38, "Text"],
Cell[CellGroupData[{
Cell[173235, 4225, 393, 8, 39, "Input"],
Cell[173631, 4235, 1871, 51, 93, "Output"]
}, Open ]]
}, Open ]],
Cell[CellGroupData[{
Cell[175551, 4292, 121, 1, 34, "Subsection"],
Cell[175675, 4295, 1243, 36, 329, "Text"],
Cell[176921, 4333, 1879, 52, 104, "Input"],
Cell[178803, 4387, 165, 3, 38, "Text"],
Cell[CellGroupData[{
Cell[178993, 4394, 193, 5, 33, "Input"],
Cell[179189, 4401, 3467, 115, 261, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[182693, 4521, 248, 7, 33, "Input"],
Cell[182944, 4530, 6960, 218, 435, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[189941, 4753, 246, 7, 33, "Input"],
Cell[190190, 4762, 6998, 219, 431, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[197225, 4986, 248, 7, 33, "Input"],
Cell[197476, 4995, 7040, 220, 431, "Output"]
}, Open ]],
Cell[204531, 5218, 299, 5, 65, "Text"],
Cell[204833, 5225, 1287, 28, 80, "Input"],
Cell[206123, 5255, 280, 5, 38, "Text"],
Cell[CellGroupData[{
Cell[206428, 5264, 510, 15, 33, "Input"],
Cell[206941, 5281, 426, 8, 37, "Output"]
}, Open ]],
Cell[207382, 5292, 199, 4, 38, "Text"],
Cell[207584, 5298, 496, 12, 33, "Input"],
Cell[208083, 5312, 355, 6, 92, "Text"],
Cell[CellGroupData[{
Cell[208463, 5322, 397, 9, 57, "Input"],
Cell[208863, 5333, 1646, 41, 93, "Output"]
}, Open ]]
}, Open ]],
Cell[CellGroupData[{
Cell[210558, 5380, 212, 2, 34, "Subsection"],
Cell[210773, 5384, 835, 12, 173, "Text"],
Cell[CellGroupData[{
Cell[211633, 5400, 295, 7, 43, "Input"],
Cell[211931, 5409, 497, 10, 33, "Output"],
Cell[212431, 5421, 476, 11, 33, "Output"]
}, Open ]],
Cell[212922, 5435, 5935, 144, 116, "Input"],
Cell[CellGroupData[{
Cell[218882, 5583, 557, 16, 33, "Input"],
Cell[219442, 5601, 258, 4, 27, "Output"]
}, Open ]],
Cell[CellGroupData[{
Cell[219737, 5610, 501, 16, 27, "Input"],
Cell[220241, 5628, 157, 2, 27, "Output"]
}, Open ]]
}, Open ]]
}, Open ]]
}, Open ]]
}
]
*)
(* End of internal cache information *)