Challenge

Week 3 - Taylor table method and Matlab code

AIM: To compare three schemes and find the one with least errors for given function

Given:-

1. function = exp(x)*cos(x)

2. No. of nodes for central difference=order of accuracy(P) +order of derivative(Q)-1 = 5

as,P=4(fourth order approximation),Q=2 (second order derivative)

3. No. of nodes for Skewed difference=order of accuracy(P) +order of derivative=6

as,P=4(fourth order approximation),Q=2 (second order derivative)

Body of Content:-

Derivation of schemes

1. Central difference :-

By talylor series

dx^2 f''(x)= y(1)f(x-2dx)+y(2)f(x-dx)+y(3)f(x)+y(4)f(x+dx)+y(5)f(x+2dx)

f"(x)= (y(1)f(x-2dx)+y(2)f(x-dx)+y(3)f(x)+y(4)f(x+dx)+y(5)f(x+2dx))/dx^2

2. skewed right sided difference:-

f"(x)=(y(1)f(x)+y(2)f(x+dx)+y(3)f(x+2dx)+y(4)f(x+3dx)+y(5)f(x+4dx)+y(6)f(x+5dx))/dx^2;

3. skewed left sided difference:-

f"(x)=(y(1)f(x)+y(2)f(x-dx)+y(3)f(x-2dx)+y(4)f(x-3dx)+y(5)f(x-4dx)+y(6)f(x-5dx))/dx^2;

Steps to solve these equations:

1. open all the functions with help of taylor series. For ex.

`f(x+2dx) =f(x)+2dx f′(x)+(2dx)^2/2f′′(x)+(2dx)^3/6f′′′(x)+O(2dx4)`

similarly,we will be opening all the functions and compare all values and calculate values of coefficient using matrix.

2. Then will put coefficients value in equations.

Our actual second derivative of function f(exp(x)*cos(x))=-2*sin(x)*exp(x)

we will compare its value with central difference,skewed right sided difference,skewed left sided difference and find errors and try to compare them to find one scheme with least error for that function.

clear all
close all
clc

x=pi/4;
dx=linspace(pi/4000,pi/40,20);
analytical_derivative= (-2)*sin(x)*exp(x);

for i=1:length(dx);
  
  skewed_right_sided_error(i)=skewed_right_sided_difference(x,dx(i));
  
  skewed_left_sided_error(i)=skewed_left_sided_difference(x,dx(i));
  
  central_error(i)=central_scheme_differencing(x,dx(i));
  
  end

figure
plot(central_error,dx);
hold on
plot(skewed_right_sided_error,dx,'r');
hold on
plot(skewed_left_sided_error,dx,'g');
xlabel('dx');
ylabel('error');

legend('central_error','skewed_right_sided_error','skewed_left_sided_error');

centre_scheming_differencing_code

function central_error=central_scheme_differencing(x,dx)
 
  
analytical_derivative= (-2)*sin(x)*exp(x);

   
   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];
     
  b=[0 0 1 0 0]';
  
  y=[inv(a)*b];
  
  central_scheme_differencing=(y(1)*(exp(x-2*dx)*cos(x-2*dx))+y(2)*(exp(x-dx)*cos(x-dx))+y(3)*(exp(x)*cos(x))+y(4)*(exp(x+dx)*cos(x+dx))+y(5)*(exp(x+2*dx)*cos(x+2*dx)))/(dx^2);
  
  central_error=abs(central_scheme_differencing-analytical_derivative);
  
  end

skewed_right_sided_scheme_code

function skewed_right_sided_error = skewed_right_sided_difference(x,dx)
  

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

  a=[1 1 1 1 1 1
     0 1 2 3 4 5
     0 1/2 2 9/2 8 25/2
     0 1/6 4/3 9/2 32/3 125/6
     0 1/24 2/3 81/24 256/24 625/24
     0 1/120 32/120 243/120 1024/120 3125/120];
  
 b= [0 0 1 0 0 0]';
 
 y=[inv(a)*b];
  
  skewed_right_sided_difference=(y(1)*(exp(x)*cos(x))+y(2)*(exp(x+dx)*cos(x+dx))+y(3)*(exp(x+2*dx)*cos(x+2*dx))+y(4)*(exp(x+3*dx)*cos(x+3*dx))+y(5)*(exp(x+4*dx)*cos(x+4*dx))+y(6)*(exp(x+5*dx)*cos(x+5*dx)))/(dx^2);

  skewed_right_sided_error=abs(skewed_right_sided_difference-analytical_derivative);
  
  
  end

skewed left sided scheme code

function skewed_left_sided_error=skewed_left_sided_difference(x,dx)

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

  
  a=[1 1 1 1 1 1
     0 -1 -2 -3 -4 -5
     0 1/2 2 9/2 8 25/2
     0 -1/6 -4/3 -9/2 -32/3 -125/6
     0 1/24 2/3 81/24 256/24 625/24
     0 -1/120 -32/120 -243/120 -1024/120 -3125/120];
  
 b= [0 0 1 0 0 0]';
 
 y=[inv(a)*b]';
  
  skewed_left_sided_difference=(y(1)*(exp(x)*cos(x))+y(2)*(exp(x-dx)*cos(x-dx))+y(3)*(exp(x-2*dx)*cos(x-2*dx))+y(4)*(exp(x-3*dx)*cos(x-3*dx))+y(5)*(exp(x-4*dx)*cos(x-4*dx))+y(6)*(exp(x-5*dx)*cos(x-5*dx)))/(dx^2);

  skewed_left_sided_error=abs(skewed_left_sided_difference-analytical_derivative);
  
  end

Conclusion:

1. Central difference came out to be least error scheme.

2. Right sided difference came out to be with most error.

3. For different derivative order and order of approximation function,most and least error scheme differ.

Skewed scheme is useful because more the number of points to calculate more will be the accuracy.

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.