Week 3.5 - Deriving 4th order approximation of a 2nd order derivative using Taylor Table method
AIM :To Derive The Fourth Order Approximations Of A Second Order Derivative Using Central Differencing Scheme, Skewed Right Sided Difference And Skewed Left Sided Difference With The Help Of Taylor Table Method And To Compare The Analytical Derivative With Obtained Values For The Given Function.
SCHEME DERIVATIONS :
CENTRAL DIFFERENCING METHOD
NO OF NODES :
The Number Of Nodes = P+Q-1
Where, P Is Order Of Derivative.
Q Is Order Of Approximations.
The No Of Nodes = 2+4-1 =>5.
DERIVATIONS :
To Derive A Fourth Order Approximation For The Second Order Derivative,We Start With These Approximation,
d^2u/dx^2=af(i-2)+bf(i-1)+cf(i)+df(i+1)+ef(i+2)/dx^2..........................(1)
TAYLORS SERIES DERIVATION FOR THE ABOVE TERMS :
af(i-2)=af(i)-2af'(i)dx/1!+4af"(i)dx^2/2!+8af"'(i)dx^3/3!+16af""(i)dx^4/4!
Simillarly Expand All The Terms In The Equation (1) And Are Represented In The Form Of Table Using Taylor Table Method.
The Linear Equation Obtained From The Above Table Are Solved Using Matrix Inversion Method,
| dx^2f"(i) | f(i) | f'(i)dx | f"(i)dx^2 | f"'(i)dx^3 | f""(i)dx^4 | |||
| af(i-2) | a | -2a | 2a | -4a/3 | 2a/3 | |||
| bf(i-1) | b | -b | b/2 | -b/6 | b/24 | |||
| cf(i) | c | 0 | 0 | 0 | 0 | |||
| df(i+1) | d | d | d/2 | d/6 | d/24 | |||
| ef(i+2) | e | 2e | 2e | 4e/3 | 2e/3 | |||
| sum of coefficients | 0 | 0 | 1 | 0 | 0 |
A.X = B
| 1 | 1 | 1 | 1 | 1 |
| -2 | -1 | 0 | 1 | 2 |
| 2 | 1/2 | 0 | 1/2 |
2 |
| -4/3 | -1/6 | 0 | 1/6 | 4/3 |
| 2/3 | 1/24 | 0 | 1/24 | 2/3 |
*
| a | b | c | d | e |
=
| 0 | 0 | 1 | 0 | 0 |
x=inv(A)*B
we get the coefficients as,

a=0.0833,b=1.3333,c=2.5000,d=1.3333,e=-0.0833
SUBSTITUTING THESE COEFFICIENTS IN eq (1) ,WE GET,
d^2u/dx^2=(0.0833)f(i-2)+(1.3333)f(i-1)+(2.5000)f(i)+(1.3333)f(i+1)+(-0.0833)f(i+2)/dx^2
MATLAB CODE :
MAIN CODE :
% MAIN CODE
clear all
close all
clc
%value of x
x= pi/3;
%range of dx
dx= linspace(pi/4,pi/4000,20);
%for loop
for i=1:length(dx)
right_sided_skew(i) = fourth_order_right_sided_skew(x,dx(i));
central_differencing (i) = fourth_order_central_differencing(x,dx(i));
left_sided_skew(i) = fourth_order_left_sided_skew(x,dx(i));
end
%plotting
figure(1)
loglog(dx,central_differencing,'r')
hold on
loglog(dx,right_sided_skew,'g')
hold on
loglog(dx,left_sided_skew,'b')
xlabel('range of dx')
ylabel('truncation error')
title('range of dx vs error')
legend('central differencing','skewed right sided difference','skewed left sided difference','location','northwest')
FUNCTION CODE:
% FUNCTION CODE FOR CENTRAL DIFFERENCING:
function Error_central_differencing = fourth_order_central_differencing(x,dx)
% analytic function = exp(x)*cos(x)
% analytic derivative
%f''(x) = -2*exp(x)*sin(x)
analytical_derivative = -2*exp(x)*sin(x);
%numerical derivative
%central differencing
central_differencing = (((-0.0833)*((exp(x-(2*dx)))*(cos(x-(2*dx)))))+((1.3333)*((exp(x-dx))*(cos(x-dx))))-((2.5000)*((exp(x))*(cos(x))))+((1.3333)*((exp(x+dx))*(cos(x+dx))))-((0.0833)*((exp(x+(2*dx)))*(cos(x+(2*dx))))))/(dx^2);
%error
Error_central_differencing = abs(central_differencing- analytical_derivative);
end
SKEWED RIGHT HAND DIFFERENCE METHOD :
NO. OF NODES :
The Number Of Nodes = P+Q
Where, P Is Order Of Derivative.
Q Is Order Of Approximations.
The No Of Nodes = 2+4 =>6.
DERIVATION :
To Derive A Fourth Order Approximation For The Second Order Derivative,We Start With These Approximation,
d^2u/dx^2=af(i)+bf(i+1)+cf(i+2)+df(i+3)+ef(i+4)+gf(i+5)/dx^2..........................(2)
Form Of Table Using Ta Expand All The Terms In The Equation (2) Using Taylor Series Expansion And Are Represented In The Talyor Table Method
| dx^2f"(i) | f(i) | f'(i)dx | f"(i)dx^2 | f"'(i)dx^3 | f""(i)dx^4 | f""'dx^5 | ||
| af(i) | a | 0 | 0 | 0 | 0 | 0 | ||
| bf(i+1) | b | b | b/2 | b/6 | b/24 | b/120 | ||
| cf(i+2) | c | 2c | 4c/2 | 8c/6 | 16c/24 | 32c/120 | ||
| df(i+3) | d | 3d | 9d/2 | 27d/6 | 81d/24 | 243d/120 | ||
| ef(i+4) | e | 4e | 16e/2 | 64e/6 | 256e/24 | 1024e/120 | ||
| gf(i+5) | g | 5g | 25g/2 | 125g/6 | 625g/24 | 3125g/120 | ||
| sum of coefficients | 0 | 0 | 1 | 0 | 0 | 0 |
The Linear Equation Obtained From The Above Table Are Solved Using Matrix Inversion Method,
A.X = B
| 1 | 1 | 1 | 1 | 1 | 1 |
| 0 | 1 | 2 | 3 | 4 | 5 |
| 0 | 1/2 | 4/2 | 9/2 |
16/2 |
25/2 |
| 0 | 1/6 | 8/6 | 27/6 | 64/6 | 125/6 |
| 0 | 1/24 | 16/24 | 81/24 | 256/24 | 625/24 |
| 0 | 1/120 | 32/120 | 243/120 | 1024/120 | 3125/120 |
*
| a | b | c | d | e | g |
=
| 0 | 0 | 1 | 0 | 0 | 0 |
x=inv(A)*B
we get the coefficients as,

