Quiero calcular y(n)=32677Sin(45/1024•n)
, dónde y
es un número entero y n
varí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.
sin(x)
dónde x
está 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.