2017-03-14 2 views
-2

클래스에 대한이 과제를 수행 중이며 내가 잘못 가고있는 부분을 볼 수 있습니다. 교수님의 예와 같은 의견을 입력했지만 출력이 다릅니다. 입력이 1,2,3,4,5,5,6,6,7,8,9,10 인 경우 평균은 5.61이고 표준 편차는 2.99794373974304입니다. 그러나 나는 평균 5.61을 얻고 있지만 표준 편차는 2.9963144027287916입니다. 내가 어디로 잘못 가고 있는지 확실하지 않습니다. 어떤 아이디어? 나를 위해 이것을 할 사람을 찾고 있지 않습니다. 나는 내가 어디로 잘못 가고 있는지 알 필요가있다.평균 및 표준 편차

public static void main(String[] args) { 
    // 
    Scanner input = new Scanner(System.in); 
    //User Input 1-10 
    System.out.print("Enter a number: "); 
    double inputA = input.nextDouble(); 
    System.out.print("Enter a number: "); 
    double inputB = input.nextDouble(); 
    System.out.print("Enter a number: "); 
    double inputC = input.nextDouble(); 
    System.out.print("Enter a number: "); 
    double inputD = input.nextDouble(); 
    System.out.print("Enter a number: "); 
    double inputE = input.nextDouble(); 
    System.out.print("Enter a number: "); 
    double inputF = input.nextDouble(); 
    System.out.print("Enter a number: "); 
    double inputG = input.nextDouble(); 
    System.out.print("Enter a number: "); 
    double inputH = input.nextDouble(); 
    System.out.print("Enter a number: "); 
    double inputI = input.nextDouble(); 
    System.out.print("Enter a number: "); 
    double inputJ = input.nextDouble(); 

    //Formula for Mean 
    double mean = (inputA + inputB + inputC + inputD + inputE + inputF + inputG + inputH + inputI + inputJ)/10; 

    //Formula for standard deviation 
    //Subtract each input by the mean 
    double m1 = (inputA - mean); 
    double m2 = (inputB - mean); 
    double m3 = (inputC - mean); 
    double m4 = (inputD - mean); 
    double m5 = (inputE - mean); 
    double m6 = (inputF - mean); 
    double m7 = (inputG - mean); 
    double m8 = (inputH - mean); 
    double m9 = (inputI - mean); 
    double m10 = (inputJ - mean); 

    //Square each m variable 
    double v1 = (Math.pow(m1, 2)); 
    double v2 = (Math.pow(m2, 2)); 
    double v3 = (Math.pow(m3, 2)); 
    double v4 = (Math.pow(m4, 2)); 
    double v5 = (Math.pow(m5, 2)); 
    double v6 = (Math.pow(m6, 2)); 
    double v7 = (Math.pow(m7, 2)); 
    double v8 = (Math.pow(m8, 2)); 
    double v9 = (Math.pow(m9, 2)); 
    double v10 = (Math.pow(m10, 2)); 

    //Add all the sums squared sums together 
    double var = (v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9 + v10); 


    //divide by the number of variables to get Variance 
    double var1 = (var/10); 
    double var2 = (var % 10); 
    double var3 = (var1 + var2); 

    //Standard deviation is the square root of the Variance 
    double dev = (Math.sqrt(var3)); 

    //Mean and Deviation print 
    System.out.println("The mean is " + mean); 
    System.out.println("the deviation is: " + dev); 
} 

제 코드를 수정했습니다. 그러나 나는 아직도 벗어났다. 누구든지 좀 더 정확한 대답을 얻을 수있게 도와 줄 수 있습니까? 아직도 우물쭈물 한 im! 이 이중 VAR = (-mean (인덱스 + 1)) 내에서 의미 말한다 곳

public static void main(String[] args) { 



    double[] arrayM = new double[10]; 
    double[] arrayV = new double[10]; 

    double sum = 0; 

    for (int index = 0; index < arrayM.length ; index ++) { 
     System.out.print("Enter a number: "); 
     Scanner input = new Scanner(System.in); 
     double in = input.nextDouble(); 
     arrayM[index] = in; 
     sum += in;  
    } 
     //final mean and variant 
     double mean = sum/arrayM.length; 
     double vari = 0; 

    for (int index = 0; index < arrayM.length ; index ++) { 
     double var=((index+1)-mean)^2; 
     arrayV[index] = var; 
     vari += var; 
    } 
     double variant = vari/arrayM.length; 
    //final deviation 

    double devi= Math.sqrt(variant); 




    System.out.print("The mean is: "+mean); 
    System.out.print("The standard deviation is: "+devi); 

} 

}

