forward, backward and central differences
132 views (last 30 days)
Show older comments
Mike Garret
on 27 Apr 2015
Commented: Stephen Owino Omondi
on 1 Oct 2022
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 Comments
Accepted Answer
Mohammad Abouali
on 27 Apr 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 Comments
More Answers (0)
See Also
Categories
Find more on Animation 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!