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