:ODE Package : :Cliff Johnston :West Chester University : :This set of programs is designed to solve most differential equations found in a College Calculus class, Support for linear constant coefficient equations and Euler equations is also included. Support for numerical solutions (in this case Runge-Kutta) and qualitative analysis of equations is also provided. It is hoped that the set can be expanded in the future to include some systems of first order equations, series solutions, Laplace Transforms, and other numerical solution techniques. ----begin documentation---- :ODE Package : :Cliff Johnston :West Chester University : :This set of programs is designed to solve most differential equations found in a College Calculus class, Support for linear constant coefficient equations and Euler equations is also included. Support for numerical solutions (in this case Runge-Kutta) and qualitative analysis of equations is also provided. It is hoped that the set can be expanded in the future to include some systems of first order equations, series solutions, Laplace Transforms, and other numerical solution techniques. : :The package was also developed to be user friendly. The programs : :odemain() :odemenu() : :give access to most of the capabilities of the package. : :Odemain() is driven by a set of display boxes and is meant for immediate use without much knowledge of syntax. The problem being solved is stored in the global variable "problem" and the solution in the global variable "answer". Both are displayed, but often overrun the screen. : :Odemenu() creates a custom menu to access the programs and also gives hints as to the syntax of each command. : :All programs for the ODE package can be found in the folder "ode". If you mistakenly copy the files to another folder, run the program : :odeinstl() : :to create the proper directory and copy the files into the correct place. : :Note: This package includes files : :deg() :coef() :coeflist() : :which may appear in other packages. For the ODE package to run properly, these programs must be in the "ode" folder. If you already have files with any of these names, please rename them. Sorry for any inconvenience this may cause. : :Once the files are in the correct place, the command : :ode\odemain() : :will start the display box driven access to the package, and : :ode\odemenu() : :will start the custom menu. : :When entering equations (often denoted as eq), you must use the calculator's notation for derivatives, That is, : :to enter: type: : :dy/dx ¶(y(x),x) :u'(t) ¶(u(t),t) :y''(t) ¶(y(t),t,2) :D^3 u ¶(u(x),x,3) : :For example, the equation : :y''(x)-y(x)=sin(x)+dy/dx : :would be entered as : :¶(y(x),x,2)-y(x)=sin(x)+¶(y(x),x). : :Below is a list of programs included with the package. The notation [p]: indicates the file is a Program; all others are functions unless specified otherwise. : :bvplcc(eq,y(x),x,{x1,y1,x2,y2}): Finds the solution to an order two linear constant coefficient ODE with given boundary values y(x1)=y1 and y(x2)=y2. : :coef(poly,var,deg): Finds the coefficient of var^deg in poly. : :coeflist(poly,var): Lists Lowest degree term to highest. : :deg(poly,var): : ::dfield(f(x,y),y,ymin,ymax,ystep,x,xmin,xmax,xstep)[p]: f(x,y) is the expression for dy/dx. : :findc(y(x),x,xinit,yinit): Attempts to find the specific solution with y(xinit)=yinit for a general solution given by odemain(). : :finddy(eq,y(x),x): Solves the first order ODE eq for the first derivative, dy/dx. : :findsol(y(x)): Attempts to solve for y(x) in the solution given by odemain() (when given implicitly). : :fnsolve(equation,y(x)): As above, but can use any input equation (NOT AN ODE SOLVER). : :fordy(eq,y(x),x,y): Similar to finddy, but replaces y(x) with y. : ::intcurvs(f(x,y),y,x,ymin,ymax,ystep,xinit,x interval length,xstep)[p]: Draws solution curves through (xinit,ymin), (xinit,ymin+ystep) through (xinit,ymax). f(x,y) is as defined above in dfield. : :ivpf(eq,y(x),x,xinit,yinit): Solve thefirst order ODE eq with initial values y(xinit)=yinit. : :ivplcc(eq,y(x),x,xinit,{yinits}): Solve linear constant coefficient IVP. yinit is a list of initial values for y,in the format {y(x0), y'(x0), y''(x0),...} : :ivple(eq,y(x),x,xinit,{yinits}): Similar to above, but solves Euler type equations. : :ivpsolve(eq,y(x),x,xinit,{yinits}): Similar to above, but trys to classify equation. Fo first order ODE, yinits is a list with one element. Takes longer. : :odebasis(charpoly(m),m,x): Finds basis vectors in the variable x for the solution space of a linear ODE whose characteristic polynomial is charpoly(m). : :odebern(...) :odeexact(...) :odeflin(...) :odelincc(...) :odesep(...) :odeleulr(...) :odelcply(...) :odelhomg(...): internal programs. : :odecharp(eq,y(x),x): Returns the characteristic polynomial of a linear ODE. : :odef?(eq,y(x),x): Solve first order ODE where ?=b,e,h,l,s with b=Bernoulli equations, e=exact equations, h=homogeneous equations, l=linear equations, s=seperable equations. : :odefivp(gsol,y(x),x,yinit,xinit,c): solves the general solution (an equation in y(x)) for c with the initial condition y(xinit)=yinit. Note: eq could be one of odef?(eq,y(x),x). : :odeform(eq,y(x),x): Finds the order of an equation and classifies it as linear or non-linear. If the equation is order 2 or more, it also checks for constant coefficients or Euler type coefficients. : :odemain()[p]: Runs all the ODE package programs with easy input. Two variables are produced by the program: : problem: States the problem entered. : answer: The result. : :odemenu()[p]: Creates a custom toolbar with the ODE package tools as choices. : :odesolve(eq,y(x),x): Attempts to classify eq and solve if possible. : :odetest(eq,y(x),x): Attempts to classify first order equations. : :replace(ex,a,b): replaces a with b in ex. Uses string arguments and is much more flexible than the | operator. : :rkode(exprn,y,yinit,x,xinit,xmax,step): Returns a data matrix with the Runge-Kutta approximation to the solution of dy/dx=exprn. : :rkodedat(exprn,y,yinit,x,xinit,xmax,step)[p]: As above, but also graphs the resultant approximation. : :dfpic: Used to store the graph from dfield or intcurvs : :rkpic: Used to store the graph from rdodedat : :rkdata: Used to store the data from rkodedat : :In practice, these files take up a fair amount of memory. The following files can be deleted without affecting the package: : :odeinstl :readme :progl : :You may also decide to eliminate odemain() (it is a memory hog) once you have mastered the syntax of the commands. : :Please send any suggestions for improvements to :cjohnston@wcupa.edu :or :Clifford Johnston :West Chester University :Department of Mathematics :West Chester, PA 19382 : :This package is freely distributable as long as it is distributed as is. It is requested that any modifications be noted in this file and a copy sent to the author at the address listed above. The author assumes no responsibility for the damages resulting directly or indirectly from this package. : :Copyright 1996 by Clifford Johnston :All rights reserved. :