Challenge

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

 Objective:

Derive the following 4th order approximations of the second-order derivative of exp(x)*cos(x) . 

1. Central difference

2. Skewed right-sided difference

3. Skewed left-sided difference

Theory:

f(x)=exp(x)*cos(x)

f'(x)=-exp(x)*sin(x)+exp(x)*cos(x)

f''(x)=-2exp(x)*sin(x)

Then absolute value is -9.620954761930703

Central difference:

symmetric stencil:

Order of Approximation = Number of nodes in the stencil - Order of the Derivative + 1

Number of nodes in the stencil=5

so there is 5 node require for symmetric stencill.

Now f''(x)==af(i-2)+bf(i-1)+cf(i)+df(i+1)+ef(i+2)

The Tallors table for central difference

  f f' f'' f''' fiv
fi-2 1 -2Δx (2Δx)2/2! -(2Δx)3/3! (2Δx)4/4!
fi-1 1 -Δx (Δx)2/2! -(Δx)3/3! (Δx)4/4!
fi 1 0 0 0 0
fi+1 1 Δx (Δx)2/2! (Δx)3/3! (Δx)4/4!
fi+2 1 2Δx (2Δx)2/2! (2Δx)3/3! (2Δx)4/4!
  0 0 1 0 1

For asymmetric stencil:

Order of Approximation = Number of nodes in the stencil - Order of the Derivative 

Number of nodes in the stencil=6

so there is 6 node require for asymmetric stencill.

Skewed right-sided difference:

f''(x)=af(i)+bf(i+1)+cf(i+2)+df(i+3)+ef(i+4)+gf(i+5)

The Tallors table for Skewed right-sided difference

  f f' f'' f''' fiv fv
fi 1 0 0 0 0 0
fi+1 1 Δx (Δx)2/2! (Δx)3/3! (Δx)4/4! (Δx)5/5!
fi+2 1 2Δx (2Δx)2/2! (2Δx)3/3! (2Δx)4/4! (2Δx)5/5!
fi+3 1 3Δx (3Δx)2/2! (3Δx)3/3! (3Δx)4/4! (3Δx)5/5!
fi+4 1 4Δx (4Δx)2/2! (4Δx)3/3! (4Δx)4/4! (4Δx)5/5!
fi+5 1 5Δx (5Δx)2/2! (5Δx)3/3! (5Δx)4/4! (5Δx)5/5!
  0 0 1 0 0 0

Skewed left-sided difference:

 f''(x)=af(i)+bf(i-1)+cf(i-2)+df(i-3)+ef(i-4)+gf(i-5)

The Tallors table for Skewed left-sided difference

  f f' f'' f''' fiv fv
fi 1 0 0 0 0 0
fi-1 1 -Δx (Δx)2/2! -(Δx)3/3! (Δx)4/4! -(Δx)5/5!
fi-2 1 -2Δx (2Δx)2/2! -(2Δx)3/3! (2Δx)4/4! -(2Δx)5/5!
fi-3 1 -3Δx (3Δx)2/2! -(3Δx)3/3! (3Δx)4/4! -(3Δx)5/5!
fi-4 1 -4Δx (4Δx)2/2! -(4Δx)3/3! (4Δx)4/4! -(4Δx)5/5!
fi-5 1 -5Δx (5Δx)2/2! -(5Δx)3/3! (5Δx)4/4! -(5Δx)5/5!
  0 0 1 0 0 0

Matlab program for finding error plot:

close all

clear all

clc

%second order derivative of exp(x)*cos(x)=-2exp(x)*sin(x)

x=pi/2;

dx=linspace(pi/40,pi/400,50);

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

for i=1:length(dx)

  %coefficent for the cental difference  

a=cental_deffence(dx(i));

%numerical value of the secon derivative of exp(x)*cos(x)

%f''(x)=af(i-2)+bf(i-1)+cf(i)+df(i+1)+ef(i+2)

numerical_value_central=a(1)*exp(x-(2*dx(i)))*cos(x-(2*dx(i)))+a(2)*exp(x-dx(i))*cos(x-dx(i))+a(3)*exp(x)*cos(x)+a(4)*exp(x+dx(i))*cos(x+dx(i))+a(5)*exp(x+(2*dx(i)))*cos(x+(2*dx(i)))

%coefficent for the forward difference

b=forward_difference(dx(i))

%f''(x)=af(i)+bf(i+1)+cf(i+2)+df(i+3)+ef(i+4)+gf(i+5)

numerical_value_forward=b(1)*exp(x)*cos(x)+b(2)*exp(x+dx(i))*cos(x+dx(i))+b(3)*exp(x+2*dx(i))*cos(x+2*dx(i))+b(4)*exp(x+3*dx(i))*cos(x+3*dx(i))+b(5)*exp(x+4*dx(i))*cos(x+4*dx(i))+b(6)*exp(x+5*dx(i))*cos(x+5*dx(i))

%coefficent for the backward difference

c=backward_difference(dx(i));

%f''(x)=af(i)+bf(i-1)+cf(i-2)+df(i-3)+ef(i-4)+gf(i-5)

numerical_value_backward=c(1)*exp(x)*cos(x)+c(2)*exp(x-dx(i))*cos(x-dx(i))+c(3)*exp(x-2*dx(i))*cos(x-2*dx(i))+c(4)*exp(x-3*dx(i))*cos(x-3*dx(i))+c(5)*exp(x-4*dx(i))*cos(x-4*dx(i))+c(6)*exp(x-5*dx(i))*cos(x-5*dx(i))

error_central(i)=abs(numerical_value_central-absolute_value);

error_forward(i)=abs(numerical_value_forward-absolute_value);

error_backward(i)=abs(numerical_value_backward-absolute_value);

end

figure(1)

plot(dx,error_central)

hold on

plot(dx,error_forward,'yellow','LineWidth',2)

hold on

plot(dx,error_backward,'r','LineWidth',2)

xlabel('delta_x')

ylabel('error')

legend('error_central','error_forward','error_backward')

Function for finding the co-efficent in central difference

function ans=cental_deffence(dx)

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

A=zeros(5,5)

A(1,:)=1;

A(2,1)=-2*dx;

A(2,2)=-dx;

A(2,4)=dx;

A(2,5)=2*dx;

A(3,1)=(2*dx)^2/factorial(2);

A(3,2)=dx^2/factorial(2);

A(3,4)=dx^2/factorial(2);

A(3,5)=(2*dx)^2/factorial(2);

A(4,1)=-(2*dx)^3/factorial(3);

A(4,2)=-(dx)^3/factorial(3);

A(4,4)=(dx)^3/factorial(3);

A(4,5)=(2*dx)^3/factorial(3);

A(5,1)=(2*dx)^4/factorial(4);

A(5,2)=(dx)^4/factorial(4);

A(5,4)=(dx)^4/factorial(4);

A(5,5)=(2*dx)^4/factorial(4);

ans=inv(A)*B

end

Function for finding the co-efficent in Forward difference

function ans=forward_difference(dx)

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

A=zeros(6);

A(1,:)=1;

A(2,2)=dx;

A(2,3)=2*dx;

A(2,4)=3*dx;

A(2,5)=4*dx;

A(2,6)=5*dx;

A(3,2)=(dx)^2/factorial(2);

A(3,3)=(2*dx)^2/factorial(2);

A(3,4)=(3*dx)^2/factorial(2);

A(3,5)=(4*dx)^2/factorial(2);

A(3,6)=(5*dx)^2/factorial(2);

A(4,2)=(dx)^3/factorial(3);

A(4,3)=(2*dx)^3/factorial(3);

A(4,4)=(3*dx)^3/factorial(3);

A(4,5)=(4*dx)^3/factorial(3);

A(4,6)=(5*dx)^3/factorial(3);

A(5,2)=(dx)^4/factorial(4);

A(5,3)=(2*dx)^4/factorial(4);

A(5,4)=(3*dx)^4/factorial(4);

A(5,5)=(4*dx)^4/factorial(4);

A(5,6)=(5*dx)^4/factorial(4);

A(6,2)=(dx)^5/factorial(5);

A(6,3)=(2*dx)^5/factorial(5);

A(6,4)=(3*dx)^5/factorial(5);

A(6,5)=(4*dx)^5/factorial(5);

A(6,6)=(5*dx)^5/factorial(5);

ans=inv(A)*B;

end

Function for finding the co-efficent in Forward difference

function ans=backward_difference(dx)

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

A=zeros(6);

A(1,:)=1;

A(2,2)=-dx;

A(2,3)=-2*dx;

A(2,4)=-3*dx;

A(2,5)=-4*dx;

A(2,6)=-5*dx;

A(3,2)=(dx)^2/factorial(2);

A(3,3)=(2*dx)^2/factorial(2);

A(3,4)=(3*dx)^2/factorial(2);

A(3,5)=(4*dx)^2/factorial(2);

A(3,6)=(5*dx)^2/factorial(2);

A(4,2)=-(dx)^3/factorial(3);

A(4,3)=-(2*dx)^3/factorial(3);

A(4,4)=-(3*dx)^3/factorial(3);

A(4,5)=-(4*dx)^3/factorial(3);

A(4,6)=-(5*dx)^3/factorial(3);

A(5,2)=(dx)^4/factorial(4);

A(5,3)=(2*dx)^4/factorial(4);

A(5,4)=(3*dx)^4/factorial(4);

A(5,5)=(4*dx)^4/factorial(4);

A(5,6)=(5*dx)^4/factorial(4);

A(6,2)=-(dx)^5/factorial(5);

A(6,3)=-(2*dx)^5/factorial(5);

A(6,4)=-(3*dx)^5/factorial(5);

A(6,5)=-(4*dx)^5/factorial(5);

A(6,6)=-(5*dx)^5/factorial(5);

ans=inv(A)*B;

end

Output:

Error in the central difference is very less as compaire to the forwoard and backward scheame .

why a skewed scheme is useful? What can a skewed scheme do that a CD scheme cannot?

In the case central defference it is very deficlt to calaculate the valu at the end nodes.at the incial grides wecan calculate useing Skewed right-sided difference at the end nodes we can use Skewed left-sided difference.Central diffrence have less error but it can't calculate all the nodes

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.