Eu sei que devo usar uma tolerância para comparar números de ponto flutuante. Mas para comparar vetores, posso pensar em 3 soluções possíveis correspondentes a diferentes métricas de distância:
- Compare os componentes de cada vetor individualmente: os vetores são iguais se todos os 3 estiverem dentro da tolerância. Essa opção se comportaria como a norma uniforme , fornecendo um cubo de tolerância.
- Compare a soma de todas as diferenças absolutas com alguma tolerância. Isso se comportaria como a norma do táxi , fornecendo um simplex de tolerância.
- Calcule o comprimento euclidiano de (vecA - vecB) e verifique se está dentro da tolerância. Isso daria à norma euclidiana padrão uma esfera de tolerância.
Mas minha principal preocupação é a estabilidade numérica. A norma euclidiana "parece" a melhor opção, mas estou preocupado que todos os cálculos induzam mais erros de arredondamento. Em menor grau, a opção 2 também pode introduzir erros. (Por exemplo, se o componente x dos vetores for muito maior que y e z , a soma de todas as diferenças poderá suprimir qualquer contribuição de y e z .) Portanto, atualmente estou me inclinando para a opção 1.
Alguém pode pesar com uma opinião oficial sobre esse problema?