我知道我应该使用容差来比较浮点数。但是为了比较向量,我可以想到对应于不同距离度量的 3 种可能的解决方案:
- 分别比较每个向量的分量:如果所有 3 个向量都在容差范围内,则向量相等。此选项的行为类似于uniform norm,给出一个容差立方体。
- 将所有绝对差的总和与某个容差进行比较。这将表现得像出租车规范,给出一个单一的容忍。
- 计算 (vecA - vecB) 的欧几里得长度,看看它是否在公差范围内。这将给出具有公差范围的标准欧几里得范数。
但我主要关心的是数值稳定性。欧几里得范数“感觉像是”最好的选择,但我担心所有的计算都会导致更多的舍入误差。在较小程度上,选项 2 也可能引入错误。(例如,如果向量的x分量远大于y和z,则将所有差异加在一起可能会淹没y和z的任何贡献。)所以我目前倾向于选项 1。
任何人都可以权衡这个问题的权威吗?