# Homework Help: Modeling Motion of Earth with Matlab using ODE45

1. Dec 12, 2015

### PhysSci1

1. The problem statement, all variables and given/known data
So I am trying to model the motion of the Earth around the Sun using ode45. I modeled this using an euler-cromer scheme, but I would like to get familiar with using a solver. I wrote the code for an Euler-cromer and it worked just fine. However, when I try to use the same equation that I derived for acceleration in the Euler scheme in the ODE, I get errors. I think it is because I am not quite sure how the inputs work for ODE. I have tried to figure it out by looking through resources on the internet, but I just can't figure it out.

2. Relevant equations
The equation I used was the vector form of acceleration of a mass due to another mass. This equation in matlab is

-G * Msun * R / (sum(R.*R)^(3/2)) where R = Psun - Current position (as vectors, [x y] - [x y]).

3. The attempt at a solution

This is my attempt, which provides this error:

In an assignment A(:) = B, the number of elements in A and B
must be the same.

Error in orbit (line 10)
dp(2) = -G * Msun * R / (sum(R.*R)^(3/2));

My function:
G = 6.673E-11/(1000^3);

Psun = [0 0];

Msun=1.988e30;

R = Psun - P(2);

M = 1.98892E30;

dp = zeros(2,2);

dp(1)= P(2);

dp(2) = -G * Msun * R / (sum(R.*R)^(3/2));

How I call it:

[T,Y] = ode45(@Orbit,[0, 3.15581e7],[1.5e8, 0, 0, 29.75]);

2. Dec 13, 2015

### Staff: Mentor

The problem you have has for degrees of freedom: $x, y, \dot{x}, \dot{y}$. Your function is set up with only 2. It need to be able to take in a vector y of length 4, containing the 4 dof, and return a vector y' of length 4 also.