Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 我应该检查相对误差还是百分比相对误差?_C_Error Handling - Fatal编程技术网

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.02.0不接近上限值10.0

在值较大的情况下,1000000710000008接近时,相对误差必须更好


因此,这取决于您可以决定的值限制。

您没有测量错误。。。这都是关于准确性的。 这里使用的是绝对误差。但您可以使用相对误差百分比相对误差

相对误差百分比是作为百分比的相对误差度量。在一般情况下,它们的最终精度相同

但好的实践取决于你的价值极限

对于较小的值,百分比相对误差是好的,因为1.02.0不接近上限值10.0

在值较大的情况下,1000000710000008接近时,相对误差必须更好


因此,这取决于您可以决定的值限制。

它们以相同的方式结束。如果我以绝对值作为相对误差的百分比,则它们以相同的方式结束。因为我的一些百分比相对误差是负值。这里你关心的是这两个值有多接近。所以是的,你可以使用绝对值。只要一个查询,我应该为相对误差的百分比取绝对值吗。因为我的一些百分比相对误差是负值。这里你关心的是这两个值有多接近。所以你可以用绝对值。
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");
}