Calculate with initial value

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 comentario

Sulaymon Eshkabilov
Sulaymon Eshkabilov el 15 de Mayo de 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).

Iniciar sesión para comentar.

 Respuesta aceptada

per isakson
per isakson el 16 de Mayo de 2021

1 voto

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 comentarios

Jamil Arif
Jamil Arif el 2 de Jun. de 2021
Z(i-1) = Z(i)+2*tol;
what is the function for this part of the eqn
per isakson
per isakson el 2 de Jun. de 2021
Editada: per isakson el 2 de Jun. de 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.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Productos

Versión

R2021a

Preguntada:

el 15 de Mayo de 2021

Editada:

el 2 de Jun. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by