The Euler method is a numerical method that allows to solve differential equations (*ordinary differential equations*). It is an easy method to use when you have hard time solving a differential equation and are interested in approximating the behavior of the equation in a certain range.

Here we will see how you can use the Euler method to solve differential equations in Matlab, and look more at the most important shortcomings of the method.

It is to be noted that you can only make use of this method when you have the value of the initial condition of the differential equation you are trying to solve.

## Euler method

Let’s start with a little of theory which you can learn more about on wikipeidia if you wish.

Here are some methods added to the Forward Euler method that fall into the same category while using numerical methods of such: The forward difference, the backward difference and the central difference method.

### Forward difference

### Backward difference

### Central difference

## Euler Method Matlab

### Forward difference example

Let’s consider the following equation

The solution of this differential equation is the following

What we are trying to do here, is to use the Euler method to solve the equation and plot it along side with the exact result, to be able to judge the accuracy of the numerical method.

To solve this equation using the Euler method we will do the following

If we rewrite the forward Euler formula above with a different look

Replacing this expression in the equation we are trying to solve will give the following

If we consider that

And rewrite the equation accordingly, we obtain

Feel free to further simplify the expression above, but at this point we are ready to start coding in Matlab.

#### The Matlab code

h=0.1; % step's size N=10; % number of steps y(1)=1; for n=1:N y(n+1)= y(n)+h*(-6*y(n)); x(n+1)=n*h; end plot(x,y)

#### The graph

Let’s reduce the step’s size and see how it affects accuracy

#### The Matlab code

h=0.01; % step's size N=100; % number of steps y(1)=1; for n=1:N y(n+1)= y(n)+h*(-6*y(n)); x(n+1)=n*h; end plot(x,y,'r')

#### The graph

This is telling us that when we reduce the value *h*, it reduces the error. Can we now try comparing our best graph to the exact graph?

Here is the code to help plot the exact graph

#### The Matlab code

x=0:0.001:1; y=exp(-6.*x); plot(x,y,'g')

#### The graph

We can notice by looking at the graph above how both graph are close to be identical.

For simple functions like the one we just tested, using this Euler method can appear to be accurate specially when you reduce *h*, but when it comes to complex systems, this may not be the best numerical method to use to approximate the plot of ODEs. Improved methods exist just like the famous Runge Kutta method.