Suchen und Finden

Titel

Autor

Inhaltsverzeichnis

Nur ebooks mit Firmenlizenz anzeigen:

 

Mathematische Algorithmen mit Python - Aufgaben vom Sieb des Eratosthenes bis zur RSA-Verschlüsselung

Mathematische Algorithmen mit Python - Aufgaben vom Sieb des Eratosthenes bis zur RSA-Verschlüsselung

Veit Steinkamp

 

Verlag Rheinwerk Computing, 2022

ISBN 9783836285766 , 512 Seiten

Format ePUB

Kopierschutz Wasserzeichen

Geräte

34,90 EUR

Für Firmen: Nutzung über Internet und Intranet (ab 2 Exemplaren) freigegeben

Derzeit können über den Shop maximal 500 Exemplare bestellt werden. Benötigen Sie mehr Exemplare, nehmen Sie bitte Kontakt mit uns auf.

Mehr zum Inhalt

Mathematische Algorithmen mit Python - Aufgaben vom Sieb des Eratosthenes bis zur RSA-Verschlüsselung


 

1    Einführung


Dieses Kapitel gibt Ihnen einen kurzen Überblick über die Inhalte des Buches. Es stellt außerdem zwei Entwicklungsumgebungen vor und beschreibt die Problematik der Rundungsfehler. Eine Übersicht über die Schlüsselwörter von Python soll die erste Orientierung erleichtern. Zum Ende des Kapitels werden verschiedene Aspekte des Algorithmusbegriffes analysiert.

Wenn Sie in die Welt der Algorithmen eintauchen wollen, dann möchten Sie sicherlich auch lernen, wie Sie Algorithmen in ein Computerprogramm umsetzen können. Dazu müssen Sie eine Programmiersprache beherrschen. Bei der Auswahl einer Programmiersprache haben Sie unglaublich viele Möglichkeiten, denn es gibt inzwischen Hunderte Sprachen für unterschiedliche Einsatzgebiete.

Die Entscheidung ist zwar mit dem Titel des Buches bereits gefallen, sie lässt sich aber leicht begründen, denn Python ist laut PYPL-Index (PopularitY of Programming Languages) die aktuell beliebteste Programmiersprache [Oktober 2021]. Dafür gibt es gute Gründe, denn:

  • Python ermöglicht als interpretierende Programmiersprache eine interaktive Entwicklung von Programmen. Python ist deshalb für den Einstieg in das Programmieren besser geeignet als Compilersprachen, die erst in einem zweiten Schritt ausführbar gemacht werden.

  • Der Syntax von Python ist im Vergleich zu anderen Programmiersprachen relativ einfach zu erlernen.

  • Python ist durch Module (Softwarebibliotheken) erweiterbar. Das gilt zwar auch für viele andere Programmiersprachen. In Python gestaltet sich die Einbindung von Erweiterungsmodulen aber einfacher. Für numerische und symbolische Berechnungen sowie Computergrafik werden spezifische Module bereitgestellt, die ich Ihnen in diesem Buch vorstellen möchte.

  • Python steht kostenlos zur Verfügung und läuft auf den Betriebssystemen Windows, Linux und macOS.

Das Konzept

Wenn Sie eine Programmiersprache erlernen wollen, dann gibt es verschiedene Wege, die zum Ziel führen. Sie könnten die Dokumentation der Programmiersprache durcharbeiten und versuchen, mit den so erworbenen Kenntnissen eigene Programme zu schreiben. Dieser Weg ist zwar denkbar, aber dann müssen Sie sich durch eine unübersichtliche Vielfalt an Informationen arbeiten, denn die Python-Dokumentation und die Unterlagen der Zusatzmodule haben einen Umfang von mehreren Tausend Seiten. Tutorials für den Programmiereinstieg können dieses Problem zwar abfedern, die dort behandelten Beispiele haben aber in der Regel keinen direkten Bezug zu dem konkreten Programmierproblem, das Sie gerade umtreibt, und benötigen damit eine ziemlich schwierige Transferleistung.

Ich habe die Erfahrung gemacht, dass ein anderer Lernweg besser ist: Konzentrieren Sie sich auf konkrete Inhalte aus der Praxis des wissenschaftlichen Arbeitens, und üben Sie damit das Programmieren. Das Lernen orientiert sich dann nicht an der Fachsystematik der Programmiersprache, sondern an der Fachsystematik einer wissenschaftlichen Disziplin, die Sie idealerweise bereits kennen.

Doch welche Wissenschaft sollte man aus dem reichhaltigen Angebot wählen? Hier bietet sich die Mathematik an, weil sie als Grundlagenwissenschaft der Natur- und Ingenieurswissenschaften von allen Fachkundigen ohnehin beherrscht werden muss. Wenn Sie also das Erlernen einer Programmiersprache mit den Inhalten der Mathematik verknüpfen, dann beherrschen Sie am Ende nicht nur das Programmieren, sondern haben auch noch Ihre Mathematikkenntnisse vertieft.

Dieser Weg hat jedoch auch einen Nachteil: Wenn sich das Erlernen einer Programmiersprache an den Inhalten der Mathematik orientiert, dann werden zwangsläufig nicht alle Möglichkeiten erfasst, die die Syntax einer Programmiersprache bietet. Es gibt hier aber einen einfachen Ausweg: Sollten beim Programmieren Probleme vorkommen, dann schlagen Sie gezielt die fehlenden Informationen in den entsprechenden Dokumentationen oder in einem einschlägigen Fachbuch nach. Wenn Sie bereits über grundlegendes Wissen verfügen, lässt sich nämlich viel zielgerichteter mit diesen Informationsquellen arbeiten.

