1

簡単な質問。情報付きの10000行を取得しました。各行に2つの値があります。行の形式は:(時間、水速)です。数値積分を使用してセンサーを通過した水量を解決したいのですが、Javaでこれを解決する方法に非常に混乱しています。

グラフはいいと思いますが、グラフィカルである必要はないので、配列リストでうまくいくかもしれません。

ヒント、ヒント、コツをいただければ幸いです。

4

2 に答える 2

1

これには台形則を使用できます。間隔を時間で並べ替えてから、次のように合計を計算します。

// assume that time is expressed using some class
Time[] time = ...
// assume that the water speed is double, expressed in volume per unit of time.
// Further assume that Time units match the units in the denominator of water speed,
// e.g. if the speed is in galons per minute, then the time unit is minutes;
// if the speed is in galons per second, then the time unit is seconds, and so on
double[] speed = ...

double sum = 0;
for (int i = 0 ; i < time.length-1 ; i++) {
    double deltaT = time[i+1].subtract(time[i]).toTimeUnits();
    // This is the formula for the trapezoidal rule on non-uniform grid
    sum += (speed[i]+speed[i+1])*deltaT;
}
double totalFlow = sum / 2;
于 2013-03-18T12:21:30.530 に答える
0

そのデータが (時間、速度) のペアとして既にあり、一定期間の総フローを積分したい場合は、数値積分 (Euler、Simpson、Runga-Kutta など) を使用しないのはなぜですか? 値を読み取り、それらを統合ルーチンにフィードすれば完了です。

おそらく、 Apache Commons Mathが出発点として適しているでしょう。

グラフィック表現は素晴らしく、数値結果を適切にチェックできますが、必須ではありません。

于 2013-03-18T12:18:42.360 に答える