Challenge

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

Central Difference Function

function err_central_diff=central_diff(x,dx)
analytical_derivative=-2*exp(x)*sin(x);
% Unkown coefficients from taylor table
a=-0.083333;
b=1.333333;
c=-2.5;
d=1.333333;
e=-0.083333;
approx_diff_4th_order=((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);
err_central_diff=abs(approx_diff_4th_order-analytical_derivative);
end




Skewed Right Sided function

function err_skewed_right_diff=skewed_right_side(x,dx)
analytical_derivative=-2*exp(x)*sin(x);
% Unkown coefficients from taylor table
a=3.75;
b=-12.83333;
c=17.83333;
d=-13;
e=5.08333;
g=-0.83333;
approx_skewed_right_sided_4th_order=((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))+(g*exp(x+5*dx)*cos(x+5*dx)))/(dx^2);
err_skewed_right_diff=abs(approx_skewed_right_sided_4th_order-analytical_derivative);
end

Skewed Left Sided Function

function err_skewed_left_diff=skewed_left_side(x,dx)
analytical_derivative=-2*exp(x)*sin(x);
% Unkown coefficients from taylor table
a=-0.83333;
b=5.08333;
c=-13;
d=17.83333;
e=-12.83333;
g=3.75;
approx_skewed_left_sided_4th_order=((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))+(g*exp(x)*cos(x)))/(dx^2);
err_skewed_left_diff=abs(approx_skewed_left_sided_4th_order-analytical_derivative);
end

Main Program

clear all;
close all;
clc;

x=pi/3;
dx=linspace(pi/4,pi/40000,40);

%using for loop over the range of dx
for i=1:length(dx)
    err_central_difference(i)=central_diff(x,dx(i));
    err_skewed_right_sided(i)=skewed_right_side(x,dx(i));
    err_skewed_left_sided(i)=skewed_left_side(x,dx(i));
end
%plotting the graphs for dx vs errors

figure(1)
plot(dx,err_central_difference,'linewidth',2)
hold on
grid on
plot(dx,err_skewed_right_sided,'linewidth',2)
hold on
plot(dx,err_skewed_left_sided,'linewidth',2)
xlabel('dx')
ylabel('error')
legend('Central difference error','Skewed Rightsided error','Skewed Leftsided error')

figure(2)
loglog(dx,err_central_difference,'r','linewidth',2)
hold on
grid on
loglog(dx,err_skewed_right_sided,'g','linewidth',2)
hold on
loglog(dx,err_skewed_left_sided,'b','linewidth',2)
xlabel('dx')
ylabel('error')
legend('Central difference error','Skewed Rightsided error','Skewed Leftsided error')
    

In your own words, describe why a skewed scheme is useful? What can a skewed scheme do that a CD scheme cannot?

As can be seen from the graphs the central differencing scheme has less error, so it is understandable to use it in most cases. However, central differencing scheme can only be used when both side node data are available, so for a corner or boundary layer points the data from both sides are not available. So, in such case skewed scheme can be used.

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.