# 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 find the first derivative of a discrete function y(x) if the x values are equidistant.

## SUMMARY

Language : Matlab 2010a; Authors : Autar Kaw and Sri Garapati; Mfile available at Last Revised : January 17, 2012; Abstract: This program shows you how to differentiate discrete data if the x values are equally spaced

```clc
clear all
```

## INTRODUCTION

```disp('ABSTRACT')
disp('   This program shows you how to differentiate discrete data if')
disp('   the x values are equally spaced ')

disp(' ')
disp('AUTHOR')
disp('   Autar Kaw and Sri Garapati of http://autarkaw.wordpress.com')
disp(' ')
disp('MFILE SOURCE')
disp('   http://numericalmethods.eng.usf.edu/blog/discrete_diff_equidistant_blog.m')
disp(' ')
disp('LAST REVISED')
disp('   January 17, 2012')
disp(' ')
```
```ABSTRACT
This program shows you how to differentiate discrete data if
the x values are equally spaced

AUTHOR
Autar Kaw and Sri Garapati of http://autarkaw.wordpress.com

MFILE SOURCE
http://numericalmethods.eng.usf.edu/blog/discrete_diff_equidistant_blog.m

LAST REVISED
January 17, 2012

```

## INPUTS

```% Inputs assuming
%    that three or more points are given
%    all x values are equidistant
%    x values are in ascending or descending order.
x=[2.3   3.4   4.5    5.6   6.7   7.8];
y=[4.6   7.9   13.0   12.3  3.2   1.9];
```

## DISPLAYING INPUTS

```disp('  ')
disp('INPUTS')
% Creating a matrix to print input data as a table
data=[x;y]';
disp('   X Data     Y Data')
% Printing the input data as a table
disp(data)
```
```
INPUTS
X Data     Y Data
2.3000    4.6000
3.4000    7.9000
4.5000   13.0000
5.6000   12.3000
6.7000    3.2000
7.8000    1.9000

```

## THE CODE

```% n returns the number of data points
n=length(x);
% delta is the distance between consecutive x values
delta=x(2)-x(1);

% "dy" is an array which stores the value of the derivative at each x-value

% finding the derivative from the 2nd order accurate forward divided
% difference formula at the first data point
dy(1)=(-y(3)+4*y(2)-3*y(1))/(2*delta);

% finding the derivative from the 2nd order accurate central divided
% difference formula at the second to (n-1)th data point
for i=2:1:n-1
dy(i)=(y(i+1)-y(i-1))/(2*delta);
end

% finding the derivative from the 2nd order accurate backward divided
% difference formula at the first data point
dy(n)=(y(n-2)-4*y(n-1)+3*y(n))/(2*delta);

% creating a matrix with input data and calculated derivative value at
% each data point for printing as a table
xdy=[x' y' dy'];
```

## DISPLAYING OUTPUTS

```disp('  ')
disp('OUTPUTS')
disp('     XData   YData  Derivative')
% printing the input data points and calculated derivative values(Outputs)
disp(xdy)
```
```
OUTPUTS
XData   YData  Derivative
2.3000    4.6000    2.1818
3.4000    7.9000    3.8182
4.5000   13.0000    2.0000
5.6000   12.3000   -4.4545
6.7000    3.2000   -4.7273
7.8000    1.9000    2.3636

```