2014-05-14 7 views
1

저는 현재 물리학에서 간단한 기구학 방정식의 나머지 변수를 계산하는 프로그램을 작성하고 있습니다. 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

왜 'ArrayList'가 도움이 될 것이라고 생각하십니까? – awksp

답변

0
  1. BigDecimal을 사용하면 정밀도가 떨어지고 그로 인한 잘못된 답변을 피할 수 있습니다.
  2. 각 공식을 고유 한 방법으로 분해하고 각 부분을 단계별로 수행 할 수 있습니다. 괄호가 많을수록 읽는 것이 더 어려워집니다. 예 : deltaT = tf-ti; vf = vi + a * deltaT;

  3. Double과 같은 BigDecimal 또는 Strings 또는 Wrapper Types를 사용하는 경우 부울 배열을 유지하는 대신 null을 확인할 수 있습니다.

-1

6 개의 변수로 3 개의 방정식으로 처리 할 수 ​​있습니다. 각 단계에서 전체 기울기/파생 값을 계산하고 자유 변수의 편도 함수를 사용하여 일관된 상태로 뉴턴 단계를 수행합니다.