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

## TOPIC

How do I solve an initial value ordinary differential equation?

## SUMMARY

```% Language : Matlab 2020b;
% Authors : Autar Kaw;
% Mfile available at
% http://numericalmethods.eng.usf.edu/blog/ode_initial.m;
% Last Revised : December 22 2020;
% 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://nm.mathforcollege.com/blog/ode_initial.m')
disp(' ')
disp('LAST REVISED')
disp('   Dec 22 2020')
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://nm.mathforcollege.com/blog/ode_initial.m

LAST REVISED
Dec 22 2020

```

## INPUTS

Solve the ordinary differential equation 3y"+5y'+7y=11exp(-x) Define x as a symbol Define y(x)n as a symbol also

```syms x y(x)
%The ODE
Dy=diff(y);
ode_eqn=3*diff(y,x,2)+5*diff(y,x,1)+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=2.0;
```

## DISPLAYING INPUTS

```disp('INPUTS')
func=['  The ODE to be solved is ' char(ode_eqn)];
disp(func)
iv_explain=['  The initial conditions are %s' char(iv_1) '    ' char(iv_2)];
disp(iv_explain)
fprintf('  The value of y is sought at x=%g',xval)
disp('  ')
```
```INPUTS
The ODE to be solved is 7*y(x) + 5*diff(y(x), x) + 3*diff(y(x), x, x) == 11*exp(-13*x)
The initial conditions are %ssubs(diff(y(x), x), x, 0) == 17    y(0) == 19
The value of y is sought at x=2
```

## THE CODE

```conds=[iv_1 iv_2];
% Finding the solution of the ordinary differential equation
soln=dsolve(ode_eqn,conds);
soln=simplify(soln);
% 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 0.024499*exp(-13.0*x) + 18.976*exp(-0.83333*x)*cos(1.2802*x) + 25.88*exp(-0.83333*x)*sin(1.2802*x)
The value of y at x=2 is -0.31176
```