話不多說直接上代碼
/** * 數學相關計算工具類 * @author gjs * */ public class MathUtil { /** * 傳入一個數列x計算平均值 * @param x * @return 平均值 */ public static double average(double[] x) { int n = x.length; //數列元素個數 double sum = 0; for (double i : x) { //求和 sum+=i; } return sum/n; } /** * 傳入一個數列x計算方差 * 方差s^2=[(x1-x)^2+(x2-x)^2+......(xn-x)^2]/(n)(x為平均數) * @param x 要計算的數列 * @return 方差 */ public static double variance(double[] x) { int n = x.length; //數列元素個數 double avg = average(x); //求平均值 double var = 0; for (double i : x) { var += (i-avg)*(i-avg); //(x1-x)^2+(x2-x)^2+......(xn-x)^2 } return var/n; } /** * 傳入一個數列x計算標准差 * 標准差σ=sqrt(s^2),即標准差=方差的平方根 * @param x 要計算的數列 * @return 標准差 */ public static double standardDiviation(double[] x) { return Math.sqrt(variance(x)); }