我正在编写一个程序来计算物理学中简单运动方程的剩余变量。我需要有4/6个变量,然后我可以计算其他两个变量的结果。就目前而言,我正在使用一个boolean类型的数组来检测输入了哪个变量,我必须比较每个案例并重新编写三个公式中的一个来解决该变量。这最终导致了大量繁琐的代码。
以下是我的代码中的一个方程式的示例:
if(variableEntered[1] == false && variableEntered[3] == false) {
// calculate final velocity
double fvNumber = getInitialVelocity() + (getAcceleration() * (getFinalTime() - getInitialTime()));
setFinalVelocity(fvNumber);
// calculate final position
double fpNumber = (getInitialPosition() + (getInitialVelocity() * (getFinalTime() - getInitialTime())) +
((0.5 * getAcceleration()) * ((getFinalTime() - getInitialTime()) * (getFinalTime() - getInitialTime()))));
setFinalPosition(fpNumber);
System.out.printf("The final velocity is: %.2f m/s.", getFinalVelocity());
System.out.println();
System.out.printf("The final position is: %.2f meters.", getFinalPosition());
System.out.println();
}
我使用的三个方程是:
Vf = Vi + a(tf - ti)
Xf = Xi + Vi(tf - ti) + (1/2)a(tf - ti)2
Vf2 - Vi2 = 2a(Xf - Xi)
有没有办法缩短或简化实施?使用数组列表会以某种方式工作吗?
答案 0 :(得分:0)
您可以将每个公式分解为自己的方法,并逐步完成每个部分。括号越多,读取的难度就越大。 例如 deltaT = tf-ti; vf = vi + a * deltaT;
如果您使用BigDecimal或Strings或Wrapper Types(如Double),则可以检查null而不是保留布尔数组。
答案 1 :(得分:-1)
您可以将其视为6个变量中的3个等式。在每个步骤中计算完整的梯度/导数,并使用自由变量的偏导数来执行朝向一致状态的牛顿步骤。