eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingSimpson vs. Niski Cotes
Ilość wypowiedzi w tym wątku: 185

  • 61. Data: 2012-11-13 17:55:05
    Temat: Re: Simpson vs. Niski Cotes
    Od: bartekltg <b...@g...com>

    W dniu 2012-11-13 11:53, Roman W pisze:
    > W dniu wtorek, 13 listopada 2012 10:33:09 UTC użytkownik slawek napisał:
    >> Użytkownik "bartekltg" napisał w wiadomości grup
    >> dyskusyjnych:k7rnav$8eq$...@n...news.atman.pl...
    >>
    >>> Sławek schrzaniał algorytm i tyle. Pewnie źle dobrał
    >>> epsilon maszynowy;)
    >>
    >> A konkretnie - poza błędem w komentarzu?

    A czemu mnie pytasz, plonka dostałeś.
    Najpierw zachowujesz się jak cham i prostak,
    a teraz chcesz, by szukać błędów w twoim kodzie?
    Skopałeś implementacje, pokazało ci to kilka osób,
    debuguj sam.


    > Poprawnie zaimplementowany Simpson (wg.
    http://en.wikipedia.org/wiki/Simpson%27s_rule#Compos
    ite_Simpson.27s_rule) daje wartosc, dla Twoich danych, 0.5022749400837603, czyli
    znacznie blizej prawdziwej wartosci niz Twoje
    > trapezy.

    To dorzucę jeszcze jeden obrazek, który dobitnie porównuje
    różne rzędy kwadratur. Tym razem pomęczyłem komputer:

    http://w26.wrzuta.pl/obraz/aBYTSD3FT4A/kwadratury_sz
    eroko

    Hi-Res:
    http://c.wrzuta.pl/wi10776/86e44c51001f621f50a27480/
    kwadratury_szeroko


    Załóżmy, że naszym celem jest osiągnięcie dokładności względnej.
    10^-12. Daleko od dokładności numerycznej, a jednocześnie ambitnie.


    Metody rzędu 1 (midpoint, trapez) potrzebują ponad _miliona_
    wyliczeń funkcji podcałkowej.

    Kwadratury 3 rzędu (3/8, simpson, dwuponktowy gauss) wystarczy
    około 2000 punktów! (punktów, nie przedziałów)

    Jak dla mnie różnica między 1000000 a 2000 jest jednoznaczna.

    Dla kolejnego oczka (5 rząd, dwie następne Newtona-coesta, Gauss
    na 3 punktach, lobato na 4) potrzebują między 200 a 400 punktów.

    Dwóm najlepszym (rząd 11 jeśli dobrze myśle) wystarcz poniżej
    20 wywołań funkcji - trzy przedziały! (7*3 = 21, ale Lobatto
    używa jednego wspolnego punktu dla sąsiadów, stąd ostatecznie 19)


    pzdr
    bartekltg







  • 62. Data: 2012-11-13 18:24:52
    Temat: Re: Simpson vs. Niski Cotes
    Od: bartekltg <b...@g...com>

    W dniu 2012-11-13 14:24, Roman W pisze:
    > W dniu wtorek, 13 listopada 2012 13:23:00 UTC użytkownik AK napisał:
    >
    >> No i owszem :) Pokaz mni jedno miejsce gdzie ktos w tej dyskusji twierdzil
    >> ze simson jest najlepszy (np lepszy niz splajny ?).
    >> My tylko obalamy twoje idiotyzmy ze trappezy sa lepsze od simpsona !
    >> A jak zszyjesz te twoje trapezy to co ?
    >> Chyba robi cie sie prosta (no fakt ze pod nia mozna latwo "numerycznie"
    >> calke policzyc :)
    >
    > http://www.johndcook.com/blog/2010/12/02/three-surpr
    ises-with-the-trapezoid-rule/

    2. Although the trapezoid rule is inefficient in general, it can be
    shockingly efficient for periodic functions.
    3. The trapezoid rule can also be shockingly efficient for analytic
    functions that go to zero quickly, so called double exponential functions.

    W tym nie ma nic szokującego dla kogokolwiek, kto widział
    oszacowanie błędu dla tego typy kwadratur;)

    Błąd pojedynczego trapezu to

    int_a^b f(x) - I (f,a,b) = -f'' (c) *(b-a)^3 / 12


    f'' (c) to wartość drugiej pochodnej funkcji
    całkowanej w punkcie c \in [a,b].

    Podkreślam, to jest wzór na błąd, nie jego szacowanie.
    Nie wiadomo jedynie, ile wynosi c;)

    Teraz budujemy kwadraturę złożoną. Wiele n przedziałów [a_{i-1},a_i]
    a_0 = a, a_n =b długości h każdy.

    łączny błąd wynosi

    int_a^b f(x) - I (f,a,b) = -(h)^3 / 12 sum_{i=1}^{n} f'' (c_i)
    = -(h)^3 / 12 h sum_{i=1}^{n} f'' (c_i)

    Z tym, że c_i \in [a_{i-1},a_i]

    Kolejne c_i są dowolne, ale ograniczone do swoich równo
    oddalonych pudełek...


    To czym jest h sum_{i=1}^{n} f'' (c_i)

    Pewnym przybliżeniem całki z f'' na [a,b]!
    A ta całka wynosi dla podanych przypadków 0.
    Wartości błędów w poszczególnych przedziałach
    wzajemnie się znoszę, z grubsza w takim tempie,
    jak zbiega to oszacowanie na int f''.


    BTW, są metody całkowania opierające się na prostej
    kwadraturze i analizie zachowania kolejnych pochodnych
    na brzegach. Nazwa mi wyleciała, natknąłem się chyba
    przy okazji problemu z całkowanie funkcji szybko
    oscylujących.

    pzdr
    bartekltg


  • 63. Data: 2012-11-13 18:33:33
    Temat: Re: Simpson vs. Niski Cotes
    Od: bartekltg <b...@g...com>

    W dniu 2012-11-13 14:22, AK pisze:

    >> Nie, nie twierdzę że same parabole "są gorsze" - ale że z parabolami
    >> masz problem jak je zszyć (i tu przychodzą z pomocą modne quintic
    >> splines).
    >
    > No i owszem :) Pokaz mni jedno miejsce gdzie ktos w tej dyskusji twierdzil
    > ze simson jest najlepszy (np lepszy niz splajny ?).

    Nie są. Najlepsze 'uniwersalne' metody to adaptatywne Gauss-Kronrody;-)

    > My tylko obalamy twoje idiotyzmy ze trappezy sa lepsze od simpsona !
    > A jak zszyjesz te twoje trapezy to co ?

    Hmm, czy mi się wydaje, czy właśnie wykryłeś kolejny genialny
    pomysł sławka - zszywanie kwadratur wyższego rzędu, by miały
    ciągłe pochodne;)

    Na tym polegają kwadratury złożone. Całkujemy odcinkami
    wielomianem wysokeigo stopnia i każdy odcinek jest obliczony
    z odpowiednią precyzją. Nieciągłości pochodnych nie wpływają
    negatywnie na wynik.

    Można użyć splajnów. Ale całkowanie funkcji w najczęstszym
    przypadku na tym niewiele korzysta (są przypadki, gdzie jest
    to korzystne, ale też raczej bym szukał ich w okolicach
    zbiór punktów -> aproksymacja minimalnokwadratowa splajnami (nie
    interpolacja!), bo wiemy, że ukłąd jest np C^2 -> całkowanie).

    Splajny kubiczne na oko będą zbiegać jak inne metody 3 rzędu.


    pzdr
    bartekltg





  • 64. Data: 2012-11-13 18:53:32
    Temat: Re: Simpson vs. Niski Cotes
    Od: bartekltg <b...@g...com>

    W dniu 2012-11-13 13:37, AK pisze:
    > Użytkownik "slawek" <h...@s...pl> napisał:
    >
    >> Totalne niezrozumienie problemu: tobie nadal wydaje się, że możesz sam
    >> sobie określać ile razy i w jakich "węzłach" wywołasz sobie funkcję
    >> f(x). A tym razem problem był i jest taki, że masz z góry zadany ciąg
    >> par (x,y), dla ułatwienia x[n] = n * h.

    > BTW: W przypadku danych otrzynanych z pomiarow, (a wiec obardzonych
    > bledem) w ogole nie stosuje sie tego typu interppolacji, ale aproksymacje
    > i jesli juz "surowymi" wielomianami to przynajmniej poprzez jakis
    > nawet najprymitywniejsze "wygladzanie" danych (chcby wielomianami Gramma
    > z - co bardzo wazne - "automatycznyn"/statystycznym doborem stopnia).

    To dodam jeszcze, że jeśli mamy nierówno oddalone węzły,
    bo np przyszły one z pomiarów (obradzonych pomijalnym
    błędem), a skądinąd wiemy, że funkcja jest odpowiedniej klasy
    gładkości (np to laserowe pomiary pozycji satelity:)
    nadal możemy użyć metody wyższego rzędu.

    Maszynkę do wyliczania wag dla kwadratur na dowolnych węzłach
    zamieściłem w kodach w wątku.

    Oczywiście trzeba to zrobić ostrożnie albo z głową, bo odpowiednie
    układy węzłów mogą dać gorsze wyniki niż chwilowe obniżenie węzłów.


    Takie rozwiązanie dopasowywania wielomianów do 'dziwnych' węzłów
    stosuje się przy niektórych wielokolorowych adaptatywnych
    metodach całkowanie równań różniczkowych zwyczajnych.

    BTW: można nie znaczy, że zawsze jest to dobry pomysł:)


    > 2. bezkosztowe liczenie funkcji, ale za to "dosc szybkie". Tak szybkie
    > ze nie nadazysz z "wyliczaniem" online "poprawek" np do korekcji
    > przyslowiowego narzedzia skrawajacego dla twoich 10 000 punktow.
    > Tu _tez_ kluczem jest jak najlepsza zbieznosc metody po to aby
    > moc maksymalnie zmniejszyc ilosc "probke" przy zachowaniu
    > zalozonej dokladnosci metody. Tu _tez_(co Bartek
    > dobitnie na wykresach pokazal) twoje trapezy czy prostokaty
    > sa w tyle.

    Milion próbek trapeza = 2000 próbek simpsona = 18 próbek gaussa
    dość niskiego rzędu;)


    > PS: Nie twierdze ze kwadratury Newtona-Coatsa sa super.
    > Nie sa. daleko im do tego.
    > Chocby dlatego, ze sa nieciagle w wezlach.

    Dla całkowania to nie przeszkadza (dla ściśle wyliczonych punktów,
    jak są błędy, aproksymacja splajnami zaczyna coś dawać... ale wiadomo,
    nie ma metod uniwersalnych)

    > PS1: tak naprawde to wiekszosc poruszanych tu rzeczy to prostota i wrecz
    > podstawy/abc wrecz elementarnej numeryki.

    https://usosweb.mimuw.edu.pl/kontroler.php?_action=a
    ctionx:katalog2/przedmioty/pokazPrzedmiot%28prz_kod:
    1000-113aMOBa%29

    To przedmiot dla wszystkich, nie dla zainteresowanych:-)

    pzdr
    bartekltg


  • 65. Data: 2012-11-13 20:09:06
    Temat: Re: Simpson vs. Niski Cotes
    Od: kenobi <p...@g...com>

    mi wydaje sie troche sporo jesli jeden
    simpson przybliza tyle ile 500 trapezów

    a jakim to dokladnie kodem bylo calkowane?
    (i co zrobilo też taki wykres?)


  • 66. Data: 2012-11-13 20:29:59
    Temat: Re: Simpson vs. Niski Cotes
    Od: "AK" <n...@n...com>


    Użytkownik "bartekltg" <b...@g...com> napisał:

    > zbiór punktów -> aproksymacja minimalnokwadratowa splajnami

    Dokladnie o tym wzpomnialem.
    No ale slawek aproksymacje czy wygladzanie uwaza za
    cytuje ""psucie wynikow" :)

    AK


  • 67. Data: 2012-11-13 20:34:56
    Temat: Re: Simpson vs. Niski Cotes
    Od: bartekltg <b...@g...com>

    W dniu 2012-11-13 20:09, kenobi pisze:
    > mi wydaje sie troche sporo jesli jeden
    > simpson przybliza tyle ile 500 trapezów

    To nie jest liniowy przelicznik!

    http://c.wrzuta.pl/wi10776/86e44c51001f621f50a27480/
    kwadratury_szeroko

    Im więcej punktów, tym korzyści większe.

    Jeśli naszym celem jest 10^-6 trzeba dla tej funkcji
    ~60 punktów w Simpsonie i 2000 w trapezie. Więc tylko 30 razy lepiej.

    Efekt bierze się z stąd, że nasze funkcje są porządne
    i coraz bardziej lokalnie przypominają prostą lub
    parabolę. Tylko parabola jest znacznie lepszym przybliżeniem
    i funkcja znacznie wcześniej porządnie przypomina parabolę
    (właściwie to wielomian 3 stopnia) niż prostą.


    > a jakim to dokladnie kodem bylo calkowane?
    > (i co zrobilo też taki wykres?)

    Podawałem pełne kody w pierwszym poście.
    https://skydrive.live.com/redir?resid=25C9E1E8909658
    1!2201&authkey=!AGMwPjeQhRXoDe0


    W tym też poście masz opis użytych metod.

    Kody obejmują wszytko, wyznaczanie współczynników
    kwadratur, właściwe obliczenia całki, wyrysowanie
    tego.

    Ostatni rysunek powstał przez wklepanie
    testuj_calke(@(x)sin(x).*exp(-x),0,5,0.5022749400837
    603657,20,10000000)
    print -dpng -r300 szeroko

    Po kolei parametry funkcji to:

    całkowana funkcja, dwie liczby oznaczajace przedział całkowania,
    wartość dokładna obliczona gdzie indziej symbolicznie,
    dwie liczby oznaczające minimalną i maksymalną ilość punktów
    braną do kolejnych testów.
    Ostatnią wartość do zabaw należy zmniejszyć, bo ta wymaga długich
    obliczeń, a była potrzebna, by w końcu metody pierwszego rzędu
    osiągnęły maksymalną dokładność.

    pzdr
    bartekltg



  • 68. Data: 2012-11-13 22:51:53
    Temat: Re: Simpson vs. Niski Cotes
    Od: kenobi <p...@g...com>

    W dniu wtorek, 13 listopada 2012 20:34:58 UTC+1 użytkownik bartekltg napisał:
    > W dniu 2012-11-13 20:09, kenobi pisze:
    >
    > > mi wydaje sie troche sporo jesli jeden
    >
    > > simpson przybliza tyle ile 500 trapezów
    >
    >
    >
    > To nie jest liniowy przelicznik!
    >
    >
    >
    > http://c.wrzuta.pl/wi10776/86e44c51001f621f50a27480/
    kwadratury_szeroko
    >
    >
    >
    > Im więcej punktów, tym korzyści większe.
    >
    >
    >
    > Jeśli naszym celem jest 10^-6 trzeba dla tej funkcji
    >
    > ~60 punktów w Simpsonie i 2000 w trapezie. Więc tylko 30 razy lepiej.
    >
    >
    >
    > Efekt bierze się z stąd, że nasze funkcje są porządne
    >
    > i coraz bardziej lokalnie przypominają prostą lub
    >
    > parabolę. Tylko parabola jest znacznie lepszym przybliżeniem
    >
    > i funkcja znacznie wcześniej porządnie przypomina parabolę
    >
    > (właściwie to wielomian 3 stopnia) niż prostą.
    >
    >
    >
    >
    >
    > > a jakim to dokladnie kodem bylo calkowane?
    >
    > > (i co zrobilo też taki wykres?)
    >
    >
    >
    > Podawałem pełne kody w pierwszym poście.
    >
    > https://skydrive.live.com/redir?resid=25C9E1E8909658
    1!2201&authkey=!AGMwPjeQhRXoDe0
    >
    >
    >
    >
    >
    > W tym też poście masz opis użytych metod.
    >
    >
    >
    > Kody obejmują wszytko, wyznaczanie współczynników
    >
    > kwadratur, właściwe obliczenia całki, wyrysowanie
    >
    > tego.
    >
    >
    >
    > Ostatni rysunek powstał przez wklepanie
    >
    > testuj_calke(@(x)sin(x).*exp(-x),0,5,0.5022749400837
    603657,20,10000000)
    >
    > print -dpng -r300 szeroko
    >
    >
    >
    > Po kolei parametry funkcji to:
    >
    >
    >
    > całkowana funkcja, dwie liczby oznaczajace przedział całkowania,
    >
    > wartość dokładna obliczona gdzie indziej symbolicznie,
    >
    > dwie liczby oznaczające minimalną i maksymalną ilość punktów
    >
    > braną do kolejnych testów.
    >
    > Ostatnią wartość do zabaw należy zmniejszyć, bo ta wymaga długich
    >
    > obliczeń, a była potrzebna, by w końcu metody pierwszego rzędu
    >
    > osiągnęły maksymalną dokładność.
    >
    nie znam tego języka .m :/

    coz mozna powiedziec, same oczywiste sprawy,

    ogolnie jestem zwolennikiem trapezow, ale jesli ten
    simpson daje taką dobrą celnosc i dla pewnej klasy
    funkcji malym kosztem polepsza dokladnosc wyniku
    az tak bardzo, no to warto go robic. [Zeby sie
    osobiscie przekonac musialbym osobiscie klepnac
    testy w c ale jako ze ja sie tym za specjalnie nie
    zajmuje jestem raczej sklonny po prostu uwierzyc
    temu przykladowi, pewnie moze tak byc (choc zdziwilo
    mnie ze celnosc tego wielomianu jest az tak duza
    jak niecelnosc lamanej aż na kilkuset punktach)

    (fir)


  • 69. Data: 2012-11-13 23:10:47
    Temat: Re: Simpson vs. Niski Cotes
    Od: bartekltg <b...@g...com>

    W dniu 2012-11-13 22:51, kenobi pisze:

    >>
    > nie znam tego języka .m :/

    Matlab. Prosty jest. Darmowe wersje to octave
    i od biedy scilab.

    Czy ten kod pójdzie w octave, nie wiem.
    Pewne funkcje mogą mieć inne nazwy.
    Ale na oko jest dobrze:
    http://www.chemie.fu-berlin.de/chemnet/use/info/octa
    ve/octave_10.html


    > coz mozna powiedziec, same oczywiste sprawy,

    Bo gadamy tu o oczywistych sprawach.
    Kwadratura to policzenie funkcji w odpowiednich
    miejscach, pomnożenie uzyskanych wartości
    przez odpowiednie liczby i zsumowanie.

    Wyznaczenie pewnych układów parametrów, które
    działąją lepiej niż wersje oczywiste wymaga
    kilku operacji. Prostych, ale trzeba wiedzieć,
    jakich;) Np z wikipedii;)

    Ok, trochę dłubaniny technicznej, żeby to się
    zgrabnie działo.


    Ale zawsze możesz sprawdzić, ile to wymaga.
    mi to zajęło wieczorek:)

    pzdr
    bartekltg




  • 70. Data: 2012-11-13 23:20:28
    Temat: Re: Simpson vs. Niski Cotes
    Od: kenobi <p...@g...com>

    W dniu wtorek, 13 listopada 2012 23:10:48 UTC+1 użytkownik bartekltg napisał:
    > W dniu 2012-11-13 22:51, kenobi pisze:
    >
    >
    >
    > >>
    >
    > > nie znam tego języka .m :/
    >
    >
    >
    > Matlab. Prosty jest. Darmowe wersje to octave
    >
    > i od biedy scilab.
    >
    >
    >
    > Czy ten kod pójdzie w octave, nie wiem.
    >
    > Pewne funkcje mogą mieć inne nazwy.
    >
    > Ale na oko jest dobrze:
    >
    > http://www.chemie.fu-berlin.de/chemnet/use/info/octa
    ve/octave_10.html
    >
    >
    >
    >
    >
    > > coz mozna powiedziec, same oczywiste sprawy,
    >
    >
    >
    > Bo gadamy tu o oczywistych sprawach.
    >
    > Kwadratura to policzenie funkcji w odpowiednich
    >
    > miejscach, pomnożenie uzyskanych wartości
    >
    > przez odpowiednie liczby i zsumowanie.
    >
    >
    >
    > Wyznaczenie pewnych układów parametrów, które
    >
    > działąją lepiej niż wersje oczywiste wymaga
    >
    > kilku operacji. Prostych, ale trzeba wiedzieć,
    >
    > jakich;) Np z wikipedii;)
    >
    >
    >
    > Ok, trochę dłubaniny technicznej, żeby to się
    >
    > zgrabnie działo.
    >
    >
    >
    >
    >
    > Ale zawsze możesz sprawdzić, ile to wymaga.
    >
    > mi to zajęło wieczorek:)
    >
    >

    nie moja dzialka :O, mam co innego do roboty :o
    (ostatnio troche czytam o shaderach - i moge powiedziec ze troche beznadziejne oneż
    są)

strony : 1 ... 6 . [ 7 ] . 8 ... 19


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: