diff options
author | dos-reis <gdr@axiomatics.org> | 2007-08-14 05:14:52 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2007-08-14 05:14:52 +0000 |
commit | ab8cc85adde879fb963c94d15675783f2cf4b183 (patch) | |
tree | c202482327f474583b750b2c45dedfc4e4312b1d /src/hyper/pages/RECLOS.ht | |
download | open-axiom-ab8cc85adde879fb963c94d15675783f2cf4b183.tar.gz |
Initial population.
Diffstat (limited to 'src/hyper/pages/RECLOS.ht')
-rw-r--r-- | src/hyper/pages/RECLOS.ht | 382 |
1 files changed, 382 insertions, 0 deletions
diff --git a/src/hyper/pages/RECLOS.ht b/src/hyper/pages/RECLOS.ht new file mode 100644 index 00000000..02f1145e --- /dev/null +++ b/src/hyper/pages/RECLOS.ht @@ -0,0 +1,382 @@ +% Copyright The Numerical Algorithms Group Limited 1992-94. All rights reserved. +% !! DO NOT MODIFY THIS FILE BY HAND !! Created by ht.awk. +\newcommand{\RealClosureXmpTitle}{RealClosure} +\newcommand{\RealClosureXmpNumber}{9.66} +% +% ===================================================================== +\begin{page}{RealClosureXmpPage}{9.66 RealClosure} +% ===================================================================== +\beginscroll + + +The Real Closure 1.0 package provided by Renaud Rioboo (Renaud.Rioboo@lip6.fr) consists of different +packages, categories and domains : + +\begin{items} +\item The package \axiomType{RealPolynomialUtilitiesPackage} which needs a \axiomType{Field} {\em F} and a +\axiomType{UnivariatePolynomialCategory} domain with coefficients in {\em F}. It computes some +simple functions such as Sturm and Sylvester sequences +(\axiomOpFrom{sturmSequence}{RealPolynomialUtilitiesPackage}, +\axiomOpFrom{sylvesterSequence}{RealPolynomialUtilitiesPackage}). + +\item The category \axiomType{RealRootCharacterizationCategory} provides abstract +functions to work with "real roots" of univariate polynomials. These +resemble variables with some functionality needed to compute important +operations. + +\item The category \axiomType{RealClosedField} provides common operations available over +real closed fiels. These include finding all the roots of a univariate +polynomial, taking square (and higher) roots, ... + +\item The domain \axiomType{RightOpenIntervalRootCharacterization} is the main code that +provides the functionality of \axiomType{RealRootCharacterizationCategory} for the case +of archimedean fields. Abstract roots are encoded with a left closed right +open interval containing the root together with a defining polynomial for the +root. + +\item The \axiomType{RealClosure} domain is the end-user code. It provides usual arithmetic +with real algebraic numbers, along with the functionality of a real closed +field. It also provides functions to approximate a real algebraic number by an +element of the base field. This approximation may either be absolute +(\axiomOpFrom{approximate}{RealClosure}) or relative (\axiomOpFrom{relativeApprox}{RealClosure}). + + +\end{items} + +\centerline{CAVEATS} + +Since real algebraic expressions are stored as depending on "real roots" which +are managed like variables, there is an ordering on these. This ordering is +dynamical in the sense that any new algebraic takes precedence over older +ones. In particular every creation function raises a new "real root". This has +the effect that when you type something like \spad{sqrt(2) + sqrt(2)} you have two +new variables which happen to be equal. To avoid this name the expression such +as in \spad{s2 := sqrt(2) ; s2 + s2} + +Also note that computing times depend strongly on the ordering you implicitly +provide. Please provide algebraics in the order which seems most natural to you. + +\centerline{LIMITATIONS} + +This packages uses +algorithms which are published in [1] and [2] which are based on field +arithmetics, in particular for polynomial gcd related algorithms. This can be +quite slow for high degree polynomials and subresultants methods usually work +best. Beta versions of the package try to use these techniques in a better +way and work significantly faster. These are mostly based on unpublished +algorithms and cannot be distributed. Please contact the author if you have a +particular problem to solve or want to use these versions. + +Be aware that approximations behave as post-processing and that all +computations are done excatly. They can thus be quite time consuming when +depending on several "real roots". + +\centerline{REFERENCES} + + +[1] R. Rioboo : Real Algebraic Closure of an ordered Field : Implementation + in Axiom. + In proceedings of the ISSAC'92 Conference, Berkeley 1992 pp. 206-215. + +[2] Z. Ligatsikas, R. Rioboo, M. F. Roy : Generic computation of the real + closure of an ordered field. + In Mathematics and Computers in Simulation Volume 42, Issue 4-6, + November 1996. + +\centerline{EXAMPLES} +\xtc{ +We shall work with the real closure of the ordered field of +rational numbers. +}{ +\spadpaste{Ran := RECLOS(FRAC INT) \bound{Ran}} +} +\xtc{ +Some simple signs for square roots, these correspond to an extension +of degree 16 of the rational numbers. Examples provided by J. Abbot. +}{ +\spadpaste{fourSquares(a:Ran,b:Ran,c:Ran,d:Ran):Ran == sqrt(a)+sqrt(b) - sqrt(c)-sqrt(d) \free{Ran} \bound{fs}} +} +\xtc{ +These produce values very close to zero. +}{ +\spadpaste{squareDiff1 := fourSquares(73,548,60,586) \free{fs}\bound{sd1}} +} +\xtc{ +}{ +\spadpaste{recip(squareDiff1)\free{sd1}} +} +\xtc{ +}{ +\spadpaste{sign(squareDiff1)\free{sd1}} +} +\xtc{ +}{ +\spadpaste{squareDiff2 := fourSquares(165,778,86,990) \free{fs}\bound{sd2}} +} +\xtc{ +}{ +\spadpaste{recip(squareDiff2)\free{sd2}} +} +\xtc{ +}{ +\spadpaste{sign(squareDiff2)\free{sd2}} +} +\xtc{ +}{ +\spadpaste{squareDiff3 := fourSquares(217,708,226,692) \free{fs}\bound{sd3}} +} +\xtc{ +}{ +\spadpaste{recip(squareDiff3)\free{sd3}} +} +\xtc{ +}{ +\spadpaste{sign(squareDiff3)\free{sd3}} +} +\xtc{ +}{ +\spadpaste{squareDiff4 := fourSquares(155,836,162,820) \free{fs}\bound{sd4}} +} +\xtc{ +}{ +\spadpaste{recip(squareDiff4)\free{sd4}} +} +\xtc{ +}{ +\spadpaste{sign(squareDiff4)\free{sd4}} +} +\xtc{ +}{ +\spadpaste{squareDiff5 := fourSquares(591,772,552,818) \free{fs}\bound{sd5}} +} +\xtc{ +}{ +\spadpaste{recip(squareDiff5)\free{sd5}} +} +\xtc{ +}{ +\spadpaste{sign(squareDiff5)\free{sd5}} +} +\xtc{ +}{ +\spadpaste{squareDiff6 := fourSquares(434,1053,412,1088) \free{fs}\bound{sd6}} +} +\xtc{ +}{ +\spadpaste{recip(squareDiff6)\free{sd6}} +} +\xtc{ +}{ +\spadpaste{sign(squareDiff6)\free{sd6}} +} +\xtc{ +}{ +\spadpaste{squareDiff7 := fourSquares(514,1049,446,1152) \free{fs}\bound{sd7}} +} +\xtc{ +}{ +\spadpaste{recip(squareDiff7)\free{sd7}} +} +\xtc{ +}{ +\spadpaste{sign(squareDiff7)\free{sd7}} +} +\xtc{ +}{ +\spadpaste{squareDiff8 := fourSquares(190,1751,208,1698) \free{fs}\bound{sd8}} +} +\xtc{ +}{ +\spadpaste{recip(squareDiff8)\free{sd8}} +} +\xtc{ +}{ +\spadpaste{sign(squareDiff8)\free{sd8}} +} +\xtc{ +This should give three digits of precision +}{ +\spadpaste{relativeApprox(squareDiff8,10**(-3))::Float \free{sd8}} +} +\xtc{ +The sum of these 4 roots is 0 +}{ +\spadpaste{l := allRootsOf((x**2-2)**2-2)$Ran \free{Ran} \bound{l}} +} +\xtc{ +Check that they are all roots of the same polynomial +}{ +\spadpaste{removeDuplicates map(mainDefiningPolynomial,l) \free{l}} +} +\xtc{ +We can see at a glance that they are separate roots +}{ +\spadpaste{map(mainCharacterization,l) \free{l}} +} +\xtc{ +Check the sum and product +}{ +\spadpaste{[reduce(+,l),reduce(*,l)-2] \free{l}} +} +\xtc{ +A more complicated test that involve an extension of degree 256. +This is a way of checking nested radical identities. +}{ +\spadpaste{(s2, s5, s10) := (sqrt(2)$Ran, sqrt(5)$Ran, sqrt(10)$Ran) \free{Ran}\bound{s2}\bound{s5}\bound{s10}} +} +\xtc{ +}{ +\spadpaste{eq1:=sqrt(s10+3)*sqrt(s5+2) - sqrt(s10-3)*sqrt(s5-2) = sqrt(10*s2+10) \free{s2}\free{s5}\free{s10}\bound{eq1}} +} +\xtc{ +}{ +\spadpaste{eq1::Boolean \free{eq1}} +} +\xtc{ +}{ +\spadpaste{eq2:=sqrt(s5+2)*sqrt(s2+1) - sqrt(s5-2)*sqrt(s2-1) = sqrt(2*s10+2)\free{s2}\free{s5}\free{s10}\bound{eq2}} +} +\xtc{ +}{ +\spadpaste{eq2::Boolean \free{eq2}} +} +\xtc{ +Some more examples from J. M. Arnaudies +}{ +\spadpaste{s3 := sqrt(3)$Ran \free{Ran}\bound{s3}} +} +\xtc{ +}{ +\spadpaste{s7:= sqrt(7)$Ran \free{Ran}\bound{s7}} +} +\xtc{ +}{ +\spadpaste{e1 := sqrt(2*s7-3*s3,3) \free{s7} \free{s3} \bound{e1}} +} +\xtc{ +}{ +\spadpaste{e2 := sqrt(2*s7+3*s3,3) \free{s7} \free{s3} \bound{e2}} +} +\xtc{ +This should be null +}{ +\spadpaste{e2-e1-s3 \free{e2} \free{e1} \free{s3}} +} +\xtc{ +A quartic polynomial +}{ +\spadpaste{pol : UP(x,Ran) := x**4+(7/3)*x**2+30*x-(100/3) \free{Ran} \bound{pol}} +} +\xtc{ +Add some cubic roots +}{ +\spadpaste{r1 := sqrt(7633)$Ran \free{Ran}\bound{r1}} +} +\xtc{ +}{ +\spadpaste{alpha := sqrt(5*r1-436,3)/3 \free{r1} \bound{alpha}} +} +\xtc{ +}{ +\spadpaste{beta := -sqrt(5*r1+436,3)/3 \free{r1} \bound{beta}} +} +\xtc{ +this should be null +}{ +\spadpaste{pol.(alpha+beta-1/3) \free{pol} \free{alpha} \free{beta}} +} +\xtc{ +A quintic polynomial +}{ +\spadpaste{qol : UP(x,Ran) := x**5+10*x**3+20*x+22 \free{Ran}\bound{qol}} +} +\xtc{ +Add some cubic roots +}{ +\spadpaste{r2 := sqrt(153)$Ran \free{Ran}\bound{r2}} +} +\xtc{ +}{ +\spadpaste{alpha2 := sqrt(r2-11,5) \free{r2}\bound{alpha2}} +} +\xtc{ +}{ +\spadpaste{beta2 := -sqrt(r2+11,5) \free{r2}\bound{beta2}} +} +\xtc{ +this should be null +}{ +\spadpaste{qol(alpha2+beta2) \free{qol}\free{alpha2}\free{beta2}} +} +\xtc{ +Finally, some examples from the book Computer Algebra by +Davenport, Siret and Tournier (page 77). +The last one is due to Ramanujan. +}{ +\spadpaste{dst1:=sqrt(9+4*s2)=1+2*s2 \free{s2}\bound{dst1}} +} +\xtc{ +}{ +\spadpaste{dst1::Boolean \free{dst1}} +} +\xtc{ +}{ +\spadpaste{s6:Ran:=sqrt 6 \free{Ran}\bound{s6}} +} +\xtc{ +}{ +\spadpaste{dst2:=sqrt(5+2*s6)+sqrt(5-2*s6) = 2*s3 \free{s6}\free{s3}\bound{dst2}} +} +\xtc{ +}{ +\spadpaste{dst2::Boolean \free{dst2}} +} +\xtc{ +}{ +\spadpaste{s29:Ran:=sqrt 29 \free{Ran}\bound{s29}} +} +\xtc{ +}{ +\spadpaste{dst4:=sqrt(16-2*s29+2*sqrt(55-10*s29)) = sqrt(22+2*s5)-sqrt(11+2*s29)+s5 \free{s29}\free{s5}\bound{dst4}} +} +\xtc{ +}{ +\spadpaste{dst4::Boolean \free{dst4}} +} +\xtc{ +}{ +\spadpaste{dst6:=sqrt((112+70*s2)+(46+34*s2)*s5) = (5+4*s2)+(3+s2)*s5 \free{s2}\free{s5}\bound{dst6}} +} +\xtc{ +}{ +\spadpaste{dst6::Boolean \free{dst6}} +} +\xtc{ +}{ +\spadpaste{f3:Ran:=sqrt(3,5) \free{Ran}\bound{f3}} +} +\xtc{ +}{ +\spadpaste{f25:Ran:=sqrt(1/25,5) \free{Ran}\bound{f25}} +} +\xtc{ +}{ +\spadpaste{f32:Ran:=sqrt(32/5,5) \free{Ran}\bound{f32}} +} +\xtc{ +}{ +\spadpaste{f27:Ran:=sqrt(27/5,5) \free{Ran}\bound{f27}} +} +\xtc{ +}{ +\spadpaste{dst5:=sqrt((f32-f27,3)) = f25*(1+f3-f3**2)\free{f32}\free{f27}\free{f25}\free{f3}\bound{dst5}} +} +\xtc{ +}{ +\spadpaste{dst5::Boolean \free{dst5}} +} + +\endscroll +\autobuttons +\end{page} +% |