73 votos

¿Cómo calcula una calculadora el seno, coseno y tangente usando solo un número?

  • Seno $\theta$ = opuesto/hipotenusa
  • Coseno $\theta$ = adyacente/hipotenusa
  • Tangente $\theta$ = opuesto/adyacente

Para calcular el seno, el coseno o la tangente necesito conocer $3$ lados de un triángulo rectángulo. $2$ para cada función trigonométrica correspondiente. ¿Cómo calcula una calculadora el seno, coseno, tangente de un número (que en realidad es un ángulo) sin conocer ninguno de los lados?

0 votos

Por aproximación de Taylor, supongo. Pero no estoy seguro.

14 votos

También está el algoritmo CORDIC

0 votos

53voto

Chris Farmiloe Puntos 7769

Las calculadoras utilizan la Serie de Taylor para $\sin / \cos$ o el algoritmo CORDIC. Existe mucha información sobre la Serie de Taylor, así que explicaré CORDIC en su lugar.

La entrada requerida es un número en radianes $\theta$, que está entre $-\pi / 2$ y $\pi / 2$ (a partir de esto, podemos obtener todos los demás ángulos).

Primero, debemos crear una tabla de $\arctan 2^{-k}$ para $k=0,1,2,\ldots, N-1$. Esto generalmente se precalcula utilizando la Serie de Taylor y luego se incluye en la calculadora. Sea $t_i = \arctan 2^{-i}$.

Considera el punto en el plano $(1, 0)$. Dibuja el círculo unitario. Ahora, si podemos hacer que el punto forme un ángulo $\theta$ con el eje $x$, entonces la coordenada $x$ es el $\cos \theta$ y la coordenada $y$ es el $\sin \theta$.

Ahora debemos de alguna manera hacer que el punto tenga un ángulo $\theta$. Hagámoslo ahora.

Considera tres secuencias $\{ x_i, y_i, z_i \}$. $z_i$ nos dirá en qué dirección girar el punto (en sentido antihorario o en sentido horario). $x_i$ e $y_i$ son las coordenadas del punto después de la $i$-ésima rotación.

Sea $z_0 = \theta$, $x_0 = 1/A_{40} \approx 0.607252935008881 $, $y_0 = 0$. $A_{40}$ es una constante, y usamos $40$ porque tenemos $40$ iteraciones, lo que nos dará $10$ dígitos decimales de precisión. Esta constante también se precalcula1.

Ahora, sea:

$$ z_{i+1} = z_i - d_i t_i $$ $$ x_{i+1} = x_i - y_i d_i 2^{-i} $$ $$ y_i = y_i + x_i d_i 2^{-i} $$ $$ d_i = \text{1 si } z_i \ge 0 \text{ y -1 en cualquier otro caso}$$

A partir de esto, se puede demostrar que $x_N$ y $y_N$ eventualmente se convierten en $\cos \theta$ y $\sin \theta$, respectivamente.

1: $A_N = \displaystyle\prod_{i=0}^{N-1} \sqrt{1+2^{-2i}}$

2 votos

Y a pesar del algoritmo que utiliza, el triángulo es el que se encuentra en el círculo unitario de hipotenusa 1 ¿verdad?

4 votos

@themhz, sí. Esta es la base del algoritmo CORDIC. Así que en realidad "hace" un triángulo para encontrar estas longitudes.

2 votos

¿Se podría empezar con $ x_0 = 1 $ y luego normalizar en el paso final?

5voto

Shane Fulmer Puntos 4254

Siempre me pregunté lo mismo, hasta que asistí a mi primera clase de cálculo.

Como Julien señaló acertadamente. Utiliza series de potencias de $\sin x, \cos x$ etc, para calcular solo de manera aproximada el valor de los ángulos (en radianes) que ingreses. Puedes leer más al respecto aquí. Y las series de potencias de $\tan x, \sec x$ y $\text{cosec } x$ se proporcionan aquí.

0 votos

Acabo de escribir sobre la serie de potencias de sin, cos, etc. También estudié estas series en la conferencia sobre límites.

0 votos

@iostream007: No creo que sea necesario, el enlace aquí es suficiente.

5voto

Donald Puntos 21

La mayoría de las implementaciones de libm para gcc utilizan polinomios de Chebyshev. Es más rápido que las series de Taylor/Maclaurin y más preciso que los Cordics.

4 votos

Como CORDIC, correctamente implementado, es perfectamente preciso a los límites de la representación de la máquina, es imposible que los polinomios de Chebyshev sean más precisos. Seguramente hay razones por las que se eligieron los polinomios de Chebyshev en lugar de CORDIC, pero la mayor precisión no está entre ellas.

1 votos

Sospecho que está hablando de la interpolación de Chebyshev basada en una tabla precalculada. Esto podría ser más rápido si la precisión está predeterminada.

1 votos

@timur Es casi seguro que son aproximaciones de minimax, según el teorema de equioscillación de Chebyshev. A veces, una aproximación cercana se obtiene simplemente mediante la economización de Chebyshev.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X