Matlab simple iteration error problem

2 views (last 30 days)
Below is a basic code of finding a root of a function using the Newton Root method. While i set the imax, which is the maximum number of iteration, the final number of iteration running this code has exactly one more than my maximum no. of iterations set. And the no. of iteration is different with the one of the model answer from my teacher. Anyone has an idea why is this? I have exam next week please help.
clear; clc; Fun=@(x)(8-4.5*(x-sin(x))); FunDer=@(x)(-4.5*(1-cos(x))); root=newtonroothaha(Fun,FunDer,2,0.0001,10)
function[Xs]=newtonroothaha(Fun,FunDer,Xest,Err,imax) oerr=100; iteration=0; while (iteration<=imax && oerr>Err) iteration=iteration+1; Xnew=Xest-(Fun(Xest)/FunDer(Xest)); oerr=abs((Xnew-Xest)/Xest); end Xs=Xnew; iact=iteration end

Accepted Answer

Roger Stafford
Roger Stafford on 20 Mar 2015
Your 'newtonroothaha' function has the fatal error that Xest is never replaced by the newly calculated Xnew inside the while loop, so the loop will continue with the same values until the imax limit. Hence the Xs which is returned will be an erroneous root.
The iteration count problem, caused by allowing iteration=imax in the while condition followed by iteration=iteration+1, is a very minor difficulty by comparison.

More Answers (0)

Categories

Find more on Programming in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!