# Program To Do Numerical Analysis in MATLAB Language Assignment Solution.

## Instructions

Objective

Write a program to do numerical analysis in MATLAB language.

## Requirements and Specifications Source Code

```function [flag, approx] = progb820474(f,a,b,tol) % [flag, b,r]= proga820474(x) % Author: Amanda Lauen % Date: October 1, 2021 % Description: % % Input % f = an annonymous function supplied by the user % a = represents the x0 term respectfully, given by user % b = represents the x1 term, respectfully, given by user % tol = stoppong tolerance where the algorithm stops when the % function is less than the tolerance % % Outputs % flag = flag to signify program executed properly or not % flag = 0 --> program runs without error % flag = 1 --> input is out of range % flag = 2 --> the algorithm fails to converge % approx = approximation calculated using the Secant Method % Sample % [flag, approx]= progb820474(); % [flag, approx]= progb820474(); % Check that the bounds of the problem are correct if b <= a     flag = 1;     approx = -99;     return; end % Secant Method Code: % f = @(x) function % x = 1.1:0.1:5; --> Range % y = f(x); % plot(x,y); % x0 = ____; % x1 = x0+f(x0); % x2 = x1-f(x1*(x1-x0)/(f(x1-f(x0)) % x0 = x1; % x1=x2; --> Update % Repeat this step over and over to see if it is converging or not % x2 = x1-f(x1*(x1-x0)/(f(x1-f(x0)) % x0 = x1; % x1=x2; --> Update % MAKE A MAX ITERATION (Choose 101) --> Check to see if it converges % To make it, count each iteration within a loop (for loop to make % sure it doesn't become an infinite loop) % If the algorithm diverges, then flag = 2; % Store the different variables to distinguish them; determine if % they are next to each other; if x1-x0 bounces around or oscillates % between two values, then it diverges (flag 2) % Convergence/Divergence test on functions (Review from prev math % classes) % If x0 less than or equal to x1 and the summation of x1 is % convergence, then x0 is convergent (if greater than, they diverge) % % Notes for Overleaf % How I validated that my program giving accurate calculation % Check to see if f(x) = 0 exists % Check to see if the function is a feasable solution % Program should only return the output variables and should not output or % print anything else % Notes from Riley % Make judgement calls. % Don't have to check if letters are entered or not % All numbers are coming in, no tests % All functions are coming in, no tests % If a and b are bad guesses, it diverges/ don't worry about bad inputs % for a and b % How to detect it converges or not % Use while loop % Stop criteria: abs(b-a)/abs(b) < tol; % Not Converging: if you go 1000 iterations and it's greater than % tol, it diverges % What is a good cap for this? --> Have to defend it in the report % Counting approach is better than going off to infinity % a and b have to be close enough to the root % What to do if root is close or equal to zero: Have to discuss that in % the report. Have a fail safe to stop the program. % Convergence: Superlinear or slightly off of linear % Note: The questions on existence of a root and checking of a solution % os feasible are discssion items for the report and they are not PROGRAM % SPECIFICATIONS: DO NOT CODE THIS. REPORT ON THIS ONLY!!!!!! % Where to get the root: answer, how do you know it is feasible? %% We define a maximum number of iterations, initial error and initial flag max_iters = 500; % 500 iterations error = Inf; % initial error flag = 0; % runs without errors approx =f(a); %% Begin with Secant Method Algorithm n = 1; % iterations counter while error >= tol % execute algorithm while the error is higher than the tolerance     x0 = a;     x1 = b;     x2 = x1 - (x1-x0)*f(x1) / (f(x1)-f(x0)); % calculate x2     aold = a;     bold = b;     % Update     a = x1;     b = x2;     error = abs(b-a)/abs(a);  %% Enable the following line if you want to check the error per iteration % fprintf("Iter = %d, aold = %.4f, bold = %.4f, x2 = %.4f, anew = %.4f, bnew = %.4f, error = %.8f\n", n, aold, bold, x2, a, b, error); % fprintf("Iteration %d, error: %.8f\n", n, error);     % Increment step     n = n + 1;     approx = b;     % If the number if iterations reaches the max. number of iterations     % allowed, it means that the problem did not find a solution     if n >= max_iters         flag = 2;         break;     end end```