diff options
Diffstat (limited to 'src/algebra/gseries.spad.pamphlet')
-rw-r--r-- | src/algebra/gseries.spad.pamphlet | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/src/algebra/gseries.spad.pamphlet b/src/algebra/gseries.spad.pamphlet new file mode 100644 index 00000000..cc152a3a --- /dev/null +++ b/src/algebra/gseries.spad.pamphlet @@ -0,0 +1,165 @@ +\documentclass{article} +\usepackage{axiom} +\begin{document} +\title{\$SPAD/src/algebra gseries.spad} +\author{Clifton J. Williamson} +\maketitle +\begin{abstract} +\end{abstract} +\eject +\tableofcontents +\eject +\section{domain GSERIES GeneralUnivariatePowerSeries} +<<domain GSERIES GeneralUnivariatePowerSeries>>= +)abbrev domain GSERIES GeneralUnivariatePowerSeries +++ Author: Clifton J. Williamson +++ Date Created: 22 September 1993 +++ Date Last Updated: 23 September 1993 +++ Basic Operations: +++ Related Domains: +++ Also See: +++ AMS Classifications: +++ Keywords: series, Puiseux +++ Examples: +++ References: +++ Description: +++ This is a category of univariate Puiseux series constructed +++ from univariate Laurent series. A Puiseux series is represented +++ by a pair \spad{[r,f(x)]}, where r is a positive rational number and +++ \spad{f(x)} is a Laurent series. This pair represents the Puiseux +++ series \spad{f(x\^r)}. +GeneralUnivariatePowerSeries(Coef,var,cen): Exports == Implementation where + Coef : Ring + var : Symbol + cen : Coef + I ==> Integer + UTS ==> UnivariateTaylorSeries + ULS ==> UnivariateLaurentSeries + UPXS ==> UnivariatePuiseuxSeries + EFULS ==> ElementaryFunctionsUnivariateLaurentSeries + EFUPXS ==> ElementaryFunctionsUnivariatePuiseuxSeries + FS2UPS ==> FunctionSpaceToUnivariatePowerSeries + + Exports ==> UnivariatePuiseuxSeriesCategory Coef with + coerce: Variable(var) -> % + ++ coerce(var) converts the series variable \spad{var} into a + ++ Puiseux series. + coerce: UPXS(Coef,var,cen) -> % + ++ coerce(f) converts a Puiseux series to a general power series. + differentiate: (%,Variable(var)) -> % + ++ \spad{differentiate(f(x),x)} returns the derivative of + ++ \spad{f(x)} with respect to \spad{x}. + if Coef has Algebra Fraction Integer then + integrate: (%,Variable(var)) -> % + ++ \spad{integrate(f(x))} returns an anti-derivative of the power + ++ series \spad{f(x)} with constant coefficient 0. + ++ We may integrate a series when we can divide coefficients + ++ by integers. + + Implementation ==> UnivariatePuiseuxSeries(Coef,var,cen) add + + coerce(upxs:UPXS(Coef,var,cen)) == upxs pretend % + + puiseux: % -> UPXS(Coef,var,cen) + puiseux f == f pretend UPXS(Coef,var,cen) + + if Coef has Algebra Fraction Integer then + + differentiate f == + str1 : String := "'differentiate' unavailable on this domain; " + str2 : String := "use 'approximate' first" + error concat(str1,str2) + + differentiate(f:%,v:Variable(var)) == differentiate f + + if Coef has PartialDifferentialRing(Symbol) then + differentiate(f:%,s:Symbol) == + (s = variable(f)) => + str1 : String := "'differentiate' unavailable on this domain; " + str2 : String := "use 'approximate' first" + error concat(str1,str2) + dcds := differentiate(center f,s) + deriv := differentiate(puiseux f) :: % + map(differentiate(#1,s),f) - dcds * deriv + + integrate f == + str1 : String := "'integrate' unavailable on this domain; " + str2 : String := "use 'approximate' first" + error concat(str1,str2) + + integrate(f:%,v:Variable(var)) == integrate f + + if Coef has integrate: (Coef,Symbol) -> Coef and _ + Coef has variables: Coef -> List Symbol then + + integrate(f:%,s:Symbol) == + (s = variable(f)) => + str1 : String := "'integrate' unavailable on this domain; " + str2 : String := "use 'approximate' first" + error concat(str1,str2) + not entry?(s,variables center f) => map(integrate(#1,s),f) + error "integrate: center is a function of variable of integration" + + if Coef has TranscendentalFunctionCategory and _ + Coef has PrimitiveFunctionCategory and _ + Coef has AlgebraicallyClosedFunctionSpace Integer then + + integrateWithOneAnswer: (Coef,Symbol) -> Coef + integrateWithOneAnswer(f,s) == + res := integrate(f,s)$FunctionSpaceIntegration(Integer,Coef) + res case Coef => res :: Coef + first(res :: List Coef) + + integrate(f:%,s:Symbol) == + (s = variable(f)) => + str1 : String := "'integrate' unavailable on this domain; " + str2 : String := "use 'approximate' first" + error concat(str1,str2) + not entry?(s,variables center f) => + map(integrateWithOneAnswer(#1,s),f) + error "integrate: center is a function of variable of integration" + +@ +\section{License} +<<license>>= +--Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. +--All rights reserved. +-- +--Redistribution and use in source and binary forms, with or without +--modification, are permitted provided that the following conditions are +--met: +-- +-- - Redistributions of source code must retain the above copyright +-- notice, this list of conditions and the following disclaimer. +-- +-- - Redistributions in binary form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in +-- the documentation and/or other materials provided with the +-- distribution. +-- +-- - Neither the name of The Numerical ALgorithms Group Ltd. nor the +-- names of its contributors may be used to endorse or promote products +-- derived from this software without specific prior written permission. +-- +--THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +--IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +--TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +--PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +--OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +--EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +--PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +--PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +--LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +--NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +--SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +@ +<<*>>= +<<license>> + +<<domain GSERIES GeneralUnivariatePowerSeries>> +@ +\eject +\begin{thebibliography}{99} +\bibitem{1} nothing +\end{thebibliography} +\end{document} |