Using a while loop/iterative process to derive a function

I am trying to use Kepler's equation to derive a f where f is a function of E. Here is the problem statement.
My code does not seem to spit out the right answer. I don't believe I'm really deriving the function. Here is my code:
clc;
close all;
clear;
format long e
% Problem 1
nt = 1.047197551 %equal to pi/3 in radians
ep = 0.3
Ei = 0;
iteration_count = 0;
Mi = inf;
while abs(1.047197551-Mi) >= 1e-7
Mi = Ei-0.3*sin(Ei);
Ei = Ei+(1.047197551-Mi)/(1-0.3*cos(Ei));
iteration_count = iteration_count + 1;
end
fprintf('Number of iterations: %d\n', iteration_count)
fprintf('Final value of Mi: %g\n', Mi)
fprintf('Final value of Ei: %g\n', Ei)

답변 (1개)

Krishna Kumar
Krishna Kumar 2019년 3월 21일

0 개 추천

The code yields final value of Ei, and you are essentially using Newton's method to solve the eqn. Do you want the code to print del_E rather? or do you find an error in final value of Ei. Probably you can double check the answer with nonlinear solvers like fsolve in matlab.

카테고리

도움말 센터 및 File Exchange에서 Time Series Events에 대해 자세히 알아보기

제품

릴리스

R2018a

질문:

2019년 3월 21일

답변:

2019년 3월 21일

Community Treasure Hunt

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

Start Hunting!

Translated by