Der Satz des Pythagoras und pythagoreische Zahlentripel

Der Satz des Pythagoras ist zunächst eine geometrische Aussage über die Seitenlängen eines rechtwinkligen Dreiecks. Da es aber einige Dreiecke mit ganzzahligen Seitenlängen gibt (pythagoreische Zahlentripel) führt er schnell zu Fragen der Zahlentheorie. Einige Beweise des Satzes werden vorgestellt und es werden die Bezeichnungen für die zahlentheoretischen Fragestellungen eingeführt (näher untersucht werden sie in den anschließenden Kapiteln).

Einordnung des Artikels

Voraussetzungen

Dieses Kapitel setzt nur elementare Geometrie- und Algebra-Kenntnisse voraus, die deutlich unterhalb des Abiturniveaus liegen.

Einführung

Der Satz des Pythagoras ist zunächst ein Satz der Geometrie: er beschreibt den Zusammenhang zwischen den Seitenlängen a, b, c eines rechtwinkligen Dreiecks:

a2 + b2 = c2.

Auffällig an dieser Gleichung ist sofort, dass sie ganzzahlige Lösungen besitzt, zum Beispiel

a = 3, b = 4, c = 5 oder

a = 5, b = 12, c = 13.

Dagegen gibt es zu a = 2 keine ganzen Zahlen b und c, so dass sich eine Lösung von a2 + b2 = c2 ergibt.

Diese Beispiele zeigen schon, dass der geometrische Satz leicht zu Fragestellungen über natürliche Zahlen führt.

In den folgenden Abschnitten werden zahlreiche Bezeichnungen zu rechtwinkligen Dreiecken eingeführt und es wird die geometrische Sichtweise auf den Satz des Pythagoras ergänzt durch die zahlentheoretische Sichtweise; in den folgenden Kapiteln werden diese zahlentheoretischen Fragestellungen näher untersucht.

Bezeichnungen und ein Ausblick auf die weiteren Fragestellungen

In Abbildung 1 ist ein rechtwinkliges Dreieck dargestellt; man erkennt:

Abbildung 1: Bezeichnungen im rechtwinkligen Dreieck. Aus den folgenden Fragestellungen wird hervorgehen, dass die Orientierung des Dreiecks und die Unterscheidung zwischen den Katheten a und b keine Rolle spielt.Abbildung 1: Bezeichnungen im rechtwinkligen Dreieck. Aus den folgenden Fragestellungen wird hervorgehen, dass die Orientierung des Dreiecks und die Unterscheidung zwischen den Katheten a und b keine Rolle spielt.

Der Satz des Pythagoras

a2 + b2 = c2

ist dann eine Aussage über die Flächen der Quadrate, die über den Seiten eines rechtwinkligen Dreiecks errichtet werden. Durch reine Verschiebungen der Flächen (oder nur von Teilflächen), ist es nicht leicht zu sehen, warum der Satz für jedes rechtwinklige Dreieck gelten soll.

Abbildung 2: Der Satz des Pythagoras als Zusammenhang zwischen den über den Seiten eines rechtwinkligen Dreiecks errichteten Quadraten.Abbildung 2: Der Satz des Pythagoras als Zusammenhang zwischen den über den Seiten eines rechtwinkligen Dreiecks errichteten Quadraten.

Zwei Dreiecke heißen ähnlich, wenn sie in ihren drei Winkeln übereinstimmen.

Ähnliche Dreiecke können leicht erzeugt werden: Man geht von einem Dreieck aus, wählt einen Eckpunkt als Zentrum und streckt das Dreieck um einen bestimmten Faktor s.

In der Geometrie wird diese Abbildung des Dreiecks als zentrische Streckung bezeichnet; falls s < 1, sollte man besser von einer Stauchung sprechen.

Es ist klar, dass bei einer zentrischen Streckung die Seitenlängen von a, b, c zu s · a, s · b, s · c verändert werden. Die Winkel im Dreieck und die Verhältnisse der Seiten bleiben unverändert: a / b = s · a / s · b und so weiter.

