Challenge

Week 3.5 - Deriving 4th order approximation of a 2nd order derivative using Taylor Table method

central differecing:

function error_cerntral_differecing= central_differecing(x,dx);

% analytical function f(x) = exp(x)*cos(x)
% f'' (x) = -2exp(x)*sin(x)

analytical_derivative = -2*exp(x)*sin(x)

%valvus for taylors table

a = -0.083333;
b = 1.333333;
c = -2.500000;
d = 1.333333;
e = -0.083333;

% numerical derivative
% central differecing =
% ((a*f(x-2*dx))+(b*f(x-dx))+(c*f(x))+(d*f(x+dx))+(e*f(x*2*dx))/(dx^2));
%central differecing fourth order approximation

central_differecing_fourth_order_approximation = ((a*exp(x-2*dx)*cos(x-2*dx))+(b*exp(x-dx)*cos(x-dx))+(c*exp(x)*cos(x))+(d*exp(x+dx)*cos(x+dx))+(e*exp(x+2*dx)*cos(x+2*dx)))/dx^2;

error_cerntral_differecing =abs(central_differecing_fourth_order_approximation-analytical_derivative);
end

skewed right side:

function error_skewed_right_side = skewed_right_side(x,dx);

% analytical function f(x) = exp(x)*cos(x)
% f'' (x) = -2exp(x)*sin(x)

analytical_derivative = -2*exp(x)*sin(x)

%valvus for taylors table

a= 3.75000;
b= -12.83333;
c= 17.83333;
d= -13.00000;
e= 5.08333;
f= -0.83333;

% numerical derivative
% skewed right side =
% ((a*f(x))+(b*f(x+dx))+(c*f(x+2*dx))+(d*f(x+3*dx))+(e*f(x+4*dx))+(f*f(x+5*dx))/dx^2);
% skewed right side approximation
skewed_right_side_fourth_order_approximation=((a*exp(x)*cos(x))+(b*exp(x+dx)*cos(x+dx))+(c*exp(x+2*dx)*cos(x+2*dx))+(d*exp(x+3*dx)*cos(x+3*dx))+(e*exp(x+4*dx)*cos(x+4*dx))+(f*exp(x+5*dx)*cos(x+5*dx)))/dx^2;

error_skewed_right_side=abs(skewed_right_side_fourth_order_approximation-analytical_derivative);
end

skewed lift side:

function error_skewed_lift_side = skewed_lift_side(x,dx);

% analytical function f(x) = exp(x)*cos(x)
% f'' (x) = -2exp(x)*sin(x)

analytical_derivative = -2*exp(x)*sin(x)

%valvus for taylors table

a= -0.83333;
b= 5.08333;
c= -13.00000;
d= 17.83333;
e= -12.83333;
f= 3.75000;

% numerical derivative
% skewed lift side =
% ((a*f(x-5*dx))+(b*f(x-4*dx)(c*f(x-3*dx))+(d*f(x-2*dx))+(e*f(x-dx))+(f*f(x))/(dx^2));
% skewed left side approximation
skewed_lift_side_fourth_order_approximation= ((a*exp(x-5*dx)*cos(x-5*dx))+(b*exp(x-4*dx)*cos(x-4*dx))+(c*exp(x-3*dx)*cos(x-3*dx))+(d*exp(x-2*dx)*cos(x-2*dx))+(e*exp(x-dx)*cos(x-dx))+(f*exp(x)*cos(x)))/dx^2;
error_skewed_lift_side=abs(skewed_lift_side_fourth_order_approximation-analytical_derivative);
end

main program:

clear all
close all
clc

x=pi/3;
dx=linspace(pi/10,pi/1000,100);

% using 'for' loop

for i=1:length(dx)
central_differecing_error(i)=central_differecing(x,dx(i));
skewed_right_side_error(i)=skewed_right_side(x,dx(i));
skewed_lift_side_error(i)=skewed_lift_side(x,dx(i));
end

figure(1)
plot(dx,central_differecing_error,'linewidth',2);
hold on
plot(dx,skewed_right_side_error,'r','linewidth',2);
plot(dx,skewed_lift_side_error,'g','linewidth',2);
hold on
xlabel('dx');
ylabel('error');
legend('central differecing error','skewed right side','skewed left side');

figure(2)
loglog(dx,central_differecing_error,'linewidth',2);
hold on
loglog(dx,skewed_right_side_error,'r','linewidth',2);
loglog(dx,skewed_lift_side_error,'g','linewidth',2);
hold on
xlabel('dx');
ylabel('error');
legend('central differecing error','skewed right side','skewed left side');

plots:

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.