1

私は現在、物理学における単純な運動方程式の残りの変数を計算するプログラムを書いています。4/6 の変数が必要で、残りの 2 つの変数の結果を計算できます。現状では、どの変数が入力されたかどうかを検出するためにブール型の配列を使用しています。それぞれのケースを比較し、その変数を解くために 3 つの式のいずれかを書き直す必要があります。これは、ばかげた量の肥大化したコードで終わっています。

これは、私のコード内の方程式の 1 つの例です。



    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(); 
       }

 

私が使用している3つの方程式は次のとおりです。 Vf = Vi + a(tf - ti) Xf = Xi + Vi(tf - ti) + (1/2)a(tf - ti)2 Vf2 - Vi2 = 2a(Xf - Xi)

これを短縮する方法、または実装を容易にする方法はありますか? 配列リストを使用すると何とか機能しますか?

4

2 に答える 2

-1

これを 6 つの変数の 3 つの方程式として扱うことができます。各ステップで完全な勾配/導関数を計算し、自由変数の偏導関数を使用して、一貫した状態に向かってニュートン ステップを実行します。

于 2014-05-14T11:25:39.147 に答える