# ElementaryFunctionODESolver(R, F)¶

odeef.spad line 831 [edit on github]

R: Join(Comparable, PolynomialFactorizationExplicit, RetractableTo Integer, LinearlyExplicitOver Integer, CharacteristicZero)

F: Join(AlgebraicallyClosedFunctionSpace R, TranscendentalFunctionCategory, PrimitiveFunctionCategory)

`ElementaryFunctionODESolver`

provides the top-level functions for finding closed form solutions of ordinary differential equations and initial value problems.

- solve: (Equation F, BasicOperator, Equation F, List F) -> Union(F, failed)
`solve(eq, y, x = a, [y0, ..., ym])`

returns either the solution of the initial value problem`eq, y(a) = y0, y'(a) = y1, ...`

or “failed” if the solution cannot be found; error if the equation is not one linear ordinary or of the form`dy/dx = f(x, y)`

.

- solve: (Equation F, BasicOperator, Symbol) -> Union(Record(particular: F, basis: List F), F, failed)
`solve(eq, y, x)`

returns either a solution of the ordinary differential equation`eq`

or “failed” if no non-trivial solution can be found; If the equation is linear ordinary, a solution is of the form`[h, [b1, ..., bm]]`

where`h`

is a particular solution and`[b1, ...bm]`

are linearly independent solutions of the associated homogenuous equation`f(x, y) = 0`

; A full basis for the solutions of the homogenuous equation is not always returned, only the solutions which were found; If the equation is of the form {dy/dx =`f`

(`x`

,`y`

)}, a solution is of the form`h(x, y)`

where`h(x, y) = c`

is a first integral of the equation for any constant`c`

; error if the equation is not one of those 2 forms.

- solve: (F, BasicOperator, Equation F, List F) -> Union(F, failed)
`solve(eq, y, x = a, [y0, ..., ym])`

returns either the solution of the initial value problem`eq, y(a) = y0, y'(a) = y1, ...`

or “failed” if the solution cannot be found; error if the equation is not one linear ordinary or of the form`dy/dx = f(x, y)`

.

- solve: (F, BasicOperator, Symbol) -> Union(Record(particular: F, basis: List F), F, failed)
`solve(eq, y, x)`

returns either a solution of the ordinary differential equation`eq`

or “failed” if no non-trivial solution can be found; If the equation is linear ordinary, a solution is of the form`[h, [b1, ..., bm]]`

where`h`

is a particular solution and and`[b1, ...bm]`

are linearly independent solutions of the associated homogenuous equation`f(x, y) = 0`

; A full basis for the solutions of the homogenuous equation is not always returned, only the solutions which were found; If the equation is of the form {dy/dx =`f`

(`x`

,`y`

)}, a solution is of the form`h(x, y)`

where`h(x, y) = c`

is a first integral of the equation for any constant`c`

.

- solve: (List Equation F, List BasicOperator, Symbol) -> Union(Record(particular: Vector F, basis: List Vector F), failed)
`solve([eq_1,...,eq_n], [y_1,...,y_n], x)`

returns either “failed” or, if the equations form a fist order linear system, a solution of the form`[y_p, [b_1, ..., b_n]]`

where`h_p`

is a particular solution and`[b_1, ...b_m]`

are linearly independent solutions of the associated homogenuous system. error if the equations do not form a first order linear system

- solve: (List F, List BasicOperator, Symbol) -> Union(Record(particular: Vector F, basis: List Vector F), failed)
`solve([eq_1,...,eq_n], [y_1,...,y_n], x)`

returns either “failed” or, if the equations form a fist order linear system, a solution of the form`[y_p, [b_1, ..., b_n]]`

where`h_p`

is a particular solution and`[b_1, ...b_m]`

are linearly independent solutions of the associated homogenuous system. error if the equations do not form a first order linear system

- solve: (Matrix F, Symbol) -> Union(List Vector F, failed)
`solve(m, x)`

returns a basis for the solutions of`D y = m y`

.`x`

is the dependent variable.

- solve: (Matrix F, Vector F, Symbol) -> Union(Record(particular: Vector F, basis: List Vector F), failed)
`solve(m, v, x)`

returns`[v_p, [v_1, ..., v_m]]`

such that the solutions of the system`D y = m y + v`

are`v_p + c_1 v_1 + ... + c_m v_m`

where the`c_i's`

are constants, and the`v_i's`

form a basis for the solutions of`D y = m y`

.`x`

is the dependent variable.