How to calculate a numerical approximate derivative vector of a function?
    4 views (last 30 days)
  
       Show older comments
    
    Jabir Al Fatah
 on 31 May 2014
  
    
    
    
    
    Commented: Star Strider
      
      
 on 31 May 2014
            I have a given formmula: Yprimenum(i) = (Y(i+1) – Y(i)) / ∆X, where ∆X is the X step length, or equivallently X(i) – X(i-1). And I also have two given functions: X= [0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 ] Y= [5 6 7 7.5 7.5 7.5 6.5 2.5 -5 -6 -6]
Now my task is to plot this function, Y, and calculate and plot the corresponding Yprimenum in the same graph. This is what I tried:
    x= [0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 ] 
y= [5 6 7 7.5 7.5 7.5 6.5 2.5 -5 -6 -6] 
yprime=2.*x; 
Yprimenum=zeros(1, length(x)-1); 
for i= 1:length(x)-1; 
Yprimenum(i)=(y(i+1)-y(i))./(x(i+1)-x(i)); 
end 
figure; 
hold on; 
plot(x,y); 
plot(x,yprime); 
plot(x,Yprimenum(i)); 
hold off; 
shg;
0 Comments
Accepted Answer
  Star Strider
      
      
 on 31 May 2014
        Your derivative, Yprimenum, is by definition one element shorter than x, so you have to eliminate the last entry of x to plot it:
x= [0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 ] 
y= [5 6 7 7.5 7.5 7.5 6.5 2.5 -5 -6 -6] 
yprime=2.*x; 
Yprimenum=zeros(1, length(x)-1); 
for i= 1:length(x)-1; 
    Yprimenum(i)=(y(i+1)-y(i))./(x(i+1)-x(i));
end 
figure; 
hold on; 
plot(x,y,'-b'); 
plot(x,yprime,'g'); 
plot(x(1:end-1),Yprimenum,'r'); 
hold off; 
shg;
This is unavoidable with the method you used (and that the diff function uses) but there are ways to deal with it. This is one such.
2 Comments
More Answers (1)
  Andrei Bobrov
      
      
 on 31 May 2014
        
      Edited: Andrei Bobrov
      
      
 on 31 May 2014
  
      x= [0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 ] 
y= [5 6 7 7.5 7.5 7.5 6.5 2.5 -5 -6 -6] 
Yprimenum = diff(y)./diff(x);
other variant
Yprimenum = gradient(y,x);
0 Comments
See Also
Categories
				Find more on Discrete Data Plots in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

