我的数学有什么问题?

时间:2015-03-26 15:00:40

标签: c++ math

好的,所以我的导师指派我们制作一个程序,使用一组数字并找出它的标准偏差。我的程序发现平均值很好。但是,我的数学存在问题。这有什么问题。它给我的平均值为59,偏差为8.4。平均值是正确的,但偏差应为96.4。我的数学错了。

编辑:我的计划现在有效 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;
}

4 个答案:

答案 0 :(得分:4)

  

[...]但偏差应为96.4

这是应该是96.4的差异。它计算为平均值的平方差的平均值,因此您根本不需要平方根:

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

取平方根方差得9.81835。

答案 1 :(得分:1)

将sqrt从循环中拉出并在求和后应用它。

答案 2 :(得分:1)

偏差的数学表达式存在缺陷,应该是集合的方差的平方根:

方差=总和(pow(set [i] - mean,2))/ n

偏差= sqrt(方差)

顺便说一下,我认为这里的9.82比96.4更正确

答案 3 :(得分:0)

错误就像人们指出的那样,不能直接添加标准偏差。计算标准偏差的更好方法是取均方根(从平均值中减去元素)。