Artifact 8d6fd414bad14bade2bcf87575c26c19148178302a35dcf6cb57d1c694af6b94:
- Executable file
r37/packages/rataprx/rataprx.tex
— part of check-in
[f2fda60abd]
at
2011-09-02 18:13:33
on branch master
— Some historical releases purely for archival purposes
git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/trunk/historical@1375 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 11288) [annotate] [blame] [check-ins using] [more...]
- Executable file
r38/packages/rataprx/rataprx.tex
— part of check-in
[f2fda60abd]
at
2011-09-02 18:13:33
on branch master
— Some historical releases purely for archival purposes
git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/trunk/historical@1375 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 11288) [annotate] [blame] [check-ins using]
\documentstyle[11pt,reduce]{article} \title{{\bf Rational Approximations Package for REDUCE}} \author{Lisa Temme\\Wolfram Koepf\\ e-mail: {\tt koepf@zib.de}} \date{August 1995 : ZIB Berlin} \begin{document} \maketitle \section{Periodic Decimal Representation} The division of one integer by another often results in a period in the decimal part. The {\tt rational2periodic} function in this package can recognise and represent such an answer in a periodic representation. The inverse function, {\tt periodic2rational}, can also convert a periodic representation back to a rational number.\\ \begin{tabbing} {\bf \underline{Periodic Representation of a Rational Number}}\\ \\ {\bf SYNTAX:} \hspace{3mm} \= {\tt rational2periodic(n);}\\ \\ {\bf INPUT:} \> {\tt n} \hspace{3mm} is a rational number\\ \\ {\bf RESULT:} \> {\tt periodic(\{a,b\} , \{c1,...,cn\})} \\ \\ \> where {\tt a/b} is the non-periodic part\\ \> and {\tt c1,...,cn} are the digits of the periodic part.\\ \\ {\bf EXAMPLE:} \> $59/70$ written as $0.8\overline{428571}$\\ \> {\tt 1: rational2periodic(59/70);}\\ \\ \> {\tt periodic(\{8,10\},\{4,2,8,5,7,1\})}\\ \\ {\bf \underline{Rational Number of a Periodic Representation}}\\ \\ {\bf SYNTAX:} \> {\tt periodic2rational(periodic(\{a,b\},\{c1,...,cn\}))}\\ \> {\tt periodic2rational(\{a,b\},\{c1,...,cn\})}\\ \\ {\bf INPUT:} \> \hspace{15mm} {\tt a} \hspace{3mm}\= is an integer\\ \> \hspace{15mm} {\tt b} \> is $1$, $-1$ or an integer multiple of $10$\\ \> {\tt c1,...,cn} \> is a list of positive digits\\ \\ {\bf RESULT:} \> A rational number.\\ \\ {\bf EXAMPLE:} \> $0.8\overline{428571}$ written as $59/70$ \\ \> {\tt 2: periodic2rational(periodic(\{8,10\},\{4,2,8,5,7,1\}));} \\ \\ \> \hspace{1mm} {\tt 59}\\ \> {\tt ----}\\ \> \hspace{1mm} {\tt 70}\\ \\ \> {\tt 3: periodic2rational(\{8,10\},\{4,2,8,5,7,1\});} \\ \\ \> \hspace{1mm} {\tt 59}\\ \> {\tt ----}\\ \> \hspace{1mm} {\tt 70} \end{tabbing} Note that if {\tt a} is zero, {\tt b} will indicate how many places after the decimal point that the period occurs. Note also that if the answer is negative then this will be indicated by the sign of {\tt a} (unless {\tt a} is zero in which case it is indicated by the sign of {\tt b}). \\ \\ {\bf ERROR MESSAGE}\\ {\tt ***** operator to be used in off rounded mode}\\ The periodicity of a function can only be recognised in the {\tt off rounded} mode. This is also true for the inverse procedure.\\ \\ {\large\bf EXAMPLES}\\ \begin{verbatim} 4: rational2periodic(1/3); periodic({0,1},{3}) 5: periodic2rational(ws); 1 --- 3 6: periodic2rational({0,1},{3}); 1 --- 3 7: rational2periodic(-1/6); periodic({-1,10},{6}) 8: periodic2rational(ws); - 1 ------ 6 9: rational2periodic(6/17); periodic({0,1},{3,5,2,9,4,1,1,7,6,4,7,0,5,8,8,2}) 10: periodic2rational(ws); 6 ---- 17 11: rational2periodic(352673/3124); periodic({11289,100},{1,4,8,5,2,7,5,2,8,8,0,9,2,1,8,9,5,0,0,6, 4,0,2,0,4,8,6,5,5,5,6,9,7,8,2,3,3,0,3,4, 5,7,1,0,6,2,7,4,0,0,7,6,8,2,4,5,8,3,8,6, 6,8,3,7,3,8,7,9,6,4}) 12: periodic2rational(ws); 352673 -------- 3124 \end{verbatim} %\newpage \section{Continued Fractions} A continued fraction (see ~\cite{PA} \S 4.2) has the general form {\Large \[b_0 + \frac{a_1}{b_1 + \frac{a_2}{b_2+ \frac{a_3}{b_3 + \ldots }}} \;.\] } A more compact way of writing this is as \[b_0 + \frac{a_1|}{|b_1} + \frac{a_2|}{|b_2} + \frac{a_3|}{|b_3} + \ldots\,.\] \\ This is represented in {\small REDUCE} as \[{\tt contfrac({\sl Rational\hspace{2mm} approximant}, \{b0, \{a1,b1\}, \{a2,b2\},.....\}) }\] \begin{tabbing} \\ {\bf SYNTAX:} \hspace{5mm} \= {\tt cfrac(number);}\\ \> {\tt cfrac(number,length);}\\ \> {\tt cfrac(f, var);}\\ \> {\tt cfrac(f, var, length);}\\ \\ {\bf INPUT:} \> {\tt number} \hspace{3mm} \= is any real number\\ \> {\tt f} \> is a function\\ \> {\tt var} \> is the function variable\\ %\> {\tt length} \> is the upper bound of the number\\ %\> \> of \{ai,bi\} returned (optional)\\ \\ \end{tabbing} {\bf Optional Argument: {\tt length}}\\ The {\tt length} argument is optional. For an NON-RATIONAL function input the {\tt length} argument specifies the number of ordered pairs, $\{a_i,b_i\}$, to be returned. It's default value is five. For a RATIONAL function input the {\tt length} argument can only truncate the answer, it cannot return additional pairs even if the precision is increased. The default value is the complete continued fraction of the rational input. For a NUMBER input the default value is dependent on the precision of the session, and the {\tt length} argument will only take effect if it has a smaller value than that of the number of ordered pairs which the default value would return.\\ \\ %\newpage \large{{\bf EXAMPLES}}\\ \\ \begin{verbatim} 13: cfrac(23.696); 2962 contfrac(------,{23,{1,1},{1,2},{1,3},{1,2},{1,5}}) 125 14: cfrac(23.696,3); 237 contfrac(-----,{23,{1,1},{1,2},{1,3}}) 10 15: cfrac pi; 1146408 contfrac(---------, 364913 {3,{1,7},{1,15},{1,1},{1,292},{1,1},{1,1},{1,1},{1,2},{1,1}}) 16: cfrac(pi,3); 355 contfrac(-----,{3,{1,7},{1,15},{1,1}}) 113 17: cfrac(pi*e*sqrt(2),4); 10978 contfrac(-------,{12,{1,12},{1,1},{1,68},{1,1}}) 909 18: cfrac((x+2/3)^2/(6*x-5),x,1); 2 9*x + 12*x + 4 6*x + 13 24*x - 20 contfrac(-----------------,{----------,{1,-----------}}) 54*x - 45 36 9 19: cfrac((x+2/3)^2/(6*x-5),x,10); 2 9*x + 12*x + 4 6*x + 13 24*x - 20 contfrac(-----------------,{----------,{1,-----------}}) 54*x - 45 36 9 20: cfrac(e^x,x); 3 2 x + 9*x + 36*x + 60 contfrac(-----------------------,{1,{x,1},{ - x,2},{x,3},{ - x,2},{x,5}}) 2 3*x - 24*x + 60 21: cfrac(x^2/(x-1)*e^x,x); 6 4 2 x + 3*x + x contfrac(----------------,{0, 4 2 3*x - x - 1 2 2 2 2 2 { - x ,1}, { - 2*x ,1}, {x ,1}, {x ,1}, {x ,1}}) 22: cfrac(x^2/(x-1)*e^x,x,2); 2 x 2 2 contfrac(----------,{0,{ - x ,1},{ - 2*x ,1}}) 2 2*x - 1 \end{verbatim} %\newpage \section{Pad\'{e} Approximation} The Pad\'{e} approximant represents a function by the ratio of two polynomials. The coefficients of the powers occuring in the polynomials are determined by the coefficients in the Taylor series expansion of the function (see ~\cite{PA}). Given a power series \[ f(x) = c_0 + c_1 (x-h) + c_2 (x-h)^2 \ldots \] and the degree of numerator, $n$, and of the denominator, $d$, the {\tt pade} function finds the unique coefficients $a_i,\, b_i$ in the Pad\'{e} approximant \[ \frac{a_0+a_1 x+ \cdots + a_n x^n}{b_0+b_1 x+ \cdots + b_d x^d} \; .\] \\ \\ \begin{tabbing} {\bf SYNTAX:} \hspace{5mm}\= {\tt pade(f, x, h, n, d);}\\ \\ {\bf INPUT:} \> {\tt f} \hspace{3mm} \= is the funtion to be approximated\\ \> {\tt x} \> is the function variable\\ \> {\tt h} \> is the point at which the approximation is\\ \> \> evaluated\\ \> {\tt n} \> is the (specified) degree of the numerator\\ \> {\tt d} \> is the (specified) degree of the denominator\\ \\ {\bf RESULT:} \> Pad\a'{e} Approximant, ie. a rational function.\\ \\ \end{tabbing} {\bf ERROR MESSAGES}\\ {\tt ***** not yet implemented}\\ The Taylor series expansion for the function, f, has not yet been implemented in the {\small REDUCE} Taylor Package.\\ \\ {\tt ***** no Pade Approximation exists}\\ A Pad\'{e} Approximant of this function does not exist.\\ \\ \newpage {\tt ***** Pade Approximation of this order does not exist}\\ A Pad\'{e} Approximant of this order (ie. the specified numerator and denominator orders) does not exist but one of a different order may exist.\\ \\ \large{{\bf EXAMPLES}} \begin{verbatim} 23: pade(sin(x),x,0,3,3); 2 x*( - 7*x + 60) ------------------ 2 3*(x + 20) 24: pade(tanh(x),x,0,5,5); 4 2 x*(x + 105*x + 945) ----------------------- 4 2 15*(x + 28*x + 63) 25: pade(atan(x),x,0,5,5); 4 2 x*(64*x + 735*x + 945) -------------------------- 4 2 15*(15*x + 70*x + 63) 26: pade(exp(1/x),x,0,5,5); ***** no Pade Approximation exists 27: pade(factorial(x),x,1,3,3); ***** not yet implemented 28: pade(asech(x),x,0,3,3); 2 2 2 - 3*log(x)*x + 8*log(x) + 3*log(2)*x - 8*log(2) + 2*x -------------------------------------------------------- 2 3*x - 8 29: taylor(ws-asech(x),x,0,10); 11 log(x)*(0 + O(x )) 13 6 43 8 1611 10 11 + (-----*x + ------*x + -------*x + O(x )) 768 2048 81920 30: pade(sin(x)/x^2,x,0,10,0); ***** Pade Approximation of this order does not exist 31: pade(sin(x)/x^2,x,0,10,2); 10 8 6 4 2 ( - x + 110*x - 7920*x + 332640*x - 6652800*x + 39916800)/(39916800*x) 32: pade(exp(x),x,0,10,10); 10 9 8 7 6 (x + 110*x + 5940*x + 205920*x + 5045040*x 5 4 3 + 90810720*x + 1210809600*x + 11762150400*x 2 + 79394515200*x + 335221286400*x + 670442572800)/ 10 9 8 7 6 (x - 110*x + 5940*x - 205920*x + 5045040*x 5 4 - 90810720*x + 1210809600*x 3 2 - 11762150400*x + 79394515200*x - 335221286400*x + 670442572800) 33: pade(sin(sqrt(x)),x,0,3,3); (sqrt(x)* 3 2 (56447*x - 4851504*x + 132113520*x - 885487680))\ 3 2 (7*(179*x - 7200*x - 2209680*x - 126498240)) \end{verbatim} \begin{thebibliography}{9} \bibitem{PA} Baker(Jr.), George A. and Graves-Morris, Peter:\\ {\it Pad\'{e} Approximants, Part I: Basic Theory}, (Encyclopedia of mathematics and its applications, Vol 13, Section: Mathematics of physics), Addison-Wesley Publishing Company, Reading, Massachusetts, 1981. \end{thebibliography} \end{document}