(************** Content-type: application/mathematica ************** CreatedBy='Mathematica 5.2' Mathematica-Compatible Notebook This notebook can be used with any Mathematica-compatible application, such as Mathematica, MathReader or Publicon. The data for the notebook starts with the line containing stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. *******************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 105829, 3258]*) (*NotebookOutlinePosition[ 106794, 3289]*) (* CellTagsIndexPosition[ 106750, 3285]*) (*WindowFrame->Normal*) Notebook[{ Cell[CellGroupData[{ Cell[" Computer Algebra Solution of GPS N-Points Problem", "Title", TextAlignment->Center, FontSize->30], Cell[TextData[{ "B\[EAcute]la Pal\[AAcute]nc", Cell[BoxData[ \(TraditionalForm\`z\^1\)]], ", Joseph L. Awang", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["e", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], "2"], TraditionalForm]]], " and Erik Grafaren", Cell[BoxData[ FormBox[ SuperscriptBox[ StyleBox["d", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}], "3"], TraditionalForm]]] }], "Author", TextAlignment->Center], Cell[TextData[{ " ", Cell[BoxData[ \(TraditionalForm\`\^1\)]], "Department of Photogrammetry and Geoinformatics\nBudapest University of \ Technology and Economy, H-1521, Hungary\ne-mail: ", StyleBox["palancz@epito.bme.hu\n\n", FontSlant->"Italic"], Cell[BoxData[ \(TraditionalForm\`\^2\)]], StyleBox["Western Australian Centre for Geodesy", TextAlignment->Center, FontFamily->"Times New Roman"], ", ", StyleBox["Department of Spatial Sciences,\nCurtin University of Technology, \ Australia\ne-mail: J.awange@curtin.edu.au\n\n", FontVariations->{"CompatibilityType"->0}], Cell[BoxData[ \(TraditionalForm\`\^3\)]], StyleBox["Department of Geodesy and Geoinformatics\nStuttgart University, \ Geschwister-Scholl Str. 24D, 70174, Germany\ne-mail: \ grafarend@gis.uni-stuttgart.de\n", FontVariations->{"CompatibilityType"->0}] }], "Address", TextAlignment->Center], Cell[CellGroupData[{ Cell["Abstract", "Subsubsection"], Cell[TextData[{ "In this contribution we illustrate different methods available for solving \ the Global Positioning System N-points problem using built-in functions of \ a Computer Algebra System (CAS). Direct and indirect ", StyleBox["minimization", FontSlant->"Italic"], " methods, Gauss-Jacobi combinatorial algorithm with ", StyleBox["lexicographic", FontSlant->"Italic"], " and ", StyleBox["reduced", FontSlant->"Italic"], " ", StyleBox["Groebner basis", FontSlant->"Italic"], ", as well as with Dixon resultant and Sturmfels` formulation are \ demonstrated. Numeric and symbolic solutions are given for realistic \ situations. Using ", StyleBox["Mathematica", FontSlant->"Italic"], " 5.2, numeric and symbolic solutions need less computation time than that \ of the iterative direct numerical method.\n\nKeywords: GPS, CAS, Positioning, \ Algebra" }], "Abstract"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[StyleBox["1. Introduction", FontFamily->"Times New Roman", FontSize->16]], "Section", TextAlignment->Left, FontFamily->"Arial", FontSize->18, FontWeight->"Bold"], Cell[TextData[{ "\n", StyleBox["In the present world, the art of positioning is changing rapidly \ with more Global Navigation Satellite Systems (GNSS), e.g., GALILEO (The \ European equivalent of GPS), being developed. GNSS positioning is a modern \ surveying tool designed to give three dimensional coordinates in space. It \ has become a household name and its uses extend from military applications to \ weather parameter monitoring. Whereas access to GPS receivers used to be \ expensive, now wrist watches, mobile phones and other portable devices are \ being fitted with GPS receivers. A push of a button is sufficient to locate \ the user\[CloseCurlyQuote]s position. Behind the push of the button lies \ complex mathematics which have to be manipulated to produce solution.\nFor \ users who would wish to go a step further than pushing the button, to solve \ for the receiver position using the raw GNSS data (for purposes such as \ ambiguity resolution or nonlinear error modelling), we have here provided \ Mathematica 5.2 source code (a notebook file) which can assist them in \ solving GNSS related problems. The code solves numeric, semi-symbolic, and \ symbolic multidimensional N-point GNSS problems. Though GPS is used as an \ example, the code is applicable to all GNSS related problems. It is hoped \ that the materials herein will provide you information that will help the \ reader understand the behind-the-scene manipulation of GPS data.", FontFamily->"Times New Roman"] }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell["2. Ranging by using the Global Positioning System (GPS)", "Section", TextAlignment->Left], Cell[TextData[{ "\nThroughout history, position determination has been one of the most \ important tasks of mountaineers, pilots, sailors, civil engineers, etc. In \ modern times, Global Navigation Satellite Systems (GNSS) provide an ultimate \ method to accomplish this task. If one has a hand held GPS receiver, the \ receiver measures the travel time of the signal transmitted from the \ satellites. Then the distance can be computed by multiplying the measured \ time by the speed of light in a vacuum. The distance of the receiver from the \ ", StyleBox["i", FontSlant->"Italic"], "-th satellite, ", Cell[BoxData[ \(TraditionalForm\`d\_i\)]], " is related to the unknown position of the receiver, {", Cell[BoxData[ \(X\)], TextAlignment->Center, FontFamily->"Times New Roman"], ",", Cell[BoxData[ \(Y\)], TextAlignment->Center, FontFamily->"Times New Roman"], ",", Cell[BoxData[ \(\(\(\ \)\(Z\)\)\)], TextAlignment->Center, FontFamily->"Times New Roman"], "}, by the equation:\n" }], "Text"], Cell[BoxData[ \(d\_i = \@\(\((a\_i - X)\)\^2 + \((b\_i - Y)\)\^2 + \((c\_i - Z)\)\^2\) \ + \ \ \[Xi]\)], "Equation", TextAlignment->Center, FontFamily->"Times New Roman"], Cell[BoxData[ RowBox[{"\[IndentingNewLine]", RowBox[{ RowBox[{"where", " ", RowBox[{"{", RowBox[{ FormBox[\(a\_i\), "TraditionalForm"], ",", FormBox[\(b\_i\), "TraditionalForm"], ",", FormBox[\(c\_i\), "TraditionalForm"]}], "}"}]}], ",", RowBox[{ StyleBox["i", FontSlant->"Italic"], " ", "=", "1"}], ",", RowBox[{ RowBox[{\(2. .. \), "n", " ", "are", " ", "the", " ", "coordinates", " ", "of", " ", "the", StyleBox[" ", FontSlant->"Italic"], StyleBox["i", FontSlant->"Italic"]}], "-", \(th\ \(\(satellite\)\(.\)\)\)}]}]}]], "Text", FontFamily->"Times New Roman"], Cell[TextData[{ "The distance is also influenced by the satellite and receiver clock \ biases. The satellite clock biases can be modelled while the receiver clock \ biases have to be considered as an unknown variable, ", Cell[BoxData[ \(TraditionalForm\`\[Xi]\)]], ". This means, we have four unknowns, and consequently we need four \ satellite signals as a minimum number of observations. Let us employ ", Cell[BoxData[ \(TraditionalForm\`x\_1\)]], ", ", Cell[BoxData[ \(TraditionalForm\`x\_2\)]], ", ", Cell[BoxData[ \(TraditionalForm\`x\_3\)]], " and ", Cell[BoxData[ \(TraditionalForm\`x\_4\)]], " variables for the four unknowns, {", Cell[BoxData[ \(X\)], TextAlignment->Center, FontFamily->"Times New Roman"], ",", Cell[BoxData[ \(Y\)], TextAlignment->Center, FontFamily->"Times New Roman"], ",", Cell[BoxData[ \(\(\(\ \)\(\(Z\)\(,\)\)\)\)], TextAlignment->Center, FontFamily->"Times New Roman"], " \[Xi]} then our equations are, ", Cell[BoxData[ \(TraditionalForm\`e\_i\)]], " = 0, i = 1...4, where" }], "Text"], Cell[BoxData[ \(\(e1 = \((x1 - a\_0)\)\^2 + \((x2 - b\_0)\)\^2 + \((x3 - c\_0)\)\^2 - \ \((x4 - d\_0)\)\^2;\)\)], "Input"], Cell[BoxData[ \(\(e2 = \((x1 - a\_1)\)\^2 + \((x2 - b\_1)\)\^2 + \((x3 - c\_1)\)\^2 - \ \((x4 - d\_1)\)\^2;\)\)], "Input"], Cell[BoxData[ \(\(e3 = \((x1 - a\_2)\)\^2 + \((x2 - b\_2)\)\^2 + \((x3 - c\_2)\)\^2 - \ \((x4 - d\_2)\)\^2;\)\)], "Input"], Cell[BoxData[ \(\(e4 = \((x1 - a\_3)\)\^2 + \((x2 - b\_3)\)\^2 + \((x3 - c\_3)\)\^2 - \ \((x4 - d\_3)\)\^2;\)\)], "Input"], Cell["\<\ Let us suppose that the observation data are, see Grafarend and Shan [14],\ \>", "Text"], Cell[BoxData[ \(\(data = {a\_0 \[Rule] 1.483230866\ 10\^7, a\_1 \[Rule] \(-1.579985405\)\ 10\^7, a\_2 \[Rule] 1.98481891\ 10\^6, a\_3 \[Rule] \(-1.248027319\)\ 10\^7, \[IndentingNewLine]b\_0 \ \[Rule] \(-2.046671589\)\ 10\^7, b\_1 \[Rule] \(-1.330112917\)\ 10\^7, b\_2 \[Rule] \(-1.186767296\)\ 10\^7, \[IndentingNewLine]b\_3 \ \[Rule] \(-2.338256053\)\ 10\^7, \[IndentingNewLine]c\_0 \[Rule] \ \(-7.42863475\)\ 10\^6, c\_1 \[Rule] 1.713383824\ 10\^7, c\_2 \[Rule] 2.371692013\ 10\^7, \[IndentingNewLine]c\_3 \[Rule] 3.27847268\ 10\^6, \ \[IndentingNewLine]d\_0 \[Rule] 2.4310764064\ 10\^7, d\_1 \[Rule] 2.2914600784\ 10\^7, d\_2 \[Rule] 2.0628809405\ 10\^7, \[IndentingNewLine]d\_3 \[Rule] 2.3422377972\ 10\^7};\)\)], "Input"], Cell["\<\ First, we introduce different solution methods for this 4-points problem.\ \>", "Text"] }, Open ]], Cell[CellGroupData[{ Cell["3. Solutions of the 4-points problem", "Section", TextAlignment->Left], Cell[CellGroupData[{ Cell["3.1 Direct numerical solution", "Subsection", CellDingbat->None], Cell[TextData[{ "The most simple, direct solution is the direct numerical solution. \ Employing the built-in function of ", StyleBox["Mathematica", FontSlant->"Italic"], ", ", StyleBox["NSolve", FontFamily->"Courier New", FontWeight->"Bold"], ", we get" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(sol = NSolve[Map[\((# /. data)\) \[Equal] 0 &, {e1, e2, e3, e4}], {x1, x2, x3, x4}] // Timing\)], "Input"], Cell[BoxData[ \({0.07799999999999999`\ Second, {{x1 \[Rule] \ \(-2.8921234119255114`*^6\), x2 \[Rule] 7.5687843488803785`*^6, x3 \[Rule] \(-7.209505102265688`*^6\), x4 \[Rule] 5.7479918164143704`*^7}, {x1 \[Rule] 1.111590459962202`*^6, x2 \[Rule] \(-4.3482586309091`*^6\), x3 \[Rule] 4.527351820245797`*^6, x4 \[Rule] 100.0005506768898`}}}\)], "Output"] }, Open ]], Cell[TextData[{ "The results indicate that the solution is not unique. In order to decide \ on the admissible solution from the pair above, we compute the radial \ distance from the center of the Earth, the norm of the two positional vectors \ ", Cell[BoxData[ FormBox[ SubscriptBox[ RowBox[{"{", RowBox[{ FormBox[\(x\_1\), "TraditionalForm"], ",", FormBox[\(x\_2\), "TraditionalForm"], ",", " ", FormBox[\(x\_3\), "TraditionalForm"]}], "}"}], StyleBox["j", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False, "StrikeThrough"->False, "Masked"->False, "CompatibilityType"->0, "RotationAngle"->0}]], TraditionalForm]]], ", j = 1, 2, namely," }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Map[ Norm[Drop[#, \(-1\)]] &, {x1, x2, x3, x4} /. sol[\([2]\)]]\)], "Input"], Cell[BoxData[ \({1.0845636826358294`*^7, 6.3749432135696225`*^6}\)], "Output"] }, Open ]], Cell["\<\ If the receiver coordinates are in the global reference frame, the norm of \ the positional vector of the receiver station will approximate the value of \ the Earth's radius. That is why the second solution is admissible,\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(SetPrecision[sol[\([2, 2]\)], 10]\)], "Input"], Cell[BoxData[ \({x1 \[Rule] 1.1115904599622020032256842`10.*^6, x2 \[Rule] \(-4.3482586309091001749038696`9.999999999999998*^6\), x3 \[Rule] 4.5273518202457968145608902`9.999999999999998*^6, x4 \[Rule] 100.0005506768898015935`10. }\)], "Output"] }, Open ]], Cell["\<\ In order to check the result, let us backsubstitute these values into the \ original equations,\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\({e1, e2, e3, e4} /. data\) /. sol[\([2, 2]\)]\)], "Input"], Cell[BoxData[ \({0.`, \(-0.125`\), 0.`, \(-0.1875`\)}\)], "Output"] }, Open ]], Cell["\<\ which means, that the absolute value of the highest residual is less than 20 \ centimeters. However, in this case, we desire small errors rather than small \ residuals. The reader can easily verify, that when computing the solution \ with the significance-precision of the input data set at 10 digits, instead \ of the default machine precision 16 digits, these residuals will be zero!\ \>", "Text"], Cell["\<\ In order to check the error of the solution, one may repeat this computation \ with a higher precision, i.e. with 30 digits.\ \>", "Text"], Cell[BoxData[ \(\(data30 = Map[#[\([1]\)] -> SetPrecision[#[\([2]\)], 30] &, data];\)\)], "Input"], Cell[BoxData[ \(\(sol30 = NSolve[Map[\((# /. data30)\) \[Equal] 0 &, {e1, e2, e3, e4}], {x1, x2, x3, x4}, 30];\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(sol30[\([2]\)]\)], "Input"], Cell[BoxData[ \({x1 \[Rule] 1.11159045996220485284318762237455908366326567`30.*^6, x2 \[Rule] \(-4.348258630909100109863708700273884521792082`30.*^6\), x3 \[Rule] 4.52735182024579734635096960596018806200877277`30.*^6, x4 \[Rule] 100.00055067761305050465513664856188554416`29.69897000433602}\)], \ "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(SetPrecision[sol30[\([2]\)], 10]\)], "Input"], Cell[BoxData[ \({x1 \[Rule] 1.1115904599622048528431876`10.*^6, x2 \[Rule] \(-4.3482586309091001098637087`9.999999999999998*^6\), x3 \[Rule] 4.5273518202457973463509696`9.999999999999998*^6, x4 \[Rule] 100.0005506776130505046`9.999999999999998}\)], "Output"] }, Open ]], Cell["\<\ There is no difference between the two solutions, however now the residuals \ disappear,\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\({e1, e2, e3, e4} /. data30\) /. sol30[\([2]\)]\)], "Input"], Cell[BoxData[ \({0``14.56776782456687, 0``14.604791639789747, 0``14.660674429944606, 0``14.594846936268137}\)], "Output"], Cell[BoxData[""], "Input"], Cell[BoxData[""], "Input"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["3.2 Symbolic solution", "Subsection", CellDingbat->None], Cell["\<\ First, this equation system of polynomials, will be transformed into a \ system of linear equations and a quadratic equation. Let us expand and \ multiply by minus one, and arrang the original equations,\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(eqsL = \({e1L, e2L, e3L, e4L} = Map[\(-Sort[Expand[#]]\) &, {e1, e2, e3, e4}]\)\)], "Input"], Cell[BoxData[ \({\(-x1\^2\) - x2\^2 - x3\^2 + x4\^2 + 2\ x1\ a\_0 - a\_0\%2 + 2\ x2\ b\_0 - b\_0\%2 + 2\ x3\ c\_0 - c\_0\%2 - 2\ x4\ d\_0 + d\_0\%2, \(-x1\^2\) - x2\^2 - x3\^2 + x4\^2 + 2\ x1\ a\_1 - a\_1\%2 + 2\ x2\ b\_1 - b\_1\%2 + 2\ x3\ c\_1 - c\_1\%2 - 2\ x4\ d\_1 + d\_1\%2, \(-x1\^2\) - x2\^2 - x3\^2 + x4\^2 + 2\ x1\ a\_2 - a\_2\%2 + 2\ x2\ b\_2 - b\_2\%2 + 2\ x3\ c\_2 - c\_2\%2 - 2\ x4\ d\_2 + d\_2\%2, \(-x1\^2\) - x2\^2 - x3\^2 + x4\^2 + 2\ x1\ a\_3 - a\_3\%2 + 2\ x2\ b\_3 - b\_3\%2 + 2\ x3\ c\_3 - c\_3\%2 - 2\ x4\ d\_3 + d\_3\%2}\)], "Output"] }, Open ]], Cell["Subtruct the fourth equation from the other ones,", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(q = Table[eqsL[\([i]\)] - eqsL[\([4]\)], {i, 1, 3}] // Simplify\)], "Input"], Cell[BoxData[ \({2\ x1\ a\_0 - a\_0\%2 - 2\ x1\ a\_3 + a\_3\%2 + 2\ x2\ b\_0 - b\_0\%2 - 2\ x2\ b\_3 + b\_3\%2 + 2\ x3\ c\_0 - c\_0\%2 - 2\ x3\ c\_3 + c\_3\%2 - 2\ x4\ d\_0 + d\_0\%2 + 2\ x4\ d\_3 - d\_3\%2, 2\ x1\ a\_1 - a\_1\%2 - 2\ x1\ a\_3 + a\_3\%2 + 2\ x2\ b\_1 - b\_1\%2 - 2\ x2\ b\_3 + b\_3\%2 + 2\ x3\ c\_1 - c\_1\%2 - 2\ x3\ c\_3 + c\_3\%2 - 2\ x4\ d\_1 + d\_1\%2 + 2\ x4\ d\_3 - d\_3\%2, 2\ x1\ a\_2 - a\_2\%2 - 2\ x1\ a\_3 + a\_3\%2 + 2\ x2\ b\_2 - b\_2\%2 - 2\ x2\ b\_3 + b\_3\%2 + 2\ x3\ c\_2 - c\_2\%2 - 2\ x3\ c\_3 + c\_3\%2 - 2\ x4\ d\_2 + d\_2\%2 + 2\ x4\ d\_3 - d\_3\%2}\)], "Output"] }, Open ]], Cell["\<\ This is a system of three linear equations, and they can be written as, \ \>", "Text"], Cell[BoxData[ \(\(g\_1 = \(a\_\(0, 3\)\) x1 + \(b\_\(0, 3\)\) x2 + \(c\_\(0, 3\)\) x3 + \(d\_\(3, 0\)\) x4 + e\_\(0, 3\);\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(g\_2 = g\_1 /. {1 \[Rule] 2, 0 \[Rule] 1}\)], "Input"], Cell[BoxData[ \(x1\ a\_\(1, 3\) + x2\ b\_\(1, 3\) + x3\ c\_\(1, 3\) + x4\ d\_\(3, 1\) + e\_\(1, 3\)\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(g\_3 = g\_1 /. {1 \[Rule] 3, 0 \[Rule] 2}\)], "Input"], Cell[BoxData[ \(x1\ a\_\(2, 3\) + x2\ b\_\(2, 3\) + x3\ c\_\(2, 3\) + x4\ d\_\(3, 2\) + e\_\(2, 3\)\)], "Output"] }, Open ]], Cell[BoxData[ RowBox[{ RowBox[{"The", " ", "coefficients", " ", RowBox[{ StyleBox["{", FontFamily->"Courier New"], \(a\_\(i, 3\), b\_\(i, 3\), c\_\(i, 3\), d\_\(3, i\), e\_\(i, 3\)\), "}"}]}], ",", " ", RowBox[{ StyleBox["i", FontVariations->{"CompatibilityType"->0}], " ", "=", " ", \(\(0. .. \) 2\)}], ",", " ", \(can\ be\ determined\ \ as\), ","}]], "Text", FontFamily->"Times New Roman"], Cell[BoxData[ \(\(coeffs0 = Table[{Coefficient[q[\([i + 1]\)], x1], Coefficient[q[\([i + 1]\)], x2], Coefficient[q[\([i + 1]\)], x3], Coefficient[q[\([i + 1]\)], x4]} // Factor, {i, 0, 2}];\)\)], "Input"], Cell[BoxData[ RowBox[{ RowBox[{ "which", " ", "are", " ", "the", " ", "coefficients", " ", "of", " ", "the", " ", "variables", " ", RowBox[{ FormBox[ RowBox[{"{", RowBox[{ FormBox[\(x\_1\), "TraditionalForm"], ",", FormBox[\(x\_2\), "TraditionalForm"], ",", " ", FormBox[\(x\_3\), "TraditionalForm"], ",", " ", \(x\_4\)}], "}"}], "TraditionalForm"], ".", " ", "The"}], " ", "constant", " ", "part", " ", "is"}], ","}]], "Text", FontFamily->"Times New Roman"], Cell[BoxData[ \(\(coeffs1 = Table[{q[\([i]\)] - coeffs0[\([i]\)] . {x1, x2, x3, x4} // Simplify}, {i, 1, 3}];\)\)], "Input"], Cell["Therefore, all of the coefficients are,", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(coeffs = Table[Union[coeffs0[\([i]\)], coeffs1[\([i]\)]], {i, 1, 3}]\)], "Input"], Cell[BoxData[ \({{2\ \((a\_0 - a\_3)\), 2\ \((b\_0 - b\_3)\), 2\ \((c\_0 - c\_3)\), \(-2\)\ \((d\_0 - d\_3)\), \(-a\_0\%2\) + a\_3\%2 - b\_0\%2 + b\_3\%2 - c\_0\%2 + c\_3\%2 + d\_0\%2 - d\_3\%2}, {2\ \((a\_1 - a\_3)\), 2\ \((b\_1 - b\_3)\), 2\ \((c\_1 - c\_3)\), \(-2\)\ \((d\_1 - d\_3)\), \(-a\_1\%2\) + a\_3\%2 - b\_1\%2 + b\_3\%2 - c\_1\%2 + c\_3\%2 + d\_1\%2 - d\_3\%2}, {2\ \((a\_2 - a\_3)\), 2\ \((b\_2 - b\_3)\), 2\ \((c\_2 - c\_3)\), \(-2\)\ \((d\_2 - d\_3)\), \(-a\_2\%2\) + a\_3\%2 - b\_2\%2 + b\_3\%2 - c\_2\%2 + c\_3\%2 + d\_2\%2 - d\_3\%2}}\)], "Output"] }, Open ]], Cell["Let us assign these coefficients to the linear system,", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(coeffsn = Flatten[Table[ Inner[#1 \[Rule] #2 &, {a\_\(i, 3\), b\_\(i, 3\), c\_\(i, 3\), d\_\(3, i\), e\_\(i, 3\)}, coeffs[\([i + 1]\)], List], {i, 0, 2}]]\)], "Input"], Cell[BoxData[ \({a\_\(0, 3\) \[Rule] 2\ \((a\_0 - a\_3)\), b\_\(0, 3\) \[Rule] 2\ \((b\_0 - b\_3)\), c\_\(0, 3\) \[Rule] 2\ \((c\_0 - c\_3)\), d\_\(3, 0\) \[Rule] \(-2\)\ \((d\_0 - d\_3)\), e\_\(0, 3\) \[Rule] \(-a\_0\%2\) + a\_3\%2 - b\_0\%2 + b\_3\%2 - c\_0\%2 + c\_3\%2 + d\_0\%2 - d\_3\%2, a\_\(1, 3\) \[Rule] 2\ \((a\_1 - a\_3)\), b\_\(1, 3\) \[Rule] 2\ \((b\_1 - b\_3)\), c\_\(1, 3\) \[Rule] 2\ \((c\_1 - c\_3)\), d\_\(3, 1\) \[Rule] \(-2\)\ \((d\_1 - d\_3)\), e\_\(1, 3\) \[Rule] \(-a\_1\%2\) + a\_3\%2 - b\_1\%2 + b\_3\%2 - c\_1\%2 + c\_3\%2 + d\_1\%2 - d\_3\%2, a\_\(2, 3\) \[Rule] 2\ \((a\_2 - a\_3)\), b\_\(2, 3\) \[Rule] 2\ \((b\_2 - b\_3)\), c\_\(2, 3\) \[Rule] 2\ \((c\_2 - c\_3)\), d\_\(3, 2\) \[Rule] \(-2\)\ \((d\_2 - d\_3)\), e\_\(2, 3\) \[Rule] \(-a\_2\%2\) + a\_3\%2 - b\_2\%2 + b\_3\%2 - c\_2\%2 + c\_3\%2 + d\_2\%2 - d\_3\%2}\)], "Output"] }, Open ]], Cell["\<\ In addition, we take one of the nonlinear equations, let say the fourth \ one,\ \>", "Text"], Cell[BoxData[ \(\(e\_4 = \((x1 - a\_3)\)\^2 + \((x2 - b\_3)\)\^2 + \((x3 - c\_3)\)\^2 - \ \((x4 - d\_3)\)\^2;\)\)], "Input"], Cell[TextData[{ "Now, we shall solve the linear system for the variables ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{"{", RowBox[{ FormBox[\(x\_1\), "TraditionalForm"], ",", FormBox[\(x\_2\), "TraditionalForm"], ",", " ", FormBox[\(x\_3\), "TraditionalForm"]}], "}"}], ","}], TraditionalForm]], FontFamily->"Times New Roman"], " with ", Cell[BoxData[ \(TraditionalForm\`x\_4\)], FontFamily->"Times New Roman"], " as parameter. It means, the relations ", Cell[BoxData[ \(TraditionalForm\`x\_1\)], FontFamily->"Times New Roman"], "= g(", Cell[BoxData[ \(TraditionalForm\`x\_4\)], FontFamily->"Times New Roman"], "), ", Cell[BoxData[ \(TraditionalForm\`x\_2\)], FontFamily->"Times New Roman"], "= g(", Cell[BoxData[ \(TraditionalForm\`x\_4\)], FontFamily->"Times New Roman"], ") and ", Cell[BoxData[ \(TraditionalForm\`x\_3\)], FontFamily->"Times New Roman"], "= g(", Cell[BoxData[ \(TraditionalForm\`x\_4\)], FontFamily->"Times New Roman"], ") will be computed. To do that, different methods can be employed." }], "Text"], Cell[CellGroupData[{ Cell["3.2.1 Sturmfels' method", "Subsubsection"], Cell[TextData[{ "The Sturmfels' approach introduced by Sturmfels [15], can be employed to \ solve the linear system of ", StyleBox["{", FontFamily->"Times New Roman"], Cell[BoxData[ \(g\_1\)], FontFamily->"Times New Roman"], StyleBox[", ", FontFamily->"Times New Roman"], Cell[BoxData[ \(g\_2\)], FontFamily->"Times New Roman"], StyleBox[",", FontFamily->"Times New Roman"], Cell[BoxData[ \(\(\(\ \)\(g\_3\)\)\)], FontFamily->"Times New Roman"], "}. \nDepending on which variable one wants, the original system is \ rewritten such that this particular variable is hidden (i.e. is treated as a \ constant). If our interest is to solve ", Cell[BoxData[ \(TraditionalForm\`x\_1\)], FontFamily->"Times New Roman"], "= g(", Cell[BoxData[ \(TraditionalForm\`x\_4\)], FontFamily->"Times New Roman"], "), the equations are first homogenized using a new variable ", Cell[BoxData[ \(TraditionalForm\`x\_5\)], FontFamily->"Times New Roman"], " and consider the variables ", Cell[BoxData[ \(TraditionalForm\`x\_1\)]], " and ", Cell[BoxData[ \(TraditionalForm\`\(\(x\_4\)\(\ \)\)\)]], "as well as the constant part as parameters," }], "Text"], Cell[BoxData[ \(\(f1 = \((a\_\(0, 3\)\ x1 + d\_\(3, 0\)\ x4 + e\_\(0, 3\))\)\ x5 + b\_\(0, 3\)\ x2 + c\_\(0, 3\)\ x3;\)\)], "Input"], Cell[BoxData[ \(\(f2 = \((a\_\(1, 3\)\ x1\ + \ d\_\(3, 1\)\ x4 + e\_\(1, 3\))\)\ x5 + b\_\(1, 3\)\ x2 + \ c\_\(1, 3\)\ x3;\)\)], "Input"], Cell[BoxData[ \(\(f3 = \((a\_\(2, 3\)\ x1 + d\_\(3, 2\)\ x4 + e\_\(2, 3\))\)\ x5 + b\_\(2, 3\)\ x2 + c\_\(2, 3\)\ x3;\)\)], "Input"], Cell["The Jacobian determinant becomes,", "Text"], Cell[BoxData[ RowBox[{ RowBox[{"Jx1", "=", RowBox[{"Det", "[", RowBox[{"(", GridBox[{ {\(\[PartialD]\_x2\ f1\), \(\[PartialD]\_x3\ f1\), \(\[PartialD]\_x5\ f1\)}, {\(\[PartialD]\_x2\ f2\), \(\[PartialD]\_x3\ f2\), \(\[PartialD]\_x5\ f2\)}, {\(\[PartialD]\_x2\ f3\), \(\[PartialD]\_x3\ f3\), \(\[PartialD]\_x5\ f3\)} }], ")"}], "]"}]}], ";"}]], "Input"], Cell[TextData[{ "Then the solution for ", Cell[BoxData[ \(TraditionalForm\`x\_1\)]], " as function of ", Cell[BoxData[ \(TraditionalForm\`x\_4\)]], " is," }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(solx1 = Solve[Jx1 \[Equal] 0, x1]\)], "Input"], Cell[BoxData[ \({{x1 \[Rule] \((\(-x4\)\ b\_\(2, 3\)\ c\_\(1, 3\)\ d\_\(3, 0\) + x4\ b\_\(1, 3\)\ c\_\(2, 3\)\ d\_\(3, 0\) + x4\ b\_\(2, 3\)\ c\_\(0, 3\)\ d\_\(3, 1\) - x4\ b\_\(0, 3\)\ c\_\(2, 3\)\ d\_\(3, 1\) - x4\ b\_\(1, 3\)\ c\_\(0, 3\)\ d\_\(3, 2\) + x4\ b\_\(0, 3\)\ c\_\(1, 3\)\ d\_\(3, 2\) - b\_\(2, 3\)\ c\_\(1, 3\)\ e\_\(0, 3\) + b\_\(1, 3\)\ c\_\(2, 3\)\ e\_\(0, 3\) + b\_\(2, 3\)\ c\_\(0, 3\)\ e\_\(1, 3\) - b\_\(0, 3\)\ c\_\(2, 3\)\ e\_\(1, 3\) - b\_\(1, 3\)\ c\_\(0, 3\)\ e\_\(2, 3\) + b\_\(0, 3\)\ c\_\(1, 3\)\ e\_\(2, 3\))\)/\((a\_\(2, 3\)\ \ b\_\(1, 3\)\ c\_\(0, 3\) - a\_\(1, 3\)\ b\_\(2, 3\)\ c\_\(0, 3\) - a\_\(2, 3\)\ b\_\(0, 3\)\ c\_\(1, 3\) + a\_\(0, 3\)\ b\_\(2, 3\)\ c\_\(1, 3\) + a\_\(1, 3\)\ b\_\(0, 3\)\ c\_\(2, 3\) - a\_\(0, 3\)\ b\_\(1, 3\)\ c\_\(2, 3\))\)}}\)], "Output"] }, Open ]], Cell[TextData[{ "Similarly, the homogenized system for ", Cell[BoxData[ \(TraditionalForm\`x\_2\)]], " = g(", Cell[BoxData[ \(TraditionalForm\`x\_4\)]], ")" }], "Text"], Cell[BoxData[ \(\(f4 = \((b\_\(0, 3\)\ x2 + d\_\(3, 0\)\ x4 + e\_\(0, 3\))\) x5 + a\_\(0, 3\)\ x1 + c\_\(0, 3\)\ x3;\)\)], "Input"], Cell[BoxData[ \(\(f5 = \((b\_\(1, 3\)\ x2 + \ d\_\(3, 1\)\ x4 + e\_\(1, 3\))\)\ x5 + a\_\(1, 3\)\ x1\ + \ \(c\_\(1, 3\)\) x3;\)\)], "Input"], Cell[BoxData[ \(\(f6 = \((\(b\_\(2, 3\)\) x2 + d\_\(3, 2\)\ x4 + e\_\(2, 3\))\) x5 + a\_\(2, 3\)\ x1 + c\_\(2, 3\)\ x3;\)\)], "Input"], Cell["then", "Text"], Cell[BoxData[ RowBox[{ RowBox[{"Jx2", "=", RowBox[{"Det", "[", RowBox[{"(", GridBox[{ {\(\[PartialD]\_x1\ f4\), \(\[PartialD]\_x3\ f4\), \(\[PartialD]\_x5\ f4\)}, {\(\[PartialD]\_x1\ f5\), \(\[PartialD]\_x3\ f5\), \(\[PartialD]\_x5\ f5\)}, {\(\[PartialD]\_x1\ f6\), \(\[PartialD]\_x3\ f6\), \(\[PartialD]\_x5\ f6\)} }], ")"}], "]"}]}], ";"}]], "Input"], Cell["and its solution is,", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(solx2 = Solve[Jx2 \[Equal] 0, x2]\)], "Input"], Cell[BoxData[ \({{x2 \[Rule] \((x4\ a\_\(2, 3\)\ c\_\(1, 3\)\ d\_\(3, 0\) - x4\ a\_\(1, 3\)\ c\_\(2, 3\)\ d\_\(3, 0\) - x4\ a\_\(2, 3\)\ c\_\(0, 3\)\ d\_\(3, 1\) + x4\ a\_\(0, 3\)\ c\_\(2, 3\)\ d\_\(3, 1\) + x4\ a\_\(1, 3\)\ c\_\(0, 3\)\ d\_\(3, 2\) - x4\ a\_\(0, 3\)\ c\_\(1, 3\)\ d\_\(3, 2\) + a\_\(2, 3\)\ c\_\(1, 3\)\ e\_\(0, 3\) - a\_\(1, 3\)\ c\_\(2, 3\)\ e\_\(0, 3\) - a\_\(2, 3\)\ c\_\(0, 3\)\ e\_\(1, 3\) + a\_\(0, 3\)\ c\_\(2, 3\)\ e\_\(1, 3\) + a\_\(1, 3\)\ c\_\(0, 3\)\ e\_\(2, 3\) - a\_\(0, 3\)\ c\_\(1, 3\)\ e\_\(2, 3\))\)/\((a\_\(2, 3\)\ \ b\_\(1, 3\)\ c\_\(0, 3\) - a\_\(1, 3\)\ b\_\(2, 3\)\ c\_\(0, 3\) - a\_\(2, 3\)\ b\_\(0, 3\)\ c\_\(1, 3\) + a\_\(0, 3\)\ b\_\(2, 3\)\ c\_\(1, 3\) + a\_\(1, 3\)\ b\_\(0, 3\)\ c\_\(2, 3\) - a\_\(0, 3\)\ b\_\(1, 3\)\ c\_\(2, 3\))\)}}\)], "Output"] }, Open ]], Cell[BoxData[ RowBox[{"Finally", " ", FormBox[ RowBox[{\(x\_3\), " ", "=", RowBox[{"g", RowBox[{"(", FormBox[\(x\_4\), "TraditionalForm"], ")"}]}]}], "TraditionalForm"], " ", "leads", " ", "to"}]], "Text", FontFamily->"Times New Roman"], Cell[BoxData[ \(\(f7 = \((c\_\(0, 3\)\ x3 + d\_\(3, 0\)\ x4 + e\_\(0, 3\))\)\ x5 + a\_\(0, 3\)\ x1 + b\_\(0, 3\)\ x2;\)\)], "Input"], Cell[BoxData[ \(\(f8 = \((\ c\_\(1, 3\)\ x3 + \ d\_\(3, 1\)\ x4 + e\_\(1, 3\))\) x5 + a\_\(1, 3\)\ x1\ + \(b\_\(1, 3\)\) x2;\)\)], "Input"], Cell[BoxData[ \(\(f9 = \((c\_\(2, 3\)\ x3 + d\_\(3, 2\)\ x4 + e\_\(2, 3\))\) x5 + a\_\(2, 3\)\ x1 + b\_\(2, 3\)\ x2;\)\)], "Input"], Cell[BoxData[ RowBox[{ RowBox[{"Jx3", "=", RowBox[{"Det", "[", RowBox[{"(", GridBox[{ {\(\[PartialD]\_x1\ f7\), \(\[PartialD]\_x2\ f7\), \(\[PartialD]\_x5\ f7\)}, {\(\[PartialD]\_x1\ f8\), \(\[PartialD]\_x2\ f8\), \(\[PartialD]\_x5\ f8\)}, {\(\[PartialD]\_x1\ f9\), \(\[PartialD]\_x2\ f9\), \(\[PartialD]\_x5\ f9\)} }], ")"}], "]"}]}], ";"}]], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(solx3 = Solve[Jx3 \[Equal] 0, x3]\)], "Input"], Cell[BoxData[ \({{x3 \[Rule] \((\(-x4\)\ a\_\(2, 3\)\ b\_\(1, 3\)\ d\_\(3, 0\) + x4\ a\_\(1, 3\)\ b\_\(2, 3\)\ d\_\(3, 0\) + x4\ a\_\(2, 3\)\ b\_\(0, 3\)\ d\_\(3, 1\) - x4\ a\_\(0, 3\)\ b\_\(2, 3\)\ d\_\(3, 1\) - x4\ a\_\(1, 3\)\ b\_\(0, 3\)\ d\_\(3, 2\) + x4\ a\_\(0, 3\)\ b\_\(1, 3\)\ d\_\(3, 2\) - a\_\(2, 3\)\ b\_\(1, 3\)\ e\_\(0, 3\) + a\_\(1, 3\)\ b\_\(2, 3\)\ e\_\(0, 3\) + a\_\(2, 3\)\ b\_\(0, 3\)\ e\_\(1, 3\) - a\_\(0, 3\)\ b\_\(2, 3\)\ e\_\(1, 3\) - a\_\(1, 3\)\ b\_\(0, 3\)\ e\_\(2, 3\) + a\_\(0, 3\)\ b\_\(1, 3\)\ e\_\(2, 3\))\)/\((a\_\(2, 3\)\ \ b\_\(1, 3\)\ c\_\(0, 3\) - a\_\(1, 3\)\ b\_\(2, 3\)\ c\_\(0, 3\) - a\_\(2, 3\)\ b\_\(0, 3\)\ c\_\(1, 3\) + a\_\(0, 3\)\ b\_\(2, 3\)\ c\_\(1, 3\) + a\_\(1, 3\)\ b\_\(0, 3\)\ c\_\(2, 3\) - a\_\(0, 3\)\ b\_\(1, 3\)\ c\_\(2, 3\))\)}}\)], "Output"] }, Open ]], Cell[TextData[{ "On substituting the obtained expressions of ", Cell[BoxData[ FormBox[ RowBox[{\(x\_1\), " ", "=", RowBox[{"g", "(", FormBox[\(x\_4\), "TraditionalForm"], ")"}]}], TraditionalForm]], FontFamily->"Times New Roman"], ", ", Cell[BoxData[ FormBox[ FormBox[ RowBox[{\(x\_2\), " ", "=", RowBox[{"g", RowBox[{"(", FormBox[\(x\_4\), "TraditionalForm"], ")"}]}]}], "TraditionalForm"], TraditionalForm]], FontFamily->"Times New Roman"], " and ", Cell[BoxData[ FormBox[ RowBox[{\(x\_3\), " ", "=", RowBox[{"g", "(", FormBox[\(x\_4\), "TraditionalForm"], ")"}]}], TraditionalForm]], FontFamily->"Times New Roman"], " in the fourth equation ", Cell[BoxData[ \(TraditionalForm\`e\_4\)]], " (", Cell[BoxData[ \(TraditionalForm\`x\_1\)]], ", ", Cell[BoxData[ \(TraditionalForm\`x\_2\)]], ", ", Cell[BoxData[ \(TraditionalForm\`x\_3\)]], ", ", Cell[BoxData[ \(TraditionalForm\`x\_4\)]], "), " }], "Text"], Cell[BoxData[ \(\(G = e\_4 /. {solx1[\([1, 1]\)], solx2[\([1, 1]\)], solx3[\([1, 1]\)]};\)\)], "Input"], Cell[BoxData[ \(This\ is\ a\ quadratic\ equation\ for\ \ x\_4\)], "Text", FontFamily->"Times New Roman"], Cell[CellGroupData[{ Cell[BoxData[ \(Exponent[G, x4, List]\)], "Input"], Cell[BoxData[ \({0, 1, 2}\)], "Output"] }, Open ]], Cell[TextData[{ "The coefficients of this equation, ", Cell[BoxData[ \(TraditionalForm\`h\_2\)]], " ", Cell[BoxData[ \(TraditionalForm\`x\_4\^2\)]], " + ", Cell[BoxData[ \(TraditionalForm\`h\_1\)]], " ", Cell[BoxData[ \(TraditionalForm\`x\_4\)]], " + ", Cell[BoxData[ \(TraditionalForm\`h\_0\)]], " = 0 are quite long expressions, therefore we do not display them here. " }], "Text"], Cell[BoxData[ \(\(h2 = Coefficient[G, x4\^2] // Simplify;\)\)], "Input"], Cell[BoxData[ \(\(h1 = Coefficient[G, x4] // Simplify;\)\)], "Input"], Cell[BoxData[ \(\(h0 = Simplify[G - \((h2\ x4\^2 + h1\ x4)\)];\)\)], "Input"], Cell["Indeed, this is a quadratic equation,", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(D[h0, x4]\)], "Input"], Cell[BoxData[ \(0\)], "Output"] }, Open ]], Cell["\<\ The actual numeric solution of original system means the evaluation of these \ coefficients with the numerical data,\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(h2c = \(h2 /. coeffsn\) /. data // Timing\)], "Input"], Cell[BoxData[ \({0.`\ Second, \(-0.9104704113943706`\)}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(h1c = \(h1 /. coeffsn\) /. data // Timing\)], "Input"], Cell[BoxData[ \({0.01499999999999968`\ Second, 5.233385578536525`*^7}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(h0c = \(h0 /. coeffsn\) /. data // Timing\)], "Input"], Cell[BoxData[ \({0.015999999999999126`\ Second, \(-5.233405292999013`*^9\)}\)], "Output"] }, Open ]], Cell[BoxData[ RowBox[{ RowBox[{ "and", " ", "then", " ", "solving", " ", "the", " ", "quadratic", " ", "equation", " ", "for", " ", "variable", " ", SubscriptBox[ StyleBox["x", FontSlant->"Italic"], "4"]}], ","}]], "Text", FontFamily->"Times New Roman"], Cell[CellGroupData[{ Cell[BoxData[ \(solx4 = Solve[h2c[\([2]\)]\ x4^2 + h1c[\([2]\)]\ x4 + h0c[\([2]\)] \[Equal] 0, x4] // Timing\)], "Input"], Cell[BoxData[ \({0.`\ Second, {{x4 \[Rule] 100.00055068113069`}, {x4 \[Rule] 5.747991816414378`*^7}}}\)], "Output"] }, Open ]], Cell["The two solutions are", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \({x41, x42} = x4 /. solx4[\([2]\)]\)], "Input"], Cell[BoxData[ \({100.00055068113069`, 5.747991816414378`*^7}\)], "Output"] }, Open ]], Cell[TextData[{ "Substituting these values in ", Cell[BoxData[ \(TraditionalForm\`x\_1\)], FontFamily->"Times New Roman"], "= g(", Cell[BoxData[ \(TraditionalForm\`x\_4\)], FontFamily->"Times New Roman"], "), we get ", Cell[BoxData[ \(TraditionalForm\`x\_1\)], FontFamily->"Times New Roman"] }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \({X1, X2} = Map[\(\(\(x1 /. solx1[\([1, 1]\)]\) /. coeffsn\) /. data\) /. x4 \[Rule] # &, {x41, x42}]\)], "Input"], Cell[BoxData[ \({1.111590459962205`*^6, \(-2.892123411925517`*^6\)}\)], "Output"] }, Open ]], Cell[TextData[{ "Similarly, the values for ", Cell[BoxData[ \(TraditionalForm\`x\_2\)], FontFamily->"Times New Roman"], " are" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \({Y1, Y2} = Map[\(\(\(x2 /. solx2[\([1, 1]\)]\) /. coeffsn\) /. data\) /. x4 \[Rule] # &, {x41, x42}]\)], "Input"], Cell[BoxData[ \({\(-4.348258630909102`*^6\), 7.568784348880412`*^6}\)], "Output"] }, Open ]], Cell[TextData[{ "and for ", Cell[BoxData[ \(TraditionalForm\`x\_3\)], FontFamily->"Times New Roman"], " " }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \({Z1, Z2} = Map[\(\(\(x3 /. solx3[\([1, 1]\)]\) /. coeffsn\) /. data\) /. x4 \[Rule] # &, {x41, x42}]\)], "Input"], Cell[BoxData[ \({4.527351820245798`*^6, \(-7.209505102265705`*^6\)}\)], "Output"] }, Open ]], Cell["We can select the proper solution according to their norms,", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Norm[{X1, Y1, Z1}]\)], "Input"], Cell[BoxData[ \(6.374943213569625`*^6\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Norm[{X2, Y2, Z2}]\)], "Input"], Cell[BoxData[ \(1.0845636826358331`*^7\)], "Output"] }, Open ]], Cell["Consequently, the first solution is correct,", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(SetPrecision[{X1, Y1, Z1}, 10]\)], "Input"], Cell[BoxData[ \({1.1115904599622050300240517`10.000000000000004*^6, \ \(-4.3482586309091020375490189`10.*^6\), 4.5273518202457977458834648`9.999999999999998*^6}\)], "Output"] }, Open ]], Cell["\<\ It can be seen, that the direct numerical solution and the symbolic solution \ are the same for ten decimal digits (mm), while the direct numerical solution \ takes about two times more computing time, than the symbolic solution.\ \>", "Text"], Cell["\<\ In order to get the symbolic expression for the coefficients of the quadratic \ equation, other methods can also be used.\ \>", "Text"] }, Open ]], Cell[CellGroupData[{ Cell["3.2.2 Dixon resultant", "Subsubsection"], Cell[TextData[{ "The Dixon resultant, Dixon [16] and its generalization for multivariate \ cases Kapur et al. [17] are elimination techniques similar to the Sylvester \ resultant for polynomial systems, Bernstein [18]. This function is not a \ built-in part of ", StyleBox["Mathematica", FontSlant->"Italic"], " but the package utilizes the algorithm of Kapur, Saxena and Yang, written \ by Nakos and Williams [19], and was avaiable from Wolfram Mathsource, on the \ web at: http://library.wolfram.com/infocenter/Articles/2597/." }], "Text"], Cell[BoxData[ \(<< Resultant`Dixon`\)], "Input"], Cell[TextData[{ "Now we can solve the original system, eliminating the variables ", Cell[BoxData[ \(TraditionalForm\`x\_2\)]], " and ", Cell[BoxData[ \(TraditionalForm\`x\_3\)]], " to get ", " ", Cell[BoxData[ \(TraditionalForm\`x\_1\)], FontFamily->"Times New Roman"], "= g(", Cell[BoxData[ \(TraditionalForm\`x\_4\)], FontFamily->"Times New Roman"], ")," }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(drx1 = DixonResultant[{g\_1, g\_2, g\_3}, {x2, x3}, {u2, u3}]\)], "Input"], Cell[BoxData[ \(\(-x1\)\ a\_\(2, 3\)\ b\_\(1, 3\)\ c\_\(0, 3\) + x1\ a\_\(1, 3\)\ b\_\(2, 3\)\ c\_\(0, 3\) + x1\ a\_\(2, 3\)\ b\_\(0, 3\)\ c\_\(1, 3\) - x1\ a\_\(0, 3\)\ b\_\(2, 3\)\ c\_\(1, 3\) - x1\ a\_\(1, 3\)\ b\_\(0, 3\)\ c\_\(2, 3\) + x1\ a\_\(0, 3\)\ b\_\(1, 3\)\ c\_\(2, 3\) - x4\ b\_\(2, 3\)\ c\_\(1, 3\)\ d\_\(3, 0\) + x4\ b\_\(1, 3\)\ c\_\(2, 3\)\ d\_\(3, 0\) + x4\ b\_\(2, 3\)\ c\_\(0, 3\)\ d\_\(3, 1\) - x4\ b\_\(0, 3\)\ c\_\(2, 3\)\ d\_\(3, 1\) - x4\ b\_\(1, 3\)\ c\_\(0, 3\)\ d\_\(3, 2\) + x4\ b\_\(0, 3\)\ c\_\(1, 3\)\ d\_\(3, 2\) - b\_\(2, 3\)\ c\_\(1, 3\)\ e\_\(0, 3\) + b\_\(1, 3\)\ c\_\(2, 3\)\ e\_\(0, 3\) + b\_\(2, 3\)\ c\_\(0, 3\)\ e\_\(1, 3\) - b\_\(0, 3\)\ c\_\(2, 3\)\ e\_\(1, 3\) - b\_\(1, 3\)\ c\_\(0, 3\)\ e\_\(2, 3\) + b\_\(0, 3\)\ c\_\(1, 3\)\ e\_\(2, 3\)\)], "Output"] }, Open ]], Cell[TextData[{ "This is a linear expression containing only ", Cell[BoxData[ \(TraditionalForm\`x\_1\)]], " and ", Cell[BoxData[ \(TraditionalForm\`x\_4\)]], "," }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Exponent[drx1, {x1, x2, x3, x4}]\)], "Input"], Cell[BoxData[ \({1, 0, 0, 1}\)], "Output"] }, Open ]], Cell[TextData[{ "Then the solution for ", Cell[BoxData[ \(TraditionalForm\`x\_1\)], FontFamily->"Times New Roman"], "= g(", Cell[BoxData[ \(TraditionalForm\`x\_4\)], FontFamily->"Times New Roman"], ")" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(solx1 = Solve[drx1 \[Equal] 0, x1]\)], "Input"], Cell[BoxData[ \({{x1 \[Rule] \((\(-x4\)\ b\_\(2, 3\)\ c\_\(1, 3\)\ d\_\(3, 0\) + x4\ b\_\(1, 3\)\ c\_\(2, 3\)\ d\_\(3, 0\) + x4\ b\_\(2, 3\)\ c\_\(0, 3\)\ d\_\(3, 1\) - x4\ b\_\(0, 3\)\ c\_\(2, 3\)\ d\_\(3, 1\) - x4\ b\_\(1, 3\)\ c\_\(0, 3\)\ d\_\(3, 2\) + x4\ b\_\(0, 3\)\ c\_\(1, 3\)\ d\_\(3, 2\) - b\_\(2, 3\)\ c\_\(1, 3\)\ e\_\(0, 3\) + b\_\(1, 3\)\ c\_\(2, 3\)\ e\_\(0, 3\) + b\_\(2, 3\)\ c\_\(0, 3\)\ e\_\(1, 3\) - b\_\(0, 3\)\ c\_\(2, 3\)\ e\_\(1, 3\) - b\_\(1, 3\)\ c\_\(0, 3\)\ e\_\(2, 3\) + b\_\(0, 3\)\ c\_\(1, 3\)\ e\_\(2, 3\))\)/\((a\_\(2, 3\)\ \ b\_\(1, 3\)\ c\_\(0, 3\) - a\_\(1, 3\)\ b\_\(2, 3\)\ c\_\(0, 3\) - a\_\(2, 3\)\ b\_\(0, 3\)\ c\_\(1, 3\) + a\_\(0, 3\)\ b\_\(2, 3\)\ c\_\(1, 3\) + a\_\(1, 3\)\ b\_\(0, 3\)\ c\_\(2, 3\) - a\_\(0, 3\)\ b\_\(1, 3\)\ c\_\(2, 3\))\)}}\)], "Output"] }, Open ]], Cell[TextData[{ "Similarly, for the two additional variables, ", Cell[BoxData[ \(TraditionalForm\`x\_2\)], FontFamily->"Times New Roman"], "= g(", Cell[BoxData[ \(TraditionalForm\`x\_4\)], FontFamily->"Times New Roman"], ") and ", Cell[BoxData[ \(TraditionalForm\`x\_3\)], FontFamily->"Times New Roman"], "= g(", Cell[BoxData[ \(TraditionalForm\`x\_4\)], FontFamily->"Times New Roman"], ")," }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(drx2 = DixonResultant[{g\_1, g\_2, g\_3}, {x1, x3}, {u1, u3}]\)], "Input"], Cell[BoxData[ \(x2\ a\_\(2, 3\)\ b\_\(1, 3\)\ c\_\(0, 3\) - x2\ a\_\(1, 3\)\ b\_\(2, 3\)\ c\_\(0, 3\) - x2\ a\_\(2, 3\)\ b\_\(0, 3\)\ c\_\(1, 3\) + x2\ a\_\(0, 3\)\ b\_\(2, 3\)\ c\_\(1, 3\) + x2\ a\_\(1, 3\)\ b\_\(0, 3\)\ c\_\(2, 3\) - x2\ a\_\(0, 3\)\ b\_\(1, 3\)\ c\_\(2, 3\) - x4\ a\_\(2, 3\)\ c\_\(1, 3\)\ d\_\(3, 0\) + x4\ a\_\(1, 3\)\ c\_\(2, 3\)\ d\_\(3, 0\) + x4\ a\_\(2, 3\)\ c\_\(0, 3\)\ d\_\(3, 1\) - x4\ a\_\(0, 3\)\ c\_\(2, 3\)\ d\_\(3, 1\) - x4\ a\_\(1, 3\)\ c\_\(0, 3\)\ d\_\(3, 2\) + x4\ a\_\(0, 3\)\ c\_\(1, 3\)\ d\_\(3, 2\) - a\_\(2, 3\)\ c\_\(1, 3\)\ e\_\(0, 3\) + a\_\(1, 3\)\ c\_\(2, 3\)\ e\_\(0, 3\) + a\_\(2, 3\)\ c\_\(0, 3\)\ e\_\(1, 3\) - a\_\(0, 3\)\ c\_\(2, 3\)\ e\_\(1, 3\) - a\_\(1, 3\)\ c\_\(0, 3\)\ e\_\(2, 3\) + a\_\(0, 3\)\ c\_\(1, 3\)\ e\_\(2, 3\)\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Exponent[drx2, {x1, x2, x3, x4}]\)], "Input"], Cell[BoxData[ \({0, 1, 0, 1}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(solx2 = Solve[drx2 \[Equal] 0, x2]\)], "Input"], Cell[BoxData[ \({{x2 \[Rule] \((x4\ a\_\(2, 3\)\ c\_\(1, 3\)\ d\_\(3, 0\) - x4\ a\_\(1, 3\)\ c\_\(2, 3\)\ d\_\(3, 0\) - x4\ a\_\(2, 3\)\ c\_\(0, 3\)\ d\_\(3, 1\) + x4\ a\_\(0, 3\)\ c\_\(2, 3\)\ d\_\(3, 1\) + x4\ a\_\(1, 3\)\ c\_\(0, 3\)\ d\_\(3, 2\) - x4\ a\_\(0, 3\)\ c\_\(1, 3\)\ d\_\(3, 2\) + a\_\(2, 3\)\ c\_\(1, 3\)\ e\_\(0, 3\) - a\_\(1, 3\)\ c\_\(2, 3\)\ e\_\(0, 3\) - a\_\(2, 3\)\ c\_\(0, 3\)\ e\_\(1, 3\) + a\_\(0, 3\)\ c\_\(2, 3\)\ e\_\(1, 3\) + a\_\(1, 3\)\ c\_\(0, 3\)\ e\_\(2, 3\) - a\_\(0, 3\)\ c\_\(1, 3\)\ e\_\(2, 3\))\)/\((a\_\(2, 3\)\ \ b\_\(1, 3\)\ c\_\(0, 3\) - a\_\(1, 3\)\ b\_\(2, 3\)\ c\_\(0, 3\) - a\_\(2, 3\)\ b\_\(0, 3\)\ c\_\(1, 3\) + a\_\(0, 3\)\ b\_\(2, 3\)\ c\_\(1, 3\) + a\_\(1, 3\)\ b\_\(0, 3\)\ c\_\(2, 3\) - a\_\(0, 3\)\ b\_\(1, 3\)\ c\_\(2, 3\))\)}}\)], "Output"] }, Open ]], Cell["and", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(drx3 = DixonResultant[{g\_1, g\_2, g\_3}, {x1, x2}, {u1, u2}]\)], "Input"], Cell[BoxData[ \(\(-x3\)\ a\_\(2, 3\)\ b\_\(1, 3\)\ c\_\(0, 3\) + x3\ a\_\(1, 3\)\ b\_\(2, 3\)\ c\_\(0, 3\) + x3\ a\_\(2, 3\)\ b\_\(0, 3\)\ c\_\(1, 3\) - x3\ a\_\(0, 3\)\ b\_\(2, 3\)\ c\_\(1, 3\) - x3\ a\_\(1, 3\)\ b\_\(0, 3\)\ c\_\(2, 3\) + x3\ a\_\(0, 3\)\ b\_\(1, 3\)\ c\_\(2, 3\) - x4\ a\_\(2, 3\)\ b\_\(1, 3\)\ d\_\(3, 0\) + x4\ a\_\(1, 3\)\ b\_\(2, 3\)\ d\_\(3, 0\) + x4\ a\_\(2, 3\)\ b\_\(0, 3\)\ d\_\(3, 1\) - x4\ a\_\(0, 3\)\ b\_\(2, 3\)\ d\_\(3, 1\) - x4\ a\_\(1, 3\)\ b\_\(0, 3\)\ d\_\(3, 2\) + x4\ a\_\(0, 3\)\ b\_\(1, 3\)\ d\_\(3, 2\) - a\_\(2, 3\)\ b\_\(1, 3\)\ e\_\(0, 3\) + a\_\(1, 3\)\ b\_\(2, 3\)\ e\_\(0, 3\) + a\_\(2, 3\)\ b\_\(0, 3\)\ e\_\(1, 3\) - a\_\(0, 3\)\ b\_\(2, 3\)\ e\_\(1, 3\) - a\_\(1, 3\)\ b\_\(0, 3\)\ e\_\(2, 3\) + a\_\(0, 3\)\ b\_\(1, 3\)\ e\_\(2, 3\)\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Exponent[drx3, {x1, x2, x3, x4}]\)], "Input"], Cell[BoxData[ \({0, 0, 1, 1}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(solx3 = Solve[drx3 \[Equal] 0, x3]\)], "Input"], Cell[BoxData[ \({{x3 \[Rule] \((\(-x4\)\ a\_\(2, 3\)\ b\_\(1, 3\)\ d\_\(3, 0\) + x4\ a\_\(1, 3\)\ b\_\(2, 3\)\ d\_\(3, 0\) + x4\ a\_\(2, 3\)\ b\_\(0, 3\)\ d\_\(3, 1\) - x4\ a\_\(0, 3\)\ b\_\(2, 3\)\ d\_\(3, 1\) - x4\ a\_\(1, 3\)\ b\_\(0, 3\)\ d\_\(3, 2\) + x4\ a\_\(0, 3\)\ b\_\(1, 3\)\ d\_\(3, 2\) - a\_\(2, 3\)\ b\_\(1, 3\)\ e\_\(0, 3\) + a\_\(1, 3\)\ b\_\(2, 3\)\ e\_\(0, 3\) + a\_\(2, 3\)\ b\_\(0, 3\)\ e\_\(1, 3\) - a\_\(0, 3\)\ b\_\(2, 3\)\ e\_\(1, 3\) - a\_\(1, 3\)\ b\_\(0, 3\)\ e\_\(2, 3\) + a\_\(0, 3\)\ b\_\(1, 3\)\ e\_\(2, 3\))\)/\((a\_\(2, 3\)\ \ b\_\(1, 3\)\ c\_\(0, 3\) - a\_\(1, 3\)\ b\_\(2, 3\)\ c\_\(0, 3\) - a\_\(2, 3\)\ b\_\(0, 3\)\ c\_\(1, 3\) + a\_\(0, 3\)\ b\_\(2, 3\)\ c\_\(1, 3\) + a\_\(1, 3\)\ b\_\(0, 3\)\ c\_\(2, 3\) - a\_\(0, 3\)\ b\_\(1, 3\)\ c\_\(2, 3\))\)}}\)], "Output"] }, Open ]], Cell[TextData[{ "After substitution, we have again a quadratic equation for ", Cell[BoxData[ \(TraditionalForm\`x\_4\)]], "," }], "Text"], Cell[BoxData[ \(\(G = e\_4 /. {solx1[\([1, 1]\)], solx2[\([1, 1]\)], solx3[\([1, 1]\)]};\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(Exponent[G, x4, List]\)], "Input"], Cell[BoxData[ \({0, 1, 2}\)], "Output"] }, Open ]], Cell["The coefficents of the quadratic equation are,", "Text"], Cell[BoxData[ \(\(h2d = Coefficient[G, x4\^2];\)\)], "Input"], Cell[BoxData[ \(\(h1d = Coefficient[G, x4];\)\)], "Input"], Cell[BoxData[ \(\(h0d = Simplify[G - \((h2d\ x4\^2 + h1d\ x4)\)];\)\)], "Input"], Cell["and ", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(D[h0, x4]\)], "Input"], Cell[BoxData[ \(0\)], "Output"] }, Open ]], Cell["\<\ The coefficients provided by the Sturmfels' method and the Dixon resultant \ are the same,\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \({h2 - h2d, h1 - h1d, h0 - h0d} // Simplify\)], "Input"], Cell[BoxData[ \({0, 0, 0}\)], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["3.2.3 Groebner basis approach", "Subsubsection"], Cell[TextData[{ "Probably, the most effective elimination technique is the lexicographic \ Groebner basis technique that utilizes the Gauss elimination technique for \ multivariate polynomial systems, as proposed by Buchberger [20]. This method \ is implemented in ", StyleBox["Mathematica", FontSlant->"Italic"], " and Maple, too." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(gb = GroebnerBasis[{g\_1, g\_2, g\_3}, {x1, x2, x3, x4}] // Simplify\)], "Input"], Cell[BoxData[ \({a\_\(2, 3\)\ \((\(-b\_\(1, 3\)\)\ \((x3\ c\_\(0, 3\) + x4\ d\_\(3, 0\) + e\_\(0, 3\))\) + b\_\(0, 3\)\ \((x3\ c\_\(1, 3\) + x4\ d\_\(3, 1\) + e\_\(1, 3\))\))\) + a\_\(1, 3\)\ \((b\_\(2, 3\)\ \((x3\ c\_\(0, 3\) + x4\ d\_\(3, 0\) + e\_\(0, 3\))\) - b\_\(0, 3\)\ \((x3\ c\_\(2, 3\) + x4\ d\_\(3, 2\) + e\_\(2, 3\))\))\) + a\_\(0, 3\)\ \((\(-b\_\(2, 3\)\)\ \((x3\ c\_\(1, 3\) + x4\ d\_\(3, 1\) + e\_\(1, 3\))\) + b\_\(1, 3\)\ \((x3\ c\_\(2, 3\) + x4\ d\_\(3, 2\) + e\_\(2, 3\))\))\), \(-a\_\(2, 3\)\)\ \((x2\ b\_\(1, 3\) + x3\ c\_\(1, 3\) + x4\ d\_\(3, 1\) + e\_\(1, 3\))\) + a\_\(1, 3\)\ \((x2\ b\_\(2, 3\) + x3\ c\_\(2, 3\) + x4\ d\_\(3, 2\) + e\_\(2, 3\))\), \(-a\_\(2, 3\)\)\ \((x2\ b\_\(0, 3\) + x3\ c\_\(0, 3\) + x4\ d\_\(3, 0\) + e\_\(0, 3\))\) + a\_\(0, 3\)\ \((x2\ b\_\(2, 3\) + x3\ c\_\(2, 3\) + x4\ d\_\(3, 2\) + e\_\(2, 3\))\), \(-a\_\(1, 3\)\)\ \((x2\ b\_\(0, 3\) + x3\ c\_\(0, 3\) + x4\ d\_\(3, 0\) + e\_\(0, 3\))\) + a\_\(0, 3\)\ \((x2\ b\_\(1, 3\) + x3\ c\_\(1, 3\) + x4\ d\_\(3, 1\) + e\_\(1, 3\))\), x1\ a\_\(2, 3\) + x2\ b\_\(2, 3\) + x3\ c\_\(2, 3\) + x4\ d\_\(3, 2\) + e\_\(2, 3\), x1\ a\_\(1, 3\) + x2\ b\_\(1, 3\) + x3\ c\_\(1, 3\) + x4\ d\_\(3, 1\) + e\_\(1, 3\), x1\ a\_\(0, 3\) + x2\ b\_\(0, 3\) + x3\ c\_\(0, 3\) + x4\ d\_\(3, 0\) + e\_\(0, 3\)}\)], "Output"] }, Open ]], Cell["This basis consists of seven polynoms,", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Length[gb]\)], "Input"], Cell[BoxData[ \(7\)], "Output"] }, Open ]], Cell["\<\ When we compute the exponents of the variables of the different \ polynomials,\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Table[Exponent[gb[\([i]\)], {x1, x2, x3, x4}], {i, 1, 7}]\)], "Input"], Cell[BoxData[ \({{0, 0, 1, 1}, {0, 1, 1, 1}, {0, 1, 1, 1}, {0, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}}\)], "Output"] }, Open ]], Cell[TextData[{ "it is easy to see, that from the first one, one can get ", Cell[BoxData[ \(TraditionalForm\`x\_3\)], FontFamily->"Times New Roman"], "= g(", Cell[BoxData[ \(TraditionalForm\`x\_4\)], FontFamily->"Times New Roman"], "), then employing this, the second one gives ", Cell[BoxData[ \(TraditionalForm\`x\_2\)], FontFamily->"Times New Roman"], "= g(", Cell[BoxData[ \(TraditionalForm\`x\_4\)], FontFamily->"Times New Roman"], ") and the fifth one provides ", Cell[BoxData[ \(TraditionalForm\`x\_1\)], FontFamily->"Times New Roman"], "= g(", Cell[BoxData[ \(TraditionalForm\`x\_4\)], FontFamily->"Times New Roman"], "). Let us compute ", Cell[BoxData[ \(TraditionalForm\`x\_3\)]], " as function of ", Cell[BoxData[ \(TraditionalForm\`x\_4\)]], "," }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(solx3 = Solve[gb[\([1]\)] \[Equal] 0, x3] // Simplify\)], "Input"], Cell[BoxData[ \({{x3 \[Rule] \((a\_\(2, 3\)\ \((b\_\(1, 3\)\ \((x4\ d\_\(3, 0\) + e\_\(0, 3\))\) - b\_\(0, 3\)\ \((x4\ d\_\(3, 1\) + e\_\(1, 3\))\))\) + a\_\(1, 3\)\ \((\(-b\_\(2, 3\)\)\ \((x4\ d\_\(3, 0\) + e\_\(0, 3\))\) + b\_\(0, 3\)\ \((x4\ d\_\(3, 2\) + e\_\(2, 3\))\))\) + a\_\(0, 3\)\ \((b\_\(2, 3\)\ \((x4\ d\_\(3, 1\) + e\_\(1, 3\))\) - b\_\(1, 3\)\ \((x4\ d\_\(3, 2\) + e\_\(2, 3\))\))\))\)/\((a\_\(2, 3\)\ \ \((\(-b\_\(1, 3\)\)\ c\_\(0, 3\) + b\_\(0, 3\)\ c\_\(1, 3\))\) + a\_\(1, 3\)\ \((b\_\(2, 3\)\ c\_\(0, 3\) - b\_\(0, 3\)\ c\_\(2, 3\))\) + a\_\(0, 3\)\ \((\(-b\_\(2, 3\)\)\ c\_\(1, 3\) + b\_\(1, 3\)\ c\_\(2, 3\))\))\)}}\)], "Output"] }, Open ]], Cell[TextData[{ "Then ", " ", Cell[BoxData[ \(TraditionalForm\`x\_2\)], FontFamily->"Times New Roman"], "= g(", Cell[BoxData[ \(TraditionalForm\`x\_4\)], FontFamily->"Times New Roman"], ") " }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(solx2 = Solve[gb[\([2]\)] \[Equal] 0, x2] /. solx3[\([1]\)] // Simplify\)], "Input"], Cell[BoxData[ \({{x2 \[Rule] \((a\_\(2, 3\)\ \((\(-c\_\(1, 3\)\)\ \((x4\ d\_\(3, 0\) + e\_\(0, 3\))\) + c\_\(0, 3\)\ \((x4\ d\_\(3, 1\) + e\_\(1, 3\))\))\) + a\_\(1, 3\)\ \((c\_\(2, 3\)\ \((x4\ d\_\(3, 0\) + e\_\(0, 3\))\) - c\_\(0, 3\)\ \((x4\ d\_\(3, 2\) + e\_\(2, 3\))\))\) + a\_\(0, 3\)\ \((\(-c\_\(2, 3\)\)\ \((x4\ d\_\(3, 1\) + e\_\(1, 3\))\) + c\_\(1, 3\)\ \((x4\ d\_\(3, 2\) + e\_\(2, 3\))\))\))\)/\((a\_\(2, 3\)\ \ \((\(-b\_\(1, 3\)\)\ c\_\(0, 3\) + b\_\(0, 3\)\ c\_\(1, 3\))\) + a\_\(1, 3\)\ \((b\_\(2, 3\)\ c\_\(0, 3\) - b\_\(0, 3\)\ c\_\(2, 3\))\) + a\_\(0, 3\)\ \((\(-b\_\(2, 3\)\)\ c\_\(1, 3\) + b\_\(1, 3\)\ c\_\(2, 3\))\))\)}}\)], "Output"] }, Open ]], Cell[TextData[{ "Finally, ", Cell[BoxData[ \(TraditionalForm\`x\_1\)], FontFamily->"Times New Roman"], "= g(", Cell[BoxData[ \(TraditionalForm\`x\_4\)], FontFamily->"Times New Roman"], ") " }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(solx1 = \(Solve[gb[\([5]\)] \[Equal] 0, x1] /. solx2[\([1]\)]\) /. solx3[\([1]\)] // Simplify\)], "Input"], Cell[BoxData[ \({{x1 \[Rule] \((b\_\(2, 3\)\ \((c\_\(1, 3\)\ \((x4\ d\_\(3, 0\) + e\_\(0, 3\))\) - c\_\(0, 3\)\ \((x4\ d\_\(3, 1\) + e\_\(1, 3\))\))\) + b\_\(1, 3\)\ \((\(-c\_\(2, 3\)\)\ \((x4\ d\_\(3, 0\) + e\_\(0, 3\))\) + c\_\(0, 3\)\ \((x4\ d\_\(3, 2\) + e\_\(2, 3\))\))\) + b\_\(0, 3\)\ \((c\_\(2, 3\)\ \((x4\ d\_\(3, 1\) + e\_\(1, 3\))\) - c\_\(1, 3\)\ \((x4\ d\_\(3, 2\) + e\_\(2, 3\))\))\))\)/\((a\_\(2, 3\)\ \ \((\(-b\_\(1, 3\)\)\ c\_\(0, 3\) + b\_\(0, 3\)\ c\_\(1, 3\))\) + a\_\(1, 3\)\ \((b\_\(2, 3\)\ c\_\(0, 3\) - b\_\(0, 3\)\ c\_\(2, 3\))\) + a\_\(0, 3\)\ \((\(-b\_\(2, 3\)\)\ c\_\(1, 3\) + b\_\(1, 3\)\ c\_\(2, 3\))\))\)}}\)], "Output"] }, Open ]], Cell["After substitution, we get a quadratic equation again,", "Text"], Cell[BoxData[ \(\(G = e\_4 /. {solx1[\([1, 1]\)], solx2[\([1, 1]\)], solx3[\([1, 1]\)]};\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(Exponent[G, x4, List]\)], "Input"], Cell[BoxData[ \({0, 1, 2}\)], "Output"] }, Open ]], Cell["\<\ Then, we get the coefficients of the quadratic equation in the usual way,\ \>", "Text"], Cell[BoxData[ \(\(h2gL = Coefficient[G, x4\^2];\)\)], "Input"], Cell[BoxData[ \(\(h1gL = Coefficient[G, x4];\)\)], "Input"], Cell[BoxData[ \(\(h0gL = Simplify[G - \((h2gL\ x4\^2 + h1gL\ x4)\)];\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(D[h0gL, x4]\)], "Input"], Cell[BoxData[ \(0\)], "Output"] }, Open ]], Cell["This solution is correct indeed,", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \({h2 - h2gL, h1 - h1gL, h0 - h0gL} // Simplify\)], "Input"], Cell[BoxData[ \({0, 0, 0}\)], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["3.2.4 Reduced Groebner basis approach", "Subsubsection"], Cell[TextData[{ "The built-in function ", StyleBox["GroebnerBasis", FontFamily->"Courier New", FontWeight->"Bold"], StyleBox[" ", FontFamily->"Courier New"], "can be also used to eliminate directly prespecified variables from the \ basis, Trott [21]. In this case, one may employ this function in a similar \ way to the Dixon method. It goes without saying, that now the function should \ be called three times with different arguments." }], "Text"], Cell[TextData[{ "First, again we want ", Cell[BoxData[ \(TraditionalForm\`x\_1\)], FontFamily->"Times New Roman"], "= g(", Cell[BoxData[ \(TraditionalForm\`x\_4\)], FontFamily->"Times New Roman"], "), therefore variables ", Cell[BoxData[ \(TraditionalForm\`x\_2\)]], " and ", Cell[BoxData[ \(TraditionalForm\`x\_3\)]], " should be eliminated from the Groebner basis," }], "Text"], Cell[BoxData[ \(\({gbx1} = GroebnerBasis[{g\_1, g\_2, g\_3}, {x1, x4}, {x2, x3}];\)\)], "Input"], Cell["Now, the basis contains only one equation,", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Length[{gbx1}]\)], "Input"], Cell[BoxData[ \(1\)], "Output"] }, Open ]], Cell[TextData[{ "in which only ", Cell[BoxData[ \(TraditionalForm\`x\_1\)]], " and ", Cell[BoxData[ \(TraditionalForm\`x\_4\)]], " can be found," }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Exponent[gbx1, {x1, x2, x3, x4}]\)], "Input"], Cell[BoxData[ \({1, 0, 0, 1}\)], "Output"] }, Open ]], Cell[BoxData[ \(\(\(Therefore\ x\_1\ = \ g \((x\_4)\)\ can\ be\ computed\ directly\)\(,\)\)\)], "Text", FontFamily->"Times New Roman"], Cell[CellGroupData[{ Cell[BoxData[ \(solx1 = Solve[gbx1 \[Equal] 0, x1] // Simplify\)], "Input"], Cell[BoxData[ \({{x1 \[Rule] \((b\_\(2, 3\)\ \((c\_\(1, 3\)\ \((x4\ d\_\(3, 0\) + e\_\(0, 3\))\) - c\_\(0, 3\)\ \((x4\ d\_\(3, 1\) + e\_\(1, 3\))\))\) + b\_\(1, 3\)\ \((\(-c\_\(2, 3\)\)\ \((x4\ d\_\(3, 0\) + e\_\(0, 3\))\) + c\_\(0, 3\)\ \((x4\ d\_\(3, 2\) + e\_\(2, 3\))\))\) + b\_\(0, 3\)\ \((c\_\(2, 3\)\ \((x4\ d\_\(3, 1\) + e\_\(1, 3\))\) - c\_\(1, 3\)\ \((x4\ d\_\(3, 2\) + e\_\(2, 3\))\))\))\)/\((a\_\(2, 3\)\ \ \((\(-b\_\(1, 3\)\)\ c\_\(0, 3\) + b\_\(0, 3\)\ c\_\(1, 3\))\) + a\_\(1, 3\)\ \((b\_\(2, 3\)\ c\_\(0, 3\) - b\_\(0, 3\)\ c\_\(2, 3\))\) + a\_\(0, 3\)\ \((\(-b\_\(2, 3\)\)\ c\_\(1, 3\) + b\_\(1, 3\)\ c\_\(2, 3\))\))\)}}\)], "Output"] }, Open ]], Cell["Similarly, in the other cases", "Text"], Cell[BoxData[ \(\({gbx2} = GroebnerBasis[{g\_1, g\_2, g\_3}, {x2, x4}, {x1, x3}];\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(Exponent[gbx2, {x1, x2, x3, x4}]\)], "Input"], Cell[BoxData[ \({0, 1, 0, 1}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(solx2 = Solve[gbx2 \[Equal] 0, x2] // Simplify\)], "Input"], Cell[BoxData[ \({{x2 \[Rule] \((a\_\(2, 3\)\ \((\(-c\_\(1, 3\)\)\ \((x4\ d\_\(3, 0\) + e\_\(0, 3\))\) + c\_\(0, 3\)\ \((x4\ d\_\(3, 1\) + e\_\(1, 3\))\))\) + a\_\(1, 3\)\ \((c\_\(2, 3\)\ \((x4\ d\_\(3, 0\) + e\_\(0, 3\))\) - c\_\(0, 3\)\ \((x4\ d\_\(3, 2\) + e\_\(2, 3\))\))\) + a\_\(0, 3\)\ \((\(-c\_\(2, 3\)\)\ \((x4\ d\_\(3, 1\) + e\_\(1, 3\))\) + c\_\(1, 3\)\ \((x4\ d\_\(3, 2\) + e\_\(2, 3\))\))\))\)/\((a\_\(2, 3\)\ \ \((\(-b\_\(1, 3\)\)\ c\_\(0, 3\) + b\_\(0, 3\)\ c\_\(1, 3\))\) + a\_\(1, 3\)\ \((b\_\(2, 3\)\ c\_\(0, 3\) - b\_\(0, 3\)\ c\_\(2, 3\))\) + a\_\(0, 3\)\ \((\(-b\_\(2, 3\)\)\ c\_\(1, 3\) + b\_\(1, 3\)\ c\_\(2, 3\))\))\)}}\)], "Output"] }, Open ]], Cell["and", "Text"], Cell[BoxData[ \(\({gbx3} = GroebnerBasis[{g\_1, g\_2, g\_3}, {x3, x4}, {x1, x2}];\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(Exponent[gbx3, {x1, x2, x3, x4}]\)], "Input"], Cell[BoxData[ \({0, 0, 1, 1}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(solx3 = Solve[gbx3 \[Equal] 0, x3] // Simplify\)], "Input"], Cell[BoxData[ \({{x3 \[Rule] \((a\_\(2, 3\)\ \((b\_\(1, 3\)\ \((x4\ d\_\(3, 0\) + e\_\(0, 3\))\) - b\_\(0, 3\)\ \((x4\ d\_\(3, 1\) + e\_\(1, 3\))\))\) + a\_\(1, 3\)\ \((\(-b\_\(2, 3\)\)\ \((x4\ d\_\(3, 0\) + e\_\(0, 3\))\) + b\_\(0, 3\)\ \((x4\ d\_\(3, 2\) + e\_\(2, 3\))\))\) + a\_\(0, 3\)\ \((b\_\(2, 3\)\ \((x4\ d\_\(3, 1\) + e\_\(1, 3\))\) - b\_\(1, 3\)\ \((x4\ d\_\(3, 2\) + e\_\(2, 3\))\))\))\)/\((a\_\(2, 3\)\ \ \((\(-b\_\(1, 3\)\)\ c\_\(0, 3\) + b\_\(0, 3\)\ c\_\(1, 3\))\) + a\_\(1, 3\)\ \((b\_\(2, 3\)\ c\_\(0, 3\) - b\_\(0, 3\)\ c\_\(2, 3\))\) + a\_\(0, 3\)\ \((\(-b\_\(2, 3\)\)\ c\_\(1, 3\) + b\_\(1, 3\)\ c\_\(2, 3\))\))\)}}\)], "Output"] }, Open ]], Cell["After substituting them, we get", "Text"], Cell[BoxData[ \(\(G = e\_4 /. {solx1[\([1, 1]\)], solx2[\([1, 1]\)], solx3[\([1, 1]\)]};\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(Exponent[G, x4, List]\)], "Input"], Cell[BoxData[ \({0, 1, 2}\)], "Output"] }, Open ]], Cell["Then the coefficients of the quadratic equation are,", "Text"], Cell[BoxData[ \(\(h2gR = Coefficient[G, x4\^2];\)\)], "Input"], Cell[BoxData[ \(\(h1gR = Coefficient[G, x4];\)\)], "Input"], Cell[BoxData[ \(\(h0gR = Simplify[G - \((h2gR\ x4\^2 + h1gR\ x4)\)];\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(D[h0gR, x4]\)], "Input"], Cell[BoxData[ \(0\)], "Output"] }, Open ]], Cell["We have again, the same result,", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \({h2 - h2gR, h1 - h1gR, h0 - h0gR} // Simplify\)], "Input"], Cell[BoxData[ \({0, 0, 0}\)], "Output"] }, Open ]], Cell["\<\ The values of the input data are seldom known exactly because of measurement \ errors. Consequently, the following question can arise: How does the relative \ error in the solution depend on the error of the input data? The sensitivity \ of a solution can be estimated on the basis of the linearized form of the \ system of the polynomial equations ({e1, e2, e3, e4}, around the solution. \ The bound of the relative error is approximately proportional to the \ condition number of the matrix of this linearized system as well as with the \ working precision of the computation, see Skeel and Keiper [27]. In practice, in order to reduce measurement error, the signals of more than \ four satellites are often received. \ \>", "Text"] }, Open ]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["4. Solutions of the N-points problem", "Section", TextAlignment->Left], Cell["\<\ Now, we extend the concept to the case where more than four GPS satellites \ are in view, as it is usually in practice. In that case, there are more \ independent equations than unknown variables. For illustration, we have data \ of six satellites with the following numerical values,\ \>", "Text"], Cell[BoxData[ \(\(datan = {a\_0 \[Rule] 14177553.47, a\_1 \[Rule] 15097199.81, a\_2 \[Rule] 23460342.33, a\_3 \[Rule] \(-8206488.95\), a\_4 \[Rule] 1399988.07, a\_5 \[Rule] 6995655.48, \[IndentingNewLine]b\_0 \[Rule] \(-18814768.09\), b\_1 \[Rule] \(-4636088.67\), b\_2 \[Rule] \(-9433518.58\), \[IndentingNewLine]b\_3 \[Rule] \ \(-18217989.14\), b\_4 \[Rule] \(-17563734.90\), b\_5 \[Rule] \(-23537808.26\), \[IndentingNewLine]c\_0 \[Rule] 12243866.38, c\_1 \[Rule] 21326706.55, c\_2 \[Rule] 8174941.25, \[IndentingNewLine]c\_3 \[Rule] 17605231.99, c\_4 \[Rule] 19705591.18, c\_5 \[Rule] \(-9927906.48\), \ \[IndentingNewLine]d\_0 \[Rule] 21119278.32, d\_1 \[Rule] 22527064.18, d\_2 \[Rule] 23674159.88, \[IndentingNewLine]d\_3 \[Rule] 20951647.38, d\_4 \[Rule] 20155401.42, d\_5 \[Rule] 24222110.91};\)\)], "Input"], Cell["\<\ First, as a direct numerical method, the minimization of the residuals of the \ equation, the least square approach will be presented.\ \>", "Text"], Cell[CellGroupData[{ Cell["4.1 Direct numerical solution", "Subsection", CellDingbat->None], Cell[TextData[{ "The general form of the equation for the ", StyleBox["i", FontSlant->"Italic"], "-th satellite is" }], "Text"], Cell[BoxData[ \(\(e = \((x1 - a\_i)\)\^2 + \((x2 - b\_i)\)\^2 + \((x3 - c\_i)\)\^2 - \ \((x4 - d\_i)\)\^2;\)\)], "Input"], Cell["\<\ The objective to be minimized is the sum of squares of residuals of the \ equations\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(f = Apply[Plus, Table[e\^2 /. datan, {i, 0, 5}]] // Simplify\)], "Input"], Cell[BoxData[ \(\((\((\(-6.99565548`*^6\) + x1)\)\^2 + \((2.353780826`*^7 + x2)\)\^2 + \ \((9.92790648`*^6 + x3)\)\^2 - 1.`\ \((\(-2.422211091`*^7\) + x4)\)\^2)\)\^2 \ + \((\((\(-2.346034233`*^7\) + x1)\)\^2 + \((9.43351858`*^6 + x2)\)\^2 + \ \((\(-8.17494125`*^6\) + x3)\)\^2 - 1.`\ \((\(-2.367415988`*^7\) + \ x4)\)\^2)\)\^2 + \((\((\(-1.509719981`*^7\) + x1)\)\^2 + \((4.63608867`*^6 + \ x2)\)\^2 + \((\(-2.132670655`*^7\) + x3)\)\^2 - 1.`\ \((\(-2.252706418`*^7\) \ + x4)\)\^2)\)\^2 + \((\((\(-1.417755347`*^7\) + x1)\)\^2 + \((1.881476809`*^7 \ + x2)\)\^2 + \((\(-1.224386638`*^7\) + x3)\)\^2 - 1.`\ \ \((\(-2.111927832`*^7\) + x4)\)\^2)\)\^2 + \((\((8.20648895`*^6 + x1)\)\^2 + \ \((1.821798914`*^7 + x2)\)\^2 + \((\(-1.760523199`*^7\) + x3)\)\^2 - 1.`\ \((\ \(-2.095164738`*^7\) + x4)\)\^2)\)\^2 + \((\((\(-1.39998807`*^6\) + x1)\)\^2 \ + \((1.75637349`*^7 + x2)\)\^2 + \((\(-1.970559118`*^7\) + x3)\)\^2 - 1.`\ \ \((\(-2.015540142`*^7\) + x4)\)\^2)\)\^2\)], "Output"] }, Open ]], Cell[TextData[{ "To find the global minimum, the built-in function ", StyleBox["NMinimize ", FontFamily->"Courier New", FontWeight->"Bold"], StyleBox["is more promising than ", FontVariations->{"CompatibilityType"->0}], StyleBox["FindMinimum, which is", FontFamily->"Courier New", FontWeight->"Bold", FontVariations->{"CompatibilityType"->0}], StyleBox[" designed to search local minimum,", FontVariations->{"CompatibilityType"->0}] }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(solN = NMinimize[f, {x1, x2, x3, x4}] // Timing\)], "Input"], Cell[BoxData[ \({0.0940000000000003`\ Second, {2.2133794033324987`*^18, {x1 \[Rule] 596928.9104485177`, x2 \[Rule] \(-4.847849314421885`*^6\), x3 \[Rule] 4.0882244471657686`*^6, x4 \[Rule] 13.452575856474828`}}}\)], "Output"] }, Open ]], Cell["or", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(SetPrecision[solN[\([2, 2]\)], 10]\)], "Input"], Cell[BoxData[ \({x1 \[Rule] 596928.9104485176503658295`10. , x2 \[Rule] \(-4.8478493144218847155570984`10.000000000000004*^6\), x3 \[Rule] 4.0882244471657685935497284`10.*^6, x4 \[Rule] 13.4525758564748283419`9.999999999999998}\)], "Output"] }, Open ]], Cell["\<\ However, if we employ the norm of the distance instead of the residium of the \ equations, namely\ \>", "Text"], Cell[BoxData[ \(\(en = \((d\_i - \((\@\(\((x1 - a\_i)\)\^2 + \((x2 - b\_i)\)\^2 + \((x3 \ - c\_i)\)\^2\) - x4)\))\)\^2;\)\)], "Input"], Cell["and then the objective is,", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(fn = \@Apply[Plus, Table[en /. datan, {i, 0, 5}]]\)], "Input"], Cell[BoxData[ \(\[Sqrt]\((\((2.252706418`*^7 - \[Sqrt]\((\((\(-1.509719981`*^7\) + \ x1)\)\^2 + \((4.63608867`*^6 + x2)\)\^2 + \((\(-2.132670655`*^7\) + x3)\)\^2)\ \) + x4)\)\^2 + \((2.015540142`*^7 - \[Sqrt]\((\((\(-1.39998807`*^6\) + x1)\)\ \^2 + \((1.75637349`*^7 + x2)\)\^2 + \((\(-1.970559118`*^7\) + x3)\)\^2)\) + \ x4)\)\^2 + \((2.095164738`*^7 - \[Sqrt]\((\((8.20648895`*^6 + x1)\)\^2 + \ \((1.821798914`*^7 + x2)\)\^2 + \((\(-1.760523199`*^7\) + x3)\)\^2)\) + x4)\)\ \^2 + \((2.111927832`*^7 - \[Sqrt]\((\((\(-1.417755347`*^7\) + x1)\)\^2 + \ \((1.881476809`*^7 + x2)\)\^2 + \((\(-1.224386638`*^7\) + x3)\)\^2)\) + x4)\)\ \^2 + \((2.367415988`*^7 - \[Sqrt]\((\((\(-2.346034233`*^7\) + x1)\)\^2 + \ \((9.43351858`*^6 + x2)\)\^2 + \((\(-8.17494125`*^6\) + x3)\)\^2)\) + \ x4)\)\^2 + \((2.422211091`*^7 - \[Sqrt]\((\((\(-6.99565548`*^6\) + x1)\)\^2 + \ \((2.353780826`*^7 + x2)\)\^2 + \((9.92790648`*^6 + x3)\)\^2)\) + x4)\)\^2)\)\ \)], "Output"] }, Open ]], Cell["The optimum will be somewhat different,", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(solNn = NMinimize[fn, {x1, x2, x3, x4}] // Timing\)], "Input"], Cell[BoxData[ \({0.6099999999999994`\ Second, {36.11188122348132`, {x1 \[Rule] 596929.6534895949`, x2 \[Rule] \(-4.847851552598966`*^6\), x3 \[Rule] 4.0882267956628576`*^6, x4 \[Rule] \(-15.518048455522015`\)}}}\)], "Output"] }, Open ]], Cell["or", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(SetPrecision[solNn[\([2, 2]\)], 10]\)], "Input"], Cell[BoxData[ \({x1 \[Rule] 596929.6534895949298515916`10. , x2 \[Rule] \(-4.8478515525989662855863571`10.*^6\), x3 \[Rule] 4.0882267956628575921058655`10.*^6, x4 \[Rule] \(-15.5180484555220150611`10. \)}\)], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["4.2 Indirect semi-symbolical solution", "Subsection", CellDingbat->None], Cell["\<\ This minimization problem can be transformed into a set of nonlinear \ equations. The symbolic form of the objective to be minimized is,\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(f = Apply[Plus, Table[e\^2, {i, 0, 5}]]\)], "Input"], Cell[BoxData[ \(\((\((x1 - a\_0)\)\^2 + \((x2 - b\_0)\)\^2 + \((x3 - c\_0)\)\^2 - \((x4 \ - d\_0)\)\^2)\)\^2 + \((\((x1 - a\_1)\)\^2 + \((x2 - b\_1)\)\^2 + \((x3 - \ c\_1)\)\^2 - \((x4 - d\_1)\)\^2)\)\^2 + \((\((x1 - a\_2)\)\^2 + \((x2 - b\_2)\ \)\^2 + \((x3 - c\_2)\)\^2 - \((x4 - d\_2)\)\^2)\)\^2 + \((\((x1 - a\_3)\)\^2 \ + \((x2 - b\_3)\)\^2 + \((x3 - c\_3)\)\^2 - \((x4 - d\_3)\)\^2)\)\^2 + \ \((\((x1 - a\_4)\)\^2 + \((x2 - b\_4)\)\^2 + \((x3 - c\_4)\)\^2 - \((x4 - \ d\_4)\)\^2)\)\^2 + \((\((x1 - a\_5)\)\^2 + \((x2 - b\_5)\)\^2 + \((x3 - c\_5)\ \)\^2 - \((x4 - d\_5)\)\^2)\)\^2\)], "Output"] }, Open ]], Cell["\<\ The necessary conditions for the existence of the extreme value are the zero \ partial derivatives, namely\ \>", "Text"], Cell[BoxData[ \(\(g1 = D[f, x1];\)\)], "Input"], Cell[BoxData[ \(\(g2 = D[f, x2];\)\)], "Input"], Cell[BoxData[ \(\(g3 = D[f, x3];\)\)], "Input"], Cell[BoxData[ \(\(g4 = D[f, x4];\)\)], "Input"], Cell[TextData[{ "In order to solve this nonlinear polynomial system, the Groebner basis \ approach can be used. However to compute the Groebner basis in fully symbolic \ form, would take a very long computation time, and the expressions would be \ very long providing no extra advantages. Therefore, here we compute the \ analytical form of the reduced Groebner basis, namely for ", Cell[BoxData[ \(TraditionalForm\`x\_1\)]] }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(gbx1 = GroebnerBasis[{g1, g2, g3, g4} /. datan, {x1}, {x2, x3, x4}]\)], "Input"], Cell[BoxData[ \({1.`}\)], "Output"] }, Open ]], Cell["\<\ which means, that no Groebner basis exists on this low precision coefficent \ domain, consequently higher precision is needed. The rationalization of the \ data ensures infinite precision, \ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(datanR = Map[#[\([1]\)] \[Rule] Rationalize[#[\([2]\)]] &, datan]\)], "Input"], Cell[BoxData[ \({a\_0 \[Rule] 1417755347\/100, a\_1 \[Rule] 1509719981\/100, a\_2 \[Rule] 2346034233\/100, a\_3 \[Rule] \(-\(164129779\/20\)\), a\_4 \[Rule] 139998807\/100, a\_5 \[Rule] 174891387\/25, b\_0 \[Rule] \(-\(1881476809\/100\)\), b\_1 \[Rule] \(-\(463608867\/100\)\), b\_2 \[Rule] \(-\(471675929\/50\)\), b\_3 \[Rule] \(-\(910899457\/50\)\), b\_4 \[Rule] \(-\(175637349\/10\)\), b\_5 \[Rule] \(-\(1176890413\/50\)\), c\_0 \[Rule] 612193319\/50, c\_1 \[Rule] 426534131\/20, c\_2 \[Rule] 32699765\/4, c\_3 \[Rule] 1760523199\/100, c\_4 \[Rule] 985279559\/50, c\_5 \[Rule] \(-\(248197662\/25\)\), d\_0 \[Rule] 527981958\/25, d\_1 \[Rule] 1126353209\/50, d\_2 \[Rule] 591853997\/25, d\_3 \[Rule] 1047582369\/50, d\_4 \[Rule] 1007770071\/50, d\_5 \[Rule] 2422211091\/100}\)], "Output"] }, Open ]], Cell[TextData[{ "However, we can considerably reduce computation time by employing only \ high-precision numbers instead of rational numbers. Now the reduced Groebner \ basis for ", Cell[BoxData[ \(TraditionalForm\`x\_1\)]], ", on this domain is" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(gbx1 = \(GroebnerBasis[ N[{g1, g2, g3, g4} /. datanR, 100], {x1}, {x2, x3, x4}, CoefficientDomain \[Rule] InexactNumbers] // N\) // Timing\)], "Input"], Cell[BoxData[ \({0.04699999999999971`\ Second, {5.319780811001548`*^62 - 6.1416536435724215`*^56\ x1 - 6.495346037248775`*^50\ x1\^2 + 3.498028012173754`*^44\ x1\^3 - 6.978867187528652`*^37\ x1\^4 + 7.344420336924964`*^30\ x1\^5 - 4.29214658980867`*^23\ x1\^6 + 1.294180000072904`*^16\ x1\^7 - 1.6050457047411844`*^8\ x1\^8 + 1.`\ x1\^9}}\)], "Output"] }, Open ]], Cell["Solving this polynomial equation, ", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(Solx1 = NSolve[gbx1[\([2]\)] \[Equal] 0, x1];\) // Timing\)], "Input"], Cell[BoxData[ \({0.`\ Second, Null}\)], "Output"] }, Open ]], Cell["Selecting the positive real solutions, we get", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(x1s = Select[Map[x1 /. # &, Flatten[Solx1]], Im[#] \[Equal] 0 &]\)], "Input"], Cell[BoxData[ \({\(-1.0325758781072051`*^6\), 596928.91044852`, 7.95389076539058`*^6}\)], "Output"] }, Open ]], Cell[BoxData[ \(Similarly, \ for\ variables\ \ x\_2, \ x\_3\ and\ \ x\_4\)], "Text", FontFamily->"Times New Roman"], Cell[BoxData[ \(\(gbx2 = GroebnerBasis[N[{g1, g2, g3, g4} /. datanR, 100], {x2}, {x1, x3, x4}, CoefficientDomain \[Rule] InexactNumbers];\)\)], "Input"], Cell[BoxData[ \(\(Solx2 = NSolve[gbx2 \[Equal] 0, x2];\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(x2s = Select[Map[x2 /. # &, Flatten[Solx2]], Im[#] \[Equal] 0 &] // N\)], "Input"], Cell[BoxData[ \({\(-1.5368436386502922`*^7\), \(-4.847849314421888`*^6\), 8.022371143884511`*^6}\)], "Output"] }, Open ]], Cell[BoxData[ \(\(gbx3 = GroebnerBasis[N[{g1, g2, g3, g4} /. datanR, 100], {x3}, {x1, x2, x4}, CoefficientDomain \[Rule] InexactNumbers];\)\)], "Input"], Cell[BoxData[ \(\(Solx3 = NSolve[gbx3 \[Equal] 0, x3];\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(x3s = Select[Map[x3 /. # &, Flatten[Solx3]], Im[#] \[Equal] 0 &] // N\)], "Input"], Cell[BoxData[ \({\(-6.400740080592946`*^6\), 4.0882244471657714`*^6, 9.1621313603979`*^6}\)], "Output"] }, Open ]], Cell[BoxData[ \(\(gbx4 = GroebnerBasis[N[{g1, g2, g3, g4} /. datanR, 100], {x4}, {x1, x2, x3}, CoefficientDomain \[Rule] InexactNumbers];\)\)], "Input"], Cell[BoxData[ \(\(Solx4 = NSolve[gbx4 \[Equal] 0, x4];\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(x4s = Select[Map[x4 /. # &, Flatten[Solx4]], Im[#] \[Equal] 0 &] // N\)], "Input"], Cell[BoxData[ \({13.452575859706716`, 2.2569492755348686`*^7, 5.704486691275281`*^7}\)], "Output"] }, Open ]], Cell[TextData[{ "In order to decide, which solution is acceptable, the norm of distance \ vector from the geometrical coordinates, ", Cell[BoxData[ FormBox[ RowBox[{"{", RowBox[{ FormBox[\(x\_1\), "TraditionalForm"], ",", FormBox[\(x\_2\), "TraditionalForm"], ",", " ", FormBox[\(x\_3\), "TraditionalForm"]}], "}"}], TraditionalForm]], FontFamily->"Times New Roman"], " can be computed," }], "Text"], Cell[BoxData[ \(\(x123 = Transpose[{x1s, x2s, x3s}];\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(Map[Norm[#] &, x123]\)], "Input"], Cell[BoxData[ \({1.6680063653635882`*^7, 6.369579753003639`*^6, 1.4545358989835318`*^7}\)], "Output"] }, Open ]], Cell["\<\ So, we can see that the second solution is correct since it falls within the \ Earth while the others are in space,\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(SetPrecision[x123[\([2]\)], 10]\)], "Input"], Cell[BoxData[ \({596928.910448519978672266`10. , \ \(-4.8478493144218884408473969`10.*^6\), 4.0882244471657713875174522`10.*^6}\)], "Output"] }, Open ]], Cell[TextData[{ "The fourth variable, ", Cell[BoxData[ \(TraditionalForm\`x\_4\)], FontFamily->"Times New Roman"], " can be computed from one of the equations of the system, let say from the \ first one," }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(g1 /. datanR\) /. {x1 -> x123[\([2, 1]\)], x2 -> x123[\([2, 2]\)], x3 -> x123[\([2, 3]\)]} // Simplify\)], "Input"], Cell[BoxData[ \(1.9737070698923552`*^8\ \((\(-4.62667981831641`*^7\) + x4)\)\ \((\(-13.452575860579694`\) + x4)\)\)], "Output"] }, Open ]], Cell[TextData[{ "The acceptable value of ", Cell[BoxData[ \(TraditionalForm\`x\_4\)], FontFamily->"Times New Roman"], " = ", StyleBox["13.4526,\n", FontFamily->"Courier New"], StyleBox["leading to the same solution as that of the direct numerical \ minimization.", FontFamily->"Times New Roman"] }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell["4.3 Gauss-Jacobi combinatorical solution", "Subsection", CellDingbat->None], Cell[TextData[{ "The Gauss-Jacobi combinatorical solution, Jacobi [22] can be employed \ originally for linear regression problems. This means, if we have more \ independent equations ", StyleBox["m,", FontSlant->"Italic"], " than variables ", StyleBox["n", FontSlant->"Italic"], ", so ", StyleBox["m > n", FontSlant->"Italic"], ", then the solution, in a least-squares sense, can be achieved by solving \ the ", Cell[BoxData[ RowBox[{ StyleBox["(", FontFamily->"Times New Roman", FontSize->10], StyleBox[GridBox[{ {"m"}, {"n"} }], FontFamily->"Times New Roman", FontSize->10, FontSlant->"Italic"], StyleBox[")", FontFamily->"Times New Roman", FontSize->10]}]]], " combinatorical subsets of ", StyleBox["n", FontSlant->"Italic"], " equations, and then weighting these solutions properly, Wellisch [23] and \ Hornoch [24]. This method can be extended to the nonlinear case using \ linearization. A key point of this extension, is that we can solve nonlinear \ subsets without a priori information about the solutions, which would be \ necessary for the traditional linearization. The determination of weights \ through linearization takes place after the solutions of these nonlinear \ subsets are known, see for example Z\[AAcute]voti [25]." }], "Text"], Cell["First, the subsets should be determined. In our case", "Text"], Cell[BoxData[ \(n = 4; m = 6;\)], "Input"], Cell["The number of the subsets", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Binomial[m, n]\)], "Input"], Cell[BoxData[ \(15\)], "Output"] }, Open ]], Cell["These subsets are,", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(qs = Partition[Map[# - 1 &, Flatten[Subsets[Range[m], {n}]]], 4]\)], "Input"], Cell[BoxData[ \({{0, 1, 2, 3}, {0, 1, 2, 4}, {0, 1, 2, 5}, {0, 1, 3, 4}, {0, 1, 3, 5}, {0, 1, 4, 5}, {0, 2, 3, 4}, {0, 2, 3, 5}, {0, 2, 4, 5}, {0, 3, 4, 5}, {1, 2, 3, 4}, {1, 2, 3, 5}, {1, 2, 4, 5}, {1, 3, 4, 5}, {2, 3, 4, 5}}\)], "Output"] }, Open ]], Cell[TextData[{ "The values of the indices start from zero in correspondence of the \ indices of the coefficients of the equations. Now, we shall utilize the \ symbolic solution of the GPS 4-points problem, namely the expressions of the \ coefficients of the quadratic equation (", Cell[BoxData[ \(TraditionalForm\`h\_2\)]], ",", Cell[BoxData[ \(TraditionalForm\`h\_1\)]], ",", Cell[BoxData[ \(TraditionalForm\`h\_0\)]], "). Therefore, we construct a new data list, ", StyleBox["datap", FontFamily->"Courier New"], " similar to ", StyleBox["datan,", FontFamily->"Courier New"], StyleBox["which assignes the proper values to the coefficients of the \ equations of the 15 subsets,", FontFamily->"Times New Roman"] }], "Text"], Cell[BoxData[ \(\(datap = Table[Map[ Select[datan, \ MemberQ[ qs[\([i]\)], #[\([1, 2]\)]] &] /. {#[\([1]\)] \[Rule] 0, #[\([2]\)] \[Rule] 1, #[\([3]\)] \[Rule] 2, #[\([4]\)] \[Rule] 3} &, {qs[\([i]\)]}], {i, 1, 15}];\)\)], "Input"], Cell["For example, the fourth subset is indexed as", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(qs[\([4]\)]\)], "Input"], Cell[BoxData[ \({0, 1, 3, 4}\)], "Output"] }, Open ]], Cell["and it has the proper data assignments,", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(datap[\([4]\)]\)], "Input"], Cell[BoxData[ \({{a\_0 \[Rule] 1.417755347`*^7, a\_1 \[Rule] 1.509719981`*^7, a\_2 \[Rule] \(-8.20648895`*^6\), a\_3 \[Rule] 1.39998807`*^6, b\_0 \[Rule] \(-1.881476809`*^7\), b\_1 \[Rule] \(-4.63608867`*^6\), b\_2 \[Rule] \(-1.821798914`*^7\), b\_3 \[Rule] \(-1.75637349`*^7\), c\_0 \[Rule] 1.224386638`*^7, c\_1 \[Rule] 2.132670655`*^7, c\_2 \[Rule] 1.760523199`*^7, c\_3 \[Rule] 1.970559118`*^7, d\_0 \[Rule] 2.111927832`*^7, d\_1 \[Rule] 2.252706418`*^7, d\_2 \[Rule] 2.095164738`*^7, d\_3 \[Rule] 2.015540142`*^7}}\)], "Output"] }, Open ]], Cell[TextData[{ "Now, we can employ the symbolic expressions of the coefficients of the \ quadratic equation for ", Cell[BoxData[ \(TraditionalForm\`x\_4\)]], ", (", Cell[BoxData[ \(TraditionalForm\`h\_2\)]], ", ", Cell[BoxData[ \(TraditionalForm\`h\_1\)]], ", ", Cell[BoxData[ \(TraditionalForm\`h\_0\)]], "), which were developed for the GPS 4-points problem, see 3.2.1. These \ coefficients can be evaluated for all of the 15 combinatorical subsets, (", Cell[BoxData[ \(TraditionalForm\`H\_2\)]], ", ", Cell[BoxData[ \(TraditionalForm\`H\_1\)]], ", ", Cell[BoxData[ \(TraditionalForm\`H\_0\)]], ")," }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(H2 = Map[\((\(h2 /. coeffsn\) /. Flatten[#])\) &, datap];\) // Timing\)], "Input"], Cell[BoxData[ \({0.07800000000000029`\ Second, Null}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(\(H1 = Map[\((\(h1 /. coeffsn\) /. Flatten[#])\) &, datap];\) // Timing\)], "Input"], Cell[BoxData[ \({0.3120000000000003`\ Second, Null}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(\(H0 = Map[\((\(h0 /. coeffsn\) /. Flatten[#])\) &, datap];\) // Timing\)], "Input"], Cell[BoxData[ \({0.3280000000000012`\ Second, Null}\)], "Output"] }, Open ]], Cell["It is useful to display these coeffients,", "Text"], Cell[BoxData[ \(\(H210 = Transpose[{H2, H1, H0}];\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(H210c = Map[# /. datan &, H210]; TableForm[SetPrecision[H210c, 15]]\)], "Input"], Cell[BoxData[ TagBox[GridBox[{ {\(-0.9142209492364449241463830731`15. \), "5.23741229848732724785804749`15.*^7", "4.90226821964889764785766602`15.*^7"}, {\(-0.9341764031027341985691236914`15. \), "5.03968274998944699764251709`15.*^7", "7.915541825769683837890625`15.*^9"}, {\(-0.9211306258336831032096370109`15. \), "5.1741826014778628945350647`15.*^7", "3.43282823910709381103515625`15.*^8"}, {\(-0.8650608991301073080748551547`15. \), "5.49504602842167094349861145`15.*^7", \ \(-1.02011051148155879974365234375`15.*^10\)}, {\(-0.9223356164849695337792923056`15. \), "5.18771660451887696981430054`15.*^7", "2.802984811820991635322570801`15.*^8"}, {\(-0.9192969627061570170312165828`15. \), "5.15622329601198434829711914`15.*^7", "1.3542673664600496292114257813`15.*^9"}, {\(-0.8949800635790441383221605065`15. \), "5.33020056927825137972831726`15.*^7", \ \(-3.6426441474040956497192382812`15.*^9\)}, {\(-0.9172339496445749418285231513`15. \), "5.21949461124138757586479187`15.*^7", "1.32408747276293829083442688`15.*^8"}, {\(-0.9258530492621931395902379336`15. \), "5.11408476331213340163230896`15.*^7", "3.7267191118212399482727050781`15.*^9"}, { "3369.8329392860141524579375982285`15.", \ \(-1.7927133398025238513946533203`15.*^9\), "6.251615022034720703125`15.*^12"}, {\(-0.8778927566515509761657654053`15. \), "5.40238835656925961375236511`15.*^7", \ \(-6.5147352883771677017211914062`15.*^9\)}, {\(-0.9425815383185147666722514259`15. \), "5.07933615303674638271331787`15.*^7", "7.846842916656798124313354492`15.*^8"}, {\(-0.9082151416590057424471638114`15. \), "5.22466420794924572110176086`15.*^7", \ \(-2.49905474914740753173828125`15.*^9\)}, {\(-0.8833640705493878142462449432`15. \), "5.35665543869960159063339233`15.*^7", \ \(-5.4814110363463726043701171875`15.*^9\)}, {\(-0.8667507656561256323968223114`15. \), "5.43806482092251405119895935`15.*^7", \ \(-7.3208714900475101470947265625`15.*^9\)} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], Function[ BoxForm`e$, TableForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[TextData[{ "This table indicates that the 10th combination has a poor geometry which \ infact can be detected by computing its PDOP (Position Dilution of \ Precision), see Hofman et al. [26].\nThen the 15 quadratic equations can be \ solved for ", Cell[BoxData[ \(TraditionalForm\`x\_4\)]], "," }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(X4 = Map[x4 /. \(Solve[#[\([1]\)]\ x4^2 + #[\([2]\)]\ x4 + #[\([3]\)] \ \[Equal] 0, x4]\)[\([1, 1]\)] &, H210c];\) // Timing\)], "Input"], Cell[BoxData[ \({0.`\ Second, Null}\)], "Output"] }, Open ]], Cell[TextData[{ "These values of ", Cell[BoxData[ \(TraditionalForm\`x\_4\)]], " can be substituted into the symbolic relations ", Cell[BoxData[ \(TraditionalForm\`x\_1\)]], " = g(", Cell[BoxData[ \(TraditionalForm\`x\_4\)]], "), ", Cell[BoxData[ \(TraditionalForm\`x\_2\)]], " = g(", Cell[BoxData[ \(TraditionalForm\`x\_4\)]], ") and ", Cell[BoxData[ \(TraditionalForm\`x\_3\)]], " = g(", Cell[BoxData[ \(TraditionalForm\`x\_4\)]], ") developed for GPS 4 - points problem, see 3.2.4," }], "Text"], Cell[BoxData[ \(\(X1 = MapThread[\((\(\(\(x1 /. solx1[\([1, 1]\)]\) /. coeffsn\) /. Flatten[#1]\) /. x4 \[Rule] #2)\) &, {datap, X4}];\)\)], "Input"], Cell[BoxData[ \(\(X2 = MapThread[\((\(\(\(x2 /. solx2[\([1, 1]\)]\) /. coeffsn\) /. Flatten[#1]\) /. x4 \[Rule] #2)\) &, {datap, X4}];\)\)], "Input"], Cell[BoxData[ \(\(X3 = MapThread[\((\(\(\(x3 /. solx3[\([1, 1]\)]\) /. coeffsn\) /. Flatten[#1]\) /. x4 \[Rule] #2)\) &, {datap, X4}];\)\)], "Input"], Cell[TextData[{ "Let us display these solutions for (", Cell[BoxData[ \(TraditionalForm\`x\_1\)]], ", ", Cell[BoxData[ \(TraditionalForm\`x\_2\)]], ", ", Cell[BoxData[ \(TraditionalForm\`x\_3\)]], ", ", Cell[BoxData[ \(TraditionalForm\`x\_4\)]], ")," }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(X = Transpose[{X1, X2, X3, X4}]; TableForm[SetPrecision[X, 11]]\)], "Input"], Cell[BoxData[ TagBox[GridBox[{ { "596925.3485104044666513801`11.", \ \(-4.8478173617848930880427361`11.*^6\), "4.0882067822277480736374855`11.*^6", \ \(-0.9360095902643754683936094807`11. \)}, { "596790.3123551359167322516`11.", \ \(-4.8477657636876245960593224`11.*^6\), "4.0881157091826116666197777`11.*^6", \ \(-157.063830665625829397`11. \)}, { "596920.4198118489002808928`11.", \ \(-4.8478154784999396651983261`11.*^6\), "4.0882034581427467055618763`11.*^6", \ \(-6.6345316701278322923940322653`11. \)}, { "596972.8260956039885058999`11.", \ \(-4.8479334364949651062488556`11.*^6\), "4.0884120909106130711734295`11.*^6", "185.6423927066567785005`11."}, { "596924.211792834335938096`11.", \ \(-4.8478145827031871303915977`11.*^6\), "4.0882018666879241354763508`11.*^6", \ \(-5.4031180888247325455608915945`11. \)}, { "596859.9714664496714249253`11.", \ \(-4.8478297585035534575581551`11.*^6\), "4.0882288276979820802807808`11.*^6", \ \(-26.2647029531211018138`11. \)}, { "596973.5778732005273923278`11.", \ \(-4.8477624718611892312765121`11.*^6\), "4.0883998670233320444822311`11.*^6", "68.3397984730589058699`11."}, { "596924.2340550251537933946`11.", \ \(-4.8478186301529519259929657`11.*^6\), "4.0882023205403829924762249`11.*^6", \ \(-2.5368115351310436267340264749`11. \)}, { "596858.7650379636324942112`11.", \ \(-4.8477645340770184993743896`11.*^6\), "4.0882218467580806463956833`11.*^6", \ \(-72.8715765923489016131`11. \)}, { "596951.52741470024921`11.", \ \(-4.8527795657691312953829765`11.*^6\), "4.0887586416282695718109608`11.*^6", "3510.4001446068045879656`11."}, { "597004.7562426909571513534`11.", \ \(-4.8479652225061720237135887`11.*^6\), "4.0883006135476827621459961`11.*^6", "120.5901468885940630571`11."}, { "596915.8657481485279276967`11.", \ \(-4.8477997044699983671307564`11.*^6\), "4.0881955770290317013859749`11.*^6", \ \(-15.4485555409055894671155328979`11. \)}, { "596948.5618604241171851754`11.", \ \(-4.8479129548832029104232788`11.*^6\), "4.0882521598828388378024101`11.*^6", "47.8319127809817743469`11."}, { "597013.7194105220260098577`11.", \ \(-4.8479741452279398217797279`11.*^6\), "4.0882693205683128908276558`11.*^6", "102.3291557391730322024`11."}, { "597013.1300184723222628236`11.", \ \(-4.848019676529974676668644`11.*^6\), "4.088273956522056832909584`11.*^6", "134.6230219675839521187`11."} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], Function[ BoxForm`e$, TableForm[ BoxForm`e$]]]], "Output"] }, Open ]], Cell[TextData[{ "In order to compute the weights of these solutions, one has to compute the \ square of the 15 Jacobi determinants. Each has size of 4 \[Times] 4, because \ of four equations and four variables. Starting with the general form of the \ ", StyleBox["i", FontSlant->"Italic"], "-th equation," }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(e\)], "Input"], Cell[BoxData[ \(\((x1 - a\_i)\)\^2 + \((x2 - b\_i)\)\^2 + \((x3 - c\_i)\)\^2 - \((x4 - \ d\_i)\)\^2\)], "Output"] }, Open ]], Cell["The partial derivatives are,", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(de = {D[e, x1], D[e, x2], D[e, x3], D[e, x4]}\)], "Input"], Cell[BoxData[ \({2\ \((x1 - a\_i)\), 2\ \((x2 - b\_i)\), 2\ \((x3 - c\_i)\), \(-2\)\ \((x4 - d\_i)\)}\)], "Output"] }, Open ]], Cell[TextData[{ "The numerical values of these partial derivatives will be computed at the \ corresponding combinatorical solutions, see the table above (variable X). \ Therefore, the weights, ", Cell[BoxData[ \(TraditionalForm\`\[Pi]\_j\)]], ", the square of the 15 Jacobi determinants are," }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(\[Pi]s = Table[\(Map[\((Det[{\((de /. i \[Rule] #[\([1]\)])\), \((de /. i \ \[Rule] #[\([2]\)])\), \((de /. i \[Rule] #[\([3]\)])\), \((de /. i \[Rule] \ #[\([4]\)])\)} /. datan])\)\^2 &, qs]\)[\([j]\)] /. {x1 \[Rule] X[\([j, 1]\)], x2 \[Rule] X[\([j, 2]\)], x3 \[Rule] X[\([j, 3]\)], x4 \[Rule] X[\([j, 4]\)]}, {j, 1, 15}];\) // Timing\)], "Input"], Cell[BoxData[ \({0.6210000000000022`\ Second, Null}\)], "Output"] }, Open ]], Cell[TextData[{ "The sum of these weights are ", StyleBox["s", FontSlant->"Italic"], "\[Pi]," }], "Text"], Cell[BoxData[ \(s\[Pi] = \[Sum]\+\(j = 1\)\%15 \[Pi]\_j\)], "Equation", TextAlignment->Center, FontFamily->"Times New Roman"], Cell[CellGroupData[{ Cell[BoxData[ \(s\[Pi]s = Apply[Plus, \[Pi]s]\)], "Input"], Cell[BoxData[ \(2.797224032388194`*^61\)], "Output"] }, Open ]], Cell[TextData[{ "Then the weighted solution of the variable ", Cell[BoxData[ \(TraditionalForm\`x\_i\)]], " is" }], "Text"], Cell[BoxData[ RowBox[{ StyleBox[\(x\_i\), FontSlant->"Italic"], "=", RowBox[{\(1\/s\[Pi]\), " ", RowBox[{\(\[Sum]\+\(j = 1\)\%15\), SuperscriptBox[ StyleBox[\(x\_i\), FontSlant->"Italic"], \((j)\)]}]}]}]], "Equation", TextAlignment->Center, FontFamily->"Times New Roman"], Cell[CellGroupData[{ Cell[BoxData[ \({X1s, X2s, X3s, X4s} = Map[\[Pi]s . # &, {X1, X2, X3, X4}]/s\[Pi]s; SetPrecision[{X1s, X2s, X3s, X4s}, 10]\)], "Input"], Cell[BoxData[ \({596928.9101905812276527286`10. , \ \(-4.8478493138899179175496101`10.000000000000004*^6\), 4.0882244469855870120227337`10.*^6, 13.4520102318515135664`9.999999999999998}\)], "Output"] }, Open ]], Cell[TextData[StyleBox["which is very close to the direct numerical \ solution, which was", FontFamily->"Times New Roman"]], "Text"], Cell[BoxData[ \({x1 \[Rule] 596928.9104485186981037259`10.000000000000004, x2 \[Rule] \(-4.8478493144218875095248222`10.*^6\), x3 \[Rule] 4.0882244471657685935497284`10.*^6, x4 \[Rule] 13.4525758580348906435`10. }\)], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[TextData[StyleBox["Conclusions", FontSize->14]], "Section", TextAlignment->Left], Cell[TextData[{ "In Table I. we summarized the computation times of the different methods. \ The computations were carried out with ", StyleBox["Mathematica", FontSlant->"Italic"], " 5.2 on HP xw 4100 workstation employing Pentium 3 GHz processor and 1 GB \ RAM." }], "Text"], Cell[TextData[{ StyleBox["Table I.", FontVariations->{"Underline"->True}], " Computation times in seconds" }], "Text", TextAlignment->Center], Cell[BoxData[ StyleBox[GridBox[{ { StyleBox["Method", FontSlant->"Italic"], \(4 - points\), \(N - points\ \((N\ = \ 6)\)\)}, {\(Direct\ numerial\), "0.078", "0.094"}, {"Symbolical", "0.031", "-"}, {\(Semi - symbolical\), "-", "0.188"}, {\(\(Gauss\)\(-\)\(Jacobi\)\(\ \)\), "-", "0.718"} }, GridFrame->True, RowLines->True, ColumnLines->True], FontFamily->"Times New Roman"]], "Text", TextAlignment->Center], Cell["\<\ In the case of the 4-points problem, the symbolical solution proved to be \ more than two times faster than the direct numerical one. For N-points \ problem (N = 6) the direct numerical is about two times faster than the semi \ - symbolical solution, both of which are based on numerical minimization; \ while the Gauss - Jacobi solution needs nearly eight times more computation \ time than the direct numerical solution. However, the latter can provide very \ important information about poor geometry or outliers in observations Awange \ and Grafarend [2].\ \>", "Text"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[StyleBox["Acknowledgements", FontSize->14]], "Section", TextAlignment->Left], Cell["\<\ The author gratefully acknowledges the suggestions of the referees for \ improving this paper.\ \>", "Text"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[StyleBox["References", FontSize->14]], "Section", TextAlignment->Left], Cell[TextData[{ "\n[1] Haneberg, W.C.:", StyleBox["Computational Geosciences with Mathematics", FontVariations->{"CompatibilityType"->0}], ", Springer , Berlin, (2004)\n\n[2] Awange J.L. and Grafarend E.W.: Solving \ Algebraic Computational Problems in Geodesy and Geoinformatics, Springer, \ Berlin, (2005)\n\n[3] Freeman, J.A.: Simulating neural networks with ", StyleBox["Mathematica", FontSlant->"Italic"], ", Addison-Wesley, (1994)\n\n[4] Bart M. ter Haar Romeny: Front-End Vision \ and Multi-Scale Image Analysis, Kluwer, Dordrecht, (2003)\n\n[5] Helton, J.W \ and Merino O.: Classical Control using ", Cell[BoxData[ \(TraditionalForm\`H\^\[Infinity]\)]], " Methods, SIAM, (1998)\n\n[6] Bellomo, N., Preziosi, L. and Romano, A.: \ Mechanics and Dynamical Systems with ", StyleBox["Mathematica", FontSlant->"Italic"], ", Birkh\[ADoubleDot]user, (2000)\n\n[7] Bancroft, S.: ", StyleBox["An algebraic solution of the GPS equations", FontSlant->"Italic"], ", IEEE Transaction on Aerospace and Electronic Systems AES-21, (1985), pp. \ 56-59.\n\n[8] Grafarend EW. and Schaffrin, B.: Ausglechungsrechnung in \ Linearen Modellen, B.I. Wissenschaftsverlag, Mannheim, (1993) \n\n[9] Singer \ P., Str\[ODoubleDot]bel D., H\[ODoubleDot]rdt R., Bahndorf J., Linkwitz K.: \ ", StyleBox["Direkte L\[ODoubleDot]sung des r\[ADoubleDot]umlichen \ Bogenschnitts", FontSlant->"Italic"], ". Zeitschrift f\[UDoubleDot]r Vermessungswesen, 124, (1993), S. 295 - 297.\ \n\n[10] Kleusberg A.: Die direkte L\[ODoubleDot]sung des \ r\[ADoubleDot]umlichen Hyperbelschnitts. Zeitschrift f\[UDoubleDot]r \ Vermessungswesen, 119, (1994), S. 188 - 192.\n\n[11] Kleusberg A.: ", StyleBox["Analytical GPS navigation solution", FontSlant->"Italic"], ". In Grafarend EW., Krumm FW. and Schwarze VS. (eds) Geodesy -the \ Challenge of the 3rd Millennium, Springer, Heidelberg, (2003), pp. 93 - 96.\n\ \n[12] Lichtenegger H.: ", StyleBox["Eine direkte L\[ODoubleDot]sung des r\[ADoubleDot]umlichen \ Bogenschnitts", FontSlant->"Italic"], "., \[CapitalODoubleDot]sterreichische Zeitschrift f\[UDoubleDot]r \ Vermessung und Geoinformation 83, (1995), S. 224 - 226.\n\n[13] Awange J.L.: \ Gr\[ODoubleDot]bner bases, multipolynomial resultants and Gauss-Jacobi \ combinatorial algorithms - adjustment of nonlinear GPS/LPS observations, \ Dissertation (D93), Geod\[ADoubleDot]tisches Institute der Universit\ \[ADoubleDot]t Stuttgart, (2002).\n\n[14] Grafarend EW. and Shan J.: ", StyleBox["Closed - form solution of the nonlinear pseudoranging equations \ (GPS)", FontSlant->"Italic"], ", Artificial Satellites, Planetary Geodesy 31, (1996), pp.133 - 147.\n\n\ [15] Sturmfels B.: ", StyleBox["Multigraded resultant of Sylvester type", FontSlant->"Italic"], ". Journal of Algebra 163, (1994), pp.115-127.\n\n[16] Dixon A.L.: ", StyleBox["The eliminant of three quantics in two independent variables", FontSlant->"Italic"], ". Proc. London Math.Soc. 6, (1908), pp. 468-478.\n\n[17] Kapur D, Saxena \ T. and Yang L. (1994): ", StyleBox["Algebraic and geometric reasoning using Dixon resultants", FontSlant->"Italic"], ". In: ACM ISSAC 94. Oxford, England, July 1994, pp. 99-107.\n\n[18] \ Bernstein, D.S.: Matrix Mathematics, Theory, Facts, and Formulas with \ Application to Linear Systems Theory, Princeton University Press, Princeton \ and Oxford, (2005), p.142.\n\n[19] Nakos G. and Williams R.: ", StyleBox["Elimination with The Dixon resultant.", FontSlant->"Italic"], " ", StyleBox["Mathematica", FontSlant->"Italic"], " in Education and Research, Vol.6. No.2, (1997), pp. 11 - 21.\n\n[20] \ Buchber B. Gr\[ODoubleDot]bner bases: An Algorithmic method in Polynomial \ Ideal theory, Multidimensional Systems Theory, N.K. Bose, ed., D.Reidel \ Publ.Co. (1985)\n\n[21] Trott M.: ", StyleBox["Mathematica", FontSlant->"Italic"], " Guide Book for Symbolic Computation, Springer, New York, (2006)\n\n[22] \ Jacobi CGI.: ", StyleBox["Deformatione et proprietatibus determinantum", FontSlant->"Italic"], ", Crelle's Journal f\[UDoubleDot]r die reine und angewandte Mathematik, \ Bd. 22, (1841)\n\n[23] Wellisch S.: Theorie und Praxis der \ Ausgleichungsrechnung. Bd.2, (1910)\n \n[24] T\[AAcute]rczy - Hornoch A.: \ \[CapitalUDoubleDot]ber die Zur\[UDoubleDot]ckf\[UDoubleDot]hrung der Methode \ der kleinsten Quadrate auf das Prinzipe des arithmetischen Mittels. \ \[CapitalODoubleDot]sterreichische Zeitschrift f\[UDoubleDot]r \ Vermessungswesen 38, (1950), 13 - 18.\n \n[25] Z\[AAcute]voti J.: ", StyleBox["The closed form solution of 7 parameter 3D transformation", FontSlant->"Italic"], ". Publications in Geomatics, Sopron, Hungary, (2005), pp. 53 -60.\n\n[26] \ Hofman-Wellenhof B, Lichtenegger H, Collins J.: Global Positioning System: \ Theory and practice, 5th Ed. Springer, Wien, (2001).\n\n[27] Skeel R.D. and \ Keiper J.B. Elementary Numerical Computing With ", StyleBox["Mathematica", FontSlant->"Italic"], ", McGraw-Hill, (1999)" }], "Reference"] }, Closed]] }, Open ]] }, FrontEndVersion->"5.2 for Microsoft Windows", ScreenRectangle->{{0, 1680}, {0, 963}}, CellGrouping->Manual, WindowSize->{1672, 929}, WindowMargins->{{0, Automatic}, {Automatic, 0}}, PrintingCopies->1, PrintingPageRange->{1, 30}, PageHeaders->{{Inherited, Cell[ TextData[ {"B\[EAcute]la Pal\[AAcute]ncz"}], "Header"], Inherited}, { Inherited, Cell[ TextData[ "GPS N-points problem"], "Header"], Inherited}}, Magnification->1, StyleDefinitions -> "Classic.nb" ] (******************************************************************* Cached data follows. If you edit this Notebook file directly, not using Mathematica, you must remove the line containing CacheID at the top of the file. The cache data will then be recreated when you save this file from within Mathematica. *******************************************************************) (*CellTagsOutline CellTagsIndex->{} *) (*CellTagsIndex CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ Cell[CellGroupData[{ Cell[1776, 53, 108, 2, 58, "Title"], Cell[1887, 57, 1081, 35, 25, "Author"], Cell[2971, 94, 919, 24, 212, "Address"], Cell[CellGroupData[{ Cell[3915, 122, 33, 0, 31, "Subsubsection"], Cell[3951, 124, 915, 23, 76, "Abstract"] }, Open ]], Cell[CellGroupData[{ Cell[4903, 152, 188, 6, 61, "Section"], Cell[5094, 160, 1514, 22, 145, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[6645, 187, 98, 1, 61, "Section"], Cell[6746, 190, 1070, 30, 88, "Text"], Cell[7819, 222, 178, 4, 32, "Equation"], Cell[8000, 228, 840, 24, 48, "Text"], Cell[8843, 254, 1134, 38, 50, "Text"], Cell[9980, 294, 126, 2, 38, "Input"], Cell[10109, 298, 126, 2, 38, "Input"], Cell[10238, 302, 126, 2, 38, "Input"], Cell[10367, 306, 126, 2, 38, "Input"], Cell[10496, 310, 98, 2, 31, "Text"], Cell[10597, 314, 836, 13, 160, "Input"], Cell[11436, 329, 98, 2, 31, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[11571, 336, 80, 1, 61, "Section"], Cell[CellGroupData[{ Cell[11676, 341, 73, 1, 31, "Subsection"], Cell[11752, 344, 287, 10, 32, "Text"], Cell[CellGroupData[{ Cell[12064, 358, 146, 3, 38, "Input"], Cell[12213, 363, 414, 7, 33, "Output"] }, Open ]], Cell[12642, 373, 1001, 28, 31, "Text"], Cell[CellGroupData[{ Cell[13668, 405, 102, 2, 38, "Input"], Cell[13773, 409, 82, 1, 33, "Output"] }, Open ]], Cell[13870, 413, 245, 4, 31, "Text"], Cell[CellGroupData[{ Cell[14140, 421, 66, 1, 38, "Input"], Cell[14209, 424, 270, 4, 33, "Output"] }, Open ]], Cell[14494, 431, 120, 3, 31, "Text"], Cell[CellGroupData[{ Cell[14639, 438, 80, 1, 38, "Input"], Cell[14722, 441, 71, 1, 33, "Output"] }, Open ]], Cell[14808, 445, 409, 6, 50, "Text"], Cell[15220, 453, 149, 3, 31, "Text"], Cell[15372, 458, 111, 2, 38, "Input"], Cell[15486, 462, 151, 3, 38, "Input"], Cell[CellGroupData[{ Cell[15662, 469, 47, 1, 38, "Input"], Cell[15712, 472, 340, 6, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[16089, 483, 65, 1, 38, "Input"], Cell[16157, 486, 283, 4, 33, "Output"] }, Open ]], Cell[16455, 493, 113, 3, 31, "Text"], Cell[CellGroupData[{ Cell[16593, 500, 81, 1, 38, "Input"], Cell[16677, 503, 132, 2, 33, "Output"], Cell[16812, 507, 26, 0, 38, "Input"], Cell[16841, 509, 26, 0, 38, "Input"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[16916, 515, 65, 1, 31, "Subsection"], Cell[16984, 518, 229, 4, 31, "Text"], Cell[CellGroupData[{ Cell[17238, 526, 121, 2, 38, "Input"], Cell[17362, 530, 634, 9, 52, "Output"] }, Open ]], Cell[18011, 542, 65, 0, 31, "Text"], Cell[CellGroupData[{ Cell[18101, 546, 103, 2, 38, "Input"], Cell[18207, 550, 684, 10, 52, "Output"] }, Open ]], Cell[18906, 563, 96, 2, 31, "Text"], Cell[19005, 567, 153, 2, 38, "Input"], Cell[CellGroupData[{ Cell[19183, 573, 74, 1, 38, "Input"], Cell[19260, 576, 124, 2, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[19421, 583, 74, 1, 38, "Input"], Cell[19498, 586, 124, 2, 33, "Output"] }, Open ]], Cell[19637, 591, 487, 12, 30, "Text"], Cell[20127, 605, 275, 6, 38, "Input"], Cell[20405, 613, 656, 17, 29, "Text"], Cell[21064, 632, 152, 3, 38, "Input"], Cell[21219, 637, 55, 0, 31, "Text"], Cell[CellGroupData[{ Cell[21299, 641, 108, 2, 38, "Input"], Cell[21410, 645, 664, 10, 52, "Output"] }, Open ]], Cell[22089, 658, 70, 0, 31, "Text"], Cell[CellGroupData[{ Cell[22184, 662, 232, 5, 38, "Input"], Cell[22419, 669, 996, 18, 52, "Output"] }, Open ]], Cell[23430, 690, 102, 3, 31, "Text"], Cell[23535, 695, 128, 2, 38, "Input"], Cell[23666, 699, 1255, 43, 31, "Text"], Cell[CellGroupData[{ Cell[24946, 746, 48, 0, 31, "Subsubsection"], Cell[24997, 748, 1250, 39, 50, "Text"], Cell[26250, 789, 147, 2, 38, "Input"], Cell[26400, 793, 153, 2, 38, "Input"], Cell[26556, 797, 147, 2, 38, "Input"], Cell[26706, 801, 50, 0, 31, "Text"], Cell[26759, 803, 509, 11, 65, "Input"], Cell[27271, 816, 188, 8, 31, "Text"], Cell[CellGroupData[{ Cell[27484, 828, 66, 1, 38, "Input"], Cell[27553, 831, 1062, 17, 52, "Output"] }, Open ]], Cell[28630, 851, 191, 8, 31, "Text"], Cell[28824, 861, 146, 2, 38, "Input"], Cell[28973, 865, 156, 2, 38, "Input"], Cell[29132, 869, 149, 2, 38, "Input"], Cell[29284, 873, 20, 0, 31, "Text"], Cell[29307, 875, 509, 11, 65, "Input"], Cell[29819, 888, 36, 0, 31, "Text"], Cell[CellGroupData[{ Cell[29880, 892, 66, 1, 38, "Input"], Cell[29949, 895, 1057, 17, 52, "Output"] }, Open ]], Cell[31021, 915, 320, 9, 29, "Text"], Cell[31344, 926, 147, 2, 38, "Input"], Cell[31494, 930, 155, 2, 38, "Input"], Cell[31652, 934, 146, 2, 38, "Input"], Cell[31801, 938, 509, 11, 65, "Input"], Cell[CellGroupData[{ Cell[32335, 953, 66, 1, 38, "Input"], Cell[32404, 956, 1062, 17, 52, "Output"] }, Open ]], Cell[33481, 976, 1182, 44, 31, "Text"], Cell[34666, 1022, 129, 3, 38, "Input"], Cell[34798, 1027, 110, 2, 29, "Text"], Cell[CellGroupData[{ Cell[34933, 1033, 54, 1, 38, "Input"], Cell[34990, 1036, 43, 1, 33, "Output"] }, Open ]], Cell[35048, 1040, 437, 17, 31, "Text"], Cell[35488, 1059, 76, 1, 39, "Input"], Cell[35567, 1062, 73, 1, 38, "Input"], Cell[35643, 1065, 81, 1, 39, "Input"], Cell[35727, 1068, 53, 0, 31, "Text"], Cell[CellGroupData[{ Cell[35805, 1072, 42, 1, 38, "Input"], Cell[35850, 1075, 35, 1, 33, "Output"] }, Open ]], Cell[35900, 1079, 141, 3, 31, "Text"], Cell[CellGroupData[{ Cell[36066, 1086, 74, 1, 38, "Input"], Cell[36143, 1089, 73, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[36253, 1095, 74, 1, 38, "Input"], Cell[36330, 1098, 87, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[36454, 1104, 74, 1, 38, "Input"], Cell[36531, 1107, 93, 1, 33, "Output"] }, Open ]], Cell[36639, 1111, 312, 8, 29, "Text"], Cell[CellGroupData[{ Cell[36976, 1123, 143, 3, 38, "Input"], Cell[37122, 1128, 132, 2, 33, "Output"] }, Open ]], Cell[37269, 1133, 37, 0, 31, "Text"], Cell[CellGroupData[{ Cell[37331, 1137, 66, 1, 38, "Input"], Cell[37400, 1140, 78, 1, 33, "Output"] }, Open ]], Cell[37493, 1144, 345, 13, 31, "Text"], Cell[CellGroupData[{ Cell[37863, 1161, 153, 3, 38, "Input"], Cell[38019, 1166, 85, 1, 33, "Output"] }, Open ]], Cell[38119, 1170, 154, 6, 31, "Text"], Cell[CellGroupData[{ Cell[38298, 1180, 153, 3, 38, "Input"], Cell[38454, 1185, 85, 1, 33, "Output"] }, Open ]], Cell[38554, 1189, 134, 6, 31, "Text"], Cell[CellGroupData[{ Cell[38713, 1199, 153, 3, 38, "Input"], Cell[38869, 1204, 85, 1, 33, "Output"] }, Open ]], Cell[38969, 1208, 75, 0, 31, "Text"], Cell[CellGroupData[{ Cell[39069, 1212, 51, 1, 38, "Input"], Cell[39123, 1215, 55, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[39215, 1221, 51, 1, 38, "Input"], Cell[39269, 1224, 56, 1, 33, "Output"] }, Open ]], Cell[39340, 1228, 60, 0, 31, "Text"], Cell[CellGroupData[{ Cell[39425, 1232, 63, 1, 38, "Input"], Cell[39491, 1235, 185, 3, 33, "Output"] }, Open ]], Cell[39691, 1241, 254, 4, 31, "Text"], Cell[39948, 1247, 145, 3, 31, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[40130, 1255, 46, 0, 31, "Subsubsection"], Cell[40179, 1257, 552, 10, 50, "Text"], Cell[40734, 1269, 52, 1, 38, "Input"], Cell[40789, 1272, 421, 17, 31, "Text"], Cell[CellGroupData[{ Cell[41235, 1293, 101, 2, 38, "Input"], Cell[41339, 1297, 923, 18, 52, "Output"] }, Open ]], Cell[42277, 1318, 197, 8, 31, "Text"], Cell[CellGroupData[{ Cell[42499, 1330, 65, 1, 38, "Input"], Cell[42567, 1333, 46, 1, 33, "Output"] }, Open ]], Cell[42628, 1337, 244, 10, 31, "Text"], Cell[CellGroupData[{ Cell[42897, 1351, 67, 1, 38, "Input"], Cell[42967, 1354, 1062, 17, 52, "Output"] }, Open ]], Cell[44044, 1374, 461, 18, 31, "Text"], Cell[CellGroupData[{ Cell[44530, 1396, 101, 2, 38, "Input"], Cell[44634, 1400, 918, 18, 52, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[45589, 1423, 65, 1, 38, "Input"], Cell[45657, 1426, 46, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[45740, 1432, 67, 1, 38, "Input"], Cell[45810, 1435, 1057, 17, 52, "Output"] }, Open ]], Cell[46882, 1455, 19, 0, 31, "Text"], Cell[CellGroupData[{ Cell[46926, 1459, 101, 2, 38, "Input"], Cell[47030, 1463, 923, 18, 52, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[47990, 1486, 65, 1, 38, "Input"], Cell[48058, 1489, 46, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[48141, 1495, 67, 1, 38, "Input"], Cell[48211, 1498, 1062, 17, 52, "Output"] }, Open ]], Cell[49288, 1518, 149, 5, 31, "Text"], Cell[49440, 1525, 129, 3, 38, "Input"], Cell[CellGroupData[{ Cell[49594, 1532, 54, 1, 38, "Input"], Cell[49651, 1535, 43, 1, 33, "Output"] }, Open ]], Cell[49709, 1539, 62, 0, 31, "Text"], Cell[49774, 1541, 65, 1, 39, "Input"], Cell[49842, 1544, 62, 1, 38, "Input"], Cell[49907, 1547, 84, 1, 39, "Input"], Cell[49994, 1550, 20, 0, 31, "Text"], Cell[CellGroupData[{ Cell[50039, 1554, 42, 1, 38, "Input"], Cell[50084, 1557, 35, 1, 33, "Output"] }, Open ]], Cell[50134, 1561, 114, 3, 31, "Text"], Cell[CellGroupData[{ Cell[50273, 1568, 75, 1, 38, "Input"], Cell[50351, 1571, 43, 1, 33, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[50443, 1578, 54, 0, 31, "Subsubsection"], Cell[50500, 1580, 354, 8, 31, "Text"], Cell[CellGroupData[{ Cell[50879, 1592, 117, 3, 38, "Input"], Cell[50999, 1597, 1657, 27, 71, "Output"] }, Open ]], Cell[52671, 1627, 54, 0, 31, "Text"], Cell[CellGroupData[{ Cell[52750, 1631, 43, 1, 38, "Input"], Cell[52796, 1634, 35, 1, 33, "Output"] }, Open ]], Cell[52846, 1638, 102, 3, 31, "Text"], Cell[CellGroupData[{ Cell[52973, 1645, 90, 1, 38, "Input"], Cell[53066, 1648, 141, 2, 33, "Output"] }, Open ]], Cell[53222, 1653, 876, 32, 31, "Text"], Cell[CellGroupData[{ Cell[54123, 1689, 86, 1, 38, "Input"], Cell[54212, 1692, 954, 15, 33, "Output"] }, Open ]], Cell[55181, 1710, 234, 11, 31, "Text"], Cell[CellGroupData[{ Cell[55440, 1725, 120, 3, 38, "Input"], Cell[55563, 1730, 959, 15, 33, "Output"] }, Open ]], Cell[56537, 1748, 231, 10, 31, "Text"], Cell[CellGroupData[{ Cell[56793, 1762, 137, 2, 38, "Input"], Cell[56933, 1766, 954, 15, 33, "Output"] }, Open ]], Cell[57902, 1784, 71, 0, 31, "Text"], Cell[57976, 1786, 129, 3, 38, "Input"], Cell[CellGroupData[{ Cell[58130, 1793, 54, 1, 38, "Input"], Cell[58187, 1796, 43, 1, 33, "Output"] }, Open ]], Cell[58245, 1800, 97, 2, 31, "Text"], Cell[58345, 1804, 66, 1, 39, "Input"], Cell[58414, 1807, 63, 1, 38, "Input"], Cell[58480, 1810, 87, 1, 39, "Input"], Cell[CellGroupData[{ Cell[58592, 1815, 44, 1, 38, "Input"], Cell[58639, 1818, 35, 1, 33, "Output"] }, Open ]], Cell[58689, 1822, 48, 0, 31, "Text"], Cell[CellGroupData[{ Cell[58762, 1826, 78, 1, 38, "Input"], Cell[58843, 1829, 43, 1, 33, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[58935, 1836, 62, 0, 31, "Subsubsection"], Cell[59000, 1838, 470, 11, 32, "Text"], Cell[59473, 1851, 429, 16, 31, "Text"], Cell[59905, 1869, 109, 2, 38, "Input"], Cell[60017, 1873, 58, 0, 31, "Text"], Cell[CellGroupData[{ Cell[60100, 1877, 47, 1, 38, "Input"], Cell[60150, 1880, 35, 1, 33, "Output"] }, Open ]], Cell[60200, 1884, 179, 8, 31, "Text"], Cell[CellGroupData[{ Cell[60404, 1896, 65, 1, 38, "Input"], Cell[60472, 1899, 46, 1, 33, "Output"] }, Open ]], Cell[60533, 1903, 148, 3, 29, "Text"], Cell[CellGroupData[{ Cell[60706, 1910, 79, 1, 38, "Input"], Cell[60788, 1913, 954, 15, 33, "Output"] }, Open ]], Cell[61757, 1931, 45, 0, 31, "Text"], Cell[61805, 1933, 109, 2, 38, "Input"], Cell[CellGroupData[{ Cell[61939, 1939, 65, 1, 38, "Input"], Cell[62007, 1942, 46, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[62090, 1948, 79, 1, 38, "Input"], Cell[62172, 1951, 959, 15, 33, "Output"] }, Open ]], Cell[63146, 1969, 19, 0, 31, "Text"], Cell[63168, 1971, 109, 2, 38, "Input"], Cell[CellGroupData[{ Cell[63302, 1977, 65, 1, 38, "Input"], Cell[63370, 1980, 46, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[63453, 1986, 79, 1, 38, "Input"], Cell[63535, 1989, 954, 15, 33, "Output"] }, Open ]], Cell[64504, 2007, 47, 0, 31, "Text"], Cell[64554, 2009, 129, 3, 38, "Input"], Cell[CellGroupData[{ Cell[64708, 2016, 54, 1, 38, "Input"], Cell[64765, 2019, 43, 1, 33, "Output"] }, Open ]], Cell[64823, 2023, 68, 0, 31, "Text"], Cell[64894, 2025, 66, 1, 39, "Input"], Cell[64963, 2028, 63, 1, 38, "Input"], Cell[65029, 2031, 87, 1, 39, "Input"], Cell[CellGroupData[{ Cell[65141, 2036, 44, 1, 38, "Input"], Cell[65188, 2039, 35, 1, 33, "Output"] }, Open ]], Cell[65238, 2043, 47, 0, 31, "Text"], Cell[CellGroupData[{ Cell[65310, 2047, 78, 1, 38, "Input"], Cell[65391, 2050, 43, 1, 33, "Output"] }, Open ]], Cell[65449, 2054, 746, 11, 69, "Text"] }, Open ]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[66256, 2072, 80, 1, 61, "Section"], Cell[66339, 2075, 310, 5, 31, "Text"], Cell[66652, 2082, 996, 17, 158, "Input"], Cell[67651, 2101, 158, 3, 31, "Text"], Cell[CellGroupData[{ Cell[67834, 2108, 73, 1, 31, "Subsection"], Cell[67910, 2111, 137, 5, 31, "Text"], Cell[68050, 2118, 125, 2, 38, "Input"], Cell[68178, 2122, 107, 3, 31, "Text"], Cell[CellGroupData[{ Cell[68310, 2129, 93, 1, 39, "Input"], Cell[68406, 2132, 979, 13, 83, "Output"] }, Open ]], Cell[69400, 2148, 482, 13, 32, "Text"], Cell[CellGroupData[{ Cell[69907, 2165, 80, 1, 38, "Input"], Cell[69990, 2168, 264, 4, 33, "Output"] }, Open ]], Cell[70269, 2175, 18, 0, 31, "Text"], Cell[CellGroupData[{ Cell[70312, 2179, 67, 1, 38, "Input"], Cell[70382, 2182, 266, 4, 33, "Output"] }, Open ]], Cell[70663, 2189, 121, 3, 31, "Text"], Cell[70787, 2194, 138, 2, 46, "Input"], Cell[70928, 2198, 42, 0, 31, "Text"], Cell[CellGroupData[{ Cell[70995, 2202, 82, 1, 40, "Input"], Cell[71080, 2205, 956, 13, 83, "Output"] }, Open ]], Cell[72051, 2221, 55, 0, 31, "Text"], Cell[CellGroupData[{ Cell[72131, 2225, 82, 1, 38, "Input"], Cell[72216, 2228, 264, 4, 33, "Output"] }, Open ]], Cell[72495, 2235, 18, 0, 31, "Text"], Cell[CellGroupData[{ Cell[72538, 2239, 68, 1, 38, "Input"], Cell[72609, 2242, 243, 4, 33, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[72901, 2252, 81, 1, 31, "Subsection"], Cell[72985, 2255, 160, 3, 31, "Text"], Cell[CellGroupData[{ Cell[73170, 2262, 72, 1, 39, "Input"], Cell[73245, 2265, 603, 8, 53, "Output"] }, Open ]], Cell[73863, 2276, 131, 3, 31, "Text"], Cell[73997, 2281, 51, 1, 38, "Input"], Cell[74051, 2284, 51, 1, 38, "Input"], Cell[74105, 2287, 51, 1, 38, "Input"], Cell[74159, 2290, 51, 1, 38, "Input"], Cell[74213, 2293, 448, 8, 50, "Text"], Cell[CellGroupData[{ Cell[74686, 2305, 107, 2, 38, "Input"], Cell[74796, 2309, 39, 1, 33, "Output"] }, Open ]], Cell[74850, 2313, 213, 4, 31, "Text"], Cell[CellGroupData[{ Cell[75088, 2321, 105, 2, 38, "Input"], Cell[75196, 2325, 892, 15, 80, "Output"] }, Open ]], Cell[76103, 2343, 271, 7, 31, "Text"], Cell[CellGroupData[{ Cell[76399, 2354, 205, 4, 38, "Input"], Cell[76607, 2360, 411, 6, 33, "Output"] }, Open ]], Cell[77033, 2369, 50, 0, 31, "Text"], Cell[CellGroupData[{ Cell[77108, 2373, 92, 1, 38, "Input"], Cell[77203, 2376, 53, 1, 33, "Output"] }, Open ]], Cell[77271, 2380, 61, 0, 31, "Text"], Cell[CellGroupData[{ Cell[77357, 2384, 104, 2, 38, "Input"], Cell[77464, 2388, 110, 2, 33, "Output"] }, Open ]], Cell[77589, 2393, 121, 2, 29, "Text"], Cell[77713, 2397, 176, 3, 38, "Input"], Cell[77892, 2402, 73, 1, 38, "Input"], Cell[CellGroupData[{ Cell[77990, 2407, 118, 3, 38, "Input"], Cell[78111, 2412, 121, 2, 33, "Output"] }, Open ]], Cell[78247, 2417, 176, 3, 38, "Input"], Cell[78426, 2422, 73, 1, 38, "Input"], Cell[CellGroupData[{ Cell[78524, 2427, 118, 3, 38, "Input"], Cell[78645, 2432, 114, 2, 33, "Output"] }, Open ]], Cell[78774, 2437, 176, 3, 38, "Input"], Cell[78953, 2442, 73, 1, 38, "Input"], Cell[CellGroupData[{ Cell[79051, 2447, 118, 3, 38, "Input"], Cell[79172, 2452, 109, 2, 33, "Output"] }, Open ]], Cell[79296, 2457, 514, 15, 31, "Text"], Cell[79813, 2474, 71, 1, 38, "Input"], Cell[CellGroupData[{ Cell[79909, 2479, 53, 1, 38, "Input"], Cell[79965, 2482, 112, 2, 33, "Output"] }, Open ]], Cell[80092, 2487, 139, 3, 31, "Text"], Cell[CellGroupData[{ Cell[80256, 2494, 64, 1, 38, "Input"], Cell[80323, 2497, 152, 3, 33, "Output"] }, Open ]], Cell[80490, 2503, 232, 7, 31, "Text"], Cell[CellGroupData[{ Cell[80747, 2514, 148, 2, 38, "Input"], Cell[80898, 2518, 142, 2, 33, "Output"] }, Open ]], Cell[81055, 2523, 335, 11, 50, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[81427, 2539, 84, 1, 31, "Subsection"], Cell[81514, 2542, 1438, 39, 73, "Text"], Cell[82955, 2583, 68, 0, 31, "Text"], Cell[83026, 2585, 46, 1, 38, "Input"], Cell[83075, 2588, 41, 0, 31, "Text"], Cell[CellGroupData[{ Cell[83141, 2592, 47, 1, 38, "Input"], Cell[83191, 2595, 36, 1, 33, "Output"] }, Open ]], Cell[83242, 2599, 35, 0, 31, "Text"], Cell[CellGroupData[{ Cell[83302, 2603, 104, 2, 38, "Input"], Cell[83409, 2607, 271, 4, 33, "Output"] }, Open ]], Cell[83695, 2614, 778, 22, 50, "Text"], Cell[84476, 2638, 352, 8, 38, "Input"], Cell[84831, 2648, 60, 0, 31, "Text"], Cell[CellGroupData[{ Cell[84916, 2652, 44, 1, 38, "Input"], Cell[84963, 2655, 46, 1, 33, "Output"] }, Open ]], Cell[85024, 2659, 55, 0, 31, "Text"], Cell[CellGroupData[{ Cell[85104, 2663, 47, 1, 38, "Input"], Cell[85154, 2666, 609, 9, 52, "Output"] }, Open ]], Cell[85778, 2678, 686, 25, 31, "Text"], Cell[CellGroupData[{ Cell[86489, 2707, 111, 2, 38, "Input"], Cell[86603, 2711, 70, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[86710, 2717, 111, 2, 38, "Input"], Cell[86824, 2721, 69, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[86930, 2727, 111, 2, 38, "Input"], Cell[87044, 2731, 69, 1, 33, "Output"] }, Open ]], Cell[87128, 2735, 57, 0, 31, "Text"], Cell[87188, 2737, 68, 1, 38, "Input"], Cell[CellGroupData[{ Cell[87281, 2742, 105, 2, 38, "Input"], Cell[87389, 2746, 2578, 54, 297, "Output"] }, Open ]], Cell[89982, 2803, 325, 8, 50, "Text"], Cell[CellGroupData[{ Cell[90332, 2815, 170, 3, 38, "Input"], Cell[90505, 2820, 53, 1, 33, "Output"] }, Open ]], Cell[90573, 2824, 569, 23, 31, "Text"], Cell[91145, 2849, 194, 4, 38, "Input"], Cell[91342, 2855, 194, 4, 38, "Input"], Cell[91539, 2861, 194, 4, 38, "Input"], Cell[91736, 2867, 305, 14, 31, "Text"], Cell[CellGroupData[{ Cell[92066, 2885, 101, 2, 38, "Input"], Cell[92170, 2889, 3071, 76, 297, "Output"] }, Open ]], Cell[95256, 2968, 329, 8, 31, "Text"], Cell[CellGroupData[{ Cell[95610, 2980, 34, 1, 38, "Input"], Cell[95647, 2983, 117, 2, 33, "Output"] }, Open ]], Cell[95779, 2988, 44, 0, 31, "Text"], Cell[CellGroupData[{ Cell[95848, 2992, 78, 1, 38, "Input"], Cell[95929, 2995, 126, 2, 33, "Output"] }, Open ]], Cell[96070, 3000, 317, 7, 31, "Text"], Cell[CellGroupData[{ Cell[96412, 3011, 433, 7, 59, "Input"], Cell[96848, 3020, 69, 1, 33, "Output"] }, Open ]], Cell[96932, 3024, 115, 5, 31, "Text"], Cell[97050, 3031, 133, 3, 52, "Equation"], Cell[CellGroupData[{ Cell[97208, 3038, 62, 1, 38, "Input"], Cell[97273, 3041, 56, 1, 33, "Output"] }, Open ]], Cell[97344, 3045, 135, 5, 31, "Text"], Cell[97482, 3052, 346, 10, 52, "Equation"], Cell[CellGroupData[{ Cell[97853, 3066, 144, 2, 38, "Input"], Cell[98000, 3070, 217, 4, 33, "Output"] }, Open ]], Cell[98232, 3077, 135, 2, 31, "Text"], Cell[98370, 3081, 252, 4, 33, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[98671, 3091, 89, 2, 59, "Section"], Cell[98763, 3095, 285, 7, 31, "Text"], Cell[99051, 3104, 151, 5, 31, "Text"], Cell[99205, 3111, 544, 15, 111, "Text"], Cell[99752, 3128, 583, 9, 50, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[100372, 3142, 94, 2, 59, "Section"], Cell[100469, 3146, 118, 3, 31, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[100624, 3154, 88, 2, 59, "Section"], Cell[100715, 3158, 5086, 96, 70, "Reference"] }, Closed]] }, Open ]] } ] *) (******************************************************************* End of Mathematica Notebook file. *******************************************************************)