|
cornetto1234 |
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 23.08.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.08.2009, 13:58
Titel: Minus Null
|
|
Hallo,
kann mir vielleicht jemand sagen, wann Matlab -0 als Ergebnis anzeigt?
viele Grüße!
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.450
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 28.08.2009, 14:24
Titel:
|
|
Wenn in einem Vektor eine Zahl dargestellt wird, die minimal kleiner als 0 ist.
Falls das unerwünscht ist,
Grüße,
Harald
|
|
|
cornetto1234 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 23.08.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.08.2009, 14:54
Titel:
|
|
Danke schonmal für die Antwort.
Ich hab das jetzt mal gemacht und er zeigt mir anstelle -0 folgendes an
-1.5659e-016.
D.h. ja dass die Minus Null vorher für eine sehr kleine negative Zahl gestanden ist. Das hatte ich mir auch schon gedacht.
Nun nützt mir das Umstellen auf dieses andere Format leider nichts, da die Minus-Null für Matlab ja wohl immer(egal welches Format ich einselle) eine Zahl bleibt, die eben von Null verschieden ist.
Ich wollte aber eigentlich eine if Bedingung formulieren, bei der die Anweisungen nur ausgeführt werden, wenn die berechnete Zahl ungleich Null ist.
Im Falle meiner Errechneten Zahl sollten die nachfolgenden Anweisungen eigentlich nicht ausgeführt werden, da sie eigentlich gleich null sein sollte.
Sie ist es aber nicht geworden, was wohl an den Rundungsfehlern liegt, wie ich vermute.
Was kann ich nun machen??
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.450
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 28.08.2009, 14:59
Titel:
|
|
Um solche numerischen Ungenauigkeiten abzufangen, verwendet man oft statt if x == y
Wie groß man tol wählt, ist Ermessenssache. Irgendwas zwischen 1e-6 und 1e-12 würde mir sinnvoll erscheinen.
Grüße,
Harald
|
|
|
cornetto1234 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 23.08.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.08.2009, 15:07
Titel:
|
|
danke,
ich hatte mir gerade schon überlegt, dass man vielleicht auch
if b<=abs(eps)
schreiben könnte?
geht das?
Scheint bei mir zu funktionieren
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.450
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 28.08.2009, 15:51
Titel:
|
|
Wenn es nur um Vergleich mit 0 geht, ja.
Da eps>0, reicht b < eps.
Ich würde aber einen größeren Wert wählen, da numerische Ungenauigkeiten oft nicht sooo klein sind, z.B. b < 1e-12
|
|
|
Titus |
Forum-Meister
|
|
Beiträge: 871
|
|
|
|
Anmeldedatum: 19.07.07
|
|
|
|
Wohnort: Aachen
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.08.2009, 17:07
Titel:
|
|
Hallo,
es müsste schon
oder
sein, denn es gilt schließlich auch -23 < 1e-16.
Titus
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.450
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 28.08.2009, 17:12
Titel:
|
|
|
|
Tim |
Forum-Century
|
|
Beiträge: 140
|
|
|
|
Anmeldedatum: 03.11.07
|
|
|
|
Wohnort: Stuttgart
|
|
|
|
Version: 2011b+aktuellstes Release
|
|
|
|
|
|
Verfasst am: 29.08.2009, 13:21
Titel:
|
|
Noch zwei Dinge die erwähnenswert sind:
1) es gibt auch eine "echte" -0 also wo der Wert wirklich betragsmäßig 0 ist. Das ist eine Eigenschaft des üblichen Zahlenformats für Fließkommazahlen (siehe IEEE 754).
2) Ich spare mir genauere Erklärung und verlinke einfach: http://c-faq.com/fp/fpequal.html
|
|
|
|
|
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.
|
|