Challenge

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

4th order approximations of the second-order derivative.

Central differences

`(del^2f)/(delx^2)` f(x) f'(x) f''(x) f'''(x) f'v(x)

af(x-2dx)

a -2a 2a -4a/3 2a/3
bf(x-dx) d -b b/2 -b/6 b/24

cf(x)

c 0 0 0 0
df(x+dx) d d d/2 d/6 d/24
ef(x+2dx) e 2e 2e 4e/2 2e/3
0 0 1 0 0

`(del^2f)/(delx^2)`= af(x-2dx)+bf(x-dx)+cf(x)+df(x+dx)+ef(x+2dx)`

Central =

-0.0833
1.3333
-2.5000
1.3333
-0.0833

skewed right

`(del^2f)/(delx^2)` f(x) f'(x) f''(x) f'''(x) f'v(x) fv(x)
af(x) a 0 0 0 0 0
bf(x+dx) b b b/2 b/6 b/24 b/120
cf(x+2dx) c 2c 2c 8c/3 2c/3 25c/120
df(x+3dx) d 3d 9d/2 9d/2 81d/24 243d/120
ef(x+4dx) e 4e 8e 64e/2 256e/24 1024e/120
gf(x+5x) g 5g 25g/2 125g/6 625g/24 3125g/120

(del^2f)/(delx^2)`= af(x)+bf(x+dx)+cf(x+2dx)+df(x+3dx)+ef(x+4dx)


Skewed_right =

3.7500
-12.8333
17.8333
-13.0000
5.0833
-0.8333

Skewed left

(del^2f)/(delx^2) f(x) f'(x) f''(x) f'''(x) f'v(x) fV(x)
g(x) g 0 0 0 0 0
ef(x-dx) e -e e/2 -e/6 e/24 -e/120
df(x-2dx) d -2d 2d -8d/6 16d/24 -32d/120
cf(x-3dx) c -3c 9c/2 -27c/6 81c/24 -243c/120
bf(x-4dx) b -4b 8b -64b/6 256b/24 -1024b/120
af(x-5dx) a -5a 25a/2 -125a/6 625a/24 -3125a/120

(del^2f)/(delx^2)`= af(x)+bf(x-dx)+cf(x-2dx)+df(x-3dx)+ef(x-4dx)

skewed_left =

3.7500
-12.8333
17.8333
-13.0000
5.0833
-0.8333

close all
clear all
clc

% Skewed right

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];
M=[0;0;1;0;0;0];

Skewed_right= inv(A)*M

% Skewed left

B= [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];

skewed_left = inv(B)*M

Z=[0;0;1;0;0;];
C=[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];

Central= inv(C)*Z

x=pi/4;
dx=linspace(pi/20,pi/400,40);
for i= 1:length(dx)
error_cd(i)= Central_skeam(x,dx(i),Central);
error_rs(i)= right_skeam(x,dx(i),Skewed_right);
error_ls(i)= left_skeam(x,dx(i),skewed_left);
end

figure(1)
loglog(dx,error_cd)
hold on
loglog(dx,error_rs)
hold on
loglog(dx,error_ls)


function [error_CD_approx] = Central_skeam(x,dx,Central)


CD_approximation = (Central(1)*exp(x-2*dx).*cos(x-2*dx)+Central(2)*exp(x-dx).*cos(x-dx)+Central(3)*exp(x).*cos(x)+Central(4)*exp(x+dx).*cos(x+dx)+Central(5)*exp(x+2*dx).*cos(x+2*dx))/dx.^2

Analytical_function= -2*exp(x).*sin(x)
error_CD_approx = abs(Analytical_function-CD_approximation)
end

function [error_skewed_right] = right_skeam(x,dx,Skewed_right)

skewed_right = (Skewed_right(1)*exp(x).*cos(x)+Skewed_right(2)*exp(x+dx).*cos(x+dx)+Skewed_right(3)*exp(x+2*dx).*cos(x+2*dx)+Skewed_right(4)*exp(x+3*dx).*cos(x+3*dx)+Skewed_right(5)*exp(x+4*dx).*cos(x+4*dx)+Skewed_right(6)*exp(x+5*dx).*cos(x+5*dx))/dx.^2

Analytical_function= -2*exp(x).*sin(x)

error_skewed_right = abs(Analytical_function-skewed_right)
end

function [error_skewed_left] = left_skeam(x,dx,skewed_left)

skewed_left = (skewed_left(1)*exp(x).*cos(x)+skewed_left(2)*exp(x-dx).*cos(x-dx)+skewed_left(3)*exp(x-2*dx).*cos(x-2*dx)+skewed_left(4)*exp(x-3*dx).*cos(x-3*dx)+skewed_left(5)*exp(x-4*dx).*cos(x-4*dx)+skewed_left(6)*exp(x-5*dx).*cos(x-5*dx))/dx.^2

Analytical_function = -2*exp(x).*sin(x)
error_skewed_left = abs(Analytical_function-skewed_left)


end

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.