 ## Matlab Assignment Solution on User-defined Functions

• 22nd Jul, 2022
• 16:05 PM
```% 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

%```