Weil dieses Buch sich an der Fachsystematik der Mathematik orientiert, wiederholen sich zwangsläufig viele Programmierkonstruktionen, z. B. Summenalgorithmen in Schleifen oder Fallunterscheidungen in Verzweigungsstrukturen. Das muss jedoch kein Nachteil sein, denn durch die vielen Wiederholungen wird eine Schwäche unseres Gedächtnisses, nämlich das Vergessen, kompensiert.

Die Quelltexte werden, bis auf wenige Ausnahmen, vollständig mit der zugehörigen Ausgabe abgedruckt, damit sie auch ohne Nutzung des Computers analysiert werden können. Für das Verstehen des Codes eines Programms ist es besonders wichtig, die Ausgabe der Ergebnisse mit in die Quelltextanalyse einzubeziehen, denn nur durch die Einsicht in den kausalen Zusammenhang zwischen Struktur des Quelltextes und Ausgabe der Resultate kann der Quelltext vollständig verstanden werden.

Der Lernprozess beginnt mit der Analyse von zunächst einfachen Programmquelltexten. Es wird nicht immer die hinsichtlich Rechenaufwand effizienteste Lösung gewählt, sondern eher Wert auf Nachvollziehbarkeit des Algorithmus gelegt.

Erst wenn Sie einige Beispielprogramme vollständig verstanden und auch getestet haben, sollten Sie mit eigenen Programmierprojekten beginnen. Beim Testen von Programmbeispielen ist es mitunter sinnvoll, bewusst Fehler in den Quelltext einzubauen und nach dem Programmstart die Fehlermeldungen zu analysieren. Auch das Einfügen von eignen Ergänzungen in bestehende Quelltexte kann den Lernfortschritt unterstützen. Zögern Sie also nicht, den Code zu verändern und sich z. B. Zwischenergebnisse auf der Kommandozeile ausgeben zu lassen, wenn Sie den Ablauf eines Programms besser verstehen möchten.

Die Zielgruppe

Dieses Buch wendet sich an alle, die Python als erste Programmiersprache erlernen wollen. Als Leserkreis werden dabei besonders Studierende der Natur- und Ingenieurwissenschaften und der Informatik angesprochen. Das Buch kann aber auch für den Mathematikunterricht von großem Nutzen sein, wenn mathematische Begriffe, z. B. Grenzwertprozesse, durch Visualisierung dynamisch veranschaulicht werden sollen. Im Informatikunterricht könnten Programmierprojekte, die sich an den aktuellen Themen des Mathematikunterrichts orientieren, mathematische Lernprozesse unterstützen und zusätzlich das Lernen in der Programmierausbildung durch einen sinnhaften Anwendungsbezug stärker motivieren. Angesprochen werden auch Schülerinnen und Schüler der gymnasialen Oberstufe mit den Leistungskursen Mathematik und Informatik. Durch Synergieeffekte könnten Verständnisprobleme in beiden Fächern überwunden werden. Die Notwendigkeit, präzise Unterscheidungen zu treffen, könnte auch dazu beitragen, die Begriffsbildungen in den beiden Lerngebieten zu präzisieren.

Als Voraussetzung für das Verständnis der Inhalte des Buches sind Mathematikkenntnisse erforderlich, wie sie auf einem Gymnasium oder auf einer Fachoberschule vermittelt werden. Sie sollten die mathematischen Grundbegriffe Funktion, Konvergenz, Grenzwert, Ableitung und Integral kennen. Bei Verständnisschwierigkeiten können Sie Ihr Wissen mithilfe der Lehrbücher [Bossek] oder [Kammermeyer] auffrischen. Eine (ganz) kurze Zusammenfassung finden Sie auch im Anhang dieses Buches.

Ein kurzer Überblick über die Inhalte

Sie können bis auf die Kapitel 2 und Kapitel 3 alle anderen Kapitel unabhängig voneinander lesen. Kapitel 2 und Kapitel 3 sollten Sie jedoch intensiv studieren und die zugehörigen Aufgaben bearbeiten. Denn dort werden die Grundlagen für das Verständnis der nachfolgenden Kapitel gelegt.

In Kapitel 2, »Datentypen und Datenstrukturen«, werden die grundlegenden Datenstrukturen von Python behandelt, wie Tupel, Sets (Mengen), Listen und Dictionary. Bis auf Sets werden diese Datenstrukturen in allen folgenden Kapiteln wieder verwendet.

Kapitel 3, »Programmstrukturen«, beschreibt die Programmstrukturen Sequenz, Verzweigung und Wiederholung anhand einfacher Beispiele. Hier wird auch der Begriff der Laufzeitkomplexität eingeführt.

In Kapitel 4, »Die Python-Erweiterungsmodule NumPy, Matplotlib, SymPy und SciPy«, werden die Module numpy, matplotlib, sympy und scipy kurz vorgestellt. Methoden dieser Module, z. B. solve(), dsolve(), diff(), integrate() und quad(), werden später benutzt, um zu überprüfen, ob die selbst erstellten Algorithmen korrekte Berechnungen ausführen. Das Modul matplotlib wird verwendet, um 2D- und 3D-Funktionsplots zu erstellen und zu animieren.

Kapitel 5, »Zahlen«, handelt von Algorithmen mit Zahlen. Hier beschreibe ich, wie Sie mit dem euklidischen Algorithmus den größten gemeinsamen Teiler berechnen. Es wird gezeigt, wie das Sieb des Eratosthenes Primzahlen findet. Mit der Implementierung des RSA-Algorithmus wird die praktische Bedeutung der Primzahlen herausgestellt. Der Heron-Algorithmus berechnet näherungsweise Werte für irrationale Zahlen als Quadrat- und Kubikwurzeln. Die Kreiszahl π wird näherungsweise mit dem Algorithmus von Archimedes berechnet. Das...