eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingBłędny epsilon - this is not a bug, this is ?Re: jak się liczy błąd maszynowy?
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask
    .pl!news.nask.org.pl!news.internetia.pl!not-for-mail
    From: Michoo <m...@v...pl>
    Newsgroups: pl.comp.programming
    Subject: Re: jak się liczy błąd maszynowy?
    Date: Thu, 08 Nov 2012 21:07:30 +0100
    Organization: Netia S.A.
    Lines: 41
    Message-ID: <k7h3p6$tbl$1@mx1.internetia.pl>
    References: <50924bb1$0$1308$65785112@news.neostrada.pl>
    <k72sqt$gq$1@news.dialog.net.pl>
    <509505f2$0$1317$65785112@news.neostrada.pl>
    <k734vm$43g$1@news.dialog.net.pl>
    <509533d1$0$26687$65785112@news.neostrada.pl>
    <k797v2$t98$1@news.dialog.net.pl>
    <509848c6$0$1208$65785112@news.neostrada.pl>
    <k79hhh$26k$1@news.dialog.net.pl> <k7am9f$n0p$1@zeus.man.szczecin.pl>
    <k7apte$eiu$1@news.task.gda.pl>
    <0...@g...com>
    <k7b4tp$9ke$1@news.task.gda.pl> <k7b8b5$nqq$1@node1.news.atman.pl>
    <k7bbgo$pth$1@news.task.gda.pl>
    <50996f4d$0$1297$65785112@news.neostrada.pl>
    <k7c0hi$jp4$1@news.task.gda.pl>
    <50999d69$0$1215$65785112@news.neostrada.pl>
    <k7c774$3tq$1@news.task.gda.pl> <k7dic5$ssp$1@node2.news.atman.pl>
    <5...@g...com>
    NNTP-Posting-Host: 83.238.197.12
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: mx1.internetia.pl 1352405606 30069 83.238.197.12 (8 Nov 2012 20:13:26 GMT)
    X-Complaints-To: a...@i...pl
    NNTP-Posting-Date: Thu, 8 Nov 2012 20:13:26 +0000 (UTC)
    In-Reply-To: <5...@g...com>
    X-Tech-Contact: u...@i...pl
    User-Agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0.6esrpre) Gecko/20120817
    Icedove/10.0.6
    X-Server-Info: http://www.internetia.pl/
    Xref: news-archive.icm.edu.pl pl.comp.programming:200649
    [ ukryj nagłówki ]

    On 07.11.2012 19:50, e...@g...com wrote:
    > A moze tak przy okazji ktos (moze OP?) wytlumaczy, jak sie
    > liczy blad maszynowy wyrazenia sin(b/a) dla a=100 i powiedzmy
    > b=549.755813887? Najlepiej na postawie tego DBL_EPS.
    >
    W typowym wypadku patrzy się do dokumentacji i czyta, że gwarantowana
    dokładność dla sin to AFAIK 1e-10.

    W "specjalnym" przypadku:
    549.755813887 się nie reprezentuje nawet w long double, mamy więc już na
    początku przedział:
    549.75581388699998797164880670607089996337890625L,
    549.7558138870000021825035219080746173858642578125L
    o szerokości 1.42109e-14 i względnym błędzie 2.58494e-17

    Wykonujemy dzielenie i otrzymujemy
    5.49756 z przedziałem 1.42681e-16 i dokładnością 2.59535e-17

    Teraz jakąś prostą metodą liczymy sinus, np. Taylorem, do czasu aż
    reszta będzie w tej samej okolicy co błąd obliczeń. Otrzymujemy
    lower:
    -0.7072686935699425367384853002850064740414381958544
    254302978515625
    upper: -0.7072686935699250790777342645654357511375565081834
    7930908203125
    interval: 1.74577e-14 interval rel: 2.46832e-14

    Jeżeli chcemy teraz mieć pewność, że nasz przedział rzeczywiście zawiera
    poszukiwaną wartość to powinniśmy go jeszcze skorygować o resztę z
    rozwinięcia funkcji w szereg. W tym wypadku wydaje mi się, że możemy po
    prostu go podwoić, bo sinusa przybliżyliśmy z resztą nie większą od
    szerokości przedziału.

    kod:
    http://grota.be/~michoo/smieci/interval.cpp

    P.S.
    Wszelkie uwagi mile widziane. Kod zmontowany na szybko z na podstawie
    starego projektu, więc jakieś błędy mogły się wkraść.

    --
    Pozdrawiam
    Michoo

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

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: