Ich möchte berechnen y(n)=32677Sin(45/1024•n)
, wo y
eine Ganzzahl ist und n
zwischen 0 und 2048 liegt. Wie kann ich diesen Prozess schneller und genauer machen? Jetzt möchte ich Ihnen eine Referenzantwort zeigen: Seit Sin(a+b)=Sin(a)Cos(b)+Cos(a)Sin(b)
Und Cos(a+b)=Cos(a)Cos(b)-Sin(a)Cos(b)
. So kann ich speichern Sin(45/1024•1)
und nur. Cos(45/1024•1)
Dann verwenden Sie diese Formel:
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)
, Auf diese Weise vielleicht schneller ohne großen Array zu speichern.
sin(x)
wo x
in Grad ist. Wenn dies der Fall ist, müssen Sie sich bewusst sein, dass das Argument für die Triggerfunktionen normalerweise im Bogenmaß lautet. Das Argument ist in C ++ im Bogenmaß angegeben. So wird diese Frage markiert.