c - 我应该检查相对误差还是百分比相对误差?
问题描述
我优化了exponential
exp 函数。我正在检查关于标准数学exp
函数的输出。
Res_opt
并且Res_std
是我的两个输出。
我首先检查了绝对错误:
Abs_error = abs(Res_opt - Res_std )
我把MAX_DEV = 0.500000
(通过考虑我的算法)
并检查:
if(Abs_error > MAX_DEV){
printf("Error message").
return 0;
}
在少数情况下,这Abs_error
会大于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");
}
或者
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");
}
解决方案
你没有测量错......这都是关于准确性的。 在这里你使用Absolute Error。但是您可以使用Percentage Relative Error或Relative Error。
相对误差百分比是以百分比表示的相对误差度量。在平均情况下,它们的最终精度将相同。
但好的做法取决于你的价值限制。
在较小值的情况下,百分比相对误差很好,因为1.0和2.0并不接近您的上限值10.0。
在较大值的情况下,在10000007和10000008附近的地方,相对误差必须更好。
因此,取决于您可以决定的价值限制。
推荐阅读
- python - 使用assign方法在geopandas数据框中创建列
- linux - 将参数传递和解析到正在运行/在线的 systemd 守护进程
- charts - 在 PowerBI 中创建一个折线图,其中包含多条线,每条线都基于一种类型
- javascript - 是否有使用 Angular 自动填充表单的快捷方式?
- .net - c#在扫描的文档图像中逐行滚动文本
- databricks - 在 Databricks 文件系统中更改文件夹名称
- python - 基于灰度在图像Python上查找特定点
- c - 宏扩展插入一个额外的逗号和括号?
- java - 无法接受在父窗口中弹出警报并且子窗口仍然出现在屏幕中
- ios - 如何在 UITableView 多选期间更改默认轮的颜色?