Borrar filtros
Borrar filtros

I wanna end iteration when result cannot be changed anymore.

2 visualizaciones (últimos 30 días)
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

David Sanchez
David Sanchez el 13 de Jun. de 2013
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
sermet
sermet el 13 de Jun. de 2013
I'm working very small numbers like 1.0e-13 also this is not the answer I want.
Bjorn Gustavsson
Bjorn Gustavsson el 13 de Jun. de 2013
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 Numeric Types en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by