그렇게^2이 작동하지 않습니다. 어떻게 쓸 수 있습니까? mean

최종 편집 : 알아 냈습니다. 여기에 최종 코드가 있습니다.

public class TESTPROJECT { 

    /** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 
    // TODO code application logic here 



//Arrays 
    Scanner input = new Scanner(System.in); 
     double[] arrayM = new double[10]; 
     double[] arrayV = new double[10]; 


    //Sum 
    double sum = 0; 


    //Sum array 
    for (int index = 0; index < arrayM.length ; index ++) { 
     System.out.print("Enter a number: "); 
     double in = input.nextDouble(); 
     arrayM[index] = (in); 
     sum += in;  
    } 

    //Mean 
    double mean = sum/arrayM.length; 

    for (int index = 0; index < arrayM.length ; index ++) { 
     double var = arrayM[index] - mean; 
     arrayV[index] = var; 
    } 

    //Variant Loop 
    double sqre = 0; 

    for(int index = 0; index < arrayV.length; index++) { 
     double sqr = Math.pow(arrayV[index],2); 
     sqre += sqr; 
    } 

    //Deviation cal 
    double variant = sqre/arrayM.length; 

    //final deviation 

    double devi= Math.sqrt(variant); 



    //ouput 
     System.out.println("The mean is: "+mean); 
     System.out.println("The standard deviation is: "+devi); 

} 
} 
+0

루프에 대해 들어 봤어? –

+0

Math.pow (x, 2)를 사용하지 마십시오. 대신 x * x를 사용하십시오 – FredK

+0

실제로 분산의 정의를 알고 있습니까? – FredK

답변

0

당신은 솔루션에 가깝지만 (구현은 그리 편리하지 않습니다.) 분산 및 편차에 대한 정의를 참조하십시오. 코드 작성을 시작하기 전에이 작업을 완료해야합니다. 당신은 여기 어딘가에 잘못 https://en.wikipedia.org/wiki/Standard_deviation

을 : 당신이 정의를 찾을 수없는 경우 시도 배열을 사용하여

//divide by the number of variables to get Variance 
double var1 = (var/10); 
double var2 = (var % 10); // why ? 
double var3 = (var1 + var2); // and why ?? 

그런데, 및 루프가 도움이 될 수도, 여기 단편이다

double[] valuesArray = new double[] {1.0,2,3,4.5,5.6,6,7,8,9,10}; 

    double mean = 0; 
    double variance = 0; 
    double deviation = 0; 

    for (int index = 0; index < valuesArray.length ; index ++) { 
     mean += valuesArray[index]; 

     System.out.println("value "+ index + " is : "+valuesArray[index]); 
    } 

    System.out.println("Sum : "+mean); 

    // divide sum by number of values 
    mean = mean/((double) valuesArray.length); 

    System.out.println("Mean : "+mean); 
+0

나는 이것을 지금 시험하고있다. 결과를 알려 드리겠습니다. 결론은 루프를 만들어야한다는 것입니다. 또한 상단 부분. 나는 계산되지 않은 나머지가 있다고 가정하고있었습니다. 그리고 내가 그것을했을 때 그것은 실제적인 대답에 가깝게되었다. –

+0

나는 그것을 알아 냈다. 배열에서 값을 가져 와서 루프의 각 값을 계산 한 다음 나중에 두 번째 배열에 저장하여 고민하고 있습니다. –

+0

편차 제곱에 대해 매우 비슷한 루프를 수행 할 수 있습니다. 동일한 길이의 새 배열을 만들고 해당 행의 각 제곱 된 편차를 의미합니다 (수식 참조). 여기에서이 루프를 사용하여 편차를 준비 할 수 있습니다. (실제로는 다른 평균을 계산하므로 코드 예제는 편차 목적을 위해 약간의 수정이 필요합니다.) 1 개의 새로운 배열 2 개별 편차를 채우는 2 개의 루프 3 편차를 합산하기위한 루프 사용 4 일단 완료되면 편차의 합계 5 표준 편차 6 계산 0 – LoneWanderer