I wanna end iteration when result cannot be changed anymore.

for example
latitude=atan((Z/P)*(1-(e1*N/(N+h)))^-1)*180/pi
N=((a^2/sqrt((a^2*cos(latitude*pi/180)^2+b^2*sin(latitude*pi/180)^2))))
h=(P/(cos(latitude*pi/180))-N)
latitude_i=atan((Z/P)*(1-(e1*N/(N+h)))^-1)*180/pi
dx=latitude_i-latitude
while dx~=0
%this difference will never be zero but very close to zero. I wanna end iteration when iteration cannot change dx anymore.
do again the above equations
end

 Respuesta aceptada

dx = 5; % set initial value here
% my_threshold = eps; % Floating-point relative accuracy
my_threshold = 0.01; % or whatever value you choose
while dx < my_threshold
latitude=atan((Z/P)*(1-(e1*N/(N+h)))^-1)*180/pi
N=((a^2/sqrt((a^2*cos(latitude*pi/180)^2+b^2*sin(latitude*pi/180)^2))))
h=(P/(cos(latitude*pi/180))-N)
latitude_i=atan((Z/P)*(1-(e1*N/(N+h)))^-1)*180/pi
dx=latitude_i-latitude
end

2 comentarios

I'm working very small numbers like 1.0e-13 also this is not the answer I want.
0.01 and eps should bracket your 1e-13 nicely. Choose the threshold according to your requirements. You could also extend the number of iterations to do a few between your calculations of dx.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Mathematics en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 13 de Jun. de 2013

Community Treasure Hunt

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

Start Hunting!

Translated by