aboutsummaryrefslogtreecommitdiff
path: root/src/input/lodo.input.pamphlet
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2007-08-14 05:14:52 +0000
committerdos-reis <gdr@axiomatics.org>2007-08-14 05:14:52 +0000
commitab8cc85adde879fb963c94d15675783f2cf4b183 (patch)
treec202482327f474583b750b2c45dedfc4e4312b1d /src/input/lodo.input.pamphlet
downloadopen-axiom-ab8cc85adde879fb963c94d15675783f2cf4b183.tar.gz
Initial population.
Diffstat (limited to 'src/input/lodo.input.pamphlet')
-rw-r--r--src/input/lodo.input.pamphlet137
1 files changed, 137 insertions, 0 deletions
diff --git a/src/input/lodo.input.pamphlet b/src/input/lodo.input.pamphlet
new file mode 100644
index 00000000..e19d23dc
--- /dev/null
+++ b/src/input/lodo.input.pamphlet
@@ -0,0 +1,137 @@
+\documentclass{article}
+\usepackage{axiom}
+\begin{document}
+\title{\$SPAD/src/input lodo.input}
+\author{The Axiom Team}
+\maketitle
+\begin{abstract}
+\end{abstract}
+\eject
+\tableofcontents
+\eject
+\section{License}
+<<license>>=
+--Copyright The Numerical Algorithms Group Limited 1991.
+@
+<<*>>=
+<<license>>
+---------------------------------- lodo.input -----------------------------
+
+-- LODO2(M,A) is the domain of linear ordinary differential operators over
+-- an A-module M, where A is a differential ring. This includes the
+-- cases of operators which are polynomials in D acting upon scalars or
+-- vectors depending on a single variable. The coefficients of the
+-- operator polynomials can be integers, rational functions, matrices
+-- or elements of other domains.
+
+------------------------------------------------------------------------
+-- Differential operators with constant coefficients
+------------------------------------------------------------------------
+)clear all
+RN:=FRAC INT
+Dx: LODO2(RN, UP(x,RN))
+
+Dx := D() -- definition of an operator
+a := Dx + 1
+b := a + 1/2*Dx**2 - 1/2
+
+p: UP(x,RN) := 4*x**2 + 2/3 -- something to work on
+
+a p -- application of an operator to a polynomial
+(a*b) p = a b p -- multiplication is defined by this identity
+c := (1/9)*b*(a + b)**2 -- exponentiation follows from multiplication
+(a**2 - 3/4*b + c) (p + 1) -- general application of operator expressions
+
+------------------------------------------------------------------------
+-- Differential operators with rational function coefficients
+------------------------------------------------------------------------
+)clear all
+RFZ := FRAC UP(x,INT)
+(Dx, a, b): LODO1 RFZ
+
+Dx := D()
+b := 3*x**2*Dx**2 + 2*Dx + 1/x
+a := b*(5*x*Dx + 7)
+p: RFZ := x**2 + 1/x**2
+
+(a*b - b*a) p -- operator multiplication is not commutative
+
+-- When the coefficients of the operator polynomials come from a field
+-- it is possible to define left and right division of the operators.
+-- This allows the computation of left and right gcd's via remainder
+-- sequences, and also the computation of left and right lcm's.
+
+leftDivide(a,b) -- result is the quotient/remainder pair
+a - (b * %.quotient + %.remainder)
+rightDivide(a,b)
+a - (%.quotient * b + %.remainder)
+
+-- A GCD doesn't necessarily divide a and b on both sides.
+e := leftGcd(a,b)
+leftRemainder(a, e) -- remainder from left division
+rightRemainder(a, e) -- remainder from right division
+
+-- An LCM is not necessarily divisible from both sides.
+f := rightLcm(a,b)
+leftRemainder(f, b)
+rightRemainder(f, b) -- the remainder is non-zero
+
+------------------------------------------------------------------------
+--
+-- Problem: find the first few coefficients of exp(x)/x**i in
+-- Dop phi
+-- where
+-- Dop := D**3 + G/x**2 * D + H/x**3 - 1
+-- phi := sum(s[i]*exp(x)/x**i, i = 0..)
+------------------------------------------------------------------------
+)clear all
+Dx: LODO(EXPR INT, f +-> D(f, x))
+Dx := D()
+Dop:= Dx**3 + G/x**2*Dx + H/x**3 - 1
+n == 3
+phi == reduce(+,[subscript(s,[i])*exp(x)/x**i for i in 0..n])
+phi1 == Dop(phi) / exp x
+phi2 == phi1 *x**(n+3)
+phi3 == retract(phi2)@(POLY INT)
+pans == phi3 ::UP(x,POLY INT)
+pans1 == [coefficient(pans, (n+3-i) :: NNI) for i in 2..n+1]
+leq == solve(pans1,[subscript(s,[i]) for i in 1..n])
+leq
+n==4
+leq
+n==7
+leq
+
+------------------------------------------------------------------------
+-- Differential operators with matrix coefficients acting on vectors.
+------------------------------------------------------------------------
+)clear all
+PZ := UP(x,INT); Vect := DPMM(3, PZ, SQMATRIX(3,PZ), PZ);
+Modo := LODO2(SQMATRIX(3,PZ), Vect);
+
+p := directProduct([3*x**2 + 1, 2*x, 7*x**3 + 2*x]::(VECTOR(PZ)))@Vect
+m := [[x**2, 1, 0], [1, x**4, 0], [0, 0, 4*x**2]]::(SQMATRIX(3,PZ))
+
+-- Vect is a left SM(3,PZ)-module
+q: Vect := m * p
+
+-- Operator combination and application
+Dx: Modo := D()
+a: Modo := 1*Dx + m
+b: Modo := m*Dx + 1
+
+a*b
+a p
+b p
+(a+b) (p + q)
+
+
+
+
+
+@
+\eject
+\begin{thebibliography}{99}
+\bibitem{1} nothing
+\end{thebibliography}
+\end{document}