-
Notifications
You must be signed in to change notification settings - Fork 1
/
kepler_eq.m
54 lines (41 loc) · 1.26 KB
/
kepler_eq.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
function u = kepler_eq(M, e)
% KEPLER_EQ - Implementa o método de Newton-Raphson para a Equação de
% Kepler, calculando a anomalia excêntrica a partir da anomalia média
% e a excentricidade.
%
% Sintaxe: u = kepler_eq(M, e)
%
% Entradas:
% M - anomalia média em radianos
% e - excentricidade da órbita
%
% Saída:
% u - anomalia excêntrica em radianos
%% Definição de parâmetros:
% n_max - quantidade máxima de iterações do método de Newton Raphson
n_max = 50;
% u_est_init - "chute" inicial da raiz
u_est_init = M;
% toler - tolerância do método
toler = 1e-7;
% n - número atual de iterações realizadas
n = 0;
u_est = u_est_init;
%% Implementação do método de Newton Raphson
while true
% f - diferença entre o valor estimado de M e o M real
f = u_est - e * sin(u_est) - M;
% f_dot - derivada de f
f_dot = 1 - e*cos(u_est);
u_est = u_est - f/f_dot;
n = n + 1;
if abs(f) <= toler
u = u_est;
break
end
if n == n_max
% Imprimir mensagem de erro (número máximo de iterações atingido)
error("O método atingiu o número máximo de iterações e não obteve sucesso em encontrar uma solução para o problema.")
break
end
end