HOW DO I DO THAT IN MATLAB SERIES?
In this series, I am answering questions that students have asked me about MATLAB. Most of the questions relate to a mathematical procedure.
Contents
TOPIC
How do I solve an initial value ordinary differential equation?
SUMMARY
% Language : Matlab 2008a; % Authors : Autar Kaw; % Mfile available at % http://numericalmethods.eng.usf.edu/blog/ode_initial.m; % Last Revised : May 14, 2009; % Abstract: This program shows you how to solve an % initial value ordinary differential equation. clc clear all
INTRODUCTION
disp('ABSTRACT') disp(' This program shows you how to solve') disp(' an initial value ordinary differential equation') disp(' ') disp('AUTHOR') disp(' Autar K Kaw of http://autarkaw.wordpress.com') disp(' ') disp('MFILE SOURCE') disp(' http://numericalmethods.eng.usf.edu/blog/ode_initial.m') disp(' ') disp('LAST REVISED') disp(' May 14, 2009') disp(' ')
ABSTRACT This program shows you how to solve an initial value ordinary differential equation AUTHOR Autar K Kaw of http://autarkaw.wordpress.com MFILE SOURCE http://numericalmethods.eng.usf.edu/blog/ode_initial.m LAST REVISED May 14, 2009
INPUTS
Solve the ordinary differential equation 3y"+5y'+7y=11exp(-x) Define x as a symbol
syms x %The ODE ode_eqn='3*D2y+5*Dy+7*y=11*exp(-13*x)'; % The initial conditions iv_1='Dy(0)=17'; iv_2='y(0)=19'; % The value at which y is sought at xval=23.0;
DISPLAYING INPUTS
disp('INPUTS') func=[' The ODE to be solved is ' ode_eqn]; disp(func) iv_explain=[' The initial conditions are ' iv_1 ' ' iv_2]; disp(iv_explain) fprintf(' The value of y is sought at x=%g',xval) disp(' ')
INPUTS The ODE to be solved is 3*D2y+5*Dy+7*y=11*exp(-13*x) The initial conditions are Dy(0)=17 y(0)=19 The value of y is sought at x=23
THE CODE
% Finding the solution of the ordinary differential equation soln=dsolve(ode_eqn,iv_1,iv_2,'x'); % vpa below uses variable-precision arithmetic (VPA) to compute each % element of soln to 5 decimal digits of accuracy soln=vpa(soln,5);
DISPLAYING OUTPUTS
disp(' ') disp('OUTPUTS') output=[' The solution to the ODE is ' char(soln)]; disp(output) value=subs(soln,x,xval); fprintf(' The value of y at x=%g is %g',xval,value) disp(' ')
OUTPUTS The solution to the ODE is 25.880*exp(-.83333*x)*sin(1.2802*x)+18.976*exp(-.83333*x)*cos(1.2802*x)+.24499e-1*exp(-13.*x) The value of y at x=23 is -1.48128e-007