Challenge

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

CENTRAL DIFFERENCING SCHEME:

p = n-q+1

The number of nodes, n = p+q-1

Where, p is order of derivative.

q is order of approximations.

n = 2+4-1 =>5

DERIVATION:

To derive a fourth order approximation for the second order derivative,we start with these approximation,

`(∂^2u)/(∂x^2)=(af(i−2)+bf(i−1)+cf(i)+df(i+1)+ef(i+2))/(dx^2)` ...(1)

taylor series derivation for the above terms

`af(i−2)=af(i)+(-2*af'(i)dx)/(1!) + (4*af''(i)dx^2)/(2!)+(-8*af'''(i)dx^3)/(3!)+(16*af''''(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

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

b/24

ef(i+2)

e

2e

2e

4e/3

2e/3

sum of co_efficients

0

0

1

0

0

the linear equation obtained from the above table are solved using matrix inversion method,

A.X = B

A = [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]

X = [a;b;c;d;e]

B = [0;0;1;0;0]

X = inv(A)*B

We get the cofficeint as

a=-0.0833, b=1.3333, c=-2.5000, d=1.3333 e=-0.0833

RIGHT SIDE SHEW SCHEME:

p = n-q

The number of nodes, n = p+q-1

Where, p is order of derivative.

q is order of approximations.

n = 2+4 =>6

DERIVATION:

To derive a fourth order approximation for the second order derivative,we start with these approximation,

`(∂^2u)/(∂x^2)=(af(i)+bf(i+1)+cf(i+2)+df(i+3)+ef(i+4)+gf(i+5))/(dx^2)` ... (1)

Simillarly expand all the terms in the equation (1) and are represented in the form of table using taylor table method

dx^2f’(i)

f(i)

f’(i)dx

f’’ (i)dx^2

f’’’(i)dx^3

f’’’’(i)dx^4

f’’’’'(i)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

125d/120

ef(i+4)

e

4e

16e/2

64e/6

256e/24

1024e/24

gf(i+5)

g

5g

25g/2

125g/6

625g/24

3125g/120

sum of co_efficients

0

0

1

0

0

0

the linear equation obtained from the above table are solved using matrix inversion method,

A.X = B

X = inv(A)*B

We get the cofficeint as

a=3.7500, b=-12.8333, c=17.8333, d=-13.0000, e=5.0833, g=-0.8333

LEFT SIDE SHEW SCHEME:

p = n-q

The number of nodes, n = p+q-1

Where, p is order of derivative.

q is order of approximations.

n = 2+4 =>6

DERIVATION:

To derive a fourth order approximation for the second order derivative,we start with these approximation,

`(∂^2u)/(∂x^2)=(af(i-5)+bf(i-4)+cf(i-3)+df(i-2)+ef(i-1)+gf(i))/(dx^2)` ... (1`

Simillarly expand all the terms in the equation (1) and are represented in the form of table using taylor table method

dx^2f’(i)

f(i)

f’(i)dx

f’’ (i)dx^2

f’’’(i)dx^3

f’’’’(i)dx^4

f’’’’'(i)dx^5

af(i-5)

a

-5a

25a/2

-125a/6

625a/24

-3125a/125

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 co_efficients

0

0

1

0

0

0

the linear equation obtained from the above table are solved using matrix inversion method,

A.X = B

X = inv(A)*B

We get the cofficeint as

a=-0.8333, b=5.0833, c=-13.0000, d=17.8333, e=-12.8333, g=3.7500

FUNCTION CODE FOR CENTRAL DIFFERENCING

function error_central_differencing = fourth_order_central_differencing(x,dx)

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

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

%numerical derivative 

a = (-0.0833)*(exp(x-(2*dx))*cos(x-(2*dx)))
b = (1.3333)*(exp(x-dx)*cos(x-dx))
c = (-2.5000)*(exp(x)*cos(x))
d = (1.3333)*(exp(x+dx)*cos(x+dx))
e = (-0.0833)*(exp(x+(2*dx))*cos(x+(2*dx)))

central_differencing = (a+b+c+d+e)/(dx^2);

%error
error_central_differencing = abs(central_differencing - analytical_derivative)
end

FUNCTION CODE FOR RIGHT SIDE SKEW SCHEME

function error_right_side_skew = fourth_order_right_side_skew(x,dx)

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

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

%numerical derivative 

a = (3.7500)*(exp(x)*cos(x))
b = (-12.8333)*(exp(x+dx)*cos(x+dx))
c = (17.8333)*(exp(x+(2*dx))*cos(x+(2*dx)))
d = (-13.0000)*(exp(x+(3*dx))*cos(x+(3*dx))) 
e = (5.0833)*(exp(x+(4*dx))*cos(x+(4*dx)))
f = (-0.8333)*(exp(x+(5*dx))*cos(x+(5*dx)))

right_side_skew = (a+b+c+d+e+f)/(dx^2);

%error
error_right_side_skew = abs(right_side_skew - analytical_derivative)
end

FUNCTION CODE FOR LEFT SIDE SKEW SCHEME

function error_left_side_skew = fourth_order_left_side_skew(x,dx)

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

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

%numerical derivative 

a = (-0.8333)*(exp(x-(5*dx))*cos(x-(5*dx)))
b = (5.0833)*(exp(x-(4*dx))*cos(x-(4*dx)))
c = (-13.0000)*(exp(x-(3*dx))*cos(x-(3*dx))) 
d = (17.8333)*(exp(x-(2*dx))*cos(x-(2*dx)))
e = (-12.8333)*(exp(x-dx)*cos(x-dx))
f = (3.7500)*(exp(x)*cos(x))

left_side_skew = (a+b+c+d+e+f)/(dx^2);

%error
error_left_side_skew = abs(left_side_skew - analytical_derivative)
end

MAIN PROGRAM

close all 
clear all
clc

%value of x 
x = pi/3;

%range of dx 
dx = linspace(pi/4,pi/4000,20);

for i = 1:length(dx)
    central_differencing(i) = fourth_order_central_differencing(x,dx(i));
    right_side_skew(i) = fourth_order_right_side_skew(x,dx(i));
    left_side_skew(i) = fourth_order_left_side_skew(x,dx(i));
end 

%plotting

figure(1)
loglog(dx,central_differencing,'r')
hold on

loglog(dx,right_side_skew,'g')
hold on

loglog(dx,left_side_skew,'b')
hold on

xlabel('Range of dx')
ylabel('Trucation error')
title('Range of dx vs Trucation error')
legend({'central differencing','right side skew difference','left side skew difference'},'location','northwest')

OUTPUT

CONCLUSION:

As seen from the plot, the central differencing method has very less error compared to other schemes. Therefore, central differencing is better than other methods because it uses information from both the sides from the point of consideration to give accurate values.

As the left and right skewed difference methods uses data only from one side of a particular point and it gives less aaccurate values as compare to central differencing method.

WHERE SKEWED SCHEME IS USEFUL:

When system which doesn’t have sufficient data on both side of the point.

At the boundary nodes while central differencing scheme can't be use at boundary nodes because of unavailability of right and left nodes at that particular point.

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.