a=3.7500,b=-12.8333,c=17.8333,d=-13.0000,e=5.0833,g=-0.8333
SUBSTITUTING THESE COEFFICIENTS IN eq (2) ,WE GET,
d^2u/dx^2=(3.7500)f(i)+(-12.8333)f(i+1)+(17.8333)f(i+2)+(-13.0000)f(i+3)+(5.0833)f(i+4)+(-0.8333)f(i+5)/dx^2
MAIN CODE :
% MAIN CODE
clear all
close all
clc
%value of x
x= pi/3;
%range of dx
dx= linspace(pi/4,pi/4000,20);
%for loop
for i=1:length(dx)
right_sided_skew(i) = fourth_order_right_sided_skew(x,dx(i));
central_differencing (i) = fourth_order_central_differencing(x,dx(i));
left_sided_skew(i) = fourth_order_left_sided_skew(x,dx(i));
end
%plotting
figure(1)
loglog(dx,central_differencing,'r')
hold on
loglog(dx,right_sided_skew,'g')
hold on
loglog(dx,left_sided_skew,'b')
xlabel('range of dx')
ylabel('truncation error')
title('range of dx vs error')
legend('central differencing','skewed right sided difference','skewed left sided difference','location','northwest')
FUNCTION CODE :
% FUNCTION CODE FOR SKEWED RIGHT SIDED DIFFERENCE:
function Error_right_sided_skew = fourth_order_right_sided_skew(x,dx)
% analytic function = exp(x)*cos(x)
% analytic derivative
%f''(x) = -2*exp(x)*sin(x)
analytical_derivative = -2*exp(x)*sin(x);
%numerical derivative
%central differencing
right_sided_skew = (((3.7500)*((exp(x))*(cos(x))))-((12.8333)*((exp(x+dx))*(cos(x+dx))))+((17.8333)*((exp(x+(2*dx)))*(cos(x+(2*dx)))))-((13.0000)*((exp(x+(3*dx)))*(cos(x+(3*dx)))))+((5.0833)*((exp(x+(4*dx)))*(cos(x+(4*dx)))))-((0.8333)*((exp(x+(5*dx)))*(cos(x+(5*dx))))))/(dx^2);
%error
Error_right_sided_skew = abs(right_sided_skew- analytical_derivative);
end
LEFT HAND DIFFERENCE METHOD :
NO . OF NODES :
The Number Of Nodes = P+Q
Where, P Is Order Of Derivative.
Q Is Order Of Approximations.
The No Of Nodes = 2+4 =>6.
DERIVATION :
To Derive A Fourth Order Approximation For The Second Order Derivative,We Start With These Approximation,
d^2u/dx^2=af(i-5)+bf(i-4)+cf(i-3)+df(i-2)+ef(i-1)+gf(i)/dx^2..........................(3)
| dx^2f"(i) | f(i) | f'(i)dx | f"(i)dx^2 | f"'(i)dx^3 | f""(i)dx^4 | f""'dx^5 | ||
| af(i-5) | a | -5a | 25a/2 | -125a/6 | 625a/24 | -3125a/120 | ||
| bf(i-4) | b | -4b | 16b/2 | -64b/6 | 256b/24 | -1024b/120 | ||
| cf(i-3) | c | -3c | 9c/2 | -27c/6 | 81c/24 | -243c/120 | ||
| df(i-2) | d | -2d | 4d/2 | -8d/6 | 16d/24 | -32d/120 | ||
| ef(i-1) | e | -e | e/2 | -e/6 | e/24 | -e/120 | ||
| gf(i) | g | 0 | 0 | 0 | 0 | 0 | ||
| sum of coefficients | 0 | 0 | 1 | 0 | 0 | 0 |
Expand All The Terms In The Equation (3) Using Taylor Series Expansion And Are Represented In The Form Of Table Using Taylor Table Method.
The Linear Equation Obtained From The Above Table Are Solved Using Matrix Inversion Method,
A.X = B
| 1 | 1 | 1 | 1 | 1 | 1 |
| -5 | -4 | -3 | -2 | -1 | 0 |
| 25/2 | 16/2 | 9/2 | 4/2 |
1/2 |
0 |
| -125/6 | -64/6 | -27/6 | -8/6 | -1/6 | 0 |
| 625/24 | 256/24 | 81/24 | 16/24 | 1/24 | 0 |
| -3125/120 | -1024/120 | -243/120 | -32/120 | -1/120 | 0 |
*
| a | b | c | d | e | g |
=
| 0 | 0 | 1 | 0 | 0 | 0 |
x=inv(A)*B
we get the coefficients as,

