apache commons Math : java 科学计算

apache commons Math是一组偏向科学计算为主的函数,主要是针对线性代数,数学分析,概率和统计等方面。

packagetest.ffm83.commons.math;

importorg.apache.commons.math3.linear.Array2DRowRealMatrix; 

import org.apache.commons.math3.linear.LUDecomposition; 

importorg.apache.commons.math3.linear.RealMatrix; 

importorg.apache.commons.math3.stat.descriptive.moment.GeometricMean; 

importorg.apache.commons.math3.stat.descriptive.moment.Kurtosis; 

importorg.apache.commons.math3.stat.descriptive.moment.Mean; 

importorg.apache.commons.math3.stat.descriptive.moment.Skewness; 

importorg.apache.commons.math3.stat.descriptive.moment.StandardDeviation; 

importorg.apache.commons.math3.stat.descriptive.moment.Variance; 

import org.apache.commons.math3.stat.descriptive.rank.Max; 

importorg.apache.commons.math3.stat.descriptive.rank.Min; 

importorg.apache.commons.math3.stat.descriptive.rank.Percentile; 

importorg.apache.commons.math3.stat.descriptive.summary.Product; 

importorg.apache.commons.math3.stat.descriptive.summary.Sum; 

importorg.apache.commons.math3.stat.descriptive.summary.SumOfSquares;

 

/**

 * 简单使用commons Math方法

 * @author 范芳铭

 */

public class MathUsage {

     public static void main(String[] args) { 

        double[] values = new double[] { 0.33, 1.33,0.27333, 0.3, 0.501, 

                0.444, 0.44, 0.34496, 0.33,0.3, 0.292, 0.667 }; 

        Min min = new Min(); 

        Max max = new Max(); 

         

        Mean mean = new Mean(); // 算术平均值 

        Product product = new Product();//乘积 

        Sum sum = new Sum(); 

        Variance variance = new Variance();//方差 

        System.out.println("min: " +min.evaluate(values)); 

        System.out.println("max: " +max.evaluate(values)); 

        System.out.println("mean: " +mean.evaluate(values)); 

        System.out.println("product:" + product.evaluate(values)); 

        System.out.println("sum: " +sum.evaluate(values)); 

        System.out.println("variance:" + variance.evaluate(values)); 

 

        Percentile percentile = newPercentile(); // 百分位数 

        GeometricMean geoMean = newGeometricMean(); // 几何平均数,n个正数的连乘积的n次算术根叫做这n个数的几何平均数 

        Skewness skewness = new Skewness(); //Skewness(); 

        Kurtosis kurtosis = new Kurtosis(); //Kurtosis,峰度 

        SumOfSquares sumOfSquares = newSumOfSquares(); // 平方和 

        StandardDeviation StandardDeviation =new StandardDeviation();//标准差 

        System.out.println("80 percentilevalue: " 

                + percentile.evaluate(values,80.0)); 

        System.out.println("geometricmean: " + geoMean.evaluate(values)); 

        System.out.println("skewness:" + skewness.evaluate(values)); 

        System.out.println("kurtosis:" + kurtosis.evaluate(values)); 

        System.out.println("sumOfSquares:" + sumOfSquares.evaluate(values)); 

       System.out.println("StandardDeviation: " +StandardDeviation.evaluate(values)); 

         

       System.out.println("-------------------------------------"); 

        // Create a real matrix with two rowsand three columns 

        double[][] matrixData = { {1d,2d,3d},{2d,5d,3d}}; 

        RealMatrix m = newArray2DRowRealMatrix(matrixData); 

        System.out.println(m); 

        // One more with three rows, twocolumns 

        double[][] matrixData2 = { {1d,2d},{2d,5d}, {1d, 7d}}; 

        RealMatrix n = newArray2DRowRealMatrix(matrixData2);         

        // Note: The constructor copies  the input double[][] array.          

        // Now multiply m by n 

        RealMatrix p = m.multiply(n); 

       System.out.println("p:"+p); 

       System.out.println(p.getRowDimension());    // 2 

       System.out.println(p.getColumnDimension()); // 2          

        // Invert p, using LUdecomposition 

        RealMatrix pInverse = newLUDecomposition(p).getSolver().getInverse(); 

        System.out.println(pInverse); 

    } 

}

