1. Not finding help here? Sign up for a free 30min tutor trial with Chegg Tutors
    Dismiss Notice
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


    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: Mar 7, 2007
  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
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?

Similar Discussions: C code, restricted three body
  1. C++ code, the calender (Replies: 2)

  2. Basic C++ Coding? (Replies: 3)

  3. Simple C coding (Replies: 14)