www.vorhilfe.de
- Förderverein -
Der Förderverein.

Gemeinnütziger Verein zur Finanzierung des Projekts Vorhilfe.de.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Impressum
Forenbaum
^ Forenbaum
Status VH e.V.
  Status Vereinsforum

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Suchen
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Matlab" - Matlab Gleitkommazahl
Matlab Gleitkommazahl < Matlab < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Matlab Gleitkommazahl: Gleitkommazahl
Status: (Frage) beantwortet Status 
Datum: 16:36 Di 02.02.2010
Autor: JanaS

Aufgabe
Beschreibe kurz, wie Gleitkommazahlen in einem Computer dargestellt werden. Können die folgenden Zahlen exakt gespeichert werden in einem Computer und warum bekommen wir diese Fehler?
.5/0.1-5, 0.6/0.3-2, 0.7/0.2-3.5 und 0.8/0.4-2

Hallo!

Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.

Es geht um Matlab. Gleitkommazahlen habe ich schon beschrieben, also dass sie so dargstellt werden: [mm] x=m*b^e. [/mm] Wenn ich die oben genannten Aufgaben bei Matlab eingebe, so bekomme ich immer die erwünschte 0 bis auf 0.7/0.2-3.5. Da schmeisst Matalb als Ergebnis -4.440892098500626e-016 heraus. Warum?

Vielen Dank für Eure Hilfe schonmal!

Viele Grüsse von Jana

        
Bezug
Matlab Gleitkommazahl: Antwort
Status: (Antwort) fertig Status 
Datum: 19:46 Di 02.02.2010
Autor: rainerS

Hallo Jana!

> Beschreibe kurz, wie Gleitkommazahlen in einem Computer
> dargestellt werden. Können die folgenden Zahlen exakt
> gespeichert werden in einem Computer und warum bekommen wir
> diese Fehler?
>  .5/0.1-5, 0.6/0.3-2, 0.7/0.2-3.5 und 0.8/0.4-2
>  Hallo!
>  
> Ich habe diese Frage in keinem Forum auf anderen
> Internetseiten gestellt.
>  
> Es geht um Matlab. Gleitkommazahlen habe ich schon
> beschrieben, also dass sie so dargstellt werden: [mm]x=m*b^e.[/mm]
> Wenn ich die oben genannten Aufgaben bei Matlab eingebe, so
> bekomme ich immer die erwünschte 0 bis auf 0.7/0.2-3.5. Da
> schmeisst Matalb als Ergebnis -4.440892098500626e-016
> heraus. Warum?

Welche der Zahlen können exakt dargestellt werden?  Berücksichtige dabei die Zwischenergebnisse, das heisst schau dir an, was bei 0.7/0.2 herauskommt und wie sich dieses Zwischenergebnis von 3.5 unterscheidet. In der Standardausgabe siehst du den Unterschied nicht, aber wenn du vorher

format hex

eingibst, wird die interne Darstellung angezeigt. (Mit "format" schaltest du wieder zurück).

Viele Grüße
   Rainer

Bezug
                
Bezug
Matlab Gleitkommazahl: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 20:39 Di 02.02.2010
Autor: JanaS


>  
> > Beschreibe kurz, wie Gleitkommazahlen in einem Computer
> > dargestellt werden. Können die folgenden Zahlen exakt
> > gespeichert werden in einem Computer und warum bekommen wir
> > diese Fehler?
>  >  .5/0.1-5, 0.6/0.3-2, 0.7/0.2-3.5 und 0.8/0.4-2
>  >  Hallo!
>  >  
> > Ich habe diese Frage in keinem Forum auf anderen
> > Internetseiten gestellt.
>  >  
> > Es geht um Matlab. Gleitkommazahlen habe ich schon
> > beschrieben, also dass sie so dargstellt werden: [mm]x=m*b^e.[/mm]
> > Wenn ich die oben genannten Aufgaben bei Matlab eingebe, so
> > bekomme ich immer die erwünschte 0 bis auf 0.7/0.2-3.5. Da
> > schmeisst Matalb als Ergebnis -4.440892098500626e-016
> > heraus. Warum?
>
> Welche der Zahlen können exakt dargestellt werden?  
> Berücksichtige dabei die Zwischenergebnisse, das heisst
> schau dir an, was bei 0.7/0.2 herauskommt und wie sich
> dieses Zwischenergebnis von 3.5 unterscheidet. In der
> Standardausgabe siehst du den Unterschied nicht, aber wenn
> du vorher
>  
> format hex
>  
> eingibst, wird die interne Darstellung angezeigt. (Mit
> "format" schaltest du wieder zurück).
>  
> Viele Grüße
>     Rainer

Hallo Rainer!

