在我的逃逸速度程序中调试问题
Debug the issue in my escape velocity program
作业是编写一个输出
的程序
行星半径
行星的质量
逃逸速度
输入是周长和加速度。
对于 2 个输入,我们要使用
- 圆的周长方程计算半径,
- 重力加速度方程计算质量
- 逃逸速度公式计算逃逸速度。
如果我的输入是40075(地球周长)和9.8(加速度),我的输出半径是6378(正确),输出质量是5.97e18(正确输出应该是5.97e24),我的输出逃逸速度是 354(正确的输出是 11184)。
这里是作业说明。
“使用下面的两个方程式(一个给出,一个在 link 中)
equation 1:
a=(G*m)/(r^2)
和
等式 2:参考下面的 link
http://www.softschools.com/formulas/physics/escape_velocity_formula/90/
G是常数(求出)
向用户询问以公里为单位的周长
求m/s^2
中的重力加速度
输出:
- 行星半径(千米)
- 以千克为单位的行星质量(使用等式 1)
- k 中的逃逸速度m/s(使用等式 2)
包括单位和格式
这是我的程序代码。
import java.util.*;
import java.lang.Math;
class Main {
public static void main(String[] args) {
Scanner userInput = new Scanner (System.in);
System.out.println("\nWelcome to the Escape Velocity Application. To begin, please enter the following information below. \nEnter the circumference (km):");
double circum = userInput.nextDouble();
System.out.println("Enter the acceleration due to gravity (m/s^2):");
double a = userInput.nextDouble();
//Gravitational constant
double G = 6.67408e-11;
//Radius
double r = Math.round((circum/2)/Math.PI);
//Mass
double m = Math.round((a*(Math.pow(r,2)))/G);
//Escape Velocity
double e = Math.round(Math.sqrt((2*G*m)/r));
System.out.println("\nThe radius is: "+r+" kilometers.");
System.out.println("\nThe mass is: "+m+" kg.");
System.out.println("\nThe escape velocity is: "+e+" m/s.");
}
}
经典物理错误!当您在物理学中使用任何公式时,请确保您使用的是正确的单位。
您可以接受以公里为单位的天体周长输入,但请确保在计算过程中将其转换为米。记住:x km = x *10^3m
double circum = 40075 * Math.pow(10, 3); // convert km to m
double f = 9.807; //more accurate
double G = 6.67408e-11;
double r = circum/(2*Math.PI);
double m = f*Math.pow(r, 2)/G;
double e = (Math.sqrt((2.0*G*(m))/r));
System.out.println("The radius is: " + r * Math.pow(10, -3) + " kilometers.");
System.out.println("The mass is: " + m + " kg.");
System.out.println("The escape velocity is: " + e + " m/s.");
此代码给出输出:
The radius is: 6378.134344407706 kilometers.
The mass is: 5.981328662579845E24 kg.
The escape velocity is: 11184.843630163667 m/s.
我所做的更改只是将 km 转换为 m,并将 f 更改为更准确的值。还要记住在完成最终计算之前不要四舍五入,这样可以保持最大可能的准确性。
作业是编写一个输出
的程序行星半径
行星的质量
逃逸速度
输入是周长和加速度。
对于 2 个输入,我们要使用
- 圆的周长方程计算半径,
- 重力加速度方程计算质量
- 逃逸速度公式计算逃逸速度。
如果我的输入是40075(地球周长)和9.8(加速度),我的输出半径是6378(正确),输出质量是5.97e18(正确输出应该是5.97e24),我的输出逃逸速度是 354(正确的输出是 11184)。
这里是作业说明。
“使用下面的两个方程式(一个给出,一个在 link 中)
equation 1:
a=(G*m)/(r^2)
和
等式 2:参考下面的 link
http://www.softschools.com/formulas/physics/escape_velocity_formula/90/
G是常数(求出)
向用户询问以公里为单位的周长
求m/s^2
中的重力加速度输出:
- 行星半径(千米)
- 以千克为单位的行星质量(使用等式 1)
- k 中的逃逸速度m/s(使用等式 2)
包括单位和格式
这是我的程序代码。
import java.util.*;
import java.lang.Math;
class Main {
public static void main(String[] args) {
Scanner userInput = new Scanner (System.in);
System.out.println("\nWelcome to the Escape Velocity Application. To begin, please enter the following information below. \nEnter the circumference (km):");
double circum = userInput.nextDouble();
System.out.println("Enter the acceleration due to gravity (m/s^2):");
double a = userInput.nextDouble();
//Gravitational constant
double G = 6.67408e-11;
//Radius
double r = Math.round((circum/2)/Math.PI);
//Mass
double m = Math.round((a*(Math.pow(r,2)))/G);
//Escape Velocity
double e = Math.round(Math.sqrt((2*G*m)/r));
System.out.println("\nThe radius is: "+r+" kilometers.");
System.out.println("\nThe mass is: "+m+" kg.");
System.out.println("\nThe escape velocity is: "+e+" m/s.");
}
}
经典物理错误!当您在物理学中使用任何公式时,请确保您使用的是正确的单位。
您可以接受以公里为单位的天体周长输入,但请确保在计算过程中将其转换为米。记住:x km = x *10^3m
double circum = 40075 * Math.pow(10, 3); // convert km to m
double f = 9.807; //more accurate
double G = 6.67408e-11;
double r = circum/(2*Math.PI);
double m = f*Math.pow(r, 2)/G;
double e = (Math.sqrt((2.0*G*(m))/r));
System.out.println("The radius is: " + r * Math.pow(10, -3) + " kilometers.");
System.out.println("The mass is: " + m + " kg.");
System.out.println("The escape velocity is: " + e + " m/s.");
此代码给出输出:
The radius is: 6378.134344407706 kilometers.
The mass is: 5.981328662579845E24 kg.
The escape velocity is: 11184.843630163667 m/s.
我所做的更改只是将 km 转换为 m,并将 f 更改为更准确的值。还要记住在完成最终计算之前不要四舍五入,这样可以保持最大可能的准确性。