Challenge

Week 3 - Taylor table method and Matlab code

function[central_diff,forward_diff,backward_diff,central_error,forward_error,backward_error]=taylor_table_scheme(x,dx,exact_derivative)

%numerical derivative
%central difference scheme
central_diff=((-1*exp(x+(2*dx))*cos(x+(2*dx)))+(16*exp(x+dx)*cos(x+dx))+(-30*exp(x)*cos(x))+(16*exp(x-dx)*cos(x-dx))+(-1*exp(x-(2*dx))*cos(x-(2*dx))))./(12*(dx))

%skewed forward difference scheme
forward_diff=((45*exp(x)*cos(x))+(-154*exp(x+dx)*cos(x+dx))+(214*exp(x+(2*dx)))*cos(x+(2*dx))+(-156*exp(x+(3*dx))*cos(x+(3*dx)))+61*exp(x+(4*dx))*cos(x+(4*dx)))

%skewed backward difference scheme
backward_diff=((45*exp(x)*cos(x))+(-154*exp(x-dx)*cos(x-dx))+(214*exp(x-(2*dx))*cos(x-(2*dx)))+(-156*exp(x-(3*dx))*cos(x-(3*dx)))+(61*exp(x-(4*dx))*cos(x-(4*dx))))

%errors of numerical discretization
central_error=abs(exact_derivative-central_diff);
forward_error=abs(exact_derivative-forward_diff);
backward_error=abs(exact_derivative-backward_diff);
end

clear all
close all
clc

%function is f(x)=exp(x)*cos(x)
x=pi/4;
dx=linspace(pi/20,pi/400,40);

%Exact derivative
exact_derivative=-2*exp(x)*sin(x);
for i=1:length(dx)
[central_diff(i),forward_diff(i),backward_diff(i),central_error(i),forward_error(i),backward_error(i)]=taylor_table_scheme(x,dx(i),exact_derivative);


endfor

figure
plot(dx,central_error,'r-')
hold on
plot(dx,forward_error,'b-')
hold on
plot(dx,backward_error,'g-')
xlabel('dx')
ylabel('error')

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.