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

Gibt es Zahlen, die MATLAB nicht leiden kann?

 

chris2.3sportline
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 09.03.09
Wohnort: ---
Version: R2009a
     Beitrag Verfasst am: 29.08.2009, 17:45     Titel: Gibt es Zahlen, die MATLAB nicht leiden kann?
  Antworten mit Zitat      
Hi,

das Thema klingt vielleicht wie ein April-Scherz, aber ich habe da gerade stundenlang an einem Problem gearbeitet und ich hab jetzt die Fehlerquelle identifiziert.

Also gebt doch mal bitte folgendes ein:

Code:

70*0.001==0.070
71*0.001==0.071
72*0.001==0.072
73*0.001==0.073

71*0.0001==0.0071
72*0.0001==0.0072
73*0.0001==0.0073
 


Das Produkt aus 71 und 0.001 gibt wohl nicht 0.071, bei 72 gilt das entsprechende und eine Zehnerpotenz weiter tritt das phänomen bei der 72 auch wieder auf.

Für mich ist das gerade ein riesen Problem! Ist das schonmal jemandem aufgefallen?
Kann mir da irgendjemand einen Tipp dazu geben?
Was soll ich denn machen, wenn der code einfach einen falschen wert liefert? Rolling Eyes

Ich habe mich jetzt mal noch nicht getraut das in die Bug-Ecke zu schreiben. Vielleicht steh ich ja auch grad seit stunden aufm schlauch und irgendjemand findet dafür noch eine halbwegs logische erklärung.

etwas getresste grüße
chris
Private Nachricht senden Benutzer-Profile anzeigen


MatLabNooB
Forum-Guru

Forum-Guru


Beiträge: 262
Anmeldedatum: 27.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.08.2009, 18:41     Titel:
  Antworten mit Zitat      
vielleicht versteh ich das falsch, aber 71*0.001 = 0.071, das ist sicher...
Private Nachricht senden Benutzer-Profile anzeigen
 
Olli
Forum-Anfänger

Forum-Anfänger


Beiträge: 45
Anmeldedatum: 19.08.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.08.2009, 18:51     Titel:
  Antworten mit Zitat      
also bei mir macht Matlab folgendes:

Code:

71*0.001==0.071 => 0
72*0.001==0.072 => 0
73*0.001==0.073 => 1

71*0.0001==0.0071 => 1
72*0.0001==0.0072 => 0
73*0.0001==0.0073 => 1
 


hab auch schon versucht format short und long aber beides hilft nicht
Private Nachricht senden Benutzer-Profile anzeigen
 
Tim
Forum-Century

Forum-Century



Beiträge: 140
Anmeldedatum: 03.11.07
Wohnort: Stuttgart
Version: 2011b+aktuellstes Release
     Beitrag Verfasst am: 29.08.2009, 19:38     Titel:
  Antworten mit Zitat      
Das liegt daran wie Matlab (bzw. moderne Rechner) Zahlen darstellen, nämlich hier als Fließkommazahlen (siehe IEEE 754). Ohne hier groß ins Detail gehen zu wollen (den Suchbegriff habt ihr ja nun) ist eines der relevanten Eigenschaften dieses Formats, dass man eben nicht alle Zahlen exakt darstellen kann. So wird 0.01 nicht 0.01 sondern etwas in der Art 0.010000000002154624724 oder auch 0.00999999999999999999946572572 dargestellt. Ebenso kommt es bei arithmetischen Operationen auch zu Rundungsfehlern, weshalb man nie das erwarten sollte was du erwartest. Ebenso vergleicht man Fließkommazahlen nicht auf exakte Gleichheit sondern... ach lest euch den Thread hier durch: http://www.gomatlab.de/minus-null-t7936.html
Private Nachricht senden Benutzer-Profile anzeigen
 
chris2.3sportline
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 09.03.09
Wohnort: ---
Version: R2009a
     Beitrag Verfasst am: 29.08.2009, 20:07     Titel:
  Antworten mit Zitat      
Hi,
also irgendsowas hab ich mir ja schon gedacht. hätte nur nicht gedacht, dass es in diesen bereichen abspielt ... wobei e-12 ja doch schon recht klein ist, wenn ichs mir recht überleg.
danke auf jeden fall für den thread mit dem tipp mit der toleranz zu vergleichen.

gruß
chris

... der jetzt als blutiger anfänger anfängt alle möglicherwiese betroffenen == zu ersetzen Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 29.08.2009, 20:17     Titel:
  Antworten mit Zitat      
Kommt auch (oder vor allem??) drauf an, ob der Rechner deine Dezimalzahl ohne Periode in eine Binärzahl umformen kann...
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.