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)

Antworten (1)

Voss
Voss am 19 Mai 2022
Bearbeitet: Voss am 19 Mai 2022

1 Stimme

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 Kommentar

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

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Programming finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2021b

Gefragt:

am 19 Mai 2022

Kommentiert:

am 20 Mai 2022

Community Treasure Hunt

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

Start Hunting!

Translated by