运行结果如下:

min: 0.27333

max: 1.33

mean: 0.46269083333333333

product: 2.3429343978460972E-5

sum: 5.552289999999999

variance: 0.08757300031742428

80 percentile value: 0.5674000000000001

geometric mean: 0.4112886050879374

skewness: 2.670095445623868

kurtosis: 7.718241303328169

sumOfSquares: 3.5322966905000004

StandardDeviation: 0.2959273564870681

-------------------------------------

Array2DRowRealMatrix{{1.0,2.0,3.0},{2.0,5.0,3.0}}

p:Array2DRowRealMatrix{{8.0,33.0},{15.0,50.0}}

2

2

Array2DRowRealMatrix{{-0.5263157895,0.3473684211},{0.1578947368,-0.0842105263}}

 

 

package com;

import org.apache.commons.lang.math.Range;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.math3.stat.StatUtils;
import org.apache.commons.math3.stat.descriptive.moment.StandardDeviation;
import org.apache.commons.math3.stat.descriptive.rank.Median;

/*
 * @description:简单的数据统计分析
 * */

public class MathYsf {
    public static void main(String[] args){
        double[] values = new double[] { 0.33, 1.33,0.27333, 0.3, 0.501,  
                0.444, 0.44, 0.34496, 0.33,0.3, 0.292, 0.667 }; 
        double[] values2 = new double[] { 0.89, 1.51,0.37999, 0.4, 0.701,  
                0.484, 0.54, 0.56496, 0.43,0.3, 0.392, 0.567 };
        
        //计数
        System.out.println("计算样本个数为:" +values.length);
        //mean--算数平均数
        System.out.println("平均数:" + StatUtils.mean(values));
        //sum--和
        System.out.println("所有数据相加结果为:" + StatUtils.sum(values));
        //max--最小值
        System.out.println("最小值:" + StatUtils.min(values));
        //max--最大值
        System.out.println("最大值:" + StatUtils.max(values));
        //范围
        System.out.println("范围是:" + (StatUtils.max(values)-StatUtils.min(values)));
        //标准差  
        StandardDeviation standardDeviation =new StandardDeviation();
        System.out.println("一组数据的标准差为:" + standardDeviation.evaluate(values));
        //variance--方差
        System.out.println("一组数据的方差为:" + StatUtils.variance(values));
        //median--中位数
        Median median= new Median();
        System.out.println("中位数:" + median.evaluate(values));
        //mode--众数
        double[] res = StatUtils.mode(values);
        System.out.println("众数:" + res[0]+","+res[1]);
        for(int i = 0;i<res.length;i++){
            System.out.println("第"+(i+1)+"个众数为:"+res[i]);
            }
        //geometricMean--几何平均数
        System.out.println("几何平均数为:" +StatUtils.geometricMean(values));
        //meanDifference-- 平均差,平均概率偏差
        System.out.println("平均差为:"+StatUtils.meanDifference(values, values2));
        //normalize--标准化
        double[] norm = StatUtils.normalize(values2);
        for(int i = 0;i<res.length;i++){
            System.out.println("第"+(i+1)+"个数据标准化结果为:" + norm[i]);
            }
        //percentile--百分位数
        System.out.println("从小到大排序后位于80%位置的数:" + StatUtils.percentile(values, 70.0));
        //populationVariance--总体方差 
        System.out.println("总体方差为:" + StatUtils.populationVariance(values));
        //product--乘积  
        System.out.println("所有数据相乘结果为:" + StatUtils.product(values));
        //sumDifference--和差
        System.out.println("两样本数据的和差为:" + StatUtils.sumDifference(values,values2));
        //sumLog--对数求和
        System.out.println("一组数据的对数求和为:" + StatUtils.sumLog(values));
        //sumSq--计算一组数值的平方和
        System.out.println("一组数据的平方和:" + StatUtils.sumSq(values));
        //varianceDifference --方差差异性。
        System.out.println("一组数据的方差差异性为:" + StatUtils.varianceDifference(values,values2,StatUtils.meanDifference(values, values2)));
    }    
}

 

posted on 2019-02-18 16:40  煮过的花朵  阅读(5192)  评论(0编辑  收藏  举报

导航