Filter löschen
Filter löschen

I wanna end iteration when result cannot be changed anymore.

2 Ansichten (letzte 30 Tage)
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

Akzeptierte Antwort

David Sanchez
David Sanchez am 13 Jun. 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 Kommentare
sermet
sermet am 13 Jun. 2013
I'm working very small numbers like 1.0e-13 also this is not the answer I want.
Bjorn Gustavsson
Bjorn Gustavsson am 13 Jun. 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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Numeric Types finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by