2015-03-26 2 views
0

Итак, мой инструктор назначил нам программу, которая использовала набор чисел и находила стандартное отклонение от нее. Моя программа находит Среднее просто отлично. Тем не менее, есть проблема с моей математикой. Что с этим не так. Это дает мне среднее значение 59 и отклонение 8.4. Среднее значение верно, однако отклонение должно составлять 96,4. Что не так с моей математикой.Что не так с моей математикой?

EDIT: Моя программа теперь работает.
P.S. Я изменил следующий код на мою текущую версию кода.

#include "stdafx.h" 
#include <iostream> 
#include <iomanip> 
#include <math.h> 

using namespace std; 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
//Used To Round The Decimal Points 
cout << setiosflags(ios::fixed|ios::showpoint); 
cout << setprecision(1); 

//Declaring 
double Numbers[] = {65, 49, 74, 59, 48}; //Work On Making This A User Input----------Deivation = 96.4 
double Mean = 0, Items = 0, Sum = 0, Deviation = 0; 
int Counter; 

//Finds The Mean Of The Set Of Numbers 
for (Counter = 0; Counter < sizeof(Numbers)/sizeof(double); Counter++) 
{ 
    for (Counter = 0; Counter < sizeof(Numbers)/sizeof(double); Counter++) 
    { 
     Sum += Numbers[Counter]; //Adds All Numbers In Array Together 
    } 
    Items = sizeof(Numbers)/sizeof(double); //Gets The Number Of Items In The Array 
    Mean = Sum/Items; //Finds The Mean 
} 

//Finds The Standard Deviation 
for (Counter = 0; Counter < sizeof(Numbers)/sizeof(double); Counter++) 
{ 
    Deviation += pow((Numbers[Counter] - Mean), 2)/Items; //Does Math Things... 
} 
Deviation = sqrt(Deviation); 
cout << "Deviation = " << Deviation << endl; //Print Out The Standard Deviation 

system("pause"); 
return 0; 
} 
+0

@YuHao Это просто так, что я могу отслеживать, что он делает – Jonco98

+2

вы хотите 'sqrt (сумма средств)' not 'sum (sqrt mean)' –

+0

@MarcB Что значит? Пожалуйста, объясните, – Jonco98

ответ

4

[...] Однако отклонение должно быть 96,4

Это дисперсия, которая должна быть 96,4. Он рассчитывается как среднее значение квадратов разностей от среднего значения, так что вам не нужно квадратный корень на все:

for (Counter = 0; Counter < sizeof(Numbers)/sizeof(double); Counter++) 
{ 
    Variance += pow((Numbers[Counter] - Mean), 2)/Items; 
} 
Deviation = sqrt(Variance); 

Taking квадратный корень из дисперсии дает 9.81835.

+0

Итак, отклонение на самом деле 9,81835? – Jonco98

+0

@ Jonco98 Да. Вот ссылка [ссылка] (http://stats.stackexchange.com/a/35124). – dasblinkenlight

1

Извлеките sqrt из цикла и примените его после суммирования.

+0

Я сделал это, и теперь он говорит, что отклонение составляет 9,82 – Jonco98

1

Существует ошибка в математическом выражении отклонения, которое должно быть квадратный корень из дисперсии набора:

Дисперсия = сумма (POW (множество [I] - средний, 2))/п

отклонение = SQRT (Дисперсия)

Кстати, я думаю, 9.82 здесь более правильно, чем 96,4

0

Виноваты, как люди отмечают, что стандартные отклонения не могут быть добавлены непосредственно. Лучшим способом вычисления стандартного отклонения является принятие среднего квадрата корня (элемента, вычитаемого из его среднего значения).

Смежные вопросы