diff options
Diffstat (limited to 'src/algebra/fourier.spad.pamphlet')
-rw-r--r-- | src/algebra/fourier.spad.pamphlet | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/src/algebra/fourier.spad.pamphlet b/src/algebra/fourier.spad.pamphlet new file mode 100644 index 00000000..798723c5 --- /dev/null +++ b/src/algebra/fourier.spad.pamphlet @@ -0,0 +1,169 @@ +\documentclass{article} +\usepackage{axiom} +\begin{document} +\title{\$SPAD/src/algebra fourier.spad} +\author{James Davenport} +\maketitle +\begin{abstract} +\end{abstract} +\eject +\tableofcontents +\eject +\section{domain FCOMP FourierComponent} +<<domain FCOMP FourierComponent>>= +)abbrev domain FCOMP FourierComponent +++ Author: James Davenport +++ Date Created: 17 April 1992 +++ Date Last Updated: 12 June 1992 +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +FourierComponent(E:OrderedSet): + OrderedSet with + sin: E -> $ + ++ sin(x) makes a sin kernel for use in Fourier series + cos: E -> $ + ++ cos(x) makes a cos kernel for use in Fourier series + sin?: $ -> Boolean + ++ sin?(x) returns true if term is a sin, otherwise false + argument: $ -> E + ++ argument(x) returns the argument of a given sin/cos expressions + == + add + --representations + Rep:=Record(SinIfTrue:Boolean, arg:E) + e:E + x,y:$ + sin e == [true,e] + cos e == [false,e] + sin? x == x.SinIfTrue + argument x == x.arg + coerce(x):OutputForm == + hconcat((if x.SinIfTrue then "sin" else "cos")::OutputForm, + bracket((x.arg)::OutputForm)) + x<y == + x.arg < y.arg => true + y.arg < x.arg => false + x.SinIfTrue => false + y.SinIfTrue + +@ +\section{domain FSERIES FourierSeries} +<<domain FSERIES FourierSeries>>= +)abbrev domain FSERIES FourierSeries +++ Author: James Davenport +++ Date Created: 17 April 1992 +++ Date Last Updated: +++ Basic Functions: +++ Related Constructors: +++ Also See: +++ AMS Classifications: +++ Keywords: +++ References: +++ Description: +FourierSeries(R:Join(CommutativeRing,Algebra(Fraction Integer)), + E:Join(OrderedSet,AbelianGroup)): + Algebra(R) with + if E has canonical and R has canonical then canonical + coerce: R -> $ + ++ coerce(r) converts coefficients into Fourier Series + coerce: FourierComponent(E) -> $ + ++ coerce(c) converts sin/cos terms into Fourier Series + makeSin: (E,R) -> $ + ++ makeSin(e,r) makes a sin expression with given argument and coefficient + makeCos: (E,R) -> $ + ++ makeCos(e,r) makes a sin expression with given argument and coefficient + == FreeModule(R,FourierComponent(E)) + add + --representations + Term := Record(k:FourierComponent(E),c:R) + Rep := List Term + multiply : (Term,Term) -> $ + w,x1,x2:$ + t1,t2:Term + n:NonNegativeInteger + z:Integer + e:FourierComponent(E) + a:E + r:R + 1 == [[cos 0,1]] + coerce e == + sin? e and zero? argument e => 0 + if argument e < 0 then + not sin? e => e:=cos(- argument e) + return [[sin(- argument e),-1]] + [[e,1]] + multiply(t1,t2) == + r:=(t1.c*t2.c)*(1/2) + s1:=argument t1.k + s2:=argument t2.k + sum:=s1+s2 + diff:=s1-s2 + sin? t1.k => + sin? t2.k => + makeCos(diff,r) + makeCos(sum,-r) + makeSin(sum,r) + makeSin(diff,r) + sin? t2.k => + makeSin(sum,r) + makeSin(diff,r) + makeCos(diff,r) + makeCos(sum,r) + x1*x2 == + null x1 => 0 + null x2 => 0 + +/[+/[multiply(t1,t2) for t2 in x2] for t1 in x1] + makeCos(a,r) == + a<0 => [[cos(-a),r]] + [[cos a,r]] + makeSin(a,r) == + zero? a => [] + a<0 => [[sin(-a),-r]] + [[sin a,r]] + +@ +\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 FCOMP FourierComponent>> +<<domain FSERIES FourierSeries>> +@ +\eject +\begin{thebibliography}{99} +\bibitem{1} nothing +\end{thebibliography} +\end{document} |