Diskussion:Maschinengenauigkeit

aus Wikipedia, der freien Enzyklopädie
Letzter Kommentar: vor 11 Jahren von Fritz Bierbaum in Abschnitt Beschreibung
Zur Navigation springen Zur Suche springen

Konstanten[Quelltext bearbeiten]

Das die Konstanten so ihre Richtigkeit haben mag sich jeder mit folgendem Code selbst testen. (Bitte selbst in die Programmiersprache der Wahl konvertieren)

namespace testZahlen
{
class MainClass
	{
		public static void Main(string[] args)
		{
			double a,b;
			
			a=1.2E-16;
			b=1.0 + a;
  			b=b-1.0;

			Console.WriteLine("1 + " + a + "  -1");
			Console.WriteLine("Ergebnis: " + b);

			a=1.1E-16;
			b=1.0 + a;
			b=b-1.0;

	 		Console.WriteLine("1 + " + a + " - 1");
			Console.WriteLine("Ergebnis: " + b);
		}
	}
}

Entsprechende Ausgabe

1 + 1,2E-16  -1
Ergebnis: 2,22044604925031E-16
1 + 1,1E-16 - 1
Ergebnis: 0

1 + 1,1 *10^-16 ist gerade nicht mehr darstellbar und erzeugt als Ergebnis 0 für 1+1,2*10^-16 gilt dies aber schon nicht mehr. Grüße --Mathemaduenn 22:51, 6. Jun. 2008 (CEST)Beantworten

Antwort: Konstanten[Quelltext bearbeiten]

Dieser Code hat so schon seine Richtigkeit. Trotzdem ist das Epsilon für 64-bit Gleitkommazahlen (nach IEEE754) gerade diejenige Zahl die du als erstes Ergebnis erhältst: 2,22044604925031E-16

Ich habe mir das von einem meiner Professoren erklären lassen: Das Problem ist die heute unausgeglichene Arithmetik: in den Rechenregistern wird mit 80-Bit Zahlen gerechnet als und 64-Bit abgespeichert. Siehe dazu auch ein Artikel des besagten Professors:

Artikel (englisch)

-- Matz Frei 14:14, 11. Jun. 2008 (CEST)Beantworten

Das Matlab in der Lage ist mit einer höheren Genauigkeit zu rechnen ist sicher interessant. Hat aber eigentlich nichts mit der Maschinengenauigkeit für eine 64 bit Zahl zu tun. Es bleibt:

wenn ich zu 1 1,2 *10^-16 dazuaddiere kommt bei einer double Rechnung nicht 1 raus sondern 1+2,2*10^-16. Mit anderen Worten das richtige Ergebnis weicht weniger als 1,1*10^-16 vom wahren Ergebnis(1+1,2 *10^-16) ab. Die 2,2*10^-16 sind dann der maximale relative Abstand 2er normalisierter Gleitkommazahlen. Oder eben die Maschinengenauigkeit bei unsymmetrischer Rundung.

--Mathemaduenn 19:41, 11. Jun. 2008 (CEST)Beantworten


"Die 2,2*10^-16 sind dann [..] die Maschinengenauigkeit bei unsymmetrischer Rundung."

Wieso beharrst du dann darauf, dass im Artikel nicht 2.2*10^-16 als Maschinengenauigkeit für 64-bit Zahlen geschrieben wird?

-- Matz Frei 08:29, 26. Jun. 2008 (CEST)Beantworten

weil i.d.R. nicht unsymmetrisch gerundet wird. --Mathemaduenn 23:29, 28. Jun. 2008 (CEST)Beantworten

Bildbeschreibung fehlt bei [[Bild:Zahlensystem.png]][Quelltext bearbeiten]

Der Artikel enthält ein Bild, dem eine Bildbeschreibung fehlt, überprüfe bitte, ob es sinnvoll ist, diese zu ergänzen. Gerade für blinde Benutzer ist diese Information sehr wichtig. Wenn du dich auskennst, dann statte bitte das Bild mit einer aussagekräftigen Bildbeschreibung aus. Suche dazu nach der Textstelle [[Bild:Zahlensystem.png]] und ergänze sie.

Wenn du eine fehlende Bildbeschreibung ergänzen willst, kannst du im Zuge der Bearbeitung folgende Punkte prüfen:
  • Namensraum Datei: Bilder sollte im Namensraum Datei liegen. Bitte ändere die alten Bezeichnungen Bild: und Image: in Datei:.
  • Skalierung: Außerhalb von Infoboxen sollten keine festen Bildbreiten (zum Beispiel 100px) verwendet werden. Für den Fließtext im Artikelnamensraum gibt es Thumbnails in Verbindung mit der automatischen Skalierung. Um ein Bild/eine Grafik in besonderen Fällen dennoch größer oder kleiner darzustellen, kann der „upright“-Parameter verwendet werden. Damit erfolgt eine prozentuale Skalierung, die sich an den Benutzereinstellungen orientiert. --SpBot 23:44, 1. Mär. 2009 (CET)Beantworten

Maschinengenauigkeit in der Praxis[Quelltext bearbeiten]

dazu habe ich die Frage, wie möchte man das darstellen? 2^23 würde ich vertehen, da die Mantisse nur 23Bit hat ? Das selbe für die 2^-53 ... wieso nicht 2^52


        #include <float.h>
        #include <stdio.h>
        int main()
        {
          fprintf(stderr,"%.10f",FLT_EPSILON);
          return 0;
        }


gibt sowohl unter windows als auch unter Linux 0.0000001192 was für 2^23 steht. (nicht signierter Beitrag von Noxin911 (Diskussion | Beiträge) 15:01, 13. Jul 2010 (CEST))

Vergleich "Relativer Rundungsfehler" mit Maschinengenauigkeit[Quelltext bearbeiten]

Der Vergleich des Rundungsfehlers mit der Maschinengenauigkeit erscheint mir falsch: "Dieser [der relative Rundungsfehler] ist natürlich kleiner als die Maschinengenauigkeit für dieses Beispiel...". Maschinengenauikgeit ist ein Absolutwert, der Rundungsfehler ist relativ. Das ist wie Äpfel mit Birnen vergleichen. Oder liege ich falsch? (nicht signierter Beitrag von 95.33.124.229 (Diskussion) 12:40, 30. Apr. 2011 (CEST)) Beantworten

Beschreibung[Quelltext bearbeiten]

Die Formel ist nur richtig, falls die Rundung zur nächstgelegenen Gleitpunktzahl erfolgt (d.h. bei der kaufmännischen oder mathematischen Rundung). Wird nur zu einer benachbarten Gleitpunktzahl gerundet (Abrunden, Aufrunden, Truncation), so entfällt in der Formel der Faktor 1/2. Darauf sollte hier hingewiesen werden. --Fritz Bierbaum (Diskussion) 18:25, 19. Aug. 2012 (CEST)Beantworten