Abbildung 3: Durch eine zentrische Streckung (hier mit dem Faktor 2) entsteht ein ähnliches Dreieck: alle Winkel bleiben gleich, die Seitenlängen werden mit dem Streckungsfaktor multipliziert.Abbildung 3: Durch eine zentrische Streckung (hier mit dem Faktor 2) entsteht ein ähnliches Dreieck: alle Winkel bleiben gleich, die Seitenlängen werden mit dem Streckungsfaktor multipliziert.

Wird die Gleichung a2 + b2 = c2 von ganzen Zahlen a, b, c erfüllt, so nennt man diese drei Zahlen ein pythagoreisches Zahlentripel.

Das einfachste pythagoreische Zahlentripel ist a = 3, b = 4, c = 5; es wird nicht von a = 4, b = 3, c = 5 unterschieden. Die pythagoreischen Zahlentripel werden immer so geschrieben, dass die Hypothenuse zuletzt angegeben wird, die Katheten werden hier in beliebiger Reihenfolge angegeben. Wenn es keine Verwechslung mit einem Vektor geben kann, wird ein pythagoreisches Zahlentripel als (a, b, c) geschrieben; somit lautet a = 3, b = 4, c = 5 kurz (3, 4, 5).

Interpretiert man den Satz des Pythagoras als algebraische Gleichung, so ist auch a = -3, b = -4, c = 5 ein pythagoreisches Zahlentripel. Da man negative Zahlen aber nicht als Seitenlängen deuten kann, werden nur positive Zahlen a, b, c zugelassen. Auch ein Zahlentripel wie a = 0, b = 2, c = 2 erfüllt den Satz des Pythagoras; auch diese Zahlen werden nicht zu den pythagoreischen Zahlentripel gerechnet, da man ein Dreieck mit diesen Seitenlängen schwer "rechtwinklig" bezeichnen kann.

Es sollte sofort klar sein: Wenn es ein pythagoreisches Zahlentripel gibt, dann gibt es unendlich viele pythagoreische Zahlentripel. Dazu muss man nur das pythagoreische Zahlentripel (3, 4, 5) mit natürlichen Zahlen n = 2, 3, ... multiplizieren: Aufgrund der Ähnlichkeit von Dreiecken ist jedes

(n · 3, n · 4, n · 5), n = 2, 3, ...,

ein pythagoreisches Zahlentripel.

Vergleicht man die beiden pythagoreischen Zahlentripel (3, 4, 5) und (6, 8, 10), so besitzen in Letzterem alle Seitenlängen den Primfaktor 2, hingegen gibt es in Ersterem keinen gemeinsamen Primfaktor. Versucht man in (3, 4, 5) einen Faktor zu kürzen, entstehen echt rationale Zahlen.

Ein pythagoreisches Zahlentripel (a, b, c), in dem die drei Zahlen a, b, c keinen gemeinsamen Primfaktor besitzen, wird als primitives pythagoreisches Zahlentripel bezeichnet; gibt es einen gemeinsamen Faktor, so heißt es nicht-primitives pythagoreisches Zahlentripel. Zwei pythagoreische Zahlentripel, die sich auf ein gemeinsames primitives pythagoreisches Zahlentripel zurückführen lassen werden als ähnliche pythagoreische Zahlentripel bezeichnet. Beispielsweise sind (6, 8, 10) und (9, 12, 15) ähnlich, da beide auf das primitive pythagoreische Zahlentripel (3, 4, 5) zurückgeführt werden können.

Die Unterscheidung zwischen primitiven und nicht-primitiven pythagoreischen Zahlentripeln eröffnet sofort weitere Fragen, die mit der ursprünglichen geometrischen Interpretation des Satzes des Pythagoras wenig zu tun haben:

Abbildung 4 soll einen Eindruck vermitteln, wie außergewöhnlich primitive pythagoreische Zahlentripel sind. In der Abbildung durchlaufen a und b die Werte von 1 bis 30; berechnet wird zu jeder Kombination von a und b die Zahl a2 + b2. Wenn dies eine Quadratzahl ist, ist auch c eine ganze Zahl und somit hat man ein pythagoreisches Zahlentripel gefunden. Rot gekennzeichnet sind allerdings nur die Werte von a2 + b2, bei denen a, b und c teilerfremd sind – also ein primitives pythagoreisches Zahlentripel entsteht.

Abbildung 4: Tabelle mit a, b=1, 2, 3, ..., 30, in der für jede Kombination von a und b die Summe ihrer Quadrate berechnet wird. Rot gekennzeichnet sind primitive pythagoreische Zahlentripel.Abbildung 4: Tabelle mit a, b = 1, 2, 3, ..., 30, in der für jede Kombination von a und b die Summe ihrer Quadrate berechnet wird. Rot gekennzeichnet sind primitive pythagoreische Zahlentripel.

Aufgabe:

Der Satz des Pythagoras

In diesem Abschnitt sollen nun der Satz des Pythagoras (Satz 1) und seine Umkehrung (Satz 2) formuliert werden.

Satz 1 (Pythagoras):

In einem rechtwinkligen Dreieck mit Katheten a und b und Hypothenuse c gilt:

a2 + b2 = c2.

♦ ♦ ♦

Beweise für den Satz folgen weiter unten. Zunächst soll wie angekündigt die Umkehrung des Satzes formuliert und bewiesen werden.

Aufgabe:

Versuchen Sie die Umkehrung des Satzes des Pythagoras zu formulieren. Was sind jetzt die Voraussetzungen und was ist die Behauptung?

♦ ♦ ♦

Bei der Umkehrung des Satzes werden lediglich Behauptung und Voraussetzung ausgetauscht.

Satz 2 (Umkehrung des Satzes von Pythagoras):

Gilt in einem Dreieck mit Seitenlängen a, b und c die Gleichung

a2 + b2 = c2,

so ist das Dreieck rechtwinklig und der rechte Winkel liegt der Seite c gegenüber.

♦ ♦ ♦

Aufgabe:

Ist in den Sätzen 1 und 2 die folgende Aussage enthalten oder muss sie erst noch bewiesen werden:

Gilt in einem Dreieck mit Seitenlängen a, b und c

a2 + b2 ≠ c2,

so ist das Dreieck nicht rechtwinklig.

♦ ♦ ♦

Die letzte Aussage liefert somit zusammen mit Satz 2 ein einfaches Kriterium, um zu entscheiden, ob ein Dreieck rechtwinklig ist – und dazu ist es nicht nötig, Winkel zu messen, es reicht die Seitenlängen zu bestimmen.

Beweise für den Satz des Pythagoras

Es gibt unzählige Beweise für den Satz des Pythagoras. Nur einige sehr einfache Beweise sollen hier gezeigt werden.

Erster Beweis

Auf der einen Seite des Satzes steht der Ausdruck c2; es ist daher naheliegend zu versuchen, die Fläche des Quadrates mit Seitenlänge c auf die Seitenlängen a und b zurückzuführen.

Dies geschieht in Abbildung 5: Man zeichnet zunächst das Quadrat mit Seitenlänge c (rot eingezeichnet). Jede Seite der Länge c wird durch das rechtwinklige Dreieck mit den Katheten a und b ergänzt – aber so, dass jedes Dreieck im Inneren des Quadrates liegt. Durch diese 4 Dreiecke wird das Quadrat nicht vollständig ausgefüllt (außer im Fall b = a). Ist b die längere der Katheten, so bleibt im Inneren des Quadrates ein weiteres Quadrat mit Seitenlängen b - a. Dass es sich tatsächlich um ein Quadrat handelt, folgt daraus, dass zwischen a und b jeweils rechte Winkel liegen. Dieses Quadrat ist in Abbildung 5 gelb eingezeichnet.

Abbildung 5: Skizze zum ersten Beweis (Erklärung im Text).Abbildung 5: Skizze zum ersten Beweis (Erklärung im Text).

Die Fläche des roten Quadrates ist einerseits gleich c2; andererseits kann es durch die Dreiecksfläche (viermal) und die Fläche des kleinen Quadrates ausgedrückt werden. Die Rechnung ist in Abbildung 5 ausgeführt und sie liefert die Behauptung des Satzes von Pythagoras.

Aufgabe:

Ist in diesem Beweis auch der Fall "a = b" enthalten? Oder muss man den Beweis ein wenig ergänzen?

Zweiter Beweis

Noch einfacher ist der von J. A. Garfield (1876) stammende Beweis: Das rechtwinklige Dreieck mit Seitenlängen a, b und c wird wie in Abbildung 6 zweimal nebeneinander gelegt und zu einem Trapez ergänzt (rot eingezeichnet). Die zur Ergänzung benötigte Fläche ist ein rechtwinkliges Dreieck, dessen beide Katheten die Länge c besitzen.

Die Fläche des Trapezes kann auf zwei Arten berechnet werden:

Die Rechnung ist in Abbildung 6 ausgeführt und liefert wiederum die Behauptung des Satzes von Pythagoras-

Abbildung 6: Skizze zum zweiten Beweis (Erklärung im Text).Abbildung 6: Skizze zum zweiten Beweis (Erklärung im Text).

Aufgabe:

Warum ist das Dreieck mit den beiden Seitenlängen c rechtwinklig?

Wie wird die Formel zur Berechnung einer Trapezfläche hergeleitet? Setzt diese Herleitung etwa den Satz des Pythagoras voraus?

Dritter Beweis

Der dritte Beweis geht auf Albert Einstein zurück und verwendet die Ähnlichkeit von Dreiecken.

In Abbildung 7 soll für das rote Dreieck mit Seitenlängen a, b und c der Satz des Pythagoras gezeigt werden. Es wird durch die Höhe auf die Seite c in zwei ebenfalls rechtwinklige Dreiecke zerlegt (blau und gelb eingezeichnet).

Man kann sich leicht überlegen, dass diese drei Dreiecke ähnlich zueinander sind, da sie in allen drei Winkeln übereinstimmen.

Die Streckungsfaktoren, durch die die beiden kleineren Dreiecke aus dem ursprünglichen Dreieck hervorgehen, sind b/c beziehungsweise a/c (die Hypothenusen der kleineren Dreiecke sind b beziehungsweise a).

Da in die Berechnung einer Dreiecksfläche das Produkt der beiden Katheten eingeht, ist die Fläche eines gestreckten Dreiecks gleich der Fläche des ursprünglichen Dreiecks multipliziert mit dem Quadrat des Streckungsfaktors.

Mit diesen Vorbereitungen wird die Fläche des roten Dreiecks berechnet: es setzt sich aus der Fläche der beiden kleineren Dreiecke zusammen, die mit Hilfe der Streckungsfaktoren auf die Fläche des großen Dreiecks zurückgeführt werden. Die Rechnung ist rechts in Abbildung 7 ausgeführt und sie liefert wieder den Satz des Pythagoras.

Abbildung 7: Skizze zum dritten Beweis (Erklärung im Text).Abbildung 7: Skizze zum dritten Beweis (Erklärung im Text).

Vierter Beweis

Das rechtwinklige Dreieck mit Seitenlängen a, b und c ist in Abbildung 8 gelb gekennzeichnet. Am Schnittpunkt der Seiten a und c wird ein Kreis mit Radius c konstruiert (blau in Abbildung 8). Dieser Kreis definiert ein neues – wiederum rechtwinkliges – Dreieck: es besitzt die Hypothenuse 2c (parallel zur ursprünglichen Seite a) und die Höhe b; die Längen der Katheten sind irrelevant. (Dieses Dreieck ist rot eingezeichnet.)

In diesem Dreieck teilt die Höhe b die Hypothenuse in die Strecken der Länge c + a und c - a. Wendet man darauf den Höhensatz an (siehe Abbildung 8 rechts), erhält man die Behauptung des Satzes des Pythagoras für das ursprüngliche gelbe Dreieck.

Abbildung 8: Skizze zum vierten Beweis (Erklärung im Text).Abbildung 8: Skizze zum vierten Beweis (Erklärung im Text).

Aufgabe:

  1. Der letzte Beweis beruht darauf, dass das rote Dreieck in Abbildung 8 rechtwinklig ist. Warum ist dies der Fall?
  2. Der Höhensatz wurde bisher nicht bewiesen. Zeigen Sie seine Gültigkeit mit einer Überlegung zu ähnlichen Dreiecken wie in Abbildung 7.

Beweis für die Umkehrung des Satzes des Pythagoras

Beim Beweis von Satz 2 darf man den Satz 1 als gültig voraussetzen.

Weiter wird vorausgesetzt, dass für ein gegebenes Dreieck ABC die Gleichung

a2 + b2 = c2

gilt; zu zeigen ist, dass es rechtwinklig ist.

Die Beweisidee besteht darin, zu dem gegebenen Dreieck ABC (von dem man nicht weiß, ob es rechtwinklig ist) ein weiteres rechtwinkliges Dreieck zu konstruieren, auf das man den Satz des Pythagoras anwenden kann. Anschließend zeigt man, dass die beiden Dreiecke kongruent sind.

Abbildung 9 zeigt links das gegebene Dreieck ABC, dessen Winkel unbekannt sind (nach den üblichen Bezeichnungen wäre der rechte Winkel bei C, aber das soll gerade nicht vorausgesetzt werden).

Es wird ein weiteres Dreieck ACD konstruiert (rot in Abbildung 9) mit folgenden Eigenschaften:

Abbildung 9: Skizze zum Beweis der Umkehrung des Satzes von Pythagoras (Erklärung im Text).Abbildung 9: Skizze zum Beweis der Umkehrung des Satzes von Pythagoras (Erklärung im Text).

Die beiden Dreiecke ABC und ACD stimmen somit in zwei Seiten überein. Wenn es gelingt zu zeigen, dass auch die dritten Seiten übereinstimmen (also die Strecken AB und AD), dann sind die Dreiecke kongruent.

Das rote Dreieck ACD ist rechtwinklig mit rechtem Winkel bei C, somit gilt:

AD2 = a2 + b2.

Allerdings sind die Seiten a und b in beiden Dreiecken enthalten; und nach Voraussetzung ist

a2 + b2 = c2.

Somit gilt c = AD und die beiden Dreiecke stimmen in allen drei Seiten überein. Folglich auch in ihren Winkeln und dann muss der rechte Winkel in ABC der Seite c gegenüber liegen.

R-Skript: Berechnung der Zahlenwerte in Abbildung 4

Es gibt natürlich viele Möglichkeiten, wie man die Zahlenwerte für a2 + b2 der Tabelle in Abbildung 4 berechnen kann. Das folgende Skript zeigt eine dieser Möglichkeiten, bei der vielleicht der Quelltext nicht sofort verständlich ist, die aber darauf achtet, dass möglichst wenige Berechnungen durchgeführt werden (indem die Symmetrie zwischen a und b ausgenutzt wird).

a <- (1:10)

a.length <- length(a)

a2 <- a * a

m.v <- vector(mode = "integer", length = a.length * a.length)
m <- matrix(data = m.v, nrow = a.length, byrow = TRUE)

for(i in 1:a.length){
  for(j in 1:(i-1)){
    m[i,j] <- a2[i] + a2[j]
    m[j,i] <- m[i,j]
  }
  m[i,i] <- 2*a2[i]
}

Zur Erklärung:

Zeile 1: Es wird nur ein Vektor für die Zahlen für von 1 bis 30 verwendet; b durchläuft denselben Bereich und kann daher mit a ausgedrückt werden. Möchte man die Tabelle für einen anderen Maximalwert von a berechnen, muss man nur die Zahl 30 abändern (siehe Erklärung zu Zeile 3).

Zeile 3: Die Länge von a (hier gleich 30) wird abgespeichert: Die restlichen Berechnungen hängen dann nicht mehr von der speziellen Wahl 30 ab.

Zeile 7 und 8: Der Inhalt der Tabelle wird als Matrix vorbereitet.

Zeile 10 bis 16:

In den verschachtelten Schleifen werden die Komponenten der Matrix m gesetzt.

Die äußere Schleife über i läuft von 1 bis zur Länge von a (hier 30), die innere Schleife über j nur von 1 bis i-1. Dies entspricht den Komponenten der Matrix unterhalb der Hauptdiagonalen. In Zeile 12 wird die Symmetrie zwischen a und b verwendet.

Die entsprechenden Komponenten oberhalb der Hauptdiagonalen müssen nicht neu berechnet werden (bei ihnen wird nur Zeile und Spalte vertauscht, siehe Zeile 13).

Zum Setzen der Komponenten auf der Hauptdiagonalen reicht die äußere Schleife über i (siehe Zeile 15).

Ist man nur an den pythagoreischen Zahlentripeln interessiert, würde man lediglich mit einer Dreiecksmatrix rechnen und die Hauptdiagonalen nicht setzen, weil auf ihr keine pythagoreischen Zahlentripel liegen können.

Möchte man feststellen, ob eine Komponente der Matrix m eine Quadratzahl ist, so ist die Abfrage mit is.integer() ungeeignet, wie das folgende Beispiel zeigt:

is.integer(sqrt(16))    # FALSE

Die Berechnung der Wurzel liefert eine Zahl im Speichermodus double – auch wenn man eine Quadratzahl einsetzt.

Geeignet für diese Aufgabe ist dagegen:

is.wholenumber <- function(x, tol = .Machine$double.eps^0.5){
  # print(tol)    #[1] 1.490116e-08
  return(abs(x - round(x)) < tol)
}

?integer

Diese Funktion findet sich in den Beispielen zu ?integer in der R-Dokumentation; sie erlaubt es sogar, die Toleranz tol anzupassen.

Mit Hilfe von is.wholenumber() lässt sich nun leicht die Matrix m untersuchen und feststellen, welche Einträge zu pythagoreischen Zahlentripeln gehören:

# Matrix m wie im Skript oben

idx <- which(x = is.wholenumber(sqrt(m)), arr.ind = TRUE)

triples <- apply(X = idx, MARGIN = 1, 
      FUN = function(v){paste( v[1], v[2], sqrt(m[v[1], v[2]] ))})

triples
# [1] "4 3 5"    "3 4 5"    "12 5 13"  "8 6 10"   "24 7 25"  "6 8 10"   "15 8 17"  "12 9 15"  "24 10 26" "5 12 13"  "9 12 15"  "16 12 20"
# [13] "8 15 17"  "20 15 25" "12 16 20" "30 16 34" "24 18 30" "15 20 25" "21 20 29" "20 21 29" "28 21 35" "7 24 25"  "10 24 26" "18 24 30"
# [25] "21 28 35" "16 30 34"

Im Skript werden die Zahlentripel in einem "character"-Vektor triples abgespeichert und ausgegeben.

Dazu wird in Zeile 3 eine Matrix idx gebildet, deren Zeilen aus dem a- und b-Wert eines pythagoreischen Zahlentripels bestehen.

Mit Hilfe der Funktion apply() werden die Zeilen von idx gelesen und das zugehörige Tripel erzeugt, indem c ergänzt wird (Zeile 5 und 6).

Möchte man mit den pythagoreischen Zahlentripeln weiterrechnen, wird man sich hier eine geschicktere Lösung überlegen, die die Zahlentripel in einer Matrix abspeichert. Zur Ausgabe reicht die gezeigte Lösung.

Das folgende Skript zeigt die Lösung, die die Zahlentripel – zeilenweise – in einer Matrix abspeichert:

# Matrizen m und idx wie oben

m.triples <- c()

for(i in (1:nrow(idx))){
  v <- idx[i, ]
  triple <- c(v[1], v[2], sqrt(m[v[1], v[2]] ))
  m.triples <- rbind(m.triples,  triple)
}

rownames(x = m.triples) <- (1:nrow(idx))
colnames(x = m.triples) <- c("a", "b", "c")

m.triples
#     a  b  c
# 1   4  3  5
# 2   3  4  5
# 3  12  5 13
# 4   8  6 10
# 5  24  7 25
# 6   6  8 10
# 7  15  8 17
# 8  12  9 15
# 9  24 10 26
# 10  5 12 13
# 11  9 12 15
# 12 16 12 20
# 13  8 15 17
# 14 20 15 25
# 15 12 16 20
# 16 30 16 34
# 17 24 18 30
# 18 15 20 25
# 19 21 20 29
# 20 20 21 29
# 21 28 21 35
# 22  7 24 25
# 23 10 24 26
# 24 18 24 30
# 25 21 28 35
# 26 16 30 34

Aufgabe:

Schreiben Sie eine Funktion

isPrimitive(triple, strict = FALSE)

die ein gegebenes Zahlentripel (also etwa c(6, 8, 10 ) daraufhin untersucht, ob es ein primitives pythagoreisches Zahlentripel ist:

Der Rückgabewert ist TRUE oder FALSE.