Challenge

Week 3 - Taylor table method and Matlab code

AIM: -
TO DERIVE THE FOURTH-ORDER APPROXIMATION OF A SECOND ORDER DERIVATIVE FUNCTION FOR THE THREE DIFFERENT SCHEMES
(CENTRAL DIFFERENCE SCHEME, SKEWED RIGHT&LEFT SIDED DIFFERENCE SCHEME)
TO FIND: -
1. CENTRAL DIFFERENCE
2. SKEWED RIGHT-SIDED DIFFERENCE
3. SKEWEWD LEFT-SIDED DIFFERENCE
ANALYTICAL FUNCTION: -
EVALUATE THE ABOVE ANALYTICAL FUNCTION & COMPARE IT WITH THE THREE NUMERICAL APPROXIMATIONS MENTIONED ABOVE.
CODE EXPLANATION: -
FOR EQUATING THE EQUATIONS WHICH WE CREATED WITH THE TAYLOR TABLE, WE USE ‘’SYMS’’ COMMAND TO SOLVE THE EQUATIONS.
AFTER SOLVING THE RESPECTIVE EQUATIONS FOR THE THREE DIFFERENT SCHEMES, WE GET THE COEFFICIENTS OF THE VARIABLES USED IN
THAT EQUATION.
CREATING A FUNCTION TO EVALUATE THE THREE NUMERICAL FUNCTION WITH THE ANALYTICAL DERIVATIVE.
CREATING A PROGRAM FOR CALLING THE RESPECTIVE FUNCTION AND ALSO TO CREATE PLOTS WHICH COMPARES THE THREE NUMERICAL
APPROXIMATIONS.

left skewed difference

clc
close all
clear all
%for left skewed difference
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) (-27/6) (-64/6) (-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]
solution= inv(A)*B
check=sum(solution)

Main program

clear all
close all
clc
x=pi/3;
dx=linspace(pi/40,pi/4000,20);
analytical_derivative= (-2)*exp(x)*sin(x);
for i=1:length(dx)
central_differencing(i)= ((-2.5*epx(x))+(1.334*epx(x-dx(i)))-(0.0833*epx(x-(2*dx(i))))+(1.334*epx(x+dx(i)))-(0.0833*epx(x+(2*dx(i)))))/(dx(i)^2);
skewed_left_differencing(i)=((3.75*epx(x))-(12.833*epx(x-dx(i)))+(17.833*epx(x-(2*dx(i))))-(13*epx(x-(3*dx(i))))+(5.0833*epx(x-(4*dx(i))))-(0.833*epx(x-(5*dx(i)))))/(dx(i)^2);
skewed_right_differencing(i)=((3.75*epx(x))-(12.833*epx(x+dx(i)))+(17.833*epx(x+(2*dx(i))))-(13*epx(x+(3*dx(i))))+(5.0833*epx(x+(4*dx(i))))-(0.833*epx(x+(5*dx(i)))))/(dx(i)^2);
Forward_difference(i)= ((epx(x+dx(i)))-(epx(x)))/dx(i);
backward_difference(i)= ((epx(x))-(epx(x-dx(i))))/dx(i);
end
%error calculation
central_error=abs(analytical_derivative-central_differencing);
skewed_left_error=abs(analytical_derivative-skewed_left_differencing);
skewed_right_error=abs(analytical_derivative-skewed_right_differencing);
forward_error=abs(analytical_derivative-Forward_difference);
backward_error=abs(analytical_derivative-backward_difference);
loglog(dx,central_error,'--r','lineWidth',2)
grid on
hold on
loglog(dx,skewed_left_error,'b','lineWidth',2)
hold on
loglog(dx,skewed_right_error,':g','lineWidth',2)
legend('central error','skewed left error','skewed right error')
title('Comparison of error from different schemes')
xlabel('dx values')
ylabel('Error values')
function out = epx(x)
out=exp(x)*cos(x);
end

Central difference <Left-skewed difference ~Right-skewed difference

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.