Quero calcular y(n)=32677Sin(45/1024•n)
onde y
é um número inteiro e n
varia de 0 a 2048. Como posso tornar esse processo mais rápido e mais preciso? Agora, quero mostrar uma resposta de referência: Desde Sin(a+b)=Sin(a)Cos(b)+Cos(a)Sin(b)
And Cos(a+b)=Cos(a)Cos(b)-Sin(a)Cos(b)
. Para que eu possa armazenar Sin(45/1024•1)
e Cos(45/1024•1)
somente. Em seguida, 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)
, Desta forma, talvez mais rápido sem armazenar grande variedade.
sin(x)
onde x
está em graus. Se for esse o caso, você deve estar ciente de que o argumento para as funções trigonométricas é tipicamente em radianos. O argumento está em radianos em C ++, que é como essa pergunta é marcada.