Data Science stellt sich in den Dienst der Mathematik

Seite 4: Quadratzahlen und elliptische Kurven

Inhaltsverzeichnis

Ein weiteres Beispiel arbeitet mit elliptischen Kurven, die sich durch die Gleichung y2 = x3 + ax + b beschreiben lassen. Elliptische Kurven kommen in der Public-Key-Kryptografie zum Einsatz, da sie die Implementierung asymmetrischer Krypto-Verfahren ermöglichen. Mathematiker stellen sich hierbei die Frage, ob eine Kurve rationale oder gar natürliche Punkte besitzt und ob man anhand der Koeffizienten a und b Aussagen über die Existenz solcher Punkte treffen kann. Auch in diesem Fall kann Data Science helfen. Dafür sind mehrere Rechenschritte notwendig. Ein wichtiger Teil dabei ist das Prüfen, ob eine Zahl eine Quadratzahl ist. Der naheliegende Test wie im oberen Teil von Listing 6 liefert dabei nicht immer korrekte Resultate.

Für die Variablen p=7 und q=11 auf der Kurve y2 = x3 + 77x funktioniert die Implementierung, allerdings nicht für die Variablen p=3 und q=5 auf der Kurve y2 = x3 + 15x. In diesem Beispiel ermittelt die zweite Kurve eine Quadratzahl, die aber keine ist. Das hängt mit dem oben beschriebenen Genauigkeitsverlust zusammen. Die korrekte Implementierung weist keinen Genauigkeitsverlust auf und liefert keine falschen Ergebnisse (siehe Listing 6).

# Falsche Pr�fung:
def find_rational_point(p, q, max_iter):
  for a in range(max_iter): 
    D=a**4/4+p*q
    sqrtD = math.sqrt(D)
    if sqrtD.is_integer(): 
  �
return None 

# Richtige Pr�fung:
def find_rational_point2(p, q, max_iter):
  for a in range(max_iter): 
    D=a**4+4*p*q
    sqrtD = math.isqrt(D)
    if sqrtD*sqrtD == D:
  �
return None

Listing 6: Prüfung, ob eine Zahl eine Quadratzahl ist

Die Python-Bibliothek matplotlib ermöglicht es, Kurven zu visualisieren:

import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 2, figsize=(8,4), dpi=100)

Das Gitter für den Plot erzeugt man mit:

y, x = np.ogrid[-30:30:100j, -30:30:100j]
ax[0].contour(x.ravel(), y.ravel(), y**2 - ec_1(x), [0])

ax[0].grid()

Das Einzeichnen der zwei Punkte erledigen zwei Anweisungen: Zunächst definiert man die Punkte P[9,6] und Q[-77/9,-154/27] und fügt sie anschließend dem Plot an per ax[0].scatter(*P) und ax[0].scatter(*Q) (siehe Abbildung 3).

Die Python-Bibliothek matplotlib visualisiert elliptische Kurven mit beliebigen Punkten – links: y2=x3-77x; rechts: y2=x3-15x (Abb. 3).

Die Beispiele im Artikel zeigen, dass Data Science einen wichtigen Beitrag zur mathematischen Forschung leisten kann. Python ist als Skriptsprache mit funktionalen und mengenorientierten Elementen hierfür erste Wahl – auch wenn man bei der Programmierung einige Stolpersteine vermeiden muss.

Wird der Fortschritt an dieser Stelle enden? Nein. Mit Deep Learning und Quantencomputing steht bereits der nächste Entwicklungsschritt bevor. Ziel dieser kommenden Etappe ist es, mathematische Beweise direkt durch eine künstliche Intelligenz zu erstellen. KI wäre dann keine Unterstützung für Mathematiker mehr, sondern würde selbst als solcher fungieren. Schien die Entwicklung vor einigen Jahren noch utopisch, zeigen sich heute erste Systeme dieser Art, unter anderem bei Google. Das Thema bleibt also spannend. Wer sich für die neuesten Frameworks aus diesem Bereich interessiert, kann einen Blick auf TensorFlow Quantum und Cirq werfen.

Eldar Sultanow
ist Architekt bei Capgemini. Seine Schwerpunkte sind moderne Softwarearchitekturen, Data Science und Unternehmensarchitekturmanagement.

Christian Koch
ist Datenarchitekt bei der TeamBank AG und Dozent an der Technischen Hochschule Nürnberg Georg Simon Ohm. Seine Spezialgebiete umfassen Datenarchitekturen, Data Science und Machine Learning.

(mdo)