设为首页 加入收藏

TOP

13.6.3 相等判断
2013-10-07 00:54:24 来源: 作者: 【 】 浏览:67
Tags:13.6.3 相等 判断

13.6.3  相等判断

从上两节的叙述可知,在浮点计算中两个数据相等的含义通常是指在误差范围内,两个数据的意义一致(即二者描述的物理量的取值一致,或者说相容),不是==操作符的语义,因此不能使用==操作符进行判断。

编程(www.cppentry.com)中,浮点数的相等判断通常有下列形式:

  1. | V-V0 | < Δ 

代码举例:

  1. if( abs( v-v0 ) < DELTA ) 

问题的关键在于确定Δ。

Δ值的确定来自数值背后的含义,而且总是与误差的概念相随。

(1)依据数据误差进行判断

如果两个数据相差Δ,假设一个数据的误差是Δ1,另一个数据的误差是Δ2,那么一个简单的判据是:

  1. | V-V0 | < Δ1 + Δ2 

实际上,如果数据不是直接来自某个测量设备,而是某个仿真系统的输出或者是测量数据经过一系列处理的结果,那么Δ1和Δ2大多没有确定的值。此外,这种方法在理论上也不够严谨,只是便于使用而已。

(2)依据允许误差进行判断

在许多情况下,计算精度和数据精度均远远超过了实际需求,使用数据误差进行相等判断除了加大计算量,没有实际意义。此时,根据实际精度需求确定允许误差,然后用允许误差替代数据误差进行相等判断。这种方法更简单,而且允许误差一般远大于数据误差,可以减小计算量。例如判断弹头是否落地一般使用高程参数:

  1. | H-H0 | < ΔH 

其中,H是弹头的高程;H0是弹下点的地面高程;ΔH是允许误差。显然,ΔH的取值会影响弹道积分的终止时刻,从而影响落地时间和命中偏差。从计算精度而言,ΔH的取值越小越好,但ΔH越小,积分终止时就需要更多的迭代。实际上,当ΔH小到一定程度,它对积分的影响就微乎其微,没必要取更小的值增大计算量。假设导弹的命中精度是100m,那么ΔH取1.0m显然不会有什么太大影响。

不过,所谓的容许误差往往没有什么确定值,主要依据经验,因此有较大的不确定性。

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇13.7 通过参数的数据共享问题 下一篇13.6.1 误差来源

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: