forward, backward and central differences
176 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Mike Garret
el 27 de Abr. de 2015
Respondida: Joseph
el 21 de Mzo. de 2025
hey please i was trying to differentiate this function: y(x)=e^(-x)*sin(3x), using forward, backward and central differences using 101 points from x=0 to x=4. and plot the estimates and the actual function derivatives. here is my code:
f = @(x) exp(-x)*sin(3*x); %actual derivative of function fprime = @(x) -exp(-x)*sin(3*x)+ 3*exp(-x)*cos(3*x);
%step size:
h=0.04;
%forward difference dfdx_forward = (f(2+h)-f(2))/h Error_forward = fprime(2)-dfdx_forward %error
%bacward difference
dfdx_backward = (f(2)-f(2-h))/h
Error_backward = fprime(2)-dfdx_backward %error
%central difference
dfdx_central = (f(2+h)-f(2-h))/(2*h)
Error_central = fprime(2)-dfdx_central %error
please let me know if this is right and where i made my mistakes
0 comentarios
Respuesta aceptada
Mohammad Abouali
el 27 de Abr. de 2015
Fun = @(x) exp(-x).*sin(3*x);
dFun = @(x) -exp(-x).*sin(3*x)+ 3*exp(-x).*cos(3*x);
x=linspace(0,4,101);
F=Fun(x);
h=x(2)-x(1);
xCentral=x(2:end-1);
dFCenteral=(F(3:end)-F(1:end-2))/(2*h);
xForward=x(1:end-1);
dFForward=(F(2:end)-F(1:end-1))/h;
xBackward=x(2:end);
dFBackward=(F(2:end)-F(1:end-1))/h;
plot(x,dFun(x));
hold on
plot(xCentral,dFCenteral,'r')
plot(xForward,dFForward,'k');
plot(xBackward,dFBackward,'g');
legend('Analytic','Central','Forward','Backward')
8 comentarios
Tan Bing Jiat
el 13 de Abr. de 2022
for the xcentral
xCentral=x(2:end-1);
what does x(2:end-1); means?
Stephen Owino Omondi
el 1 de Oct. de 2022
Good work Mr.Abouali, inline with the numerical formulation
Más respuestas (1)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!