Calculate with initial value
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Jamil Arif
am 15 Mai 2021
Bearbeitet: per isakson
am 2 Jun. 2021
i=1;
Z(i)=1;
while true
Z(i) =1 + B - q.*B.*(((Z(i))-B)./(((Z(i))-B*sigma)*((Z(i))+epsi*B)))-Z(i);
i=i+1;
end
1 Kommentar
Sulaymon Eshkabilov
am 15 Mai 2021
Note that in your set up "while" loop, Z(i) can't be on both sides of the equal sign. Z(i) on the left side has to be Z(i+1).
Akzeptierte Antwort
per isakson
am 16 Mai 2021
There is nothing that terminates the execution of the loop when convergence is reached. Thus, the while-loop will run until the vector, Z, exceeds "Maximum possible array" or something else throws an error.
i=1;
Z(i)=1;
while true
Z(i+1) = 1 + B - q.*B.*(((Z(i))-B)./(((Z(i))-B*sigma)*((Z(i))+epsi*B)));
i = i+1;
end
Replace the loop by
tol = 1e-6;
i = 2;
Z(i) = 1;
Z(i-1) = Z(i)+2*tol;
while abs(Z(i)-Z(i-1)) >= tol
Z(i+1) = 1 + B - q.*B.*(((Z(i))-B)./(((Z(i))-B*sigma)*((Z(i))+epsi*B)));
i = i+1;
end
2 Kommentare
per isakson
am 2 Jun. 2021
Bearbeitet: per isakson
am 2 Jun. 2021
The purpose of
Z(i-1) = Z(i)+2*tol;
is to make sure that
abs(Z(i)-Z(i-1)) >= tol
returns true and thus that the statements in the while-loop are executed for i equal to 2. Try to execute the code without it.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!