/ Forside / Karriere / Uddannelse / Højere uddannelser / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Højere uddannelser
#NavnPoint
Nordsted1 1588
erling_l 1224
ans 1150
dova 895
gert_h 800
molokyle 661
berpox 610
creamygirl 610
3773 570
10  jomfruane 570
Bereine sinus?
Fra : Harald Mossige


Dato : 27-05-06 22:49

Finnes der en enkel algoritme for å la en mikrokontroller (8 bit) bereine
sinus?

Selvsakt trenger ikke presisjonen være perfekt.

HM



 
 
Uffe Kousgaard (28-05-2006)
Kommentar
Fra : Uffe Kousgaard


Dato : 28-05-06 04:24

"Harald Mossige" <haraldmnospam@hkabel.no> wrote in message
news:4478c952$1@news.wineasy.se...
> Finnes der en enkel algoritme for å la en mikrokontroller (8 bit) bereine
> sinus?

Man kan anvende rækkeudvikling:

sin(x) = x - x^3/3! + x^5/5! - x^7/7! + x^9/9! etc.

Ovenstående 5 led er rigeligt. Se f.eks. mere her:
http://www.cs.aau.dk/~ohj/AA1-03/num.pdf - side 5-6.




Ulrik Smed (28-05-2006)
Kommentar
Fra : Ulrik Smed


Dato : 28-05-06 10:14

"Uffe Kousgaard" <oh@no.no> skrev i en meddelelse
news:447917ba$0$38666$edfadb0f@dread12.news.tele.dk
> "Harald Mossige" <haraldmnospam@hkabel.no> wrote in
> message news:4478c952$1@news.wineasy.se...
>> Finnes der en enkel algoritme for å la en
>> mikrokontroller (8 bit) bereine sinus?
>
> Man kan anvende rækkeudvikling:
>
> sin(x) = x - x^3/3! + x^5/5! - x^7/7! + x^9/9! etc.
>
> Ovenstående 5 led er rigeligt. Se f.eks. mere her:
> http://www.cs.aau.dk/~ohj/AA1-03/num.pdf - side 5-6.

Hvis man skal bruge en sekvens af sinusværdier, kan man simulere en
resonator og "slå den an". Den metode er både simpel og ekstremt hurtig og
pladsbesparende. Den kræver ikke engang en multiplikation.

Eksempel:

a=10000 ("anslag")
b=0
Loop:
a=a+b/16
b=b-a/16
jump Loop

Divisionen med 16 bestemmer hvor hurtigt sinusen svinger, altså frekvensen.
Den kan laves med højreskift. a og b skal dog være i 16 bit bredde for at få
et rimeligt 8-bit resultat uden for store afrundingsfejl. a og b vil begge
give sinusbølger, 90 grader forskudt. Så man kan sige den ene giver sinus og
den anden giver cosinus.

Princippet kan også bruges til at lave hurtige digitale filtre.

--
Ulrik Smed
Aarhus, Denmark



Filip Larsen (28-05-2006)
Kommentar
Fra : Filip Larsen


Dato : 28-05-06 09:45

Harald Mossige skrev

> Finnes der en enkel algoritme for å la en mikrokontroller (8 bit)
bereine
> sinus?

Du kan benytte Chebyshev-approximation, der er en metode der giver god
tilnærmelse over hele domænet i forholdvis få beregninger. Teorien er
noget mere kompliceret end ved Taylor-approximation, men
implementeringen er heldigvis ret enkel. Se fx. afsnit 5.8 i "Numerical
Recipies in C", http://www.library.cornell.edu/nr/cbookcpdf.html.


Mvh,
--
Filip Larsen



Jens Axel Søgaard (28-05-2006)
Kommentar
Fra : Jens Axel Søgaard


Dato : 28-05-06 10:38

Harald Mossige wrote:
> Finnes der en enkel algoritme for å la en mikrokontroller (8 bit) bereine
> sinus?
>
> Selvsakt trenger ikke presisjonen være perfekt.

Som Filip nævner er Chebychev et godt valg.
Et alternativ kunne være CORDIC, se Kai Birger
Nielsens side om beregning af sinus.

<http://www.246.dk/sinus.html>

--
Jens Axel Søgaard


Harald Mossige (29-05-2006)
Kommentar
Fra : Harald Mossige


Dato : 29-05-06 01:24


"Jens Axel Søgaard" <usenet@soegaard.net> wrote in message
news:44796feb$0$38678$edfadb0f@dread12.news.tele.dk...
> Harald Mossige wrote:
> > Finnes der en enkel algoritme for å la en mikrokontroller (8 bit)
bereine
> > sinus?
> >
> > Selvsakt trenger ikke presisjonen være perfekt.
>
> Som Filip nævner er Chebychev et godt valg.
> Et alternativ kunne være CORDIC, se Kai Birger
> Nielsens side om beregning af sinus.
>
> <http://www.246.dk/sinus.html>

Takker for svarene. Konklusjonen er klar: jeg må bruke tabelloppslag.
Bereining er for resurskrevende.

HM



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste