2015-07-29 15 views
8

sto dato questo codice di base:Come calcolare la posizione di un oggetto dopo la caduta libera per 10 secondi

public class GravityCalculator { 
    public static void main(String[] args) { 
     double gravity = -9.81; //Earth's gravity in m/s^2 
     double initialVelocity = 0.0; 
     double fallingTime = 10.0; 
     double initialPosition = 0.0; 
     double finalPosition = 0.0; 
     System.out.println("The object's position after " + fallingTime + " seconds is " + finalPosition+ "m"); 
     // the output is The object's position after 10.0 seconds is 0.0m 
    } 
} 

E mi hanno detto di modificare il programma per calcolare la posizione di un oggetto che cade per 10 secondi, utilizzando questa formula:

x(t) = 0.5 * at^2 + v(t) + x 
a = acceleration = -9.81 m/s 
t = time (in seconds) = 10 
v = initial velocity 
x = initial position 

ho provato e riprovato, ma la risposta che ottengo è 4811.805000000001, ma a quanto pare la risposta corretta è -490.5m.

Questo è il mio tentativo:

public class GravityCalculator2 { 
    public static void main(String[] args) { 
     double gravity = -9.81; 
     double fallingTime = 10; 
     double initialVelocity = 0.0; 
     double initialPosition = 0.0; 
     double x; 
     x = (0.5 * ((gravity * fallingTime) * (gravity * fallingTime)) 
      + (initialVelocity * fallingTime) + (initialPosition)); 
     System.out.println(x); 
    } 
} 

Che cosa ho fatto di sbagliato?

+0

Puoi pubblicare il tuo codice di calcolo in modo che possiamo vedere dove stai andando male? – Aderis

+5

Hai quadrato la costante gravitazionale, questo è ciò che hai sbagliato. –

risposta

2

Il motivo per cui si ottiene il 4811 è perché si sta quadrando sia l'accelerazione dovuta alla gravità che il tempo nel primo mandato. Si suppone che si debba quadrare il tempo e quindi moltiplicarlo per l'accelerazione dovuta alla gravità e 0,5. Ricorda il tuo ordine di operazioni. Inoltre, l'accelerazione dovuta alla gravità è negativa, quindi dovresti avere -9,81 invece di 9,81.

7

È codificato lo sbagliata formula:

x(t) = 0.5 * at^2 + v(t) + x 

è quello che si è iniziato con, ma è codificato su:

x(t) = 0.5 * (at)^2 + v(t) + x 

Ordine delle operazioni è importante!

24

Stai codice sta valutando questa equazione:

x (t) = 0.5 * (at) + v (t) + x

quando dovrebbe da valutare:

x (t) = 0.5 * bis (t) + v (t) + x

La normale comprensione della notazione matematica è che l'esponenziazione si lega più strettamente della moltiplicazione.

Problemi correlati