Verrechnet sich ein Computer?
14 Antworten
Sehr selten und normalerweise nicht.
Es ist nie 100%ig ausgeschlossen, dass zufällige Effekte wie kosmische Strahlung, Überspannungen im Stromnetz, Quantenfluktuationen, "Übersprechen" zwischen Datenkanälen u. ä. in dieselbe Richtung wirken und ein Bit umkehren. Wenn das während einer Rechenoperation passiert, verrechnet sich der Computer natürlich.
Dann gibt es natürlich auch von Menschen verursachte Fehler:
Zu trauriger Berühmtheit hat es im Jahr 1994 der damals neue Pentium gebracht: http://www.heise.de/newsticker/meldung/20-Jahre-FDIV-Bug-Ein-Prozessor-Rechenfehler-macht-Geschichte-2438283.html
Auch manche Funktionsbibliotheken sind nicht fehlerfrei und ungeprüfte Verwendung führt zu falschen Ergebnissen.
Ich hatte mal einen Taschenrechner (Casio fx-irgendwas, 7600g oder so), der beim Potenzieren unter bestimmten Umständen nur logarithmierte und den Logarithmus als Ergebnis der Potenz zurückgab.
Weiterhin gibt es prinzipbedingte Fehler:
Die Genauigkeit von Fließkommazahlen (Zahlen, die keine ganzen Zahlen sind) ist beschränkt, sodass kleinere Abweichungen unvermeidlich sind.
Diese treten gern zusammen mit menschlichen Fehlern (menschlicher Unachtsamkeit, Unwissen) auf:
Wenn ein Programmierer nicht aufpasst, kommt es immer wieder vor, dass das Programm Differenzen nahe beieinander liegender Zahlen bildet und womöglich noch durch diese teilt. (Beispiele siehe Artikel zur Numerischen Mathematik und Programmierlehrbücher)
Absichtlich geht es aber auch:
Einem sogenannten Formelmanipulator kann man z. B. beibringen, dass 2 + 2 = 5 ist. Jedesmal, wenn in einer Berechnung 2 + 2 auftaucht, ersetzt das Computerprogramm diesen Ausdruck gehorsam durch 5.
Verrechnet. Man müsste wissen, was man darunter verstehen will. Ungenauigkeiten sind definitiv da, keine Frage. Kommt daher, dass Computer nur zwei Begriffe kennen: Aus und Ein. Daraus stellt man Zeichen her wie beim Morsen. Da ist die Lampe auch entweder ein oder sie ist aus, dazwischen sind noch Pausen. Das ist das Binäre System Binär=2. Wir nutzen das Zehnersystem. Dezimalsystem 0-9. Schon allein dadurch entstehen (können entstehen) 'Übersetzungsfehler'. Viele Computer rechnen mit dem Hexadezimalsystem (16 Zeichen).
Dann wird gerundet, was die Hauptsächlichsten Fehler entstehen lässt. Ergibt eine Rechnung .31, kann der Computer (je nachdem wie programmiert und für was, auf .30 runden. (Verkaufsgeschäfte können ja auch .99 runden auf .95 z.B. ) Grosse Zahlen müssen praktisch, der Kapazität der Computer entsprechend, auf- oder abrunden, was dann letztendlich, wenn viel mit grossen Zahlen gerechnet wird, zu Fehlern führen kann. Somit rechnen Computer falsch, es können Fehler entstehen. Kam wiederholt in der Raumfahrt schon vor.
Es gab tatsächlich schon mal Vorfälle, in denen sich der Hauptprozessor selbst durch fehlerhafte interne Programmierung verrechnen konnte.
Eines der bekanntesten Beispiele war hier die erste Generation von Intels Pentium. Die erste Revision dieser CPUs rundete ab der 3. oder 4. Nachkommastelle im Fliesskommabereich tatsächlich falsch, was zu einer weltweiten Rückrufaktion betroffener CPUs führte.
Davon abgesehen beruhen mögliche Berechnungsfehler meist softwareseitig auf fehlerhafter Programmierung oder noch seltener auf defekter / überhitzter Hardware. Letzteres führt meist zu Abstürzen des Systems.
Ein "Verrechnen" wie beim Menschen gibt es nicht, da der PC nur das befolgt, was man ihm eingibt (wissenschaftliche Gesetze kann er nicht umgehen).
Man muss zwischen verschiedenen Fehlern unterscheiden:
a) Algorithmus-Fehler: Es gibt viele Algorithmen zur Berechnung von Pi. Viele sind bis heute nicht 100%bewiesen. Dafür gibt es Validierungs-Berechnungen: mindestens alle 1 Mio. Stellen werden Hex-Stellen des bewiesenden BBP-Algorithmusverglichen. Einmal passierte es, dass ab der 19000. Nachkommastelle andere Ziffern kamen.Ursache: Algorithmus war für eine andere Konstante, die extrem dicht neben Pi lag.
b) Software-Fehler: Bei komplizierten Berechnungen kann ein Software-Ersteller schon mal einen "Überlauf" übersehen:Jeder Variablen-Typ hat eine Obergrenze. Wird diese bei Zwischenergebnissen erreicht, gibt es 3 Arten der Reaktion:Abschneiden, UMLAUFEN (nach der größten kommt die kleinste negative), Fehlermeldung
Auch die Fehlerfortpflanzung und dessen richtige Interpretation ist wichtig: ich musste mal auf über 200 Stellen nach dem Komma genau rechnen, damit das Endergebnis auf 1 Nachkommastelle stimmte! Rundungsfehler sind kein "Verrechnen", sondern eine falsche Interpretation des Menschen vor dem PC! Dann gibt es Multithreading: Gute CPUs haben mehrere logische Kerne, mit denen Teil-Berechnungen parallel angestoßen werden.Die Software muss hier besonders "sauber" gegeneinander "verriegelt" werden, damit es untereinander keine Beeinflussung gibt.Hier kann ein Fehler auch noch nach Tagen auftreten (kurzer Test reicht nicht für "alles OK" )!
c) CPU- oder FPU-Fehler (Hardware): http://www.gerdlamprecht.de/GrobeFPU_Fehler.htm
§1 Pentium-FDIV-Bug: kein kleiner Rundungsfehler, sondern statt auf mindestens 14 Stellen genau zu rechnen hatte diese Spezielle INTEL-CPU manchmal nur 4 genaue Nachkommastellen -> Garantie-Fall!
§2: der FSIN-Befehl aller mir bekannten CPU-Hersteller ist trotz der 80-Bit (theoretische 19 Stellen) so ungenau,dass einige Hersteller wie der Chrome-Browser diesen Maschinenbefehl umgehen! Ab Argumenten von 9.3e18 wird einfach Output zu Input, d.h. es wird nichts berechnet! Auch Taschenrechner sind bei komplizierten Funktionen oft viel ungenauer als die Anzahl der Anzeigestellen siehe LINK!
d) Hardware-Überlastung oder Lebensdauer-Überschreitung: Einige Spiele-Optimierer treiben die Taktrate so extrem hoch, dass die Flanken der Maschinenbefehle außerhalb der Toleranzgrenze geraten(oder thermische Überlastung). Auch RAM oder Festplatte leben nicht ewig. Beim Weltrekord der Pi-Berechnung mussten mehrere Festplatten ausgetauscht werden! Solange Du jedoch Deine Taktrate nicht extrem an die Grenze treibst und nicht über 100 Tage rechnest, tritt dieser Fehler sehr selten auf.
Falls jemand durch andere CPU oder Browser beim Test
http://www.gerdlamprecht.de/Roemisch_JAVA.htm#ZZZZZ0120
starke Abweichungen zu den 6 Ergebnisbildern (LINK von oben GrobeFPU_Fehler.htm )
hat, würde mich das sehr interessieren. (da ich nicht alle CPU und Browser privat habe; Handy mit Internet funktioniert auch: iPad hatte ich aber schon)
Das kommt darauf an. Manchmal sind einige Prozesse asynchron, da können Fehler entstehen. Außerdem natürlich, wenn der Rechner falsch eingestellt ist (z.B. wenn du eine Dualzahl mit einer Hexadezimalzahl addierst, kommt etwas falsches raus).
FEHLER SIND NIENAUSGESCHLOSSEN!