trigonometricas trigonometria triangulos rectangulos razones identidades funciones ejercicios como trigonometry

trigonometry - trigonometria - ¿Es la trigonometría computacionalmente costosa?



razones trigonometricas en triangulos rectangulos (8)

Leí en un artículo en algún lugar que los cálculos trigonométricos son generalmente caros. ¿Es esto cierto? Y si es así, es por eso que usan tablas de búsqueda de trigonometría, ¿no?

EDIT: Hmm, entonces si lo único que cambia son los grados (con una precisión de 1 grado), ¿una tabla de consulta con 360 entradas (para cada ángulo) sería más rápida?


Caro es un término relativo.

Las operaciones matemáticas que se realizarán más rápido son aquellas que puede realizar directamente su procesador. Ciertamente, la suma y la resta de enteros estarán entre ellas. Dependiendo del procesador, también puede haber multiplicación y división. A veces, el procesador (o un coprocesador) puede manejar las operaciones de punto flotante de forma nativa.

Las cosas más complicadas (por ejemplo, la raíz cuadrada) requieren que se realicen una serie de estos cálculos de bajo nivel. Estas cosas generalmente se logran utilizando bibliotecas matemáticas (escritas sobre las operaciones nativas que puede realizar su procesador).

Todo esto sucede muy, muy rápido en estos días, por lo que "costoso" depende de cuánto debe hacer y de qué tan rápido necesita que suceda.

Si está escribiendo un software de renderización 3D en tiempo real, es posible que deba usar muchos trucos matemáticos inteligentes y accesos directos para exprimir cada bit de velocidad de su entorno.

Si está trabajando en aplicaciones comerciales típicas, lo más probable es que los cálculos matemáticos que está haciendo no contribuyan significativamente al rendimiento general de su sistema.


Dado que sin (), cos () y tan () son funciones matemáticas que se calculan sumando una serie, los desarrolladores a veces usarán tablas de búsqueda para evitar el cálculo costoso.

La compensación es en la precisión y la memoria. Cuanto mayor sea la necesidad de precisión, mayor será la cantidad de memoria requerida para la tabla de búsqueda.

Eche un vistazo a la siguiente tabla con una precisión de 1 grado.

http://www.analyzemath.com/trigonometry/trig_1.gif


En el procesador Intel x86, la suma o resta de punto flotante requiere 6 ciclos de reloj, la multiplicación requiere 8 ciclos de reloj y la división 30-44 ciclos de reloj. Pero el coseno requiere entre 180 y 280 ciclos de reloj.

Todavía es muy rápido, ya que el x86 hace estas cosas en hardware, pero es mucho más lento que las funciones matemáticas más básicas.


Recomendaría escribir un programa de prueba y cronometrarlos por ti mismo. Sí, son lentos en comparación con más y menos, pero siguen siendo instrucciones de un solo procesador. Es poco probable que sea un problema a menos que esté haciendo un ciclo muy estrecho con millones de iteraciones.


Sí, (en relación con otras operaciones matemáticas, multiplica, divide): si estás haciendo algo en tiempo real (operaciones de matriz, videojuegos, lo que sea), puedes eliminar muchos ciclos moviendo tus cálculos de trigonometría fuera de tu bucle interno.

Si no está haciendo algo en tiempo real, entonces no, no son costosos (en relación con operaciones como leer un montón de datos del disco, generar una página web, etc.). Se espera que las operaciones de disparo se realicen en hardware por su CPU (que puede realizar miles de millones de operaciones de punto flotante por segundo).


Si bien la respuesta rápida es que son más caras que las funciones matemáticas primitivas (suma / multiplicación / resta, etc.) no son caras en términos de tiempo humano. Por lo general, la razón por la que las personas los optimizan con tablas de consulta y aproximaciones es porque los llaman potencialmente decenas de miles de veces por segundo y cada microsegundo podría ser valioso.

Si está escribiendo un programa y solo necesita llamarlo un par de veces por segundo, las funciones incorporadas son lo suficientemente rápidas por el momento.


Si siempre sabe los ángulos que está calculando, puede almacenarlos en una variable en lugar de calcularlos cada vez. Esto también se aplica dentro de su llamada de método / función donde su ángulo no va a cambiar. Puede ser inteligente usando algunas fórmulas (calculando sin (theta) a partir de sin (theta / 2), sabiendo con qué frecuencia se repiten los valores - sin (theta + 2 * pi * n) = sin (theta)) y reduciendo el cálculo. Ver this artículo de wikipedia.


sí lo es. Las funciones trigonométricas se calculan sumando una serie. Entonces, en términos generales, sería mucho más costoso que una simple operación matemática. lo mismo ocurre con sqrt