java calculated standard deviation ideas
1 //方差s^2=[(x1-x)^2 +...(xn-x)^2]/n 或者s^2=[(x1-x)^2 +...(xn-x)^2]/(n-1) 2 public static double Variance(double[] x) { 3 int m=x.length; 4 double sum=0; 5 for(int i=0;i<m;i++){//求和 6 sum+=x[i]; 7 } 8 double dAve=sum/m;//求平均值 9 double dVar=0; 10 for(int i=0;i<m;i++){// find the variance . 11 DVAR + = (X [I] -Dave) * (X [I] - Dave); 12 is } 13 is return DVAR / m; 14 } 15 16 // standard deviation = sqrt [sigma] (S ^ 2) . 17 public static Double StandardDiviation ( Double [] X) { 18 is int m = x.length; . 19 Double SUM = 0 ; 20 is for ( int I = 0; I <m; I ++) { // sum 21 is SUM + = X [I ]; 22 } 23 Double Dave = SUM / m; // averaging 24 Double DVAR = 0 ; 25 for ( int I = 0; I <m; I ++) { // find the variance 26 is DVAR + = (X [I] -Dave) * ( X [I] - Dave); 27 } 28 // reture the Math.sqrt (DVAR / (. 1-m)); 29 return the Math.sqrt (DVAR / m); 30 }
1 //BigDecimal 的sqrt方法 2 private static BigDecimal sqrt(BigDecimal num) { 3 if (num.compareTo(BigDecimal.ZERO) < 0) { 4 return BigDecimal.ZERO; 5 } 6 7 BigDecimal x = num.divide(new BigDecimal("2"), MathContext.DECIMAL128); 8 while (x.subtract(x = sqrtIteration(x, num)).abs().compareTo(new BigDecimal("0.0000000000000000000001")) > 0) ; 9 return x; 10 } 11 12 private static BigDecimal sqrtIteration(BigDecimal x, BigDecimal n) { 13 return x.add(n.divide(x, MathContext.DECIMAL128)).divide(new BigDecimal("2"), MathContext.DECIMAL128); 14 }