Melden Sie sich hier an, um auf Kommentare und die Whitepaper-Datenbank zugreifen zu können.

Kein Log-In? Dann jetzt kostenlos registrieren.

Falls Sie Ihr Passwort vergessen haben, können Sie es hier per E-Mail anfordern.

Der Zugang zur Reseller Only!-Community ist registrierten Fachhändlern, Systemhäusern und Dienstleistern vorbehalten.

Registrieren Sie sich hier, um Zugang zu diesem Bereich zu beantragen. Die Freigabe Ihres Zugangs erfolgt nach Prüfung Ihrer Anmeldung durch die Redaktion.

Der Rechner kann Amok laufen, bevor es überhaupt jemand merkt:


10.03.1989 - 

Mathematische Probleme machen den Computer zu schaffen

Wer glaubt, Computer seien Alleskönner, muß sich eines Besseren belehren lassen. Selbst auf Ihrem angestammten Gebiet, der Mathematik, haben sie mitunter Mühe: Beim Rechnen irren sich Computer viel öfter, als ahnungslose Benutzer es glauben, und vor gewissen mathematischen Problemen müssen sie sogar ganz kapitulieren.

Alle paar Wochen brüsten sich Computer-Hersteller mit neuen sensationellen Leistungsausweisen ihrer Produkte. Manchmal kriegt man wirklich den Eindruck, es gebe nichts, das die elektronischen Tausendsassas nicht besser, schneller und erst noch billiger erledigen könnten als der Mensch.

Das ist eine sehr oberflächliche und glücklicherweise auch falsche Sicht. Denn es gibt vieles, das die Computer nur schlecht oder gar nicht können - und auch nie können werden. Erstaunlicherweise gilt das auch für ihr angestammtes Gebiet, die Mathematik.

Die Taschenrechner haben auch ihre Tücken

Selbst Taschenrechner, die ausgesprochenen Spezialisten des Einmaleins, sind nicht über jeden Verdacht erhaben. Was heute so selbstverständlich ist wie Bleistift und Papier, was ganz harmlos und unschuldig im Format einer Kreditkarte daherkommt, hat nämlich durchaus seine Tücken.

Die Tücken des Taschenrechners sind symptomatisch für das elektronische Rechnen: Weil das Gerät bei den meisten Anwendungen im Alltag richtige Resultate liefert, glauben wir, es sei perfekt - ein Trugschluß, der böse Folgen haben kann.

Wenn also Ihr Taschenrechner bei 3 plus 4 eine 7 und bei 2 mal 3 eine 6 ausspuckt, heißt das noch lange nicht, daß er immer richtig funktioniert. Ziehen Sie doch damit einmal die Wurzel aus der Zahl 2 und multiplizieren das Ergebnis anschließend mit sich selber. Damit bei diesem Test alles mit rechten Dingen zu und hergeht, müssen Sie das Runden dem Rechner selbst überlassen. Legen Sie also das Zwischenergebnis (Wurzel 2) im Speicher ab. Nun, was erhalten Sie am Schluß? Die Ausgangszahl 2 (was exakt richtig wäre) oder etwas anderes? Wenn auf der Anzeige 1,9999999 steht, ist das (noch) kein Grund zur Beunruhigung, denn diese Zahl darf man in guten Treuen als eine 2 interpretieren. Immerhin zeigt es doch, daß da Vorsicht am Platz ist.

Nun kommt aber der Moment der Wahrheit: Sie wiederholen den ganzen Vorgang, aber dieses Mal mit dem Resultat der ersten Rechnung (hier also mit 1,9999999). Wenn jetzt nicht wieder 1,9999999 herauskommt, sondern zum Beispiel 1,9999998, rechnet das Gerät falsch - und der Fehler pflanzt sich mit jedem weiteren Mal fort!

Passieren solche Fehler in einem Computer, der pro Sekunde Tausende von Rechenoperationen durchführt, kann er in kürzester Zeit total falsche Resultate erzeugen - ohne daß es jemand merkt. Der Rechner muß schon richtig Amok laufen, bis er Oberhaupt nur verdächtigt wird. Selbst dann tun sich die Spezialisten schwer - sie scheinen ein fast unerschütterliches Vertrauen in die Chips zu haben. Das spektakulärste Beispiel dafür lieferte vor ein paar Jahren ein renommierter Hersteller technisch-wissenschaftlicher Computer. Wochenlang weigerte sich die Firma einen offensichtlichen Fehler in ihrem neuesten Personal Computer zur Kenntnis zu nehmen: Der Stolz des Weltkonzerns war unbelehrbar immer wieder der Meinung, daß 0,1 dividiert durch 10 genau 0,00 1 ergeben müsse, wo doch jeder Primarschüler weiß, daß 0,01 das richtige Resultat ist. Erst die Veröffentlichung des Unfaßbaren in der "New York Times" brachte den Produzenten dazu, das Gerät unter die Lupe zu nehmen. Fazit: Ein plumper Fehler in einem computerinternen Programm war durch alle Kontrollen geschlüpft. Er führte beim Umwandeln von binären in dezimale Zahlen zu falschen Dezimalstellen.

