Czy ktoś z Grupowiczów mógłby mnie oświecić? ;) Czy w Bascomie-8051 jest możliwość wykonywania logarytmów? Chodzi mi o logarytm log(100/X); gdzie X to zmienna o wartościach od 1 do 100. jeśli tak, proszę o przykładową instrukcję.
Pozdrawiam i dziękuję,
Kuba
Didn't find your answer? Ask the community — no account required.
R
RoMan Mandziejewicz
Nie prościej stablicować?
K
Kuba
Heh :) Próbuję zrobić urządzenie do obsługi Spekola (spektrofotometr) i muszę przekształcać %pochłaniania na absorbancję. Więc takblica musiałby zawierać liczby co 0,1 w zakresie od 0,1 do 100 :) A procek wysiada przy takiej tablicy :)
Ale zrobiłem w excelu wykres takiej zależności i przekształciłem tak, żeby użyć funkcji -0,4343*Log(X)+2 I tutaj mam pytanie - czy do funkcji Const można podstawiać zmienne? Chodzi mi o to, żeby w nawiasie od funkcji Log() można było użyć zmiennej a nie jednej, stałej liczby. (Const Z = -0,4343 * Log(X) + 2)
Pzdr, Kuba
P
Pawel "O'Pajak
Powitanko,
Czy moze produkcji NRD?;-) Ah, lza sie w oku kreci;-) Co to za Spekol? AFAIR jakies mialy wyjscie cyfrowe w formacie BCD...
A kto Ci kaze uzywac tylko pamieci procka i zapisywac to w Dim. Przeca mozesz dac E2ROMa, albo nawet kilka, wpisac co trzeba do kazdej komorki i jush. Pozdroofka, Pawel Chorzempa
K
Kuba
U¿ytkownik "Pawel "O'Pajak"" snipped-for-privacy@klub.chip.pl> napisa³ w wiadomo¶ci news:cfn8kq$2580$ snipped-for-privacy@mamut1.aster.pl...
Spekol 10 :P Z 1976 r. Ale elektronikê ma wymienion± a przystawka EK 1 nieu¿ywana by³a ;P A tablicê robiæ ? Hmm to by by³o tylko 1000 komórek do zape³nienia ;) A jak bym chcia³ dok³adniej %poch³aniania? Np do 2 miejsc po przecinku ? To ju¿ by by³o duuuuu¿o wiêcej wiêc jednak zostajê przy tym logarytmie - najprostsze rozwi±zanie bo i ma³o programu zajmuje i tablic nie trzeba :) A tak apropos masz mo¿e spekola 11 ? Bo poszukujê ;)
Kuba
"
"PrzemcioŻ."
Kuba napisał(a):
a na jakim procku to robisz? moze ci zabraknac pamieci RAM:) w uC... ja tez bylbym za EEPROM jakims szerwgowym...
K
Kuba
U¿ytkownik "Przemcio¯." snipped-for-privacy@WYTNIJTOonet.pl napisa³ w wiadomo¶ci news:cfnani$35k$ snipped-for-privacy@atlantis.news.tpi.pl...
Na 89C4051 - ale z tym eepromem to bym musia³ zapisaæ 1000 komórek pamiêci je¶li dok³adno¶æ mia³aby byæ do 2ch miejsc po przecinku. A robi±c krzywe ja muszê mieæ 3 lub 4 miejsca po przecinku co daje 100000 i 100000 komórek pamiêci. Ju¿ sobie poradzi³em z tym wzorkiem na logarytm (Const A = -0.4343
Log(x) + 2) i teraz mam problem bo bascom wyci±ga funkcjê log(x) dla const X. I czy da siê jako¶ zadeklarowaæ ¿eby Const X równy by³ zmienniej single? Chodzi mi o co¶ typu :
Dim W As Single W = <obliczona przez inny fragment programu warto¶æ %poch³aniania>
Const X = W Const A = -0.4343 * Log(x) + 2
W taki sposób siê niestety nie da :( Mo¿e jaki¶ inny pomys³? A z eepromem mówiê z góry - odpada po pierwsze ze wzglêdu na ilo¶æ komórek po drugie czasoch³onno¶æ przygotowania tablicy i zapisania.
Kuba
T
Tomasz Piasecki
A po ludzku, czyli szereg Taylora dla ln(1+x), to się nie da?
Skoro potrzebujesz tylko 2 miejsc po przecinku dokładności, to pewnie coś koło 5 pierwszych wyrazów wystarczy.
TP.
K
Kuba
Siê nie da bo Ln trzeba zadeklarowaæ jako Const X = Ln(1+x) A x tez trzeba jako const a nie wiem jak zrobiæ ¿eby Const X przyjmowa³ warto¶æ innej zmiennej <nie Const>
Kuba
M
Marek Dzwonnik
U¿ytkownik "Kuba" snipped-for-privacy@buziaczek.pl napisa³ w wiadomo¶ci news: snipped-for-privacy@newsgate.onet.pl
Mam przed nosem ksi±zkê "Miniklakulatory w obliczeniach naukowych i technicznych" (M.Kozarski, Z.Szurmak, WNT, 1976). Czyli praktyczny zbiór przepisów, jak prowadziæ obliczenia naukowe pos³uguj±c siê kalkulatorem czterodzia³aniowym. A arytmetyka zmiennoprzecinkowa w Bascomie to mniej wiêcej ta sama klasa narzêdzi. ;-) Zarówno log10 i ln mo¿esz liczyæ do wyboru: jako sumê szeregu, z aproksymacji wielomianowej albo z rozwiniêcia w u³amki ³añcuchowe. Napisz jeszcze raz, jaki masz zakres argumentu log(x) i jakich dok³adno¶ci oczekujesz.
M
Marek Dzwonnik
U¿ytkownik "Kuba" snipped-for-privacy@hot.pl napisa³ w wiadomo¶ci news:cfndjs$a4h$ snipped-for-privacy@news.onet.pl
Sta³a X uzale¿niona od zmiennej x ?? Czy ja ¼le rozumujê, czy to jakie¶ Bascomowe kuriozum?
K
Kuba
U¿ytkownik "Marek Dzwonnik" <mdz@WIADOMO_PO_CO_TO.message.pl> napisa³ w wiadomo¶ci news:411f3bf8$ snipped-for-privacy@news.home.net.pl...
A bo pewnie pokrêci³em wszystko :P W Spekolu zale¿no¶æ %poch³aniania od ekstyncji jest taka : ekstyncja = -0,4343*log(%poch³aniania)-2 I teraz ja mierzê <za³ózmy> napiêcie poleceniem A = getad2051() Przekszta³cam A tablic± na napiêcie A nastêpnie przy pomocy wzoru na zale¿no¶æ napiêcia od %poch³aniania przekszta³cam zmie¿one napiêcie na %poch³aniania. I teraz obliczam logarytm: Const Ekstyncja = -0,4343*log(%poch³aniania)-2 Tylko do deklaracji Const za %poch³aniania nie mogê "w³o¿yæ" normalnej zmiennej (np. Dim %poch³aniania as Single), ale inn± "Const" I chodzi mi o to jak zrobiæ, ¿eby : Zadeklarowaæ Const X , która jest równa zmiennej %poch³aniania I jak ju¿ bêdê mia³ t± Const X, która bêdzie równa %poch³aniania, to podstawiê do: Const Ekstyncja = -0,4343*log(X)-2
Mo¿e teraz bêdzie to bardziej zrozumia³e ;)
Kuba
K
Kuba
U¿ytkownik "Marek Dzwonnik" <mdz@WIADOMO_PO_CO_TO.message.pl> napisa³ w wiadomo¶ci news: snipped-for-privacy@news.home.net.pl...
Zakres log(x) jest od 100% do 1% (przy czym przy 0% log(x) = nieskoñczono¶æ) Zale¿y mi na dok³adno¶ci do 4 miejsc po przecinku.
Kuba
R
RoMan Mandziejewicz
[...]
Jasne. Tylko, że dużej dokładności potrzebujesz raczej w okolicach 1% niż 100%
M
Marek Dzwonnik
U¿ytkownik "Kuba" snipped-for-privacy@hot.pl napisa³ w wiadomo¶ci news:cfnet7$c4h$ snipped-for-privacy@news.onet.pl
Nie znam Bascoma, ale je¿eli dobrze rozumiem to zapisu log(x) mo¿esz u¿yæ jedynie w deklaracjach sta³ych? Czyli jest to funkcja (preprocesora??), której _sta³±_ warto¶æ wyznacza bascom.exe, na PC-cie(!), podczas kompilacji. Ale nie mo¿esz jej uzyæ na Atmelku w czasie wykonania programu.
W takim razie pozostaj± Ci jedynie rozwiniêcia. W przypadku logarytmów wygl±daj± dosyæ przyja¼nie, choæ trzeba uwa¿aæ na dopuszczalne zakresy argumentów i kumulacjê b³êdów. Mo¿na j± oszacowaæ (jak kto¶ potrafi :->) albo zrobiæ w Excelu tabelkê porównawcz± i zobaczyæ czy siê za bardzo nie rozje¿d¿a.
Np. ln(1+x) dla (x>-1) w rozwiniêciu na u³amek ³añcuchowy wygl±da tak: = x/1 + (x/2 + x/3) + (2x/2 + 2x/5) + ... + (nx/2 + nx(2n+1)) + ... Obliczenia sprowadzaj± siê do dzieleñ przez liczby naturalne oraz sumowañ. Jak siê przeskaluje, to pewnie wystarcz± 32bity sta³oprzecinkowe
A np. log(x) w prostej aproksymacji wielomianowej dla
1/sqrt(10 <= x <= sqrt(10) (czyli w zakresie jednej dekady) oraz przy |eps| <= 6e-4 wygl±da tak: log(x) = t ( a3 + a1*t^2) gdzie: t = (x-1)/(x+1) a1 = 0.36415 a3 = 0.86304
Mam równie¿ np. rozwiniêcie log(x) z b³edem <=1e-7 ale to ju¿ bêdzie wielomian 9 stopnia.
Jeszcze jedno... jaki Ty tam masz przetwronik A/C? Bo tak mi siê wydaje, ¿e z getad2051 to wyci±gniesz 5.. mo¿e 6 bitów :-> . Przy 64 niezale¿nych stanach wej¶ciowych to zrób tablicê tab[64] i nie zawracaj sobie g³owy liczeniem logarytmów. A Ty tu co¶ wspomina³e¶ o 2..3..4 cyfrach po przecinku. ;-) Je¿eli tak to po pierwsze zacznij od przetwornika o odpowiedniej rozdzielczo¶ci i dynamice.
A
Andrzej Kmicic
Te¿ to tak odczyta³em ale nie ¶mia³em sie wtr±caæ :)
AK
P
Pawel "O'Pajak
Powitanko,
Ohjojoj:-) Toz to cudo niebywale:-) W technikum pozwolili mi to rozwalic, mam gdzies nawet siatke dyfrakcyjna (tak to sie nazywalo?). AFAIR zrodlem swiatka byla tam zwykla zarowka zasilana przez trafo. Biorac pod uwage wahania napiecia w sieci -> "wahania" widma samej zarowki daj sobie spokoj z n miejscami po przecinku, bo wprawne oko ma lepsza dokladnosc niz Spekol 10;-). No chyba, ze wymieniona elektronika dokonuje pomiaru "slepej proby" i odpowiednio struje zarowka itd...
JW, ale co za problem.
Tablica bedzie dokladniejsza (w swoim wzorze "dopasowales" sie do krzywej, tu mozesz te krzywa zapisac)
Szybciej bedzie taki Atmelek "liczyl", wynik masz niemal odrazu
Latwiej cos poprawic
Mniej kombinowania = mniejsze prawdopodobienstwo spieprzenia czegos
Niestety, w czasach gdy konczylem Technikum byla to nowosc. Tam prad zarowki AFAIR byl juz stabilizowany, no i ten wyswietlacz CYFROWY, eh ale wtedy przetwornik A/D kosztowal kilkaset dewiz;-)
Pozdroofka, Pawel Chorzempa
K
Kuba
U¿ytkownik "Pawel "O'Pajak"" snipped-for-privacy@klub.chip.pl> napisa³ w wiadomo¶ci news:cfo2gd$2nn2$ snipped-for-privacy@mamut1.aster.pl...
Ja mam spekolka z palnikiem rtêciowym :P Wiêc jest ca³kiem dok³adny jak na taki model ;) A do tej pory wiele laboratoriów u¿ywa spekola 10 , bo nowe modele s± niestety bardzo drogie (11 - 13 tys pln)
Kuba
K
Kuba
U¿ytkownik "Marek Dzwonnik" <mdz@WIADOMO_PO_CO_TO.message.pl> napisa³ w wiadomo¶ci news: snipped-for-privacy@news.home.net.pl...
Na razie chcê sie pobawiæ i po prostu sprawdziæ czy takie co¶ wypali. A pó¼niej bêdziemy my¶leæ o przetworniku A/C, pod³±czeniu kompa, klawiatury drukarki itp (ach te dalekosiêzne plany :P) A mogê prosiæ o ten wzór na logarytm z wielomianem 9 stopnia ?
Kuba
Z
ziel
On Behalf Of Marek Dzwonnik
Bardzo dobrze rozumujesz. :-D Stała, to stała - nie zmienia swej wartości nawet w Bascom. :-D
pzdr Artur
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required
Report Content
You are reporting this content to the moderators. They will look at it
ASAP.