DMUG-Archiv 2002

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

AW: seltsam - gelöst

gegen die zange hilft dann wohl N[] ......

> -----Ursprüngliche Nachricht-----
> Von:  Jens-Peer Kuska [SMTP:kuska@XXXXXXX.de]
> Gesendet am:  Monday, October 07, 2002 9:03 AM
> An:   Wolfgang Ludwig
> Cc:   Deutsche Mathematica News Group
> Betreff:      Re: seltsam - gelöst
> 
> Hmm,
> 
> warum das so ist ? Computer rechnen in Bin"ar Darstellung und
> mit endlich vielen Stellen.
> Eine Zahl, die sich in einem Zahlensystem als *endlicher*
> Bruch darstellen l"asst z. B. 0.1 (im Dezimalsystem)
> kann in einem anderen  Zahlensystem ein
>  *unendlicher* Bruch sein und
> daher nicht mehr in die endlichen Stellen passen. Der endliche
> Dezimalbruch 1/10 ist im Bin"arsystem 
>     ____
> 0.001100
> 
> wobei der lange Strich (wie "ublich) eine unendliche Wiederholung
> der Ziffernfolge anzeigt (RealDigits[0.1, 2]).
> Die unendlichen Stellen m"ussen gerundet werden weshalb 2/3
> als Dezimalzahl im Computer 0.66666666667 ist und nicht
>   _
> 0.6
> 
> Mit diesen Rundungsfehlern haben Leute die numerisch Rechnen
> gelernt zu leben. Eine Computer Algebra hat allerdings ein
> Problem, weil sie ja eingetlich auch rundungsfrei arbeiten
> k"onnte wenn man sie nur l"asst. Wenn man in Mathematica einen
> Dezimalpunkt eingibt, so muss man sich dar"uber klar sein,
> das das System dann wieder Rundungsfehler macht. Will
> man keine Rundungsfehler, kann aber den Finger nicht vom
> Dezimalpunkt lassen dann hilft Rationalize[].
> 
> Noch besser ist es allerdings, mit einer Zange die Tasten mit dem
> Punkt "." aus der Tastatur zu brechen und wegzuwerfen.
> 
> Gruss
>   Jens
> 
> 
> Wolfgang Ludwig wrote:
> > 
> > Liebe Mathematica Kenner
> > 
> > Das vorhin beschriebene Problem habe ich nun doch schneller als erwartet
> > gelöst, allerdings ohne zu verstehen warum.
> > Mit einem kleinen Rundungsprogramm habe ich es geschafft, Mathematica
> > das machen zu lassen, was ich beabsichtigte:
> > 
> > Das Problem:
> > 
> > FractionalPart[Log[10, #]] & /@ {0.1, 1., 10., 100., 1000., 10000.,
> > 100000.,
> >      1000000., 10000000.}
> >  liefert
> > 
> > {-1., 0., 0., 0., 1., 0., 0., 1., 0.}
> > 
> > anstelle von
> > 
> > {0., 0., 0., 0., 0., 0., 0., 0., 0.}
> > 
> > Warum das so ist, habe ich nicht verstanden. Aber es geht mit dem
> > untenstehenden Rundungsprogramm:
> > 
> > FractionalPart[Round[Log[10, #], 10]] & /@ {0.1, 1., 10., 100.,
> >         1000., 10000., 100000., 1000000., 10000000.}
> > 
> > {0., 0., 0., 0., 0., 0., 0., 0., 0.}
> > 
> > Unprotect[Round];
> > Round[x_, n_] :=
> >     Module[{a, nR},
> >         nR = Round[n];
> >         a = 10^nR;
> >         (Round[a  x] // N)/a
> >         ];
> > Protect[Round];
> > 
> > Danke fürs Mitdenken
> > 
> > Wolfgang Ludwig
> > --
> > =============================
> > Dr. Wolfgang Ludwig
> > managing director
> > STL Systemtechnik Ludwig GmbH
> > Max-Stromeyer-Str. 116
> > D-78467 Konstanz
> > 7531-892888-0 (phone)
> > 7531-892888-88 (fax)
> > www.stl-gmbh.de
> > =============================
> 



Antworten:
Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html