Программа работает очень медленно особенно для земли и солнца, все время пишет один и тот же результат, есть возможность ее оптимизировать?
Задача : Сатурн и Земля находятся далеко от звезд, на них не действуют ни какие силы кроме силы притяжения. Через какое время Земля и Сатурн столкнутся если растояние между ними 1.2 * 10 ^9 км
код :
package ru.vassaev.mark;
import java.math.*;
class Body{
private float m1;
public float getM() {
return m1;
}
public void setM(float m1) {
this.m1 = m1;
}
float S(float m2,float R,float dt){
float G = (float) (6.67 * Math.pow(10,-11));
float a = (G * m2/((float)Math.pow(R,2)));
float S = ((a * dt * dt )/2);
return S;
}
}
public class CerezKakoeVremyaZemlyaUpadetNaSaturn {
public static void main(String[] args) {
Body Земля = new Body();
Земля.setM((float) (5.9736 * (float) Math.pow(10,24)));
Body Сатурн = new Body();
Сатурн.setM((float) (2 * Math.pow(10,26)));
float R = 150 * (float) Math.pow(10,9);
float dt = (float)0.001;
float t = 0;
while (R >= 0.001){
R = R - Земля.S(Сатурн.getM(),R,dt) - Сатурн.S(Земля.getM(),R,dt );
t+=dt;
System.out.println(R);
}
System.out.println(t);
}
}
Задача : Сатурн и Земля находятся далеко от звезд, на них не действуют ни какие силы кроме силы притяжения. Через какое время Земля и Сатурн столкнутся если растояние между ними 1.2 * 10 ^9 км
код :
package ru.vassaev.mark;
import java.math.*;
class Body{
private float m1;
public float getM() {
return m1;
}
public void setM(float m1) {
this.m1 = m1;
}
float S(float m2,float R,float dt){
float G = (float) (6.67 * Math.pow(10,-11));
float a = (G * m2/((float)Math.pow(R,2)));
float S = ((a * dt * dt )/2);
return S;
}
}
public class CerezKakoeVremyaZemlyaUpadetNaSaturn {
public static void main(String[] args) {
Body Земля = new Body();
Земля.setM((float) (5.9736 * (float) Math.pow(10,24)));
Body Сатурн = new Body();
Сатурн.setM((float) (2 * Math.pow(10,26)));
float R = 150 * (float) Math.pow(10,9);
float dt = (float)0.001;
float t = 0;
while (R >= 0.001){
R = R - Земля.S(Сатурн.getM(),R,dt) - Сатурн.S(Земля.getM(),R,dt );
t+=dt;
System.out.println(R);
}
System.out.println(t);
}
}