[elektro] DC motor encoderrel CNC-re
Moczik Gabor
pm_levlista at progzmaster.hu
Thu Jun 19 16:35:37 CEST 2008
Rancz Lajos wrote:
> Hát x nem kisebb mint 1, mert az első negyedet (PI/2-ig) legalább ki
> kell számolni. A lebegőpontos szorzás nagyon lassú, de a 3e-6 télleg nem
> rossz, mert a 32 bites float 7 tizedesjegyig jó.
Egyebkent a nevezett Taylor sort frankon lehet iterativ ciklusba szervezni,
a ciklusmagban 1db osztas es 1db szorzas kell:
divtab[10] = { 3!, 5!, 7! ... };
value=x;
x2=x*x;
prev_pow=x;
for (n=0; n<=9; n++) {
pow = prev_pow*x2;
prev_pow = pow;
if (odd(n)) value+=pow/divtab[n]; else value-=pow/divtab[n]
}
return value;
A minden lepesben osztas kihagyhato, de akkor kozos nevezore kell hozni es
szorozni kell, igy baromi nagy szamok lesznek, nem biztos hogy megeri...
Lebegopontot nagyszeruen el lehet kerulni fix pontossagu szamitassal,
mondjuk ha 1000000 jelenti az 1-et, akkor van 6 tizedesjegy felbontasunk,
csak nem tizedes formaban szamolunk.
(tehat belul 1e6-tal szorzott eredmenyt szamolunk ki, csak amikor kell,
akkor skalazzuk at)
--
((( Móczik Gábor )))--((( E~mail: "pm-01" @AT "progzmaster" .DOT "hu" )))
((( Skype: moczik )))
More information about the Elektro
mailing list