Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

C code, restricted three body

  1. Mar 7, 2007 #1
    1. The problem statement, all variables and given/known data

    http://www2.warwick.ac.uk/fac/sci/physics/teach/module_home/px270/projects/c4s_projects07.pdf [Broken]

    it's the first example

    2. Relevant equations
    see above

    3. The attempt at a solution

    right i shouldn't have any probs with the programming but i need to understand the calcs that are put on the site..

    as i understand i'm suppose to the first eqn to find a,, then usign the second eqn to find rn+1.. this is done in components so for x and y..

    but i tried it for a third mass that is at x=0 and y=positive integer(both the stationary massses are of equal magnitude).. what should happen is that it should be attracted and just go towards negative integers but I get acceleration in x direction.. ((note the printf function are just there for me to see some stuff))..

    could someone maybe see where i've gone wrong and maybe give me som pointers:

    here is the code:

    #include <stdlib.h>
    #include <stdio.h>
    #include <math.h>

    main(int argc, char* argv[])
    float x[101], y[101], mneg, mnegm, mpos, rpnx, rpny, rppx, rppy, ax[101], ay[101], xzero, yzero, vxzero, vyzero, dt;
    int n;
    FILE *output;

    output = fopen("data.dat", "w");

    sscanf(argv[1], "%f", &mneg);
    sscanf(argv[2], "%f", &mpos);
    sscanf(argv[3], "%f", &xzero);
    sscanf(argv[4], "%f", &yzero);
    sscanf(argv[5], "%f", &vxzero);
    sscanf(argv[6], "%f", &vyzero);

    dt = 0.005;
    x[0] = xzero;
    y[0] = yzero;
    x[1] = xzero + vxzero*dt;
    y[1] =yzero + vyzero*dt;
    rpnx= -1;
    rpny= 0;
    rppx= 1;
    rppy= 0;
    printf("%f %f\n", x[1], y[1]);

    for(n=1; n < 100; ++n)

    fprintf(output, "%f %f\n", x[n+1],y[n+1]);

    printf("%f %f", ax[1], ay[1]);


    edit: note that the first mass is inputted as a "negative mass" for the equation to work..
    also a wird problem if setting inital velocities to zero then the third mass doesn't move at ll which it should
    Last edited by a moderator: May 2, 2017
  2. jcsd
  3. Mar 7, 2007 #2
    Nothing appears when I open the web page...
  4. Mar 8, 2007 #3


    User Avatar
    Science Advisor
    Homework Helper

    The attachment worked for me though it was a bit slow to open.

    You seem to have misunderstood equation (1) in the attachment. The |r+r_p|^3 and |r-r_p|^3 terms are not vectors. |r+r_p| is the scalar length of the vector r+r_p.
    Last edited: Mar 8, 2007
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook