ここで数学をテストするために、このコードサンプルを作成しました。
public void testUnit() {
// define two points on a function from t -> %
// the rate of change between these two points
// should have unit %/t
Measure<Double, Dimensionless> p0 = Measure.valueOf(50.0, NonSI.PERCENT);
Measure<Double, Dimensionless> p1 = Measure.valueOf(20.0, NonSI.PERCENT);
Measure<Double, Duration> timeDifference = Measure.valueOf(10.0, SI.SECOND);
// JSR-275 has no Amount, so have to convert and do math ourselves
// these doubles are percents
double p0Raw = p0.doubleValue(NonSI.PERCENT);
double p1Raw = p1.doubleValue(NonSI.PERCENT);
// this duration is in seconds
double timeDifferenceRaw = timeDifference.doubleValue(SI.SECOND);
// this is the slope of the secant between the two points
// so it should be the %/s we want
double rateSecant = (p1Raw - p0Raw) / timeDifferenceRaw;
// let's see what we get
Measure<Double, ?> answer = Measure.valueOf(rateSecant,
NonSI.PERCENT.divide(SI.SECOND));
System.out.println(answer);
}
元の関数が時間 (秒など) を独立変数として持ち、比率 (パーセントなど) を独立変数として持つ場合、時間に関するこの関数の導関数は依然として時間を独立変数として持ちますが、依存として「時間あたりの比率」があります。
はい、比率は無次元なので、これは少し奇妙ですが、日ごとの株価の変化率のグラフと、日ごとの株価の変化率の変化のグラフを想像することができます。一日以上。
では、これは何を出力するのでしょうか?
-3.0 %/s
これは、10 秒間で 50% から 20% に変化した場合の変化率が予想されるものです。
したがって、ユニットの構築は次のようになります。
Unit<?> magicUnit = NonSI.PERCENT.divide(SI.SECOND);
Dimension magicDimension = Dimension.NONE.divide(Dimension.TIME);
System.out.println(magicUnit + " measures " + magicDimension + " ("
+ magicUnit.getDimension() + ")");
確かに、これ%/s measures 1/[T] (1/[T])
は期待どおりに出力されます。
したがって、単位と次元があり、メジャーを作成できます。測定している数量は何ですか? ドキュメントでは、数量について次のように述べています。
個別の数量は通常、物理的な次元が異なります。たとえば、Torque と Energy は同じ次元ですが、性質が異なります (トルクのベクトル、エネルギーのスカラー)。
したがって、頻度は正しい量のように見えますが、実際には、私たちが議論しているように見える意味量を表していません。
最後に、コードの最初の行は機能しません。これは、含まれているモデルで 1/[T] が量 Dimensionless ではなく量 Freqency を測定するためです。したがって、独自の Quantity を作成したくない場合は、Unit を使用してください。探しているディメンションは、正しいスカラー乗数が必要な場合は None/Time、または %/second です。最後に、独自の Quantity を作成するかどうかはあなた次第ですが、これを多くの場所で使用している場合は価値があるかもしれません。
Amount (加算、減算、乗算、除算、pow などのメソッド) が必要であると判断したように見えるため、 JScienceスペースの最新の開発をチェックすることも価値があります。Amount を使用すると、このすべてのディメンション分析を非常に簡単に実行できます。パーセント量からパーセント量を引いて、秒量で割るだけで、単位が計算されます。