How do I solve Kepler's equation for E using fzero?

I am required to do an assignment in which I need to do just that and I can't figure it out. Equation is:
M=E-e*sin(E)
M, e, and E are all variables.
I need to use fzero to create a script that will solve it for E when I input M and e. It should look something like Kepler(1,2) in the command window for example. Any help would be great thanks alot

5 commentaires

Is abs(e) greater than Pi/2 or less than Pi/2 ?
For e >= Pi/2, there are multiple solutions for E. For any given positive integer N, if P > (N+1/2)*Pi then there are at least N real-valued solutions for some values of E (there may be 1 or 2 fewer solutions for other values of E; the number of solutions will be periodic with E -- a larger E will just push the solutions further positive but they will still exist.)
James Tursa
James Tursa le 30 Août 2017
Modifié(e) : James Tursa le 30 Août 2017
@Walter: 0 <= e < 1
We don't know that, James. We are only told that e is a variable.
James Tursa
James Tursa le 30 Août 2017
Modifié(e) : James Tursa le 30 Août 2017
@Walter: It is true that OP did not tell you that, but I know that Kepler's equation is used for elliptical orbits. So I was just filling in a detail that OP did not mention.
https://en.wikipedia.org/wiki/Kepler%27s_equation

Connectez-vous pour commenter.

 Réponse acceptée

James Tursa
James Tursa le 30 Août 2017
Modifié(e) : James Tursa le 30 Août 2017
To use fzero, you first need to form an equation with 0 on one side. So this equation:
M = E - e * sin(E)
becomes this equation:
0 = E - e * sin(E) - M
Then set up your known values:
e = something
M = something
Then form a function handle for the equation that you want to be 0 as a function of what you want to solve for, which is E in this case:
kepler_equation = @(E) E - e * sin(E) - M
Then it is just a matter of calling fzero with this function handle and an initial guess. E.g., you could use M as the initial guess. I will leave that part for you to figure out. Look at the doc for fzero to see how to call it.
If you are creating a function that outputs E given e and M, then the outline of that function would be this in a file called Kepler.m:
% E = Kepler(e,M) solves Kepler's equation, E and M are in radians
function E = Kepler(e,M)
% form the function handle here <-- you insert this code
% call fzero here <-- you insert this code
return
end
The code you insert above will be based on the advice I gave you above.

Plus de réponses (0)

Catégories

En savoir plus sur MATLAB dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by