Calculate with initial value

26 visualizzazioni (ultimi 30 giorni)
Jamil Arif
Jamil Arif il 15 Mag 2021
Modificato: per isakson il 2 Giu 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 Commento
Sulaymon Eshkabilov
Sulaymon Eshkabilov il 15 Mag 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).

Accedi per commentare.

Risposta accettata

per isakson
per isakson il 16 Mag 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 Commenti
Jamil Arif
Jamil Arif il 2 Giu 2021
Z(i-1) = Z(i)+2*tol;
what is the function for this part of the eqn
per isakson
per isakson il 2 Giu 2021
Modificato: per isakson il 2 Giu 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.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Prodotti


Release

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by