WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Gleitkommazahlen

 

Lyckan
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 24.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.02.2010, 10:34     Titel: Gleitkommazahlen
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.02.2010, 11:23     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Lyckan
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 24.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.02.2010, 13:16     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.02.2010, 14:08     Titel:
  Antworten mit Zitat      
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 Wink

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Lyckan
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 24.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.02.2010, 14:14     Titel:
  Antworten mit Zitat      
Hallo Harald!

Vielen Dank! Ja, Du bist SEHR VIEL hilfreicher als der Prof Smile!!!

LG Lyckan
Private Nachricht senden Benutzer-Profile anzeigen
 
Lyckan
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 24.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.02.2010, 20:59     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.02.2010, 21:19     Titel:
  Antworten mit Zitat      
Hallo,

z.B.
Code:
x = 0.7/0.2;
if x == 3.5
% tu eine Sache
else
% mach was anderes
end


Mit anderen Worten: insbesondere beim Testen auf Gleichheit.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Lyckan
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 24.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.02.2010, 21:22     Titel:
  Antworten mit Zitat      
Klar, darauf hätte ich auch kommen können... (bin ich aber nicht).
Vielen Dank!

LG Lyckan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.