Borrar filtros
Borrar filtros

How to calculate a numerical approximate derivative vector of a function?

4 visualizaciones (últimos 30 días)
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;

Respuesta aceptada

Star Strider
Star Strider el 31 de Mayo de 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.

Más respuestas (1)

Andrei Bobrov
Andrei Bobrov el 31 de Mayo de 2014
Editada: Andrei Bobrov el 31 de Mayo de 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);

Categorías

Más información sobre 2-D and 3-D Plots en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by