Question
4. What is machine epsilon in the default Octave real variable precision. 5. What is machine epsilon in the Octave real variable single precision. clc,
4. What is machine epsilon in the default Octave real variable precision. 5. What is machine epsilon in the Octave real variable single precision.
clc, clear, close all
% WRITING THE PROJECT DATE
printf("PROJECT 1 - Round-off vs Truncation Error ")
printf(" ")
display(date())
printf("======================================== ")
% f(x)= f
f=@(x) 12.5+3.5.*x.*cos(2.45.*x);
% df(x) is the first order derivative
df=@(x) -8.575*x*sin(2.45*x)+3.5*cos(2.45*x);
x = 2.75;
for i = 1:20
del (i,1)= 10^(-i);
%Backward finite difference
backward(i,1) = (f(x)-f(x - del(i,1)))/del(i,1);
%Forward finite difference
forward(i,1) = (f(x + del(i,1)) - f(x))/del(i,1);
%Central Finite Difference
central (i,1)= (f(x+del(i,1)) - f(x - del(i,1)))/(2*del(i,1));
%Calculate the errors compared to exact derivative
backward_error(i,1) = abs(backward(i,1) - df(x));
forward_error(i,1) = abs(forward(i,1) - df(x));
central_error(i,1) = abs(central(i,1) - df(x));
end
%plot the error vs del x
figure
hold on
plot(log10(del),log10(forward_error))
plot(log10(del),log10(backward_error))
plot(log10(del),log10(central_error))
xlabel('\Delta'), ylabel('Error')
title('Error on Forward, Backward, and Central')
legend('Forward','Backward','Central')
grid on, hold off
%assemble the results into a table (actually a matrix)
printf("===========Double precision results============== ")
printf(" del x forward backward central ")
Table = [del, forward_error, backward_error, central_error];
%print to screen
disp(Table)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%repeat everything in single precison
%select x value to evaluate derivative
x = single(x);
%evaluate the derivative
for i = single(1:20)
%Calculate delta x
del(i,1) = single(10^(-i));
%backward finite difference
backward(i,1) = single((f(x)-f(x - del(i,1)))/del(i,1));
%Forward finite difference
forward(i,1) = single((f(x + del(i,1)) - f(x))/del(i,1));
%Central Finite Difference
central (i,1)= single((f(x + del(i,1)) - f(x - del(i,1)))/(2*del(i,1)));
%Calculate the errors compared to exact derivative
backward_error(i,1) = single(abs(backward(i,1) - df(x)));
forward_error(i,1) = single(abs(forward(i,1) - df(x)));
central_error(i,1) = single(abs(central(i,1) - df(x)));
end
%Plot the error vs delta x for each method on the log scale
figure
hold on
plot(log10(del),log10(forward_error))
plot(log10(del),log10(backward_error))
plot(log10(del),log10(central_error))
xlabel('\Delta'), ylabel('Error')
title(' Error on Forward, Backward, and Central')
legend('Forward','Backward','Central')
grid on, hold off
printf("================================================= ")
%assemble the results into a table (actually a matrix)
printf("===========Single precision results============== ")
printf(" del x forward backward central ")
Table = [del, forward_error, backward_error, central_error];
%print to screen
disp(Table)
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started