Conversão de ângulos e erro computacional.
Como é sabido os computadores pelo seu modo de cálculo interno acumulam erros.
No caso de um programa que estou a desenvolver, é necessário converter ângulos entre diversos sistemas, em particular entre o sistema sexagesimal e o centesimal para graus.
Como dados de partida, os ângulos:
A = 60º 12'21.5"
B = 70º 35'51.7"
A conversão para centesimais feita pela linguagem de programação e por uma calculadora de bolso mostra-se a seguir:
A = 60.20603º 60.20597º
B = 70.59784º 70.59769º
Pode-se verificar que para o ângulo A, o valor obtido pela linguagem de programação é superior em 0.00006 graus. Já para o ângulo B o valor obtido pela linguagem de programação é superior em 0.00015 .
Podemos pensar que são diferenças muito pequenas, mas se tomarmos como exercício, o cálculo de um desvio em XX (por exemplo para Topografia), em que se medir uma distância de 1000 metros, o desvio deste ângulo A é de 1 mm, já o do ângulo B é de 2.6 mm. Ok continua a ser praticamente desprezável o erro de cálculo face por exemplo ao erro de observação.
E se em vez de Topografia considerarmos a disciplina de Astrofísica?
E se continuarmos na linguagem de programação com cálculos em cima de resultados assim obtidos... podemos imaginar que a magnitude deste erro aumenta.
Como resolver? Recorrendo se necessário a estratégias de cálculo, e/ou a linguagens de programação ou bibliotecas que permitam trabalhar com precisões de cálculo superiores.
Para o dia a dia, o que podemos esperar numa linguagem de programação é o suficiente em precisão, no entanto, atenção, se compararmos
if (60.20603 == 60.20597) obtemos um FALSE que para uma análise humana seria TRUE.
Thanks for your comment.
ResponderEliminar