

From Coupled First-Order System to Function Handle Representation The next step is to convert the system representation V of the ODE to a function handle accepted by ode45. The Symbolic Math Toolbox function odeToVectorField converts a scalar ODE to a first-order ODE system: V = odeToVectorField(ode)įor details about the algorithm used to convert a general n-th order scalar ODE to a first-order coupled ODE system, see the odeToVectorField documentation page. From Scalar ODE to Coupled First-Order System But before we can convert the symbolic form of the ODE to a function handle accepted by ode45, we must convert the scalar form of the ODE to a coupled first-order ODE system. So we must use a numeric ODE solver to be able to plot the solution. Warning: Explicit solution could not be found.Īdding the initial values does not help: Dy = diff(y) dsolve(ode,y(0) = 2,Dy(0) = 0) When trying to compute a solution of this ODE using dsolve, we see that the symbolic ODE solver does not find an explicit closed form solution: dsolve(ode) We define it in a symbolic form using a symbolic function symfun y(t): syms y(t) We start with the second-order non-linear ODE with two given initial values: Solve the differential equation numerically using the MATLAB numeric ODE solver ode45ĭefining a Differential Equation in Symbolic Form.Create a function handle for the coupled first-order system using matlabFunction.Convert it to a coupled first-order system using odeToVectorField.Define an ODE in a symbolic form using symbolic functions.This article demonstrates the following workflow of transforming a symbolic representation of an ODE to a form accepted by the MATLAB numeric ODE solver ode45. Numeric solvers usually require them to be transformed to a coupled first-order system. Symbolic solvers require a scalar symbolic (= "textbook-like") representation of an ODE. But numeric solvers require a particular form and type of arguments, which often differ from the arguments of a symbolic solver. Since we cannot solve the ODE symbolically, we must switch to a numeric ODE solver. But we find that the symbolic ODE solver cannot find a closed form solution (something which is likely to happen, because only particular classes of ODEs can be solved in closed symbolic form). In this article, we consider a slightly different scenario. Convert the symbolic solution to a MATLAB function handle using matlabFunction.Compute a symbolic solution of an ordinary differential equation (ODE) using dsolve.
