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

 採用された回答

Roger Stafford
Roger Stafford 2015 年 3 月 20 日

0 投票

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.

1 件のコメント

Pei Ying
Pei Ying 2015 年 3 月 20 日
thank you very much!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeProgramming についてさらに検索

質問済み:

2015 年 3 月 20 日

コメント済み:

2015 年 3 月 20 日

Community Treasure Hunt

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

Start Hunting!

Translated by