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的斜度和截距方法估算出所有記錄将在何時處理完畢。