Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 4

Sin(x) Error

100

10-2

10-4

10-6
Error

10-8

10-10

forward difference-1st order accurate


10-12
central difference-2nd order accurate
central difference-4th order accurate
10-14
10-3 10-2 10-1
x

Cos(x) Error
100

10-2

10-4

10-6
Error

10-8

10-10

forward difference-1st order accurate


10-12
central difference-2nd order accurate
central difference-4th order accurate
10-14
10-3 10-2 10-1
x
x
0
e Error
10

10-2

10-4

10-6
Error

10-8

10-10

forward difference-1st order accurate


10-12
central difference-2nd order accurate
central difference-4th order accurate
10-14
10-3 10-2 10-1
x

% % MEEN 689-3 HW1 Problem 1


clc
clear all
close all
%
%
x=1;
f1=sin(x);
f2=cos(x);
f3=exp(x);
%
i=1;
% sin(x)
for dx=0.001:0.001:0.1
exact=cos(x); % exact derivative of sin function
f1_forward_first(i)=(sin(x+dx)-f1)/dx;
f1_central_second(i)=(-sin(x-dx)+sin(x+dx))/(2*dx);
f1_central_fourth(i)=(sin(x-2*dx)-8*sin(x-dx)+8*sin(x+dx)-
sin(x+2*dx))/(12*dx);
f1_error_forward(i)=abs(exact-f1_forward_first(i));
f1_error_central2(i)=abs(exact-f1_central_second(i));
f1_error_central4(i)=abs(exact-f1_central_fourth(i));
i=i+1;
end
delta_x=[0.001:0.001:0.1];
loglog(delta_x,f1_error_forward,'k')
hold on
loglog(delta_x,f1_error_central2,'g--')
loglog(delta_x,f1_error_central4,'b*')
grid on
grid minor
ylabel('Error')
xlabel('\deltax')
legend('forward difference-1st order accurate',...
'central difference-2nd order accurate',...
'central difference-4th order accurate','location','southeast')
title('Sin(x) Error')

% cos(x)
i=1;
for dx=0.001:0.001:0.1
exact=-sin(x); % exact derivative of cos function
f2_forward_first(i)=(cos(x+dx)-f2)/dx;
f2_central_second(i)=(-cos(x-dx)+cos(x+dx))/(2*dx);
f2_central_fourth(i)=(cos(x-2*dx)-8*cos(x-dx)+8*cos(x+dx)-
cos(x+2*dx))/(12*dx);
f2_error_forward(i)=abs(exact-f2_forward_first(i));
f2_error_central2(i)=abs(exact-f2_central_second(i));
f2_error_central4(i)=abs(exact-f2_central_fourth(i));
i=i+1;
end
figure
loglog(delta_x,f2_error_forward,'k')
hold on
loglog(delta_x,f2_error_central2,'g--')
loglog(delta_x,f2_error_central4,'b*')
grid on
grid minor
ylabel('Error')
xlabel('\deltax')
legend('forward difference-1st order accurate',...
'central difference-2nd order accurate',...
'central difference-4th order accurate','location','southeast')
title('Cos(x) Error')

% exp(x)
i=1;
for dx=0.001:0.001:0.1
exact=exp(x); % exact derivative of exp function
f3_forward_first(i)=(exp(x+dx)-f3)/dx;
f3_central_second(i)=(-exp(x-dx)+exp(x+dx))/(2*dx);
f3_central_fourth(i)=(exp(x-2*dx)-8*exp(x-dx)+8*exp(x+dx)-
exp(x+2*dx))/(12*dx);
f3_error_forward(i)=abs(exact-f3_forward_first(i));
f3_error_central2(i)=abs(exact-f3_central_second(i));
f3_error_central4(i)=abs(exact-f3_central_fourth(i));
i=i+1;
end
figure
loglog(delta_x,f3_error_forward,'k')
hold on
loglog(delta_x,f3_error_central2,'g--')
loglog(delta_x,f3_error_central4,'b*')
grid on
grid minor
ylabel('Error')
xlabel('\deltax')
legend('forward difference-1st order accurate',...
'central difference-2nd order accurate',...
'central difference-4th order accurate','location','southeast')
title('e^x Error')

You might also like