Damit sind wir auch schon beim wunden Punkt, der allen Digitalrechnern gemeinsam ist: Sie müssen selbst einfachste Operationen wie die Multiplikation oder Division zweier Dezimalzahlen mühsam zusammensetzen aus einer Folge von Additionen, Subtraktionen und Vergleichen binärer Zahlen. Weil die Maschine lediglich Bits in mehr oder weniger langen Ketten verarbeitet, sind Rundungsfehler unvermeidlich. Mit diesen zu leben, ist nicht einfach. Die Computerarchitekten müssen sich haargenau überlegen, welche Schritte nötig sind, um beispielsweise eine Division wie 1:7 durchzuführen - einschließlich der Zahlenumwandlungen dezimal-binär am Anfang und binär-dezimal am Ende der Operation. Beim Entwerfen solcher Mikroprogramme wird denn auch viel gesündigt.

Der Rechner macht absolute und relative Fehler

Was wir elegant als 1/7 schreiben, läßt sich digital ja gar nicht präzise darstellen. In den meisten Fällen ist das nebensächlich - die hintersten Stellen interessieren gar nicht. Wenn wir aber die Zahl nachher mit 7 multiplizieren, sind wir plötzlich heikel: jetzt erwarten wir als Ergebnis eine 1, oder wenigstens 0,9999999.

Keine einfache Sache also, diese Computer-Arithmetik! Eine Entschuldigung für falsche Rechenergebnisse ist das aber nicht, denn diese Probleme - und auch ihre Lösungen - sind seit Jahren bekannt. Der Mathematiker William M. Kahan, ein Experte auf diesem Gebiet, formuliert es deutlich: "Man kann Rechner ohne weiteres so bauen, daß man ihrem Output trauen darf." Damit meinte Kahan allerdings nur den unmittelbaren Output der computerinternen Arithmetik-Funktionen. Rechenfehler können aber auch bei einwandfreier Computerarithmetik auftreten - nämlich dann, wenn der Anwender seine Programme ungeschickt oder falsch schreibt. Diesem Punkt wird häufig zuwenig Aufmerksamkeit geschenkt.

Wenn man von Rechenfehlern spricht, muß man unterscheiden zwischen absoluten und relativen Fehlern. Wenn x* der ungefähre und x der exakte Wert einer Zahl sind, so beträgt der absolute Fehler x* - x (oder je nach Konvention x - x*), der relative Fehler aber (x* - x)/x . Beim Rechnen ist es wichtig, daß nicht nur die absoluten, sondern auch die relativen Fehler klein bleiten Fehler der beteiligten Operanden, bei Multiplikationen und Divisionen hingegen die relativen Fehler.

Auf den meisten Computern lassen sich Zahlen mit kleinen absoluten Fehlern darstellen - dem Anwender stehen ja oft viel mehr Stellen zur Verfügung, als ihn überhaupt interessieren. Dies verleitet den Laien häufig zur falschen Annahme, die Rechenresultate seien genau - dabei spielen ihm vielleicht Fehler, die sich gegenseitig aufschaukeln, einen üblen Streich.

Nehmen wir an, der Programmierer müßte mit einem Computer arbeiten, der Zahlen auf drei Kommastellen genau rechnet; die dritte Stelle sei wie folgt gerundet: Wenn an vierter Stelle Zahlen von 0 ... 4 stehen: abrunden. Steht an dritter Stelle eine gerade Zahl, an vierter eine 5: ebenfalls abrunden. In allen andern Fällen aufrunden.

Der absolute Rundungsfehler beträgt in diesem Fall höchstens 0,0005. Was für die Maschine 1,514 ist, ist in Tat und Wahrheit FORMEL AUF PAPIER. Daran kann auch der beste Programmierer nichts ändern. Sein Können zeigt sich aber, wenn es darum geht, in einer ganzen Folge von Rechenoperationen absolute und relative Fehler möglichst klein zu behalten.

Die Subtraktion kann Gefahren bergen

Gefährlich ist zum Beispiel die Subtraktion praktisch gleich großer Zahlen: 1,5145 - 1,5055 ergibt auf dem Papier 0,009; der Computer hingegen rechnet 1,514 - 1,506 = 0,008. Die beiden maximalen absoluten Fehler (0,0005) bei der Darstellung der Operanden haben sich zu 0,001 addiert. Das wäre noch zu verkraften; weit schlimmer ist, daß sich der relative Fehler - er betrug bei den Operanden bloß etwa 11/3 Promille (0,0005/1,5) - durch die simple Subtraktion fast 400mal größer geworden ist: 12,5 Prozent (0,001/0,008)! Der Grund dafür ist der Informationsverlust, der durch die Beinahe-Auslöschung der beiden Operanden entstanden ist.