/usr/share/axiom-20170501/src/algebra/ODEPAL.spad is in axiom-source 20170501-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | )abbrev package ODEPAL PureAlgebraicLODE
++ Author: Manuel Bronstein
++ Date Created: 21 August 1991
++ Date Last Updated: 3 February 1994
++ References:
++ Bron92 Linear Ordinary Differential Equations: Breaking Through the
++ Order 2 Barrier
++ Description:
++ In-field solution of an linear ordinary differential equation,
++ pure algebraic case.
PureAlgebraicLODE(F, UP, UPUP, R) : SIG == CODE where
F : Join(Field, CharacteristicZero,
RetractableTo Integer, RetractableTo Fraction Integer)
UP : UnivariatePolynomialCategory F
UPUP: UnivariatePolynomialCategory Fraction UP
R : FunctionFieldCategory(F, UP, UPUP)
RF ==> Fraction UP
V ==> Vector RF
U ==> Union(R, "failed")
REC ==> Record(particular: Union(RF, "failed"), basis: List RF)
L ==> LinearOrdinaryDifferentialOperator1 R
LQ ==> LinearOrdinaryDifferentialOperator1 RF
SIG ==> with
algDsolve : (L, R) -> Record(particular: U, basis: List R)
++ algDsolve(op, g) returns \spad{["failed", []]} if the equation
++ \spad{op y = g} has no solution in \spad{R}. Otherwise, it returns
++ \spad{[f, [y1,...,ym]]} where \spad{f} is a particular rational
++ solution and the \spad{y_i's} form a basis for the solutions in
++ \spad{R} of the homogeneous equation.
CODE ==> add
import RationalLODE(F, UP)
import SystemODESolver(RF, LQ)
import ReduceLODE(RF, LQ, UPUP, R, L)
algDsolve(l, g) ==
rec := reduceLODE(l, g)
sol := solveInField(rec.mat, rec.vec, ratDsolve)
bas:List(R) := [represents v for v in sol.basis]
(u := sol.particular) case V => [represents(u::V), bas]
["failed", bas]
|