2013-10-15 4 views
0

9.1과 9.2를 완료했습니다. 자, 저는 그 대답이 그렇게 간단한 것이 아니라고 생각합니다. 다음의 지침은 다음과 같습니다 정말 내가 잘못 뭘하는지 볼 수 없습니다실습 9.3 문제 (예, 9.1에서 무엇이 잘못되었는지 알아 냈습니다.)

double[] data = { }; 
double sd; 
double sum = 0; 
double mean = 0; 
double sd = 0; 
runProgram = true; 

for (int = 0; i < data.length; i++) { 
    sum += data[i]; 
    mean = sum/(data.length - 1); 
    mean = data[i]; 
    mean *= mean; 
} 

while (runProgram == true) 
    sd += Math.sqrt(mean); 

:

The standard deviation of a set of numbers is a measure of the spread of their values. It is defined as the square root of the average of the squared differences between each number and the mean. To calculate the standard deviation of the numbers stored in data:

Calculate the mean of the numbers.

For each number, subtract it from the mean and square the result.

Find the mean of the numbers calculated in step 2.

Find the square root of the result of step 3. This is the standard deviation. Write code to calculate the standard deviation of the numbers in data and store the result in the double sd.

To find the square root of a non-negative double d, use the expression

double s = Math.sqrt(d);

여기 내 코드입니다. 모든 조언이 시도됩니다.

+0

'sqrt()가'for' 외부에 있어야하지 않습니까? – SudoRahul

+0

수정 된 답변을 확인하십시오! – SudoRahul

답변

0

평균이 변하는 동안 표준 편차 sd을 계산하는 것이 문제입니다. 먼저 전체 데이터 세트의 평균을 계산 한 다음 최종 값 mean을 사용하여 표준 편차를 계산해야합니다.

또한 모든 분산의 합계를 제곱하고 매번 제곱근을 계산하지 않아야합니다.

+0

감사합니다. 인터넷 연결 끊김으로 인해 코드를 다시 작성해야했습니다. 여기 내 코드가 어떻게 생겼는지. 이전에 결과가 3.0 또는 5.0 인 것과 같은 결과가 없습니다. double [] data = {1.0,2.0,3.0,4.0,5.0}; double sd; runProgram = true; double sum = 0; 이중 평균 = 0; sd = 0; for (int = 0; i

0

모두 엉망입니다. 설명은 꽤 좋은 것처럼 보이지만 구현이 잘못 된 것처럼 보입니다. 표준 편차를 계산하는 동안 실행 평균 (즉)을 계산하고 있는데 이는 올바르지 않습니다. 귀하의 경우에 SD를 계산하기 전에 평균을 계산해야합니다. 평균은 다음과 같이 변경됩니다.

수식을 올바르게 이해해야합니다.

표준 위반은 SquareRoot((sum(square(number-mean))/n))입니다.

+0

코드를 시도했습니다. 나는 내 코드의이 부분이 오류를 받고 있어요 : "하지 성명 오류가" –

+0

는 곳입니다 가 (; 나는 SudoRahul