java編程求和、平均值、方差、標准差


這里實現了java編程求和、平均值、方差、標准差,求標准差的時候使用到了java提供的方法求算術平方根。

改天利用算法自己編寫一個算術平方根,先貼上以上幾種求法,方法的復用性和拓展性就不寫了---這里只有求平均數兩種情況的方法寫了。

package com.math;

/**
 * 
 * @author cisco lee
 * @version 1.0
 * Mathematical Analysis Encyclopedia
 * {@link https://baike.baidu.com/item/%E6%95%B0%E5%AD%A6%E5%88%86%E6%9E%90/3123?fr=aladdin}
 * 
 * 
 */
public class MathAnalyse {
    public static void main(String[] args) {
        AddThread addobject = new AddThread();
        Avg avgobject = new Avg();
        Variance varobject = new Variance();
        StandardDeviation standardobject = new StandardDeviation();
        double []a = new double[5];
        System.out.println("all a[i]:");
        for (int i = 0; i <a.length; i++) {
            a[i]=i+2;//2,3,4,5,6
            System.out.print(a[i]+" ");
        }
        System.out.println();
        double sum = addobject.add(a);
        double average = avgobject.avg(sum,5);
        double var = varobject.populationVariance(a, average);
        standardobject.standardDeviation(var);
        addobject.start();
        avgobject.start();
        varobject.start();
        standardobject.start();    
    }
}

//this is a class of summation methods.
class AddThread extends Thread {
    double thisresult=0;
    public double add(double []result){
        for (int i = 0; i <result.length; i++) {
            thisresult=result[i]+thisresult;
        }
        return thisresult;
    }
    public void run() {
        // TODO Auto-generated method stub
        System.out.println("sum:"+thisresult);
    }
}

//This is a class of averaging methods.
class Avg extends Thread{
    double avg=0;
    public double avg(double sum,int num){
        avg = sum/num;
        return avg;
    }
    public double avg(double[]sum){
        for (int i = 0; i < sum.length; i++) {
            avg = sum[i]+avg;
        }
        return avg;
    }
    public void run() {
        // TODO Auto-generated method stub
        System.out.println("average:"+avg);
    }
}

//Calculation variance #求方差
class Variance extends Thread{
    double variance=0;
    /**
     * This is a method of calculating variance to know of the population sample。 #這是一個計算知道總體樣本的方法
     * @param a This is a Sample。 #這是一個樣本
     * @param avg this is the average of the sample. #這是樣本的平均值
     * @return variance
     * Pay attention: a.length This is the number of sample. #這是樣本成員個數
     */
    public double populationVariance(double[]a,double avg) {
        for (int j = 0; j < a.length; j++) {
            variance =((a[j]-avg)*(a[j]-avg))+variance;
        }
        variance = variance/a.length;
        return variance;
    }
    public void run() {
        // TODO Auto-generated method stub
        System.out.println("Variance:"+variance);;
    }
}

//Sdandard deviation
class StandardDeviation extends Thread{
    double stand;
    public double standardDeviation( double variance) {
        stand = Math.sqrt(variance);
        return stand;
    }
    public void run() {
        // TODO Auto-generated method stub
        System.out.println("StandardDeviation:"+stand);
    }
}
View Code

拓展:

求算術平方根的算法:

求√A 的算法:
輸入正數A
令X=A/2
(1) Y=(X+A/X)/2
如果|Y-X|<ε(你要求的精確度),則打印Y,就是√A ,結束
否則,令X=Y,執行語句(1)
用QBASIC語言寫:
INPUT A
X=A/2

下面,是使用java編寫的算術平方根:

【后面加上,休息...】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM