天天看點

Jakarta Commons——數學計算

Lang     

使用分數

從字元串解析分數

    Fraction fraction = Fraction.getFraction( userInput );

    double value = fraction.doubleValue();

把假分數轉換為真分數的能力

abs()  傳回某個 Fraction 的絕對值

add(Fraction fraction)   把兩個 Fraction 對象相加

subtract(Fraction fraction)   從目前 Fraction 中減去參數

multiplyBy(Fraction fraction)  将參數和目前 Fraction 相乘

divideBy(Fraction fraction)   将目前 Fraction 除以參數

reduce()  将 Fraction 化簡為最小分母

negate()   傳回 -1 * Fraction

invert()   交換分子和分母

getNumerator()   傳回分子值

getDenominator()   傳回分母值

getProperNumerator()   傳回相應真分數的分子

getProperWhole()   傳回相應真分數的數字

pow()   對 Fraction加幂

尋找最大最小值

NumberUtils.max()與NumberUtils.min()方法來從基本類型數組中檢索出最小或最大值

Max類和Min類 統計數組的最值 

          Max maximum = new Max();

          Min minimum = new Min();

          double max = maximum.evaluate( array, 0, array.length );

          double min = minimum.evaluate( array, 0, array.length );

處理數字的範圍

     為變量定義一組可接收的值,并檢測變量是否落在該範圍内。 還可以檢驗某個 Range 中是否包含另一個 Range:containsRange(),或者某個Range是否和另一個Range發生重疊:overlapsRange()

生成随機變量

     使用RandomUtils類生成int float double boolean型随機變量。相比起java的Random類,該方法更加簡單

Math

提供了處理複數、計算統計量、矩陣實作、特殊函數、連分數、數值求根法、插值以及雙變量回歸分析等一系列實用工具。

要擷取有關數學方面更權威的指南,不妨購買一本 Numerical Recipes in C++ 或者Numerical Recipes in C(Cambridge University Press)。

單變量統計量

     利用StatUtils計算 平均值、中值、方差、最小值和最大值

    其他類實作 百分點、幾何平均數、标準差、偏度和峰度

求解線性方程系統

     如求解如下線性方程:

            3x + 20y + 89z = 1324

            4x + 40y + 298z = 2999

            7x - 21y + 0.42z = 2039

      可使用 Commons Math 提供的 RealMatrix和RealMatrixImpl類。它能把這個線性方程系統表示為 Ax=B 的形式,正如圖 8-3 所示。首先把 A 的系數放入一個RealMatrix執行個體中,并把 B 置入一個double[]型數組中。然後調用RealMatrix 上的solve()方法以得到一個double[]型數組,該數組含有所有滿足該線性方程系統的x、y和z值。當方程是不可解的,InvalidMatrixException異常就會被抛出,指出該矩陣是

奇異矩陣。此外,如果 B 的行數不等于 A 的列數,solve()将抛出 InvalidMatrix-Exception 異常。

求解複數

       可使用Math提供的Complex和ComplexMath類來表示複數,并執行對複數的算術操作。ComplexFormat類用于輸出某個複數的實數部分和虛數部分。

在兩個獨立變量間建立關聯

       可将異常資料點添加到一個Commons Math

SimpleRegression

執行個體中。這個類能用于計算斜率、 slope confidence 以及名為 R-square 的相關度。

SimpleRegression

類能對一個獨立變量進行線性二乘回歸分析,并通過向該模型添加異常資料點而求得方程 y =ax + b的參數。

估計剩餘處理時間

       問題:你正在運作一個需很長時間的程式,并需要在結束之前向使用者顯示剩餘時間的估計值。

       解決: 可使用 Commons Math 的

SimpleRegression

以及 Commons Lang 的 StopWatch 來建立一個 ProcessEstimator類,該類可用于預測某個指定程式将在何時結束。你的程式需要處理許多條記錄并将運作好幾個小時,在這種情況下,你會希望提供一些回報資訊。此外,如果确信每個記錄的處理時間都大緻相等,你就可以使用

SimpleRegression

的斜度和截距方法估算出所有記錄将在何時處理完畢。