java calculate the variance, standard deviation (mean square error)

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     }

 

Guess you like

Origin www.cnblogs.com/lpp-xjj/p/11417408.html