Week 3.5 - Deriving 4th order approximation of a 2nd order derivative using Taylor Table method
main code
clear all;
close all;
clc;
x = pi/4;
dx = linspace(pi/20,pi/400,40);
exact_derivative = -2*exp(x)*sin(x);
for i=1:length(dx)
[central_diff(i),forward_diff(i),backward_diff(i),cental_error(i),forward_error(i),backward_error(i)]= taylor_table_scheme(x,dx(i),exact_derivative);
end
plot(dx,central_error,'r-')
hold on
plot(dx,forward_error,'b-')
hold on
plot(dx,backward_error,'g-')
xlabel('log(dx)')
ylabel('log(error)')
legend('Central difference scheme','Forward difference scheme','Backward difference scheme','Location','Best')
title('Comparison of errors for a second order derivative fourth order approximation using different approximations scheme')
function file
function[central_diff,forward_diff,backward_diff,central_error,forward_error,backward_error]=taylor_table_scheme(x,dx,exact_derivative)
central_diff=((-1*exp(x+(2*dx))*cos(x+(2*dx)))+(16*exp(x+dx)*cos(x+dx))+(-30*exp(x)*cos(x))+(16*exp(x-dx)*cos(x-dx))+(-1*exp(x-(2*dx))*cos(x-(2*dx))))./(12*(dx.^2));
forward_diff=((45*exp(x)*cos(x))+(-154*exp(x+dx)*cos(x+dx))+(214*exp(x+(2*dx))*cos(x+(2*dx)))+(-156*exp(x+(3*dx))*cos(x+(3*dx)))+(61*exp(x+(4*dx))*cos(x+(4*dx)))+(-10*exp(x+(5*dx))*cos(x+(5*dx))))./(12*(dx.^2));
backward_diff=((45*exp(x)*cos(x))+(-154*exp(x-dx)*cos(x-dx))+(214*exp(x-(2*dx))*cos(x-(2*dx)))+(-156*exp(x-(3*dx))*cos(x-(3*dx)))+(61*exp(x-(4*dx))*cos(x-(4*dx)))+(-10*exp(x-(5*dx))*cos(x-(5*dx))))./(12*(dx.^2));
central_error = abs(exact_derivative-central_diff);
forward_error = abs(exact_derivative-forward_diff);
backward_error = abs(exact_derivative-backward_diff);
end
coeficients
clear all;
close all;
clc;
syms a b c d e g
eqn1 = a+b+c+d+e+g==0;
eqn2 = b+(2*c)+(3*d)+(4*e)+(5*g)==0;
eqn3 = b+(4*c)+(9*d)+(16*e)+(25*g)==2;
eqn4 = b+(8*c)+(27*d)+(64*e)+(125*g)==0;
eqn5 = b+(16*c)+(81*d)+(256*e)+(625*g)==0;
eqn6 = b+(32*c)+(243*d)+(1024*e)+(3125*g)==0;
eqns = [eqn1 eqn2 eqn3 eqn4 eqn5 eqn6];
S = solve(eqns);
coeffa = S.a
coeffb = S.b
coeffc = S.c
coeffd = S.d
coeffe = S.e
coeffg = S.g