Toepler-Verfahren

Aus Rechnerwiki
Zur Navigation springen Zur Suche springen

Das Toepler-Verfahren erlaubt das Berechnen von Quadratwurzeln mit mechanischen Vierspeziesmaschinen, allerdings nur mit solchen, die entweder eine Volltastatur haben oder eine Einstellung über Schieber. Warum es mit den Maschinen mit Zehnertastatur nicht funktioniert (z.B. den verbreiteten Facit-Modellen C1-13 und CM2-16), wird im Verlauf der Beschreibung deutlich werden. Meine Beispiele habe ich mit einer Schubert DRV gerechnet, bei der die Eingabe über Schieber erfolgt.

Der Algorithmus stammt von Prof. August Toepler (1836–1923), ein Jahrgang, den man noch nicht unbedingt mit Rechenmaschinen in Verbindung bringt. Toepler war Physiker, nicht Mathematiker, aber das Verfahren ist trotzdem mathematisch korrekt, es liefert also nicht nur eine "für Physiker ausreichende" Näherung – natürlich abgesehen davon, dass eine Maschine mit einer endlichen Stellenzahl bei einer Wurzel grundsätzlich nur einen Näherungswert liefern kann.

Mathematische Grundlagen

Grundsätzlich basiert das Toepler-Verfahren auf zwei mathematischen Tatsachen: Erstens ergibt die Addition aufeinanderfolgender ungerader Zahlen immer eine Quadratzahl, z.B. 1+3+5=9=3*3, 1+3+5+7=16=4*4 und 1+3+5+7+9=25=5*5. Das kann man mathematisch sauber beweisen; es wird aber auch anschaulich klar, wenn man die drei Beispiele betrachtet: Im ersten gleichen sich 1 und 5 zum Mitelwert 3 aus, im zweiten 1 und 7 sowie 3 und 5 zum Mittelwert 4 und im dritten 1 und 9 sowie 3 und 7 zum Mittelwert 5. Die Folgen sind also gleichwertig mit 3+3+3, 4+4+4+4 bzw. 5+5+5+5+5, was genau 3*3, 4*4 oder 5*5 ergibt.

Um eine Wurzel zu ziehen, kann man von einer beliebigen Zahl also so lange die Folge 1, 3, 5 etc. abziehen, bis man bei 0 landet. Die Anzahl der Subtraktionen ist dann die gewünschte Wurzel. Beispiel 49: 49-1-3-5-7-9-11-13=0. Wir haben 7 ungerade Zahlen abgezogen, also ist die Wurzel 7. Trickreich wird es erst, wenn die Wurzel nicht aufgeht, aber für diese Fälle haben wir ja unsere Rechenmaschine.

Der zweite mathematische Trick des Toepler-Verfahrens nutzt die Tatsache, dass 100 eine Quadratzahl ist. Daraus ergibt sich, dass sich z.B. die Wurzel aus 200 nur in der Kommastelle von der Wurzel aus 2 unterscheidet (Nach der Produktregel für Wurzeln gilt √(a*b)=√a*√b, also √(100*x) = √100 * √x = 10*√x).

In der Praxis müssen wir von großen Zahlen also keine kilometerlange Folge von ungeraden Zahlen abziehen, sondern es ist ausreichend, den Radikanden (die Zahl, aus der wir die Wurzel ziehen wollen) in Hunderdergruppen zu zerlegen. Aus 54321 machen also gedanklich 5 43 21, wobei sich aus der Zahl der Gruppen auch die Stellenzahl der Wurzel ergibt, nämlich 3. Das ist hier sehr wichtig: Während man das Komma bei den Grundrechenarten auch nachträglich im Kopf setzen kann, muss man sich beim Wurzelziehen von Anfang an Gedanken darüber machen. Dies liegt daran, dass z.B. √2 oder √200 eine völlig andere Ziffernfolge ergibt als √20 oder √2000.

Anders als bei den Grundrechenarten ist die mathematische Funktionsweise des im Folgenden beschriebenen Verfahrens nicht offensichtlich. Es ist zwar klar, dass ungerade Zahlen abgezogen werden, aber die Behandlung der niederwertigen Hundertergruppen und die Bedeutung des Zurückstellens des Subtrahenden um 1 nach einem Unterlauf werden nicht sofort deutlich. Ich will hier nicht genauer darauf eingehen, und ich will auch nicht behaupten, dass ich es hundertprozentig verstanden habe. Wer es ganz genau wissen will, sollte sich die unter den externen Links aufgeführte mathematische Analyse des Verfahrens anschauen!

Ausführliches Beispiel

