-
71. Data: 2009-07-10 22:13:33
Temat: Re: Pocedura całkowania
Od: "slawek" <s...@h...pl>
Użytkownik "Krzysiek" <"dthrone[wytnij_to_i_nawiasy]"@interia.pl> napisał w
wiadomości grup dyskusyjnych:h3812r$qou$...@a...news.neostrada.pl
...
> No ale nie przeginajmy. Wspomniane twierdzenie mówi, że sygnał
> oryginalny w pewnych warunkach DA się jednoznacznie odtworzyć z próbek.
> Jeśli sygnał ma ograniczone widmo i próbkujemy odpowiednio często, to
> jaki problem?
Jeżeli założymy że funkcja jest taka a taka - to ok, da się ją odtworzyć. Da
się - bo założyliśmy.
Ale jeżeli o funkcji nic nie wiemy (ba! nawet wiemy że przypuszczalnie jej
widmo nie jest ograniczone a ona sama nie da się przedstawić całką itd.
itp.) - to leżym i kwiczym.
Dla przykładu, funkcja sin(x)+cos(2x) pięknie się da próbkować. Funkcja
sin(x) exp(-x/1000) też się da, choć trochę gorzej. Ale np. sin(1/x) w
przedziale (-1,1) już jakby nieco gorzej... A jak jeszcze spróbujesz np.
sin(1/exp(x^x)) - to sam możesz się przekonać, jak dobre jest te
"jednoznaczne odtworzenie".
slawek
-
72. Data: 2009-07-10 22:14:27
Temat: Re: Pocedura całkowania
Od: "slawek" <s...@h...pl>
Użytkownik "A.L." <a...@a...com> napisał w wiadomości grup
dyskusyjnych:iq1f55hph9255rpv67v4j8berqgfi5dt7v@4ax.
com...
>>Jeśli sygnał ma ograniczone widmo i próbkujemy odpowiednio często, to
>>jaki problem?
>
>
> Zapytaj "slawka"
Jeżeli założenie o ograniczonym widmie jest fałszywe - to czy mamy problem?
:)
slawek
-
73. Data: 2009-07-11 06:05:47
Temat: Re: Pocedura całkowania
Od: "Mariusz Marszałkowski" <b...@g...pl>
slawek <s...@h...pl> napisał(a):
> Dobrze, ponieważ jesteś uparty - policz sobie
> http://planetmath.org/encyclopedia/SineIntegral.html
, masz rozwinięcie w
> szereg, więc jest z czym porównywać.
>
> Weź trapeziki i 3/8, porównaj z całkowaniem spline'ami. Sam jestem ciekawy -
> robiłem różne testy, ale z tą funkcją nie. Nota bene, pod całką siedzi
> oscylacja pomnożona przez zanikającą amplitudę. Inżyniersko sensowne.
No właśnie ciekawość mnie zżerała i się pobawiłem i przyjrzałem dokładniej.
Wyniki, no cóż, w zależności od całkowanej funkcji. Trapezy czasami
potrzebują około 5-10 razy więcej czasu niż interpolacja trójmianem
kwadratowym w przód aby uzyskać tą samą dokładność. Z kolei interpolacja
trójmianem czasami potrzebuje 5-10 razy więcej czasu aby uzyskać to samo
co aproksymacja wielomianem 3-go stopnia. Nie znam fachowych nazw tych
metod. Poniżej wyniki:
funkcja podcałkowa: sin(x)/x
przedział: <0.01 - 15>
metoda | ilość próbek | czas us | dokładność
---------------------------------------------
trapezy | 256 | 0 | 0.0000144576
trapezy | 512 | 2 | 0.0000036001
trapezy | 1024 | 4 | 0.0000008983
trapezy | 2048 | 8 | 0.0000002243
trapezy | 4096 | 15 | 0.0000000561
trapezy | 8192 | 35 | 0.0000000140
ax2+bx+c | 256 | 7 | 0.0000024678
ax2+bx+c | 512 | 14 | 0.0000003096
ax2+bx+c | 1024 | 27 | 0.0000000388
ax2+bx+c | 2048 | 56 | 0.0000000048
ax2+bx+c | 4096 | 117 | 0.0000000006
ax2+bx+c | 8192 | 246 | 0.0000000001
ax3+bx2+cx+d| 256 | 17 | 0.0000000034
ax3+bx2+cx+d| 512 | 35 | 0.0000000004
ax3+bx2+cx+d| 1024 | 71 | 0.0000000000
ax3+bx2+cx+d| 2048 | 146 | 0.0000000000
ax3+bx2+cx+d| 4096 | 302 | 0.0000000000
ax3+bx2+cx+d| 8192 | 628 | 0.0000000000
funkcja podcałkowa: cos(x)/x
przedział: <0.01 - 15>
256 0 1.4956505681
512 2 0.5143633061
1024 3 0.1560617751
2048 8 0.0427125995
4096 17 0.0110257619
8192 39 0.0027818504
256 7 1.0768666046
512 13 0.3320225457
1024 25 0.0834761547
2048 51 0.0169137662
4096 116 0.0028510407
8192 234 0.0004225407
256 0 0.7013858472
512 0 0.1842101116
1024 0 0.0343777480
2048 82 0.0039816083
4096 302 0.0002193824
8192 639 0.0000055423
sin(x)/x/x
funkcja podcałkowa: cos(x)/x
przedział: <0.01 - 25>
256 1 3.0385860008
512 2 1.1413372454
1024 3 0.3800913095
2048 8 0.1118991967
4096 17 0.0300330418
8192 38 0.0076875683
256 6 2.2974020234
512 14 0.8029555156
1024 33 0.2356433412
2048 62 0.0559723645
4096 120 0.0107595597
8192 243 0.0017440149
256 16 1.6039225484
512 36 0.5057854479
1024 73 0.1229429323
2048 149 0.0205519289
4096 296 0.0020372343
8192 625 0.0000797190
funkcja podcałkowa: 3x3-2x2+5x+4
przedział: <0 - 10>
256 0 0.1102140202
512 2 0.0274457691
1024 4 0.0068480345
2048 9 0.0017103359
4096 17 0.0004273752
8192 37 0.0001068203
256 7 0.0004487672
512 14 0.0000559880
1024 28 0.0000069918
2048 57 0.0000008740
4096 119 0.0000001092
8192 247 0.0000000110
256 18 0.0000000001 // błąd 0, bo interpolacja jest dokładna
512 35 0.0000000001
1024 72 0.0000000000
2048 146 0.0000000004
4096 299 0.0000000001
8192 620 0.0000000026
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
74. Data: 2009-07-11 06:08:29
Temat: Re: Pocedura całkowania
Od: "Mariusz Marszałkowski" <b...@g...pl>
poprawka
w trzeciej tabeli funkcja podcałkowa to: sin(x)/x/x
Pozdrawiam
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
75. Data: 2009-07-11 16:19:56
Temat: Re: Pocedura całkowania
Od: "slawek" <s...@h...pl>
Użytkownik "Mariusz Marszałkowski" <b...@g...pl> napisał w
wiadomości grup dyskusyjnych:h39a3q$rpe$...@i...gazeta.pl...
> No właśnie ciekawość mnie zżerała i się pobawiłem i przyjrzałem
> dokładniej.
> Wyniki, no cóż, w zależności od całkowanej funkcji. Trapezy czasami
Właśnie dziś rano przypomniałem sobie, co mi nie pasowało z trapezami: dla
funkcji wypukłych (tzn. mamy funkcję rzeczywistą zmiennej rzeczywistej)
ZAWSZE dają nieco za mało. Funkcje sklejane z kawałków wielomianów takich
jak np. a x^3+b x^2 +c x + d niekoniecznie. Co przy funkcji oscylującej:
dla trapezów zawsze niedomiar przez 1/2 okresu i nadmiar przez kolejne 1/2
okresu. A takie cuś powinno generować coś w rodzaju "siły wymuszającej".
> metod. Poniżej wyniki:
Wic w tym, że ja zbieram wyniki z 8 cyframi znaczącymi, a liczę z... 64
bitami, czyli mantysa 52 bity czyli nieco ponad 15 cyfr po przecinku (choć
FPU ma 80 bitów i niektóre rzeczy liczy wewnętrznie nieco dokładniej) . Te
które masz to 10 cyfr, ale w większości - nieznaczących (same zera). Ale
widać że im wyższy stopień tym lepiej - czyli że (teoretycznie) spliny są
dużo lepsze niż trapezy.
Teraz przepisuję procedurę całkowania na nowo - aby była "idiotoodporna" -
dany jest wektor y oraz krok dla x - a całka jest brana od a do b (które są
rzeczywiste): czasem daje to np. a pomiędzy znanymi wartościami, czasem może
to dać np. b poza znanymi y-kami (ekstrapolacja). Do tego patologiczne
sytuacje - gdy np. długość wektora y wynosi 1 - czego nie da się w
konkretnym zastosowaniu ominąć.
Tak to robię, że pomiędzy całkowitymi wartościami a/h oraz b/h jest
całkowanie splinem (które jest gotowe). Ewentualne niedoróbki załatwić ma
kubiczny wielomian (ale już nie spline). Oczywiście - jeżeli da się obliczyć
kubiczny wielomian. Bo jeżeli nie - to parabola. Jeżeli nie parabola - to
kawałek prostej. Jak skończę - to wrócę do dyskusji z konkretnymi danymi
(tzn. "nowa metoda" vs. trapezy vs. dokładna wartość).
slawek
-
76. Data: 2009-07-11 19:21:31
Temat: Re: Pocedura całkowania
Od: "Mariusz Marszałkowski" <b...@g...pl>
slawek <s...@h...pl> napisał(a):
> Jak skończę - to wrócę do dyskusji z konkretnymi danymi
> (tzn. "nowa metoda" vs. trapezy vs. dokładna wartość).
Wróć pogadać gdy skończysz :) Może do tego czasu napiszę jeszcze
interpolację wielomianem 5-go stopnia i wielomianem trygonometrycznym,
to porównamy. Mój kod wystawiłem w którymś z listów, może w czymś
Ci pomoże.
Pozdrawiam.
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
77. Data: 2009-07-13 06:26:06
Temat: Re: Pocedura całkowania
Od: Tomasz Kaczanowski <kaczus@dowyciecia_poczta.onet.pl>
slawek pisze:
>
> Wic w tym, że ja zbieram wyniki z 8 cyframi znaczącymi, a liczę z... 64
> bitami, czyli mantysa 52 bity czyli nieco ponad 15 cyfr po przecinku
Błąd - maksymalnie tyle - nazwa zmiennoprzecinkowe pochodzi stąd, że
dokładność sie zmienia.
> (choć FPU ma 80 bitów i niektóre rzeczy liczy wewnętrznie nieco
> dokładniej).
nie każdy FPU - z tym jest różnie - w zależności od rodziny procesorów.
Dodatkowo - wykonując operacje na tych liczbach, będziesz miał kolejne
błędy - po za dzieleniem, duże błędy uzyskuje się przy dodawaniu, jeśli
liczby są różnej wielkości.
--
Kaczus
http://kaczus.republika.pl
-
78. Data: 2009-07-13 07:03:40
Temat: Re: Pocedura całkowania
Od: "Stachu 'Dozzie' K." <d...@d...im.pwr.wroc.pl.nospam>
On 13.07.2009, Tomasz Kaczanowski wrote:
> slawek pisze:
>>
>
>> Wic w tym, że ja zbieram wyniki z 8 cyframi znaczącymi, a liczę z... 64
>> bitami, czyli mantysa 52 bity czyli nieco ponad 15 cyfr po przecinku
>
> Błąd - maksymalnie tyle - nazwa zmiennoprzecinkowe pochodzi stąd, że
> dokładność sie zmienia.
Błąd -- dokładnie tyle. Nazwa "zmiennoprzecinkowe", a raczej "floating
point", pochodzi stąd, że przecinek nie zawsze jest za cyfrą jednostek
(pływa).
>> (choć FPU ma 80 bitów i niektóre rzeczy liczy wewnętrznie nieco
>> dokładniej).
>
> nie każdy FPU - z tym jest różnie - w zależności od rodziny procesorów.
> Dodatkowo - wykonując operacje na tych liczbach, będziesz miał kolejne
> błędy - po za dzieleniem, duże błędy uzyskuje się przy dodawaniu, jeśli
> liczby są różnej wielkości.
--
Stanislaw Klekot
-
79. Data: 2009-07-13 07:12:51
Temat: Re: Pocedura całkowania
Od: Tomasz Kaczanowski <kaczus@dowyciecia_poczta.onet.pl>
Stachu 'Dozzie' K. pisze:
> On 13.07.2009, Tomasz Kaczanowski wrote:
>> slawek pisze:
>>> Wic w tym, że ja zbieram wyniki z 8 cyframi znaczącymi, a liczę z... 64
>>> bitami, czyli mantysa 52 bity czyli nieco ponad 15 cyfr po przecinku
>> Błąd - maksymalnie tyle - nazwa zmiennoprzecinkowe pochodzi stąd, że
>> dokładność sie zmienia.
>
> Błąd -- dokładnie tyle. Nazwa "zmiennoprzecinkowe", a raczej "floating
> point", pochodzi stąd, że przecinek nie zawsze jest za cyfrą jednostek
> (pływa).
No może niezrozumiale, ale właśnie o tym napisałem... Przedpiszca
napisał, że ma ponad 15 cyfr po przecinku.
--
Kaczus
http://kaczus.republika.pl
-
80. Data: 2009-07-13 07:34:58
Temat: Re: Pocedura całkowania
Od: Wojciech Muła <w...@p...null.onet.pl.invalid>
On Mon, 13 Jul 2009 09:12:51 +0200 Tomasz Kaczanowski
<kaczus@dowyciecia_poczta.onet.pl> wrote:
> >> Błąd - maksymalnie tyle - nazwa zmiennoprzecinkowe pochodzi stąd,
> >> że dokładność sie zmienia.
> >
> > Błąd -- dokładnie tyle. Nazwa "zmiennoprzecinkowe", a raczej
> > "floating point", pochodzi stąd, że przecinek nie zawsze jest za
> > cyfrą jednostek (pływa).
>
> No może niezrozumiale, ale właśnie o tym napisałem... Przedpiszca
> napisał, że ma ponad 15 cyfr po przecinku.
W liczbach zmiennoprzecinkowych podaje się precyzję znormalizowanej
mantysy, która zawsze wynosi te 15-16 cyfr, niezależnie od wartości
wykładnika.
w.
--
Kupię: http://wm.ite.pl/kupie.html