C 我应该检查相对误差还是百分比相对误差?
我优化了C 我应该检查相对误差还是百分比相对误差?,c,error-handling,C,Error Handling,我优化了指数exp函数。我正在检查标准数学exp函数的输出 Res_opt和Res_std是我的两个输出 我先检查了一下,绝对错误: Abs_error = abs(Res_opt - Res_std ) 我把MAX\u DEV=0.500000(考虑到我的算法) 并检查: if(Abs_error > MAX_DEV){ printf("Error message"). return 0; } 在少数情况下,这个Abs\u错误大于0.50000值,我的测
指数
exp函数。我正在检查标准数学exp
函数的输出
Res_opt
和Res_std
是我的两个输出
我先检查了一下,绝对错误:
Abs_error = abs(Res_opt - Res_std )
我把MAX\u DEV=0.500000
(考虑到我的算法)
并检查:
if(Abs_error > MAX_DEV){
printf("Error message").
return 0;
}
在少数情况下,这个Abs\u错误
大于0.50000
值,我的测试用例失败了(但我觉得对于该输入,派生结果很好,因为这是一个极端情况)
所以我决定检查相对误差
但我的问题是,我应该用以下逻辑检查相对误差或相对误差百分比-
ACC_BAND = 0.400000000000000;
double min_acc_range = 1 - ACC_BAND;
double max_acc_range = 1 + ACC_BAND;
Relative_error = abs(Res_opt - Res_std)/Res_std ;
if ((Relative_error < min_acc_range) || (Relative_error > max_acc_range)) {
printf("Error message");
}
ACC_波段=0.400000000000000;
双最小加速范围=1-加速带;
双最大加速范围=1+加速带;
相对误差=abs(Res_opt-Res_std)/Res_std;
if((相对误差<最小误差范围)| |(相对误差>最大误差范围)){
printf(“错误消息”);
}
或
Percentage_Relative_error=1-(abs(Res_opt-Res_std)/Res_std)*100;
if((相对误差百分比<最小误差范围);(相对误差百分比>最大误差范围)){
printf(“错误消息”);
}
您没有测量错误。。。这都是关于准确性的。
这里使用的是绝对误差。但您可以使用相对误差百分比或相对误差
相对误差百分比是作为百分比的相对误差度量。在一般情况下,它们的最终精度相同
但好的实践取决于你的价值极限
对于较小的值,百分比相对误差是好的,因为1.0和2.0不接近上限值10.0
在值较大的情况下,10000007和10000008接近时,相对误差必须更好
因此,这取决于您可以决定的值限制。您没有测量错误。。。这都是关于准确性的。 这里使用的是绝对误差。但您可以使用相对误差百分比或相对误差 相对误差百分比是作为百分比的相对误差度量。在一般情况下,它们的最终精度相同 但好的实践取决于你的价值极限 对于较小的值,百分比相对误差是好的,因为1.0和2.0不接近上限值10.0 在值较大的情况下,10000007和10000008接近时,相对误差必须更好
因此,这取决于您可以决定的值限制。它们以相同的方式结束。如果我以绝对值作为相对误差的百分比,则它们以相同的方式结束。因为我的一些百分比相对误差是负值。这里你关心的是这两个值有多接近。所以是的,你可以使用绝对值。只要一个查询,我应该为相对误差的百分比取绝对值吗。因为我的一些百分比相对误差是负值。这里你关心的是这两个值有多接近。所以你可以用绝对值。
Percentage_Relative_error = 1 - (abs(Res_opt - Res_std)/Res_std)*100 ;
if ((Percentage_Relative_error < min_acc_range) || (Percentage_Relative_error > max_acc_range)) {
printf("Error message");
}