Why is the Third Mass Moving in the X Direction?

AI Thread Summary
The discussion revolves around understanding the calculations for simulating the movement of a third mass influenced by two stationary masses of equal magnitude. The user is attempting to implement equations from a provided resource but is encountering issues with unexpected acceleration in the x-direction instead of the anticipated movement towards negative integers. There is confusion regarding the interpretation of the equations, particularly the treatment of vector magnitudes versus scalar lengths. Additionally, the user's initial velocity settings lead to the third mass remaining stationary, which contradicts expectations. Clarification on the equations and their application is necessary for accurate simulation results.
Pixter
Messages
29
Reaction score
0

Homework Statement

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

it's the first example

Homework Equations


see above

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)
{
ax[n]=-mneg*((x[n]+rpnx)/(sqrt(pow((x[n]+rpnx),6))))-mpos*((x[n]-rppx)/(sqrt(pow((x[n]-rppx),6))));
ay[n]=-mneg*((y[n]+rpny)/(sqrt(pow((y[n]+rpny),6))))-mpos*((y[n]-rppy)/(sqrt(pow((y[n]-rppy),6))));

x[n+1]=((ax[n])*pow(dt,2))-(x[n-1])+2*(x[n]);
y[n+1]=((ay[n])*pow(dt,2))-(y[n-1])+2*(y[n]);
fprintf(output, "%f %f\n", x[n+1],y[n+1]);

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

fclose(output);
}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:
Physics news on Phys.org
Nothing appears when I open the web page...
 
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:

Similar threads

Replies
2
Views
4K
Replies
7
Views
1K
Replies
3
Views
1K
Replies
3
Views
2K
Replies
1
Views
2K
Replies
4
Views
2K
Replies
1
Views
4K
Back
Top