a=-0.8333,b=5.0833,c=-13.0000,d=17.8333,e=-12.8333,g=3.7500
SUBSTITUTING THESE COEFFICIENTS IN eq (3) ,WE GET,
d^2u/dx^2=(-0.8333)f(i-5)+(5.0833)f(i-4)+(-13.0000)f(i-3)+(17.8333)f(i-2)+(-12.8333)f(i-1)+(3.7500)f(i)/dx^2
MAIN CODE :
% MAIN CODE
clear all
close all
clc
%value of x
x= pi/3;
%range of dx
dx= linspace(pi/4,pi/4000,20);
%for loop
for i=1:length(dx)
right_sided_skew(i) = fourth_order_right_sided_skew(x,dx(i));
central_differencing (i) = fourth_order_central_differencing(x,dx(i));
left_sided_skew(i) = fourth_order_left_sided_skew(x,dx(i));
end
%plotting
figure(1)
loglog(dx,central_differencing,'r')
hold on
loglog(dx,right_sided_skew,'g')
hold on
loglog(dx,left_sided_skew,'b')
xlabel('range of dx')
ylabel('truncation error')
title('range of dx vs error')
legend('central differencing','skewed right sided difference','skewed left sided difference','location','northwest')
FUNCTION CODE:
% FUNCTION CODE FOR SKEWED LEFT SIDED DIFFERENCE:
function Error_left_sided_skew = fourth_order_left_sided_skew(x,dx)
% analytic function = exp(x)*cos(x)
% analytic derivative
%f''(x) = -2*exp(x)*sin(x)
analytical_derivative = -2*exp(x)*sin(x);
%numerical derivative
%central differencing
left_sided_skew = (((-0.8333)*((exp(x-(5*dx)))*(cos(x-(5*dx)))))+((5.0833)*((exp(x-(4*dx)))*(cos(x-(4*dx)))))-((13.0000)*((exp(x-(3*dx)))*(cos(x-(3*dx)))))+((17.8333)*((exp(x-(2*dx)))*(cos(x-(2*dx)))))-((12.8333)*((exp(x-dx))*(cos(x-dx))))+((3.7500)*((exp(x))*(cos(x)))))/(dx^2);
%error
Error_left_sided_skew = abs(left_sided_skew- analytical_derivative);
end
OUTPUT :

CONCLUSION :
As Seen From The Plot, The Central Differencing Scheme Has Very Less Error Compared To Other Schemes. Therefore, Central Differencing Is Better Than Other Schemes Because It Uses Information From Both The Sides From The Point Of Consideration To Give Approximative And Accurate Values.As The Left And Right Skewed Difference Methods Uses Data Only From One Side Of Point Of Interest It Gives Less Approximative And Accurate Values About The Point.
WHY A SKEWED METHOD IS USEFUL :
The System Which Doesn’t Contain Sufficient Information On Both Side Of The Point Of Interest. In Such Cases We Cannot Use Central Differencing Scheme So Skewed Scheme Is Useful In Such Cases.
WHAT CAN A SKEWED METHOD DO THAT A CD METHOD CANNOT DO :
Cds Cannot Not Be Employed At The Boundary Nodes Due To Unavailability Of Right And Left Nodes At The Same Time. In Such Cases The Skewed Differencing Scheme Is Used.