When running the code below it seems the while loop is run through once and then executes the commands after the last end statement and ends the program.
I do not understand while the loop doesn’t actually loop until the while loop statement isn't true.
Thank you in advance
function P=fixpointiteration(val)
switch nargin
case 0
disp('0 Chosen input')
x0 = rand;
case 1
disp('1 Chosen input')
x0 = val;
otherwise
error('Unexpected input')
end
disp(x0)
f = @(x0) cos(x0);
i=0;
t = 0.00001;
x1=1;
while abs (x1-x0)>t
i=i+1
x1 = f(x0)
fprintf('x%d = %.8f\n',i,x1)
x0 = x1
end
disp('Number of iterations: ')
disp(i)

回答 (1 件)

Voss
Voss 2022 年 5 月 19 日
編集済み: Voss 2022 年 5 月 19 日

1 投票

The last line inside the while loop:
x0 = x1
sets x0 to x1. Therefore, when the while condition is checked again (which happens immediately), x1 and x0 are equal, so abs(x1-x0) is 0, which is not greater than t, so the loop stops iterating.

1 件のコメント

Mikael Freyhult
Mikael Freyhult 2022 年 5 月 20 日
I moved the x0 = x1 expression to above the x1 = f(x0) expression and now it works.
Thank you!

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

カテゴリ

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

製品

リリース

R2021b

質問済み:

2022 年 5 月 19 日

コメント済み:

2022 年 5 月 20 日

Community Treasure Hunt

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

Start Hunting!

Translated by