#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.