% the_number_pi.m
%
% FirstName LastName, CSU_ID, Assignment 1
% ESC 152 – Project No. 3
% Problem 2
%
% Series approximation of PI
%
% User has to decide whether he wants N approach (give screen input as 0)
% N approach refers to number of seriers terms
% or
% Ns approach (give screen input as 1) - Significant error approach
% if user selects N approach by entering zero
% user is asked next to enter value of N
% pi value is approx. by considering series with number of terms as N
% if user selects Ns approach by entering one
% user is asked next to enter value of Ns
% pi value is approx. by considering series terms till relative error
% condition is satisfied.
% The code output on command window, the value of approximated pi, exact
% value of pi and the error.
%
clc;
clear;
display ('FirstName LastName, CSU_ID');
display ('Problem 2 - Assignment Enter_Number_Here');
fprintf('\n')
% save exact value
% for comparison purposes
exact = pi;
value = input ('Enter 0 for N or 1 for Ns : ');
if value==0 % series apparoach
N = input ('Enter number of terms, N : ');
% initialize
approximation = 0;
for j = 0: 1: N
term = (-1/3)^j / (2*j + 1);
approximation = approximation + sqrt(12) * term;
Error = abs(exact - approximation);
end
% Output
format long
%display ([j,approximation, Error]);
% (a, 5 points)
% Modify the output lines to provide a table with headers.
% Format print
fprintf(' \n --------------------------------------------------------- \n')
fprintf(' Number of terms PI value (approx.) Error \n')
fprintf(' ------------------------------------------------------------ \n')
fprintf('} .15f .15f \n',N,approximation,Error)
end
if value==1 % significant figure approach
% (b, 25 points)
?ommon approach is to program this approximation such as it takes
% as many terms it may need to meet a given criteria.
%
% One such criteria is for the approximation to reach a given tolerance,
?fined as (i.e., a measure of the relative change):
%
% Relative Change < tolerance> % where the tolerance can be defined isn several ways
% [see assignment for more detailed formulas]
%
?apt the script [using a control structure, “if-then-else”] to include
% a “user-defined” tolerance (instead of N) as a conditional stopping criteria
% (or “control structure”).
%
% Test your script for different tolerances as specified in your assignment
Ns = input ('Enter tolerance value : ');
approximation_prev = 0; % Initialization
approximation = 0;
for j = 0: 1: 1000
term = (-1/3)^j / (2*j + 1);
approximation = approximation + sqrt(12) * term;
% Relative error
rel_error = abs(approximation-approximation_prev)/( abs(approximation)+10^(-5+Ns) );
% Break condition if relative error reduces to significant figures
if rel_error < 0> break
end
approximation_prev = approximation;
end
% Format print
fprintf(' \n --------------------------------------------------------- \n')
fprintf(' Ns PI value (approx.) Error \n')
fprintf(' ------------------------------------------------------------ \n')
fprintf('- .15f .15f \n',Ns,approximation,abs(exact-approximation))
end
%