Quiero calcular y(n)=32677Sin(45/1024•n), dónde yes un número entero y nvaría de 0 a 2048. ¿Cómo puedo hacer este proceso más rápido y con mayor precisión? Ahora quiero mostrarle una respuesta de referencia: desde    Sin(a+b)=Sin(a)Cos(b)+Cos(a)Sin(b) 
   And   Cos(a+b)=Cos(a)Cos(b)-Sin(a)Cos(b). Entonces puedo almacenar   Sin(45/1024•1)y solo.   Cos(45/1024•1)Luego use esta fórmula:
Sin(45/1024•2)=Sin(45/1024•1+45/1024•1), 
     Cos(45/1024•2)=Cos(45/1024•1+45/1024•1),
   Sin(45/1024•n)=Sin(45/1024•(n-1)+45/1024•1), 
     Cos(45/1024•n)=Cos(45/1024•(n-1)+45/1024•1), De esta manera tal vez más rápido sin almacenar gran variedad.
                    
                        c++
                                algorithms
                                
                    
                    
                        LaiJong
fuente
                
                fuente

sin(x)dóndexestá en grados. Si ese es el caso, debe tener en cuenta que el argumento de las funciones trigonométricas generalmente está en radianes. El argumento está en radianes en C ++, que es cómo se etiqueta esta pregunta.Respuestas:
Si el
nrango va de 0 a 2048, puede calcular previamente los valores, almacenarlos en una matriz.y(n)se convertiríavalues[n].fuente
fsinpodrían usarse y ser más amigables con la caché que algunas matrices).Calcule la tabla en tiempo de compilación en lugar de tiempo de ejecución.
Estás haciendo una tabla de 2048 elementos de valores enteros escalados de 16 bits.
Escriba un script Matlab barato, con una impresión que proporcione una línea de datos adecuada para su lenguaje de programación final. Corte y pegue el resultado en su código fuente, como una tabla de datos constante, y realice una búsqueda de tabla en tiempo de ejecución. Esto empuja el tiempo de cálculo inicial al ciclo de compilación, en lugar del tiempo de inicio del programa.
fuente
Dada la forma de la función, la respuesta natural es el algoritmo CORDIC . Es un enfoque mucho más limpio que el desglose de la pregunta. Por otro lado, la tabla que necesita es mucho, mucho más pequeña que la tabla que otros han sugerido.
fuente