Matlab simple iteration error problem

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

 Réponse acceptée

Roger Stafford
Roger Stafford le 20 Mar 2015

0 votes

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.

Plus de réponses (0)

Catégories

En savoir plus sur Programming dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by