Danke für Deine Antwort! Ich sehe jetzt den Unterschied zwischen 0.7/0.2 und 3.5. Aber ich verstehe noch nicht so ganz, WARUM da ein Unterschied ist? Was bedeuten die b's und f's? Ich habe versucht, etwas über das Hexadezimalsystem zu lesen, damit hängt das wohl zusammen, oder? Aber verstanden habe ich es nicht :-(.

Viele Grüsse, Jana


Bezug
                        
Bezug
Matlab Gleitkommazahl: Antwort
Status: (Antwort) fertig Status 
Datum: 21:08 Di 02.02.2010
Autor: rainerS

Hallo Jana!

> >  

> > > Beschreibe kurz, wie Gleitkommazahlen in einem Computer
> > > dargestellt werden. Können die folgenden Zahlen exakt
> > > gespeichert werden in einem Computer und warum bekommen wir
> > > diese Fehler?
>  >  >  .5/0.1-5, 0.6/0.3-2, 0.7/0.2-3.5 und 0.8/0.4-2
>  >  >  Hallo!
>  >  >  
> > > Ich habe diese Frage in keinem Forum auf anderen
> > > Internetseiten gestellt.
>  >  >  
> > > Es geht um Matlab. Gleitkommazahlen habe ich schon
> > > beschrieben, also dass sie so dargstellt werden: [mm]x=m*b^e.[/mm]
> > > Wenn ich die oben genannten Aufgaben bei Matlab eingebe, so
> > > bekomme ich immer die erwünschte 0 bis auf 0.7/0.2-3.5. Da
> > > schmeisst Matalb als Ergebnis -4.440892098500626e-016
> > > heraus. Warum?
> >
> > Welche der Zahlen können exakt dargestellt werden?  
> > Berücksichtige dabei die Zwischenergebnisse, das heisst
> > schau dir an, was bei 0.7/0.2 herauskommt und wie sich
> > dieses Zwischenergebnis von 3.5 unterscheidet. In der
> > Standardausgabe siehst du den Unterschied nicht, aber wenn
> > du vorher
>  >  
> > format hex
>  >  
> > eingibst, wird die interne Darstellung angezeigt. (Mit
> > "format" schaltest du wieder zurück).
>  >  
> > Viele Grüße
>  >     Rainer
>
> Hallo Rainer!
>  
> Danke für Deine Antwort! Ich sehe jetzt den Unterschied
> zwischen 0.7/0.2 und 3.5. Aber ich verstehe noch nicht so
> ganz, WARUM da ein Unterschied ist? Was bedeuten die b's
> und f's? Ich habe versucht, etwas über das
> Hexadezimalsystem zu lesen, damit hängt das wohl zusammen,
> oder? Aber verstanden habe ich es nicht :-(.

Du kannst die Hexadezimalziffern einfach in Bits (im Dualsystem) übersetzen; jede Ziffer entspricht genau 4 Bits, wie es []hier in dieser Tabelle dargestellt ist. Was du hier siehst, ist eine standardisierte Darstellung von 64bit langen Gleitkommazahlen, sieh []hier. Die ersten 12 Bit, also die ersten 3 Hexadezimalstellen stehen für Vorzeichen und Exponenten, der Rest für die Mantisse.

Wesentlich für dich ist hier, dass sich die beiden Zahlen nur in der Mantisse unterscheiden, nicht im Exponenten.

Zum Beispiel:

3.5 = 400c000000000000

Die Mantisse beginnt mit der 4. Hex-Ziffer, also c000..., oder als Bits: 1100 (+ weitere 48 0-Bits).


Die andere Zahl:

0.7/0.2 = 400bffffffffffff

Mantisse: bfff..., als Bits 1011 (+ weitere 48 1-Bits)

Mit anderen Worten: die Mantisse der ersten Zahl 3.5 ist gerade um 1 in der hinteresten Stelle größer als die Mantisse der zweiten Zahl 0.7/0.2 .

In der normalen Ausgabe ist dieser Unterschied nicht sichtbar, weil bei der Umwandlung der Binär- in die Dezimaldarstellung immer gerundet wird.

Bleibt noch die Frage, warum dieser Effekt nur bei der Division 0.7/0.2 auftritt, aber nicht bei 0.6/0.3 oder 0.8/0.4. Dazu schaust du dir am besten die Darstellungen der einzelnen Zahlen vor der Division an. Du wirst sehen, dass sich zum Beispiel bei 0.6 und 0.3 nur die Exponenten unterscheiden, nicht aber die Mantissen. Daher ist eine exakte Division möglich, obwohl die Binärdarstellung der einzelnen Zahlen nicht exakt ist.

Viele Grüße
   Rainer

Bezug
                                
Bezug
Matlab Gleitkommazahl: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 14:38 Do 04.02.2010
Autor: JanaS


> Hallo Jana!
>  
> > >  

> > > > Beschreibe kurz, wie Gleitkommazahlen in einem Computer
> > > > dargestellt werden. Können die folgenden Zahlen exakt
> > > > gespeichert werden in einem Computer und warum bekommen wir
> > > > diese Fehler?
>  >  >  >  .5/0.1-5, 0.6/0.3-2, 0.7/0.2-3.5 und 0.8/0.4-2
>  >  >  >  Hallo!
>  >  >  >  
> > > > Ich habe diese Frage in keinem Forum auf anderen
> > > > Internetseiten gestellt.
>  >  >  >  
> > > > Es geht um Matlab. Gleitkommazahlen habe ich schon
> > > > beschrieben, also dass sie so dargstellt werden: [mm]x=m*b^e.[/mm]
> > > > Wenn ich die oben genannten Aufgaben bei Matlab eingebe, so
> > > > bekomme ich immer die erwünschte 0 bis auf 0.7/0.2-3.5. Da
> > > > schmeisst Matalb als Ergebnis -4.440892098500626e-016
> > > > heraus. Warum?
> > >
> > > Welche der Zahlen können exakt dargestellt werden?  
> > > Berücksichtige dabei die Zwischenergebnisse, das heisst
> > > schau dir an, was bei 0.7/0.2 herauskommt und wie sich
> > > dieses Zwischenergebnis von 3.5 unterscheidet. In der
> > > Standardausgabe siehst du den Unterschied nicht, aber wenn
> > > du vorher
>  >  >  
> > > format hex
>  >  >  
> > > eingibst, wird die interne Darstellung angezeigt. (Mit
> > > "format" schaltest du wieder zurück).
>  >  >  
> > > Viele Grüße
>  >  >     Rainer
> >
> > Hallo Rainer!
>  >  
> > Danke für Deine Antwort! Ich sehe jetzt den Unterschied
> > zwischen 0.7/0.2 und 3.5. Aber ich verstehe noch nicht so
> > ganz, WARUM da ein Unterschied ist? Was bedeuten die b's
> > und f's? Ich habe versucht, etwas über das
> > Hexadezimalsystem zu lesen, damit hängt das wohl zusammen,
> > oder? Aber verstanden habe ich es nicht :-(.
>  
> Du kannst die Hexadezimalziffern einfach in Bits (im
> Dualsystem) übersetzen; jede Ziffer entspricht genau 4
> Bits, wie es
> []hier in dieser Tabelle
> dargestellt ist. Was du hier siehst, ist eine
> standardisierte Darstellung von 64bit langen
> Gleitkommazahlen, sieh
> []hier.
> Die ersten 12 Bit, also die ersten 3 Hexadezimalstellen
> stehen für Vorzeichen und Exponenten, der Rest für die
> Mantisse.
>  
> Wesentlich für dich ist hier, dass sich die beiden Zahlen
> nur in der Mantisse unterscheiden, nicht im Exponenten.
>  
> Zum Beispiel:
>  
> 3.5 = 400c000000000000
>  
> Die Mantisse beginnt mit der 4. Hex-Ziffer, also c000...,
> oder als Bits: 1100 (+ weitere 48 0-Bits).
>  
>
> Die andere Zahl:
>  
> 0.7/0.2 = 400bffffffffffff
>
> Mantisse: bfff..., als Bits 1011 (+ weitere 48 1-Bits)
>  
> Mit anderen Worten: die Mantisse der ersten Zahl 3.5 ist
> gerade um 1 in der hinteresten Stelle größer als die
> Mantisse der zweiten Zahl 0.7/0.2 .
>  
> In der normalen Ausgabe ist dieser Unterschied nicht
> sichtbar, weil bei der Umwandlung der Binär- in die
> Dezimaldarstellung immer gerundet wird.
>  
> Bleibt noch die Frage, warum dieser Effekt nur bei der
> Division 0.7/0.2 auftritt, aber nicht bei 0.6/0.3 oder
> 0.8/0.4. Dazu schaust du dir am besten die Darstellungen
> der einzelnen Zahlen vor der Division an. Du wirst sehen,
> dass sich zum Beispiel bei 0.6 und 0.3 nur die Exponenten
> unterscheiden, nicht aber die Mantissen. Daher ist eine
> exakte Division möglich, obwohl die Binärdarstellung der
> einzelnen Zahlen nicht exakt ist.
>  
> Viele Grüße
>     Rainer

Hallo Rainer!

Hab vielen Dank für Deine Geduld und Deine Hilfe!

Viele Grüsse, Jana

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
ev.vorhilfe.de
[ Startseite | Mitglieder | Impressum ]