Roberto Santos Profile picture
Doctor. Ingeniero Industrial. Ex-consultor, ahora en un banco (pero no tan chulo como el de la foto). Música clásica.

Apr 10, 2022, 15 tweets

#DivulgandoMatemáticas

#Hoy quiero comentar una #curiosidad que ilustra muy bien cómo aprovechar una fórmula con ingenio

¿Has pensado alguna vez cómo hace una calculadora para calcular el seno de un ángulo?

Siguen 14 tuits ⬇️⬇️⬇️

Lo que se le suele ocurrir a todo el mundo es incluir tablas más o menos detalladas con alguna regla de interpolación

Y también acudir a expresiones matemáticas que permiten aproximar el valor del seno de x usando polinomios

Hoy en día no hay grandes restricciones de memoria ni de capacidad de cálculo en las calculadoras que usan los estudiantes

Pero no hace mucho había que optimizar ambos factores

Lo que sigue es una forma muy ingeniosa de conseguirlo

Primero vamos a recordar la representación del seno y coseno en el círculo unidad

Y unas fórmulas que permiten obtener los valores del seno y coseno de un ángulo a partir de los valores de otro ángulo

Habrás visto que el seno y el coseno pueden verse como las componentes de un vector unitario que forma un ángulo alfa

Y que haciendo una multiplicación matricial podemos “rotarlo” un ángulo beta que, por cierto, puede ser positivo o negativo

Esa expresión va a ser muy útil porque dado un ángulo cualquiera, podemos llegar a él a partir de ángulos conocidos

Fíjate

En el GIF anterior limitamos la posición del vector

Primero vimos que era mayor de 45º, por lo que nos ubicamos a mitad de camino entre 45º y 90º (67.5º)

Allí vimos que el ángulo de nuestro vector es menor, por lo que nos ubicamos a mitad de camino entre 67.5º y 45º

Repitiendo el proceso con la mitad de incremento de ángulo en cada paso, nos acercarnos al ángulo buscado tanto como queramos

Y como podemos hacerlo siempre con los ángulos 45, 45/2, 45/4, … la fórmula que vimos para rotar un vector nos llevará al seno y al coseno del ángulo

Aquí tienes unos ejemplos que he calculado para convencerte

Usa 20 pasos y proporciona el valor correcto con 5 decimales

Pero es posible optimizar la tabla y los cálculos necesarios

De nuevo, la trigonometría proporciona unas fórmulas muy útiles

Con la expresión obtenida en el GIF anterior se han logrado dos cosas
- Necesitar únicamente el valor de la tangente
- Sacar un factor común fuera de la matriz de rotación que no depende del sentido de giro

La ventaja de la primera es evidente pero la segunda permite olvidarse de ese cálculo de raíz cuadrada.

Si el número de pasos es fijo, podemos tener pre-calculado el valor resultante y aplicarlo al final del proceso

Pero hay más
Hemos conseguido una matriz compuesta sólo por 1 y tangente de beta

¿Y si hacemos que la tangente de beta sea 1/2, 1/4, 1/8 …?

No es tan eficaz como usar la mitad de ángulo pero ¡dividir por potencias de 2 en binario está chupado! y nos ahorramos las tangentes

Es decir, podemos calcular el valor del seno de un ángulo con una precisión de 5 decimales usando una tabla con 20 valores (los ángulos incrementales) y el factor de ajuste final

¿No es ingenioso?

Aquí tienes los ejemplos de antes añadiendo en naranja el cálculo optimizado

Ojo, para que la comparación anterior fuera justa, no se incluía el “truco” de aplicar el factor corrector al final

FIN

Gracias por leer
¿te gustó?
¿lo conocías?

Por cierto, este algoritmo se llama CORDIC (COordinate Rotation DIgital Computer) por si quieres investigar más

Share this Scrolly Tale with your friends.

A Scrolly Tale is a new way to read Twitter threads with a more visually immersive experience.
Discover more beautiful Scrolly Tales like this.

Keep scrolling