Als Beispiel wollen wir die Wurzel aus 2 berechnen. Die hat jeder, der im Mathematikunterricht mehr als nur körperlich anwesend war, auf mindestes zwei Nachkommastellen im Kopf, nämlich 1,41...

Zu Beginn entspricht der Ablauf beim Wurzelziehen dem bei der Division, wir müssen unseren Radikanden also linksbündig eingeben, um die Kapazität der Maschine auszunutzen. Wie bei der Division müssen wir anschließend das Zählwerk auf 0 setzen. Dann stellen wir im Eingabewerk die Zahl 1 ein, und zwar – das ist ganz wichtig – an der unteren Stelle der obersten Hundertergruppe! Bei unserem Beispiel ist das natürlich direkt die 2, bei 27 wäre es die 7, bei 123 die 1, bei 5432 die 4 und bei 76543 die 7.

Unsere Anzeigen sollten jetzt etwa wie folgt aussehen (Führende bzw. anhängende Nullen, die beim Wurzelziehen mit meiner Schubert DRV nicht genutzte Stellen repräsentieren, lasse ich in den weiteren Dastellungen z.T. weg, um Platz zu sparen):

Eingabewerk:  0000100000
Resultatwerk:     2000000000000
              
Zählwerk:     0000000

Jetzt drehen wir einmal rückwärts: 2 minus 1 ist 1, das Zählwerk registriert eine Umdrehung. Wir haben noch keinen Unterlauf, also stellen wir im Eingabewerk die nächste ungerade Zahl ein, die 3.

Einschub: An genau diesem Punkt versagen die Maschinen mit Zehnertastatur: Man kann einen einmal eingetippten Wert nämlich nicht einfach erhöhen oder verringern. Stattdessen müsste man sich den aktuellen Wert merken, das Eingabewerk löschen, den geänderten Wert komplett neu eintippen und schließlich Eingabe- und Resultatwert wieder an der richtigen Stelle aneinander ausrichten. Theoretisch kann man so – mit Hilfe von Papier und Bleistift – vielleicht trotzdem eine Wurzel berechnen, praktisch aber eher nicht.

Zurück zum Beispiel: Durch eine weitere Rückwärtsdrehung ziehen wir die 3 von der verbliebenen 1 ab. Dies ergibt natürlich einen Unterlauf; wir machen diese Subtraktion also mit einer Vorwärtsdrehung wieder rückgängig (der Trick aus der Division funktioniert hier nicht!).

Jetzt kommt der entscheidende Schritt des Verfahrens: Nach einem Unterlauf und dem Zurückdrehen desselben wird der Subtrahend im Eingabwerk um 1 verringert, also in unserem Beispiel von 3 auf 2. Anschließend wird der Wagen eine Stelle rückwärts gefahren, und an der nächstniedrigeren Stelle im Eingabewerk wird eine 1 eingestellt (die höheren Stellen bleiben dabei unverändert).

Die ersten Schritten noch einmal zusammengefasst (UL: Unterlauf, ZD: Zurückdrehen, 3->2: Reduzieren des Subtrahenden um 1, SV: Stellenverschiebung):

   Start   -1      -3 UL   ZD      3->2    SV       neue 1
     
E: 100000  100000  300000  300000  200000  0200000  02100000
R: 200000  100000  800000  100000  100000  1000000  10000000
 
Z: 000000  100000  200000  100000  100000  1000000  10000000

Wir ziehen im nächsten Schritt also 21 ab, dann 23, 25 und 27, und erst bei der 29 gibt es wieder einen Unterlauf, der zurückgedreht werden muss. Danach reduzieren wir die kleinste Eingabestelle wieder um 1. Der Wagen wird wieder um eine Stelle verschoben, und in die nächstniedrigere Stelle des Eingabewerks wird eine 1 eingegeben.

E: 0210000  0290000  0280000  00281000
R: 1000000  9750000  0040000  00400000
     
Z: 1000000  1500000  1400000  1400000

Wir ziehen jetzt 281 ab und dann 283, dabei gibt es den nächsten Unterlauf, der auf die übliche Methode verarbeitet wird: Zurückdrehen, Eingabewert um 1 verringern, Wagen verschieben, neue 1 eingeben.

E: 00281000  00283000  000282100
R: 00400000  99836000  001190000
     
Z: 1400000   1420000   1410000 

Wir sehen, dass unsere Wurzel im Zählwerk langsam Form annimmt, nämlich 1,41! Weiter geht es mit Abziehen: 2821, 2823, 2825, 2827. Bei 2829 tritt der nächste Unterlauf auf, also das Übliche: Zurückdrehen, Eingabewert um 1 verringern, Wagen verschieben, neue 1 eingeben.

E: 000282100 000282900 0000282810
R: 001190000 999777500 0000604000
     
Z: 1410000   1415000   1414000 

Minus 28281, minus 28283, minus 28285 – Unterlauf! Zurückdrehen, Eingabewert um 1 verringern, Wagen verschieben, neue 1 eingeben.

E: 0000282810  0000282850  00000282841
R: 0000604000  9999755510  00000383600
     
Z: 1414000     14143000    14142000

Minus 282841, minus 282843 – Unterlauf, zurückdrehen! Jetzt sind wir fertig, denn zumindest die Schubert DRV ist am Ende ihrer Kapazität angekommen, so dass eine weitere Stellenverschiebung nicht möglich ist. Obwohl es das Ergebnis nicht mehr verändert, sollten wir die Zahl im Eingabewerk trotzdem noch um 1 verringern; auf den Grund dafür komme ich gleich.

E: 00000282841  00000282843  00000282842
R: 00000383600  99999817916  00000100759
     
Z: 14142000     14142200     14142100

Unser Ergebnis ist also 1,41421, was dem mit einem zehnstelligen Taschenrechner errechneten Wert von 1,414213562 schon recht nahe kommt. Die letzte berechnete Stelle ist in diesem Fall zufälligerweise korrekt, aber da nicht kaufmännisch gerundet wurde, sollte sie in der Praxis mit Vorsicht genossen werden (für die Wurzel aus 5 liefert uns die Maschine z.B. den Wert 2,23606, korrekt wäre aber 2,23607, weil der genauere Wert 2,2360679775... ist).

Der im Resultatwerk stehende Wert (mit gesetztem Komma 0,0000100759) ist sozusagen der Wurzel-Rest, die Differenz zwischen dem Quadrat unseres Ergebnisses (1,41421²=1,9999899241) und dem Ausgangswert 2.

Haben wir, wie oben empfohlen, das Eingabewerk nach dem letzten Unterlauf noch um 1 reduziert, werden wir feststellen, dass dort, wie von Zauberhand, genau das Doppelte der Wurzel steht! Ein Mathematiker wird sicher erklären können, warum das so ist; ich habe jedoch nicht versucht, es nachzuvollziehen. Ich verweise noch einmal auf die unten verlinkte Analyse!

Abziehen von 11, 13, 15 etc.

Ein Sonderfall kommt bei der Wurzel aus 2 nicht vor: Was passiert, wenn das Abziehen von 9 ohne Unterlauf möglich ist und im nächsten Schritt 11 abgezogen werden müsste? Die Lösung ist zum Glück genau die, die einem intuitiv einfällt: Man reduziert den Wert in der niedrigsten Stelle auf 1 und erhöht den Wert der Stelle links davon um 1 (egal, was dort schon steht). Entsprechend geht es weiter mit -11, -13 etc. Spätestens bei -19 tritt definitiv ein Unterlauf auf; der Grund dafür ist, dass die Folge 1+3+...+17+19 genau 100 ergibt, was größer ist als die größte zweistellige Zahl 99.

Ein schönes Rechenbeispiel für diesen Fall ist tatsächlich die Wurzel aus 99. Viel Spaß beim Kurbeln! Am Ende sollte 9,9498 herauskommen, wobei die 8 eigentlich auf 9 aufgerundet werden müsste.

Die Friden SRW und das modifizierte Toepler-Verfahren

Das Toepler-Verfahren ist "idiotensicher", d.h. man muss keine Zwischenrechnungen im Kopf machen oder kompliziertere Entscheidungen treffen – das Verfahren schreibt jeden Handgriff exakt vor. Dies macht es möglich, den Vorgang zu automatisieren, sogar in mechanischer Form.

Tatsächlich gibt es eine elektromechanische Rechenmaschine, die Friden SRW (siehe externe Links), die vollautomatisch Wurzeln ziehen kann. Dabei kommt eine Variante des Toepler-Verfahrens zum Einsatz, die das im vorangegangenen Abschnitt beschriebene Problem des Umstellens des Subtrahenden von 9 auf 11 umgeht – dieser zwei Stellen betreffende Schritt ist beim klassischen Verfahren derjenige, der Finger und Kopf am meisten herausfordert, und er ist deshalb auch mechanisch besonders schwer realisierbar.

Die Friden SRW arbeitet deshalb mit einem genialen Trick: Der Radikand wird gleich nach der Eingabe mit 5 multipliziert, und statt 1, 3, 5 etc. werden die jeweils 5-fachen Werte 5, 15, 25 etc. abgezogen. Dabei entsteht im Eingabwerk nebenbei das Zehnfache der Wurzel (und nicht wie oben das Doppelte), was einen weiteren Vorteil hat: Weil es technisch gesehen ohnehin kein Komma gibt, kann mit dem Ergebnis ohne eine Rückübertragung sofort weitergerechnet werden!

Die im Jahr 1952 vorgestellte Friden SRW ist die einzige solche Maschine geblieben; erst mit der 1966 erschienenen elektronischen IME 86 S ist das automatische Wurzelziehen erneut realisiert worden. Ob diese und andere elektronische Maschinen das Toepler-Verfahren nutzen, ist mir nicht bekannt; denkbar wäre es aber. Mit dieser Methode kann man auch übrigens auch auf einem Computer einen Algorithmus programmieren, der Wurzeln beliebig genau ausrechnet, auch über die Genauigkeit der vorgegebenen Fließkomma-Datentypen hinaus!

Das modifizierte Toepler-Verfahren im Handbetrieb

Wer nicht glaubt, dass das modifizierte Toepler-Verfahren wirklich funktioniert, muss sich keine Friden SRW kaufen; man kann es auch mit einer einfachen Vierspeziesmaschine nachvollziehen. Man multipliziert den Radikanden zunächst mit 5 und gibt ihn dann wie üblich linksbündig ein. Natürlich kann man die Multiplikation auch der Maschine überlassen, dann sollte man aber schon vorher eine mögliche zusätzliche Stelle berücksichtigen.

Aus der 2 im obigen Beispiel wird also eine 10, und der zuerst abgezogene Wert ist die 5. Wichtig sind hier wieder die Kommastelle bzw. die Hunderter-Grupen: Die 5 wird von 10 abgezogen und nicht von 1, muss also eine Stelle weiter rechts eingegeben werden.

Eingabewerk:  0000050000
Resultatwerk:     1000000000000
                
Zählwerk:     0000000

5 lassen sich ohne Unterlauf abziehen, also ziehen wir im nächsten Schritt 15 ab. Die Einerstelle des Subtrahenden bleibt dabei unverändert, was sowohl das manuelle Rechnen als auch die mechanische Realisierung erleichtert, und nur die Zehnerstelle wird um 1 erhöht.

Die Subtraktion von 15 erzeugt einen Unterlauf, und auch jetzt gehen wir analog zum klassischen Verfahren vor: Zurückdrehen, Subtrahend reduzieren, allerdings um 5 und nicht um 1. Dann den Wagen verschieben und eine 5 in die nächstniedrigere Stelle eingeben.

Wir sehen, dass beim Reduzieren des Subtrahenden um 5 nicht nur die höhere Stelle unverändert bleibt, sondern dass die niedrigere Stelle immer auf 0 gesetzt wird: Aus 35 wird 30, aus 15 wird 10. Dies macht die mechanische Realisierung vergleichsweise einfach, stört aber auch nicht beim manuellen Rechnen.

Ich gehe das modifizierte Verfahren hier nicht Schritt für Schritt durch, aber ich bin schon beim ersten Versuch auf das richtige Ergebnis gekommen. Es ist ebenso leicht zu erlernen wie das klassische Verfahren, und man kann dabei eigentlich auch nicht mehr falsch machen. Ich persönlich finde es auch im Handbetrieb eleganter – abgesehen von einem kleinen Nachteil, auf den ich noch zu sprechen komme.

Beim modifizierten Toepler-Verfahren müssen wir den Subtrahenden nach dem letzten Überlauf unbedingt um 5 reduzieren, sonst haben wir im Eingabewerk das falsche Ergebnis 1,41425. Nach dem Zurücksetzen haben wir 1,41420, was zwar ebenfalls falsch ist (korrekt wäre 1,41421), aber die 0 sagt uns deutlicher als die 5, dass wir diese letzte Stelle ignorieren müssen. Das zeigt uns auch ein Blick auf das Zählwerk, wo der Pfeil auf die letzte gültige Stelle zeigt. Wie gesagt steht im Eingabewerk das Zehnfache davon und damit logischerweise eine 0 in der Einerstelle!

Damit sind wir auch schon beim einzigen Nachteil des modifizierten Verfahrens: Wir haben 1,4142 errechnet, was eine Stelle ungenauer ist als der Wert, der sich aus dem klassichen Toepler-Verfahren ergibt. Der Grund dafür ist, dass wir den einstelligen Ausgangswert 2 mit 5 multipliziert haben. Wir haben die Rechnung also mit der zweistelligen 10 begonnen und damit quasi eine Stelle verschwendet. Das Berechnen der Wurzel aus z.B. 12 ist mit beiden Verfahren gleich genau.

Externe Links