¿Cómo calculan las computadoras los valores de pecado? [cerrado]

27

¿Cómo calcula una computadora un valor de pecado? Lógicamente, cuando pienso en ello, la única forma aparente es poner muchos valores de pecado en la memoria, y cuando un valor de pecado necesita ser "calculado", simplemente extraería datos de una dirección de memoria específica (por ejemplo, sin (x) extraiga los datos de la dirección de memoria que contiene el valor de sin (x)) Esa parece ser la única forma posible de hacerlo. ¿O hay una función que se puede usar para calcular el pecado de un valor? Realmente estoy tratando de preguntar cómo una computadora calcula el pecado en un nivel básico. ¿Hay una manera de aproximar los valores de pecado usando una función diferente compuesta de más operaciones "básicas", y la ALU podría realizar múltiples operaciones "básicas" para aproximar el valor de pecado, o simplemente está extrayendo valores de la memoria?

    
pregunta zack1544

4 respuestas

29

Normalmente, las funciones sin (x) de alta resolución se implementarían con un algoritmo CORDIC (Ordenador Digital de Rotación Ordinaria), que se puede lograr con un pequeño número de iteraciones usando solo turnos y sumar / restar y una pequeña tabla de consulta. El documento original La técnica de computación CORDIC de Jack Volder es de 1959. También funciona bien cuando se implementa con hardware en un FPGA (y se implementaría un algoritmo similar en un FPU de hardware para aquellos micros que tienen un FPU).

Para una resolución más baja, por ejemplo, para crear una onda sinusoidal sintetizada para un inversor o motor VFD (Variable Frequency Drive), una tabla de búsqueda (LUT) con o sin interpolación funciona bien. Solo es necesario almacenar los valores para un cuadrante de la onda sinusoidal debido a la simetría.

Como señala @Temlib, los algoritmos utilizados dentro de las FPU modernas utilizan una reducción de rango seguida de una evaluación que utiliza algo como el algoritmo Remez para limitar el error absoluto máximo. Puede encontrar más información en este documento de Intel Verificación formal de punto flotante funciones trigonométricas .

    
respondido por el Spehro Pefhany
13

La mayoría de las bibliotecas de trigonometría de computadora se basan en aproximaciones polinómicas , que proporciona el mejor equilibrio entre velocidad y precisión. Por ejemplo, una docena de operaciones de multiplicación y suma / resta son suficientes para proporcionar una precisión de precisión única para el seno y el coseno.

    
respondido por el Dave Tweed
0

Se puede usar una serie de Fourier para calcular sin, cos, algebraic & Las funciones trigonométricas valoran exactamente un cierto número de puntos decimales. La serie continúa con un número infinito de términos.

    
respondido por el Shree
-1

Podrías crear tu propia biblioteca trigonométrica con bastante facilidad. La expansión del seno de Taylor, por ejemplo, está en la página de Wikipedia del seno. Por supuesto, no puedes ir al infinito, pero puedes recorrer un gran número. Primero deberías convertir grados a radianes, que son solo grados * pi / 180. Para obtener pi, puedes dividir el área de un círculo por el radio al cuadrado. Para obtener el área de su círculo, puede usar un esquema de integración de tetraedro. Estos son solo ejemplos, pero entiendes la idea. Las matemáticas numéricas pueden ser poderosas. Puede resolver problemas de mecánica cuántica, por ejemplo, que no podría resolver a mano, utilizando matrices.

    
respondido por el John Petersen

Lea otras preguntas en las etiquetas