|
Lyckan |
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 24.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.02.2010, 10:34
Titel: Gleitkommazahlen
|
|
|
|
|
Hallo!
Ich habe eine Aufgabe, mit der ich nicht zurecht komme:
Teste die folgenden Operationen: 0.5/0.1 - 5, 0.6/0.3 - 2, 0.7/0.2 - 3.5 und 0.8/0.4 - 2. Ist das Resultat das, das wir erwarten?
Beschreibe übersichtlich, wie Gleitkommazahlen auf einem Computer dargestellt werden. Können die obigen Zahlen exakt auf einem Computer gespeichert werden und warum bekommen wir diese Fehler?
Ich habe schon geschreiben, dass Matlab mit Gleitkommazahlen in doppelter Präzision arbeitet, dass jede Zahl so x=m*b^e umgerechnet wird und dass die Basis meistens 2,10 oder 16 ist.
So, man bekommt bei allen obigen Operationen den erwarteten Wert, ausser bei 0.7/0.2 - 3,5. Ich habe das erklärt, in dem ich die Zahlen als Hexadecimalzahlen aufgeschrieben habe und bei diesem Beispiel unterscheiden sich die Mantissen an der letzten Stelle. Das gefiehl dem Prof aber nicht und er hat angemerkt, dass man einen sogenannten Abrundungsfehler bekommt. Und ausserdem hat er noch dazugeschrieben, dass ich die Rechnungen nochmal mit der Basis 10 machen soll.
Und jetzt??? Was hat es mit diesem Abrundungsfehler auf sich?
Mit Basis 10 darstellen heisst doch, x=m*b^e mit 1 ≤ m < b och e ist beliebig. Bei Basis 10 hätte ich dann 3.5 = 3.5 * 10^0; 0.7 = 7*10^-1; 0.2 = 2*10^-1. Was soll mir das helfen?
Vielen Dank für Eure Hilfe.
LG Lyckan
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 24.02.2010, 11:23
Titel:
|
|
Hallo,
die Rundungsfehler entstehen dadurch, dass Zahlen wie 0.7 und 0.2 im Binärsystem nicht exakt dargestellt werden können.
Wenn man die 3.5 im Dezimalsystem darstellen will, dann würde ich eher sagen: 3.5 = 3 * 10^0 + 5 * 10^(-1)
Und eine Rückfrage: wenn du nicht verstehst, was dein Prof meint, warum fragst du nicht deinen Prof (oder seinen Assistenten, sofern vorhanden)?
Grüße,
Harald
|
|
|
Lyckan |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 24.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.02.2010, 13:16
Titel:
|
|
Hallo Harald!
Ich frage den Prof nicht, weil mir seine bisherigen Antworten auch nicht wirklich geholfen haben... Eine Frage beantwortet, 2 neue tun sich auf. Dummerweise brauche ich genau diesen Kurs, um mein Diplom zu machen... Und nun muss ich mich irgendwie durchkämpfen.
Warum gibt es gerade bei diesen beiden Zahlen Probleme? Wenn ich das richtig sehe, dann schreibt man Kommazahlen binär auch mit Komma? Also 1,5 wäre dann binär 0,1 (2^0,2^-1)?
LG Lyckan
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 24.02.2010, 14:08
Titel:
|
|
Ja, 1.5 ist auch ohne Probleme binär darstellbar. Das Problem sind eher Zahlen wie 0.2 oder 0.7, die binär nicht exakt darstellbar sind (bzw. nicht mit einer endlichen Stellenanzahl, sowas wie 1/3 im Dezimalsystem).
Ich hoffe, dass ich hilfreicher bin als der Prof
Grüße,
Harald
|
|
|
Lyckan |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 24.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.02.2010, 14:14
Titel:
|
|
Hallo Harald!
Vielen Dank! Ja, Du bist SEHR VIEL hilfreicher als der Prof !!!
LG Lyckan
|
|
|
Lyckan |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 24.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.02.2010, 20:59
Titel:
|
|
Hallo Harald!
Vielleicht hast Du ja noch eine Idee:
Ich soll ein einfaches Beispiel konstruieren, wo dieser Fehler 0.7/0.2 grosse Konsequenzen hat... Und ich bin da irgendwie einfallslos. Klar, grosse Konsequenzen hat dieser Fehler, wenn er sich summiert. Wenn ich also viiiiiieeeeeele Rohre habe, die einen Behälter füllen mit 0.7/0.2 und einen viiiiiielfach grösseren Ablauf mit 3.5, dann wird dieser Behälter irgendwann überlaufen, weil ich mehr einfülle als entnehme. Nur da sich der Unterschied in der Grössenordnung 10^-16 (meine ich im Kopf zu haben) abspielt, ist das ein ziemlich schlechtes Beispiel...
LG von Lyckan
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 24.02.2010, 21:19
Titel:
|
|
Hallo,
z.B.
Mit anderen Worten: insbesondere beim Testen auf Gleichheit.
Grüße,
Harald
|
|
|
Lyckan |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 24.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.02.2010, 21:22
Titel:
|
|
Klar, darauf hätte ich auch kommen können... (bin ich aber nicht).
Vielen Dank!
LG Lyckan
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|