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
- Einführung
- Bezeichnungen und ein Ausblick auf die weiteren Fragestellungen
- Der Satz des Pythagoras
- Beweise für den Satz des Pythagoras
- Erster Beweis
- Zweiter Beweis
- Dritter Beweis
- Vierter Beweis
- Beweis für die Umkehrung des Satzes des Pythagoras
- R-Skript: Berechnung der Zahlenwerte in Abbildung 4
Einordnung des Artikels
- Ausgewählte Kapitel der Mathematik (für Programmierer, Informatiker, Ingenieure und Naturwissenschaftler)
- Zahlentheorie
- Pythagoreische Zahlentripel
- Der Satz des Pythagoras und pythagoreische Zahlentripel
- Pythagoreische Zahlentripel
- Zahlentheorie
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:
- Die beiden kürzeren Seiten (die Katheten) werden mit a und b bezeichnet.
- Die längste Seite wird mit c bezeichnet (die Hypothenuse).
- Die Seiten a, b, c liegen den Winkeln α, β, γ gegenüber.
- Da die Winkelsumme im Dreieck gleich 180° ist und γ = 90°, muss α + β = 90° sowie α < 90° und β < 90° gelten.
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.
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.
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:
- Gibt es endlich oder unendlich viele primitive pythagoreische Zahlentripel?
- Lassen sich die primitiven pythagoreischen Zahlentripel explizit berechnen?
- Gibt es eine Rekursionsformel, die aus einem gegebenem primitiven pythagoreischen Zahlentripel ein neues erzeugt? Lassen sich alle primitiven pythagoreischen Zahlentripel rekursiv erzeugen?
- In einem primitiven pythagoreischen Zahlentripel (a, b, c) sind die drei Zahlen a, b, c teilerfremd; gibt es weitere Eigenschaften, durch die ein primitives pythagoreisches Zahlentripel charakterisiert werden kann?
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.
Aufgabe:
- Berechnen Sie die c-Werte zu den primitiven pythagoreischen Zahlentripeln.
- Wie viele nicht-primitive pythagoreische Zahlentripel sind in der Tabelle enthalten?
- Wie findet man diese sehr schnell?
- Bei welchem Wert von c findet man das nächste primitive pythagoreische Zahlentripel? Wie groß müsste man a und b in der Tabelle wählen, damit es in dieser Darstellung sichtbar wird?
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.
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:
- Zum Einen über die Formel für die Trapezfläche (dazu benötigt man den Abstand der parallelen Seiten und den Mittelwert der parallelen Seiten).
- Zum Anderen aus der Summe der drei Dreiecksflächen, die zusammen das Trapez ergeben.
Die Rechnung ist in Abbildung 6 ausgeführt und liefert wiederum die Behauptung des Satzes von Pythagoras-
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.
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.
Aufgabe:
- Der letzte Beweis beruht darauf, dass das rote Dreieck in Abbildung 8 rechtwinklig ist. Warum ist dies der Fall?
- 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:
- Der Winkel bei C ist ein rechter Winkel,
- die Strecken BC und CD haben gleiche Länge a,
- die Strecke AC ist beiden Dreiecken gemeinsam.
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:
- Im Fall von
strict = TRUE
soll zuerst geprüft werden, ob es sich überhaupt um ein pythagoreisches Zahlentripel handelt. - Im Fall von
strict = FALSE
kann davon ausgegangen werden, dass der Eingabewert triple bereits ein pythagoreisches Zahlentripel ist.
Der Rückgabewert ist TRUE oder FALSE.