Week 3 - Taylor table method and Matlab code
function out = Central_diffrence(x,dx)
%analytical function = exp(x)*cos(x);
%analytical derivative
%f'(x)=exp(x)*cos(x)-exp(x)*sin(x)
analytical_second_derivative = -2*exp(x)*sin(x);
%Central diffrencing
t1 = -0.0833*(exp(x-2*dx)*cos(x-2*dx));
t2 = 1.333*(exp(x-dx)*cos(x-dx));
t3 = -2.5*(exp(x)*cos(x));
t4 = 1.333*(exp(x+dx)*cos(x+dx));
t5 = -0.0833*(exp(x+2*dx)*cos(x+2*dx));
Central_diffrence =t1+t2+t3+t4+t5;
out = abs(Central_diffrence-analytical_second_derivative);
end
function out = Skewed_right_sided_difference(x,dx)
%analytical function = exp(x)*cos(x);
%analytical derivative
%f'(x)=exp(x)*cos(x)-exp(x)*sin(x)
analytical_second_derivative = -2*exp(x)*sin(x);
%Skewed right-sided difference
e1 = 3.75*(exp(x)*cos(x));
e2 = -12.8333*(exp(x+dx)*cos(x+dx));
e3 = 17.8333*(exp(x+2*dx)*cos(x+2*dx));
e4 = -13*(exp(x+3*dx)*cos(x+3*dx));
e5 = 5.0833*(exp(x+4*dx)*cos(x+4*dx));
e6 = -0.8333*(exp(x+5*dx)*cos(x+5*dx));
Skewed_right_sided_difference=e1+e2+e3+e4+e5+e6;
out = abs(Skewed_right_sided_difference-analytical_second_derivative);
end
function out = Skewed_left_sided_difference(x,dx)
%analytical function = exp(x)*cos(x);
%analytical derivative
%f'(x)=exp(x)*cos(x)-exp(x)*sin(x)
analytical_second_derivative = -2*exp(x)*sin(x);
%Skewed left-sided difference
r1 = 3.75*(exp(x)*cos(x));
r2 = -12.8333*(exp(x-dx)*cos(x-dx));
r3 = 17.8333*(exp(x-2*dx)*cos(x-2*dx));
r4 = -13*(exp(x-3*dx)*cos(x-3*dx));
r5 = 5.0833*(exp(x-4*dx)*cos(x-4*dx));
r6 = -0.8333*(exp(x-5*dx)*cos(x-5*dx));
Skewed_left_sided_difference=r1+r2+r3+r4+r5+r6;
out= abs(Skewed_left_sided_difference-analytical_second_derivative);
end
clear all
close all
clc
x = pi/3;
dx = linspace(pi/30,pi/3000,60);
analytical_derivative = -2*exp(x)*sin(x);
for i=1:length(dx)
Central_diffrence_of_4th_order(i) = Central_diffrence(x,dx(i));
Skewed_right_sided_difference_of_4th_order(i) = Skewed_right_sided_difference(x,dx(i));
Skewed_left_sided_difference_of_4th_order(i) = Skewed_left_sided_difference(x,dx(i));
end
figure(1)
loglog(dx,Central_diffrence_of_4th_order,'r')
hold on
loglog(dx,Skewed_right_sided_difference_of_4th_order,'b')
hold on
loglog(dx,Skewed_left_sided_difference_of_4th_order,'g')
legend('Central_diffrence_of_4th_order','Skewed_right_sided_difference_of_4th_order','Skewed_left_sided_difference_of_4th_order');
title('comparison between diffrent error scheme');
xlabel('dx values');
ylabel('error scheme values')
Explanation :-
1) Deriving central diffrence

2) Deriving and proving that the skewed right sided diffrence is 4th order accurate:-


3) Deriving and proving that the skewed left sided diffrence is 4th order accurate



From the graph it shows that schewed scheme than central diffrence