Rechentabellen

Wie konnte man schnell eine Wurzel ziehen, einen Logarithmus oder einen Sinus bestimmen, als es noch keine Taschenrechner gab? Für all diese Funktionen gibt es Rechenwege, um sich dem Ergebnis auf eine bestimmte Genauigkeit anzunähern.

Für den Sinus gilt beispielsweise:

sin(x) = x1/1! - x3/3! + x5/5! - x7/7! ...

Das ist eine sogenannte Taylorreihe. Je mehr Glieder man anhängt, desto genauer wird das Ergebnis. Das Ausrufezeichen ist die Fakultät, d.h. alle Zahlen von 1 bis zur angegebenen Zahl miteinander multipliziert. Also beispielsweise:

5! = 1 x 2 x 3 x 4 x 5

Es ist offensichtlich, dass die Bestimmung eines einzigen Sinuswertes nicht nur mühsam, sondern auch fehleranfällig ist.

Um dieses Problem zu lösen, wurden Tabellenwerke erstellt. Jeder Funktionswert musste daher nur noch ein einziges mal berechnet werden und der Käufer so eines Tabellenbuches konnte ihn dann einfach nachschlagen. Das Bild oben zeigt eine Logarithmentabelle, die ich mit einem kleinen Programm selbst erzeugt (und anschließend noch etwas aufgehübscht) habe. Mit einem Computerprogramm ist die Erzeugung so einer Tabelle eine Sache weniger Zeilen. Das folgende Beispiel ist in Perl geschrieben, kann aber mit minimalem Aufwand in jede Sprache übertragen werden, deren Syntax sich an C anlehnt (PHP, Javascript, Java, ...):

#! /usr/bin/perl
# Tabellenkopf schreiben
print "N\t";
for( $j=0; $j<.1; $j+=.01 ) {
  printf "%.2f\t", $j; 
}
print "\n";
# Tabelle schreiben
for( my $i=1; $i<5; $i+=.1 ) {
  printf "%.1f\t", $i;
  for( $j=0; $j<.1; $j+=.01 ) {
    $a = log( $j+$i );
    printf "%.4f\t", $a;   
  }
  print "\n";
}

Das komplette Blatt der Logarithmentabelle können Sie oben rechts herunterladen.

Interpolation

In solchen Tabellenwerken stehen die Funktionswerte nur mit einer bestimmten Schrittweite für das Argument. Im Beispiel sind das Schritte von 0,01. Was tun, wenn man nun einen Funktionswert für ein Argument mit höherer Genauigkeit benötigt? In diesem Fall geht man einfach davon aus, dass der Funktionsgraph auf dem kurzen Stück zwischen den benachbarten Funktionswerten so gut wie gerade verläuft. In diesem Fall kann man mit einer Interpolation den gesuchten Wert berechnen.

Beispiel:

Gesucht ist der Logarithmus von 1,7328.

Aus der Tabelle kann folgendes abgelesen werden:
log(1,73) = 0,5481
log(1,74) = 0,5539

Wenn man nun ein Koordinatensystem zeichnet und die beiden bekannten Funktionswerte einzeichnet, kann man durch diese beiden Punkte eine Gerade legen. Deren Funktionsgleichung lautet:

y = (y2-y1)(x-x1) / (x2-x1) + y1

x1/y1 sind die Koordinaten des ersten Punktes, x2/y2 die des zweiten Punktes. In unserem Beispiel wäre das also:

x1 = 1,73; y1 = 0,5481
x2 = 1,74; y2 = 0,5539

Eingesetzt in die Formel ergibt sich also:

y = (0,0058)(x-1,73) / 0,01 + 0,5481

Nun kann man den Funktionswert für x=1,7328 durch Einsetzen bestimmen:

log(1,7328) = 0,0058 * 0,0028 / 0,01 + 0,5481 = 0,5497

Das Resultat ist auf vier Nachkommastellen gerundet, weil die Tabellenwerte auch keine höhere Genauigkeit hatten.

Rechnende Waage

Eine besondere Form der Rechentabellen fand sich früher an den Waagen im Lebensmittelhandel. Die Waage zeigt auf einer Skala das Gewicht an. Darunter befinden sich jedoch viele weitere Skalen, von denen jede zu einem bestimmten Preis pro Kilogramm gehört. Man kann dadurch also nicht nur das Gewicht, sondern auch den vom Kunden zu bezahlenden Preis mit einem Blick ablesen.