我关于平均值和标准差的微积分不起作用



让我们假设我的变量mean中有整数的和,变量std中有伤痕整数的和。我希望在小数点后分别有3和4个数字的均值和标准差。但我根本没有平均值和标准的预期值

int main(){
mean = double(int((double(mean)/(n-1))*1000))/1000;
std = double(int(sqrt(double(std)/(n-1) - mean*mean)*10000))/10000;
return 0;
}

我把double(int(….*1000((/1000放在小数点后的3个数字上。

第一个问题是更正公式:需要除以n得到mean,除以n-1得到方差。

为了准确地得到小数点后的预期位数,最好以尽可能高的精度进行计算,然后为最终显示组合

<< std::fixed << set precision (3) << ...

使用此解决方案,如果需要,您可以在末尾获得一些额外的零。

输出:

mean = 1.090
std deviation = 0.0265

代码:

#include <iostream>
#include <cmath>
#include <iomanip>
int main(){
double sum_x = 5.45;
double sum_x2 = 5.9433;
int n = 5;

double mean = sum_x/n;
double variance = sum_x2/n - mean*mean;
variance *= double (n)/(n-1);       // correction to get an unbiased estimation
double std_deviation = std::sqrt (variance);

std::cout << "mean = " << std::fixed << std::setprecision(3) << mean << "n";
std::cout << "std deviation = " << std::fixed << std::setprecision(4) << std_deviation << "n";

return 0;
}

最新更新