1. Engineering
  2. Computer Science
  3. write a function mfile that implements the secant method your...

Question: write a function mfile that implements the secant method your...

Question details

Write a function m-file that implements the secant method. Your function should accept the following inputs (in order):

  1. A function defining the roots problem
  2. A vector of two initial guesses (first element is the first guess, second element is second guess)
  3. A stopping criterion ( es ) for the numerical solution with a default value of 1e-5
  4. A maximum iteration count for the numerical solution with a default value of 30
  5. An arbitrary number of parameter values associated with the roots problem

Your function should output the following four scalar outputs (in order):

  1. The root estimate
  2. The residual in the numerical solution
  3. The approximate relative error in the numerical solution
  4. The number of iterations required for convergence

I recommend you use the examples newtonraphson.m and/or bisect_param.m as starting points from which you develop your own function mfile for the secant method.

Note: Test cases 3, 4, and 5 test the functionality of the default values for unspecified inputs and the parameter passing through varargin.

****here is my code so far...Please help

function [xroot,residual,ea,iter_count] = student_solution(fun,xi,es,max_it,varargin)

if nargin < 2, error('Two few inputs, read help comments'), end

if nargin<3||isempty(es), es=1e-5;end

if nargin<4||isempty(max_it), max_it=30;end

xroot = xi; %initial guesses

for iter = 1:max_it

xr_old = xroot;

xr_older = xr_old;

xroot = xr_old - (fun(xr_old,varargin{:}).*(xr_older-xr_old))./(fun(xr_older,varargin{:}-fun(xr_old,varargin{:})));

if xroot ~= 0, ea = (xroot-xr_old)./xroot; end

if abs(ea) <= es, break, end

iter_count= max_it;

end

Solution by an expert tutor
Blurred Solution
This question has been solved
Subscribe to see this solution