eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingBłędny epsilon - this is not a bug, this is ?
Ilość wypowiedzi w tym wątku: 181

  • 11. Data: 2012-11-01 18:58:01
    Temat: Re: Błędny epsilon - this is not a bug, this is ?
    Od: kenobi <p...@g...com>

    W dniu czwartek, 1 listopada 2012 18:19:27 UTC+1 użytkownik slawek napisał:
    > Użytkownik "bartekltg" napisał w wiadomości grup
    >
    > dyskusyjnych:k6u98u$fjc$...@n...news.atman.pl...
    >
    >
    >
    > >To, że nie rozumies,z jak używać liczb zmiennoprzecinkowych,
    >
    > >też. Nie każdy musi.
    >
    >
    >
    > Sam jesteś tego najlepszym przykładem: gdy zapytać się ciebie o konkret i
    >
    > poprosić o konstruktywne wyjaśnienie - udajesz obrażoną pensjonarkę. Swoją
    >
    > drogą, jakoś tak nie widziałem (ale pewnie nie pamiętam lub nie zauważyłem)
    >
    > abyś kiedykolwiek podał jakiś sensowny sposób rozwiązania jakiegokolwiek
    >
    > problemu. Dobry jesteś tylko w FUD i PR, reszta to jakaś taka mglista.
    >
    >
    >
    > >Ale chamstwa tolerować nie będę.
    >
    >
    >
    > Źle cię oceniłem - myślałem "weźmie się Bartuś ujmie ambicją i honorem... i
    >
    > hasło w Wikipedii poprawi... będzie pożytek dla Ludzkości". Ale widzę że
    >
    > ambicji bardzo dużo, wiedzy trochę mało, pracowitości nic a nic, co do
    >
    > honoru... nawet nie ma o czym pisać.
    >
    >
    >
    > Teraz widzę że już pożytku z pana hrabiego (galicyjskiego) nie będzie.

    hehe, nie ma sie co tak spinać (choć kawałek
    "(o-wielki-i-wspaniały-Bartusiu)" był całkiem niezły)

    To co wy tu piszcie nie podchodzi mz
    pod trolowanie, ja za bucerkę/dresiarstwo
    uważam tzw dresiarskie (zupenie niemerytoryczne) dowalactwo.

    Z tym epsilonem to ciekawa sprawa, faktycznie
    mz moze być użyteczne i dobrze ze jest
    zdefiniowane i dobrze też sie troche na tym
    znac i przemyslec te sprawy, sam jednak
    nie moge sie teraz zbytnio nad tym zastanowic
    bo jetsem cholernie zmeczony i obolały
    pozatym psuje mi sie maszyna (ale bedzie
    trzeba wrocic do tego bo ta badz co badz
    fundamenty)






  • 12. Data: 2012-11-01 19:09:56
    Temat: Re: Błędny epsilon - this is not a bug, this is ?
    Od: kenobi <p...@g...com>

    ale tak wogole, oczywista kwestia, czy tego epsilona nie 'zna' sie norrmalnie tj po
    prostu
    jako 1 podzielic przez 2 do potegi 52 czy cos
    w tym stylu - choc fpu to z tego co wiem to
    wogole troche skomplikowana sprawa bo sa
    rozne konfigurowalne stany 9np precyzja)

    eogole z tego co kojarze to kompilatory
    zdaje sie byc moze bez problmu obslugują
    tzw typ long double

    long double x = 1.0;

    (wieadomo 80 bit) mimo ze sie tego w kodach rzadko uzywa mozliwe ze wiekszosc
    kompilatorow to po prostu normalnie obslugują

    ktos wie jak to z tym jest?




  • 13. Data: 2012-11-01 19:52:04
    Temat: Re: Błędny epsilon - this is not a bug, this is ?
    Od: "slawek" <h...@s...pl>

    Użytkownik "kenobi" napisał w wiadomości grup
    dyskusyjnych:b02b8c1e-999e-44e5-a69e-056c295366f1@go
    oglegroups.com...

    >To co wy tu piszcie nie podchodzi mz
    >pod trolowanie, ja za bucerkę/dresiarstwo
    >uważam tzw dresiarskie (zupenie niemerytoryczne) dowalactwo.

    Nie lubię dryfów w kierunku przemocy (nie bawi mnie BDSM, nie bawi mnie
    "bicie linijką po łapach" itd.), nie lubię dryfów nt. "syf" (syfilis jest
    względnie łatwo wyleczalny, no i - jak każda choroba - nie ma w sobie nic
    śmiesznego), nie wymyślam od "chamów" (znając przypadkiem Kodeks Boziewicza
    i mając przodków... takich jakich miałem), staram się być w miarę rzeczowy i
    pomocny. Nie używam też takich słów jak, wyjątkowo zacytuję, "kurde".

    Nawet zdziwię cię może - argumentacja Bartka nt. epsilona (tj. ściśle
    merytoryczna jej część) moim zdaniem zasługuje na to, aby poprawić hasło w
    Wikipedii i paru innych źródłach. W tym w Numerical Recipes, Teukolskyego et
    al. (tak, w nowym wydaniu - co można sprawdzić online - jest definicja
    epsilona jako "The smallest (in magnitude) number... produces result
    different from 1.0" ) - co łatwo można sprawdzić on-line (strona 10., sekcja
    1.1.2.). www.nr.com

    O ile oczywiście Teukolsky i współautorzy podzielą opinię Bartka.

    >Z tym epsilonem to ciekawa sprawa, faktycznie
    >mz moze być użyteczne i dobrze ze jest
    >zdefiniowane i dobrze też sie troche na tym

    Zaczynając wątek napisałem, że nie ma wielkiego sensu pisać "wszystkich cyfr
    epsilona" - raczej rząd wielkości jest istotny. Niemniej jednak jest pewne
    niechlujstwo w tym co jest we float.h do MS Visual Studio - definicja nie
    wytrzymuje ujemnych liczb, wynik nie odpowiada temu czym ma być według
    definicji.

    >znac i przemyslec te sprawy, sam jednak
    >nie moge sie teraz zbytnio nad tym zastanowic
    >bo jetsem cholernie zmeczony i obolały

    Bywa. Nie ma jednak co się zbyt skupiać nad "problemem z epsilonem" - są
    ważniejsze sprawy. Może po prostu najważniejsza nauka z tego jest, aby
    zamiast magicznych stałych zapisanych przez #define - zawsze wszystko
    wyliczać samemu? Potrzebujemy takiego najmniejszego eps > 0, że 1.0 + eps >
    1.0 ? To policzmy go sobie - a nie ufajmy, że w jakimś pliku float.h czy
    podobnym będzie dobra wartość. Choćby dlatego, że kiedyś program może być
    uruchamiany na jakiejś innej maszynie, w innej konfiguracji, z zupełnie inną
    architekturą.





  • 14. Data: 2012-11-01 20:26:32
    Temat: Re: Błędny epsilon - this is not a bug, this is ?
    Od: kenobi <p...@g...com>

    W dniu czwartek, 1 listopada 2012 19:52:09 UTC+1 użytkownik slawek napisał:
    > Użytkownik "kenobi" napisał w wiadomości grup
    >
    > dyskusyjnych:b02b8c1e-999e-44e5-a69e-056c295366f1@go
    oglegroups.com...
    >
    >
    >
    > >To co wy tu piszcie nie podchodzi mz
    >
    > >pod trolowanie, ja za bucerkę/dresiarstwo
    >
    > >uważam tzw dresiarskie (zupenie niemerytoryczne) dowalactwo.
    >
    >
    >
    > Nie lubię dryfów w kierunku przemocy (nie bawi mnie BDSM, nie bawi mnie
    >
    > "bicie linijką po łapach" itd.), nie lubię dryfów nt. "syf" (syfilis jest
    >
    > względnie łatwo wyleczalny, no i - jak każda choroba - nie ma w sobie nic
    >
    > śmiesznego), nie wymyślam od "chamów" (znając przypadkiem Kodeks Boziewicza
    >
    > i mając przodków... takich jakich miałem), staram się być w miarę rzeczowy i
    >
    > pomocny. Nie używam też takich słów jak, wyjątkowo zacytuję, "kurde".
    >
    >

    >
    > Nawet zdziwię cię może - argumentacja Bartka nt. epsilona (tj. ściśle
    >
    > merytoryczna jej część) moim zdaniem zasługuje na to, aby poprawić hasło w
    >
    > Wikipedii i paru innych źródłach. W tym w Numerical Recipes, Teukolskyego et
    >
    > al. (tak, w nowym wydaniu - co można sprawdzić online - jest definicja
    >
    > epsilona jako "The smallest (in magnitude) number... produces result
    >
    > different from 1.0" ) - co łatwo można sprawdzić on-line (strona 10., sekcja
    >
    > 1.1.2.). www.nr.com
    >
    >
    >
    > O ile oczywiście Teukolsky i współautorzy podzielą opinię Bartka.
    >
    >
    >
    > >Z tym epsilonem to ciekawa sprawa, faktycznie
    >
    > >mz moze być użyteczne i dobrze ze jest
    >
    > >zdefiniowane i dobrze też sie troche na tym
    >
    >
    >
    > Zaczynając wątek napisałem, że nie ma wielkiego sensu pisać "wszystkich cyfr
    >
    > epsilona" - raczej rząd wielkości jest istotny. Niemniej jednak jest pewne
    >
    > niechlujstwo w tym co jest we float.h do MS Visual Studio - definicja nie
    >
    > wytrzymuje ujemnych liczb, wynik nie odpowiada temu czym ma być według
    >
    > definicji.
    >
    >
    >
    > >znac i przemyslec te sprawy, sam jednak
    >
    > >nie moge sie teraz zbytnio nad tym zastanowic
    >
    > >bo jetsem cholernie zmeczony i obolały
    >
    >
    >
    > Bywa. Nie ma jednak co się zbyt skupiać nad "problemem z epsilonem" - są
    >
    > ważniejsze sprawy. Może po prostu najważniejsza nauka z tego jest, aby
    >
    > zamiast magicznych stałych zapisanych przez #define - zawsze wszystko
    >
    > wyliczać samemu? Potrzebujemy takiego najmniejszego eps > 0, że 1.0 + eps >
    >
    > 1.0 ? To policzmy go sobie - a nie ufajmy, że w jakimś pliku float.h czy
    >
    > podobnym będzie dobra wartość. Choćby dlatego, że kiedyś program może być
    >
    > uruchamiany na jakiejś innej maszynie, w innej konfiguracji, z zupełnie inną
    >
    > architekturą.

    nie czytalem chasla w wiki i nie bardzop che
    mi sie tez sledzic kto co tu powiedzial, juz
    lepiej sie zastanowic nad samym tym epsilonem

    czy ten epsilon (2.2? 1.1?) to jest moze po prostu 'roznica' miedzy kolejnymi
    doublemi
    czy to jest pól tej róznicy czy co? Ile wynosi
    róznica miedzy doublami w epsilonach? ta roznica jest chyba stała, czy tez wchodza tu
    jakies komplikacje powodujace ze licZyc sie moze cos innego niz ziarnistosc double?
    (mozliwe ze to juz jest tu napisane ale nie mialem sily sie wglebiac)


  • 15. Data: 2012-11-01 21:24:13
    Temat: Re: Błędny epsilon - this is not a bug, this is ?
    Od: "slawek" <h...@s...pl>

    Użytkownik "kenobi" napisał w wiadomości grup
    dyskusyjnych:a8bc94f7-d49a-40e5-875e-8a1e51abe57a@go
    oglegroups.com...

    > czy ten epsilon (2.2? 1.1?) to jest moze po prostu 'roznica' miedzy
    > kolejnymi doublemi
    >czy to jest pól tej róznicy czy co? Ile wynosi

    Celna uwaga.

    Ja "od zawsze" jakoś tak byłem przyzwyczajony (epsilonowo-deltowa definicja
    granicy funkcji), że epsilon to "coś małego", takie że owszem nie jest to
    zero, ale w istocie rzeczy jest to najmniejsza wartość jaka da się użyć w
    obliczeniach. Kwestia jak zapisane są liczby (dwójkowo, trójkowo, czy może
    analogowo np. napięcie elektryczne) - to zupełnie inny problem. Czyli
    definicja sup { epsilon in R : 1+epsilon > 1 } wydaje mi się zupełnie
    naturalna i zrozumiała nawet dla 10-latka. Oraz najbardziej przydatna - nie
    interesuje mnie, co za krasnale siedzą w CPU/FPU/APU - byle liczyły "jak
    trzeba".

    Oczywiście dla hodowców krasnali - tj. dla konstruktorów procesorów itd. -
    epsilon może być równy matematycznie pojętej różnicy pomiędzy liczbą 1
    zapisaną w (no w czym, FPU czy RAM?)... a najmniej różną od niej liczbą
    nieco większą. "Matematycznie pojętą" oznacza, że nie musi być tak, ze da
    się policzyć (1+epsilon) - 1 na danej maszynce (tj. w FPU) - ale, że
    teoretycznie tyle.

    Tyle że w float.h jest wprost napisany warunek 1.0 + x != 1.0 .

    Niechlujstwo jest w tym, że jak damy x = -10.0, to wychodzi 1.0 + (-10.0)
    czyli w przybliżeniu -9.0. A w przybliżeniu dlatego, że FPU trochę
    zaokrągli. W każdym razie warunek z definicji będzie spełniony. Ale
    oczywiście to jest czepialstwo, bo "wiadomo o co chodzi". Że ma być x > 0.
    czyli dodatnie.

    Mniej oczywistym błędem jest to, że liczba double x = 1.111E-16 też daje 1.0
    + x != 1.0, czyli spełnia warunek. Natomiast MS uważa że epsilon > 2.22E-16
    .

    I możemy się spierać, jak zdefiniować epsilon - ale po prostu to co jest we
    float.h jest wewnętrznie sprzeczne.


    A teraz wiki - w tym samym haśle jest jednocześnie, że epsilon jest równe
    1.11E-16 i że jest równe 2.22E-16. Nieważne jak definiujemy epsilon - ale
    ponieważ 1.11E-16 != 2.22E-16 (w sensie matematycznym i w sensie FPU też) -
    to znaczy, że w Wikipedii (EN) jest pomyłka. Albo w jednym miejscu, albo w
    drugim, albo w obu. To logiczne (jak mawiał Spock).


    Jeszcze o roli epsilona. Gdy służy do np. wyboru kroku jako sqrt(epsilon),
    to nie ma wielkiego znaczenia, czy jest 1.11E-16 czy 2.22E-16.

    Problemy mogą być, gdy np. uznamy że wolno zaokrąglać wartości mniejsze niż
    epsilon zapisując je jako konkretnie zero. Albo gdy mniejsze od epsilon*coś.
    Tego typu praktyki były w obliczeniach w Mathematica'e swego czasu - jak
    część Im(z) < epsilon*coś to uznawało, że liczba jest czysto rzeczywista.


    Przy "dobrym epsilon" zaokrąglenie w zero jest sensowne. Przy złym - będą
    błędy. Jak duże? A to już zależy od szczegółów. Podobnie jak to było z
    "Pentium bug".



  • 16. Data: 2012-11-01 21:30:24
    Temat: Re: Błędny epsilon - this is not a bug, this is ?
    Od: "slawek" <h...@s...pl>

    Użytkownik "slawek" napisał w wiadomości grup
    dyskusyjnych:5092da70$0$1225$6...@n...neostrada
    .pl...

    definicja epsilon = inf { x in R : 1 + x > 1 } === sup { x in R : 1 + x
    == 0 }


  • 17. Data: 2012-11-01 23:23:21
    Temat: Re: Błędny epsilon - this is not a bug, this is ?
    Od: "slawek" <h...@s...pl>

    Użytkownik "slawek" napisał w wiadomości grup
    dyskusyjnych:5092da70$0$1225$6...@n...neostrada
    .pl...

    definicja epsilon = inf { x in R : 1 + x > 1 } === sup { x in R : 1 + x
    == 1 }


  • 18. Data: 2012-11-02 09:05:33
    Temat: Re: Błędny epsilon - this is not a bug, this is ?
    Od: "AK" <n...@n...com>

    Użytkownik "slawek" <h...@s...pl> napisał:

    > Jednak zaglądając do float.h w MS VS C++ można znaleźć definicję DBL_EPSILON, wraz
    ze stosownym
    > komentarzem, 2.22044604925031310000E-016. Jest to niemal 2 razy więcej, niż
    naprawdę wynosi
    > epsilon (obliczony właśnie programem skompilowanym w MSVS C++).

    I bardzo dobrze, ze 2 razy wiecej.

    AK.


  • 19. Data: 2012-11-02 09:08:36
    Temat: Re: Błędny epsilon - this is not a bug, this is ?
    Od: "AK" <n...@n...com>

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

    > Błędem jest w ogóle działanie na takich zakresach.
    > To chyba podstawy 'numerków'.

    Ano wlasnie ! (slowem sedno).

    AK


  • 20. Data: 2012-11-02 09:37:24
    Temat: Re: Błędny epsilon - this is not a bug, this is ?
    Od: "AK" <n...@n...com>

    Użytkownik "slawek" <h...@s...pl> napisał:

    > Bywa. Nie ma jednak co się zbyt skupiać nad "problemem z epsilonem" - są ważniejsze
    sprawy. Może
    > po prostu najważniejsza nauka z tego jest, aby zamiast magicznych stałych
    zapisanych przez
    > #define - zawsze wszystko wyliczać samemu? Potrzebujemy takiego najmniejszego eps >
    0, że 1.0 +
    > eps > 1.0 ? To policzmy go sobie - a nie ufajmy, że w jakimś pliku float.h czy
    podobnym będzie
    > dobra wartość.

    POLICZMY !!?
    Niby po co ?
    Wystarczy miec orientacje o rzedzie "maszynowego" epsilona.
    Potem go pomnozyc _przynajmniej_ prze 100 ;) i uzywac
    w _normalnej_ (a nie skrajnej) numeryce.

    > Choćby dlatego, że kiedyś program może być uruchamiany na jakiejś
    > innej maszynie, w innej konfiguracji, z zupełnie inną architekturą.

    No wlasnie. I co wtedy ?
    Skad niby wiadomo, ze tam bedzie w ogole IEEE ?
    Mowie to jako programista pracujacy jeszcze na Odrze.
    Na tej Odrze podejscie przez ciebie prezentowane
    byloby srogo ukarane (nie tylko niedzialaniem programow).
    Jedynym z Was dwoch, ktory utrzymal by sie w "pracy" bylby
    Bartek.

    > a nie ufajmy, że w jakimś pliku float.h czy podobnym będzie dobra wartość.

    Tu sie zgadzam w 100%. Mozna pojsc nawet dalej.W ogole ich nie
    uzywac/nie zwracac na nie uwagi.

    Bo prawdziwy epsilon moj drogi zburaczaly "hrabio" (vide chamski
    wtret do Bartka o siostrze - twoich przeprosin nie zauwazylem) _zawsze_
    powinno sie dobierac w scislym zwiazku z natura problemu/algorytmu
    numerycznego i z natury swej powinien on byc o wiele wyzszy
    od precyzji maszynowej.

    AK

strony : 1 . [ 2 ] . 3 ... 10 ... 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: