I wanna end iteration when result cannot be changed anymore.
1 回表示 (過去 30 日間)
古いコメントを表示
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
0 件のコメント
採用された回答
David Sanchez
2013 年 6 月 13 日
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 件のコメント
Bjorn Gustavsson
2013 年 6 月 13 日
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.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!