2nd order linear DEs



You can download a copy of my solver for second order linear DEs from

    http://www.unk.edu/acad/math/people/willisb/home.html

Look for odelin19.tar.gz.

Notes:

(0) The solver uses a method due to Bronstein and Lafaille --- google 
'bronstein' to find the article.
Additionally, it tries a method based on factoring a differential 
operator.

(1) There is no user documentation.

(2) You'll need to use a version of Maxima that orders the Bessel function 
arguments
as (order, main argument).  Some Maxima versions (maybe even 5.9.0?) use 
(main argument, order).

(3) The file odelin19.tar.gz should expand into a directory odelin19 that 
contains 11 files.

(4) To use the solver, you'll need to install nset; the version of nset 
that is currently distributed with Maxima 
should work (but I haven't tried).  You can also get the new nset version 
off my webpage.

(5) To use the solver, you'll need to append 'odelin19' to 
'file_search_lisp' and load
odelin.  Here is how I do it under windows: (you'll need to change the 
paths)

(%i1) file_search_lisp : cons("l:/nset-1.2.03/###.{x86f,o,lisp,cl}", 
file_search_lisp)$
(%i2) file_search_lisp : cons("l:/odelin19/###.{x86f,o,lisp,cl}", 
file_search_lisp)$
(%i3) load("odelin")$
(%i4) display2d : false$
(%i5)  de : -'diff(y,x,2) + (x^2 - e^2) * y = 0$
(%i6) odelin(de,y,x);
...trying factor method
...solving 3 equations in 2 variables
...trying the Bessel solver
...solving 10 equations in 4 variables
...solving 10 equations in 4 variables
...solving 10 equations in 4 variables
...trying the F01 solver
...solving 10 equations in 5 variables
(%o6) SET(KUMMER_M((e^2+1)/4,1/2,-x^2)*%E^(x^2/2), 
KUMMER_U((e^2+1)/4,1/2,-x^2)*%E^(x^2/2))

Maxima returns a FSS (fundamental solution set).  You can turn off the 
chatter

(%i7) de_solver_is_loquacious : false$
(%i8) aalgsys_is_loquacious : false$
(%i9) de : 'diff(y,x,2) + x * y$
(%i10) odelin(de,y,x);
(%o10) SET(BESSEL_J(1/3,2*x^(3/2)/3)*SQRT(x), 
BESSEL_Y(1/3,2*x^(3/2)/3)*SQRT(x))

(6) Maxima doesn't "know" anything about the functions  kummer_m, 
kummer_u, gauss_a, gauss_b,
spheroidalwave_a, or spheroidalwave_b.  If you are looking for a project, 
...

(7) Every time the solver applies a method, the list 'genvars' grows. 
After solving a few dozen
DEs, genvars can be so large that Maxima slows to a crawl.  I haven't 
tried to fix this (the testing code
uses kill(all) after every DE it solves); maybe something like

(defun $rerat (dirtyrat)
  (let ((varlist nil) (genvar nil))
  ($rat ($ratdisrep dirtyrat))))

would clean up this stuff ---- I don't know.

(8) The solver checks each solution---I know of a few (obscure) cases 
where the solution is (I think) correct, but
the check fails.  The solver doesn't return a solution when the check 
fails.

(9) The solver _only_ handles second order linear homogeneous DEs that 
have rational function arguments. 
Nothing else.

(10) I did have a solver that used pattern matching that solved a few 
cases that don't get solved by Bronstein's 
method--- out of slothfulness, I ditched it (it was bug-ridden).
 
(11) Expect bugs and glitches. 

Barton