# ElementaryFunctionODESolver(R, F)¶

`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.