Zo zou je zelf het programmaatje kunnen draaien:
1)Installeer Java op je computer (gratis):
klik
2)Download
dit bestand en
dit bestand (had geen toestemming ze in bijlage te plaatsen).
3)Plaats beide bestanden in éénzelfde map (verander hun naam niet).
4)Dubbelklik 'bereken' en er opent een console waar je invoer kan typen.
Zal waarschijnlijk alleen op Windows werken. Het is mogelijk een GUI te schrijven in Java dat werkt op alle platformen maar dit lijkt me overkill.
Google chrome zal de dowload niet toestaan, het is een ongekend programma. Uiteraard zijn ze niet schadelijk dus best een andere browser gebruiken. Met firefox gaat het maar moet je de download deblokkeren.
Wil je de berekening stoppen, sluit je gewoonweg de console. Je kan zelf invoer kiezen voor de x-coordinaat van de testmassa en het aantal punten per lengte eenheid in het kubische rooster.
Hier de broncode, aangepast om invoer toe te laten:
-
Spoiler: [+]
Code: Selecteer alles
import java.io.*;
public class BolschilStelling {
static int totaalAantalPunten=0;
static double totaleZwaartekrachtX=0;
static double puntDichtheid;
static double tussenAfstand;
static double xTestM;
public static double afstKwadrO(double x, double y, double z){
return (x*x+y*y+z*z);
}
public static double afstKwadrX(double x1, double y1, double z1, double x2){
return ((x1-x2)*(x1-x2)+y1*y1+z1*z1);
}
public static double zwaarteKrachtX(double xPunt, double yPunt, double zPunt){
return (xPunt-xTestM)/Math.pow(afstKwadrX(xPunt,yPunt,zPunt,xTestM), 1.5);
}
public static void main(String[] args){
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
while(true){
System.out.println("Geef het aantal punten per lengte eenheid en druk op enter: ");
try{
puntDichtheid=Double.parseDouble(br.readLine().replace(',', '.'));
}catch(Exception e){
System.out.println("Foute invoer, probeer opnieuw.");
continue;
}
if(puntDichtheid<=0){
System.out.println("Dit moet positief zijn, probeer opnieuw.");
continue;
}
break;
}
tussenAfstand=1/puntDichtheid;
while(true){
System.out.println("Geef de x-coordinaat van de testmassa en druk op enter: ");
try{
xTestM=Double.parseDouble(br.readLine().replace(',', '.'));
}catch(Exception e){
System.out.println("Foute invoer, probeer opnieuw.");
continue;
}
if(Math.abs(xTestM)<=1){
System.out.println("De absolute waarde moet groter dan 1 zijn, probeer opnieuw.");
continue;
}
break;
}
for(double xPunt=-1; xPunt<=1; xPunt+=tussenAfstand){
for(double yPunt=-1; yPunt<=1; yPunt+=tussenAfstand){
for(double zPunt=-1; zPunt<=1; zPunt+=tussenAfstand){
if(afstKwadrO(xPunt,yPunt,zPunt)<=1){
totaalAantalPunten++;
totaleZwaartekrachtX+=zwaarteKrachtX(xPunt,yPunt,zPunt);
}
}
}
System.out.println(Math.round((xPunt+1)/2*1000)/10.0+"%");
}
totaleZwaartekrachtX/=totaalAantalPunten;
System.out.println("Totaal aantal punten binnen de bol: "+totaalAantalPunten);
System.out.println("Totale massa van de puntmassa's: "+1);
System.out.println("Totale zwaartekracht op de testmassa a.g.v. puntmassa's: "+totaleZwaartekrachtX);
System.out.print("Theoretische zwaartekracht op de testmassa a.g.v. homogene bol met massa 1: "+(1.0/xTestM/xTestM*(xTestM>0?-1:1)));
try {
br.readLine();
} catch (IOException e) {
}
}
}
Je leest maar niet verder want je, je voelt het begin van wanhoop.