Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
Ideal für Einsteiger:innen und Umsteiger:innen Sie möchten Python als erste Programmiersprache erlernen oder die grundlegenden mathematisch-naturwissenschaftlichen Python-Bibliotheken kennen lernen? Dieses Buch bietet einen Einstieg in die Programmierung und die mathematischen Anwendungen von Python. Es eignet sich besonders für Studierende im Nebenfach Informatik, z.B. Ingenieur:innen oder Naturwissenschaftler:innen, und setzt keine Vorkenntnisse voraus. Auch Personen mit Programmiererfahrung finden in diesem Buch einen Einstieg in die wichtigsten mathematisch-naturwissenschaftlichen Python-Bibliotheken. Schwerpunkte des Buches sind die mathematischen Anwendungen sowie die Arbeit mit Numpy, Matplotlib, Sympy, Scipy, Scikit-Image und VPython. Mit zahlreichen Aufgaben und ausführlich kommentierten Lösungen. Neu in der 5. Auflage: Kapitel "Funktionales Programmieren" und "Einführung in die Gestaltung grafischer Benutzeroberflächen mit Tkinter" sowie neue Unterkapitel bei "Numerische Berechnungen mit Numpy" und "Numerische Analysen mit Scipy". Auf plus.hanser-fachbuch.de finden Sie zu diesem Titel digitales Zusatzmaterial in Form von Beispielen sowie ausführliche Lösungen zu den Aufgaben.
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 453
Veröffentlichungsjahr: 2024
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
Hans-Bernhard Woyand
Python für Ingenieure und Naturwissenschaftler
Einführung in die Programmierung, mathematische Anwendungen und Visualisierungen
5., aktualisierte und erweiterte Auflage
Ihr Plus – digitale Zusatzinhalte!
Auf unserem Download-Portal finden Sie zu diesem Titel kostenloses Zusatzmaterial.
Geben Sie auf plus.hanser-fachbuch.de einfach diesen Code ein:
plus-r5mzv-gawa5
Über den Autor:Prof. Dr.-Ing. Hans-Bernhard Woyand, Bergische Universität Wuppertal, Fakultät für Maschinenbau und Sicherheitstechnik
Aus Gründen der besseren Lesbarkeit wird auf die gleichzeitige Verwendung der Sprachformen männlich, weiblich und divers (m/w/d) verzichtet. Sämtliche Personenbezeichnungen gelten gleichermaßen für alle Geschlechter.
Print-ISBN: 978-3-446-48236-4E-Book-ISBN: 978-3-446-48237-1E-Pub-ISBN: 978-3-446-48336-1
Alle in diesem Werk enthaltenen Informationen, Verfahren und Darstellungen wurden zum Zeitpunkt der Veröffentlichung nach bestem Wissen zusammengestellt. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem Grund sind die im vorliegenden Werk enthaltenen Informationen für Autor:innen, Herausgeber:innen und Verlag mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autor:innen, Herausgeber:innen und Verlag übernehmen infolgedessen keine Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Weise aus der Benutzung dieser Informationen – oder Teilen davon – entsteht. Ebenso wenig übernehmen Autor:innen, Herausgeber:innen und Verlag die Gewähr dafür, dass die beschriebenen Verfahren usw. frei von Schutzrechten Dritter sind. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt also auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benützt werden dürften.Die endgültige Entscheidung über die Eignung der Informationen für die vorgesehene Verwendung in einer bestimmten Anwendung liegt in der alleinigen Verantwortung des Nutzers.
Bibliografische Information der Deutschen Nationalbibliothek:Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet unter http://dnb.d-nb.de abrufbar.
Dieses Werk ist urheberrechtlich geschützt.Alle Rechte, auch die der Übersetzung, des Nachdruckes und der Vervielfältigung des Werkes, oder Teilen daraus, vorbehalten. Kein Teil des Werkes darf ohne schriftliche Einwilligung des Verlages in irgendeiner Form (Fotokopie, Mikrofilm oder einem anderen Verfahren), auch nicht für Zwecke der Unterrichtgestaltung – mit Ausnahme der in den §§ 53, 54 UrhG genannten Sonderfälle –, reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden.Wir behalten uns auch eine Nutzung des Werks für Zwecke des Text- und Data Mining nach § 44b UrhG ausdrücklich vor.
© 2025 Carl Hanser Verlag GmbH & Co. KG, Münchenwww.hanser-fachbuch.deLektorat: Dipl.-Ing. Natalia Silakova-HerzbergHerstellung: Frauke Schafft, Malin GöthelCoverkonzept: Marc Müller-Bremer, www.rebranding.de, MünchenCovergestaltung: Tom WestSatz: Eberl & Koesel Studio, Kempten
Seit vielen Jahren halte ich an der Bergischen Universität Wuppertal die Lehrveranstaltung Informatik im Grundstudium Maschinenbau. Mehr als 10 Jahre haben wir in diesen Kursen die Programmiersprache C/C++ eingesetzt. Seit mehreren Jahren verwenden wir stattdessen nun Python als erste Programmiersprache und das mit großem Erfolg. Es zeigte sich, dass gerade bei Ingenieuren, die oftmals Schwierigkeiten mit dem algorithmischen Denken haben, Python einen leichteren Zugang ermöglicht.
Im Studiengang Maschinenbau wie auch in vielen anderen Studiengängen spielt das wissenschaftliche Rechnen und Visualisieren eine große Rolle. In der Literatur zu Python ist das nicht so: entweder werden die wissenschaftlichen Anwendungen gar nicht bzw. nur am Rande behandelt, oder die Bücher sind so umfangreich, dass sie als vorlesungsbegleitender Text ungeeignet sind. So entstand die Idee, das Skript zur Vorlesung zu diesem Buch auszuarbeiten.
Das Buch richtet sich an Programmieranfänger, die Python als erste Programmiersprache lernen möchten. Es wird also zuerst in Python eingeführt und dann werden die Grundlagen erläutert. Es folgen Vertiefungen und ein eigenes Kapitel über die objektorientierte Programmierung. Dann beginnt das wissenschaftliche Rechnen und Visualisieren. Hierzu wird in die Nutzung der wichtigsten Programmbibliotheken (Packages) eingeführt. Hauptzielgruppe sind also Studierende wissenschaftlicher Studiengänge, die Python erlernen wollen und bei denen die mathematischen und grafischen Anwendungen eine wichtige Rolle spielen. Vorausgesetzt wird nur mathematisch-naturwissenschaftliches Wissen, wie es an höheren Schulen vermittelt wird.
Mehr als 90 Aufgabenstellungen mit fast immer kommentierten Lösungen werden im Buch behandelt. Nach meiner Erfahrung lernen Studierende am meisten durch das selbstständige Lösen von Aufgaben.
Die Software, die benötigt wird, um mit diesem Buch zu arbeiten, ist kostenfrei erhältlich. Es handelt sich dabei um die neuere Variante 3.2 bzw. 3.5 der Programmiersprache Python, sowie deren Vorgängerversionen 2.6 und 2.7. Die wissenschaftlichen Anwendungspakete sind nämlich noch nicht alle mit der neuen Python-Version kompatibel. Es ist zu erwarten, dass es auch noch einige Zeit dauern wird, bis die wissenschaftlichen Pakete unter der neuesten Version laufen. Für Programmieranfänger ist der Unterschied zwischen diesen Versionen sowieso nicht sehr bedeutsam.
Zu dem vorliegenden Buch existiert eine Webseite, auf der in loser Folge Ergänzungen, Fehlerberichtigungen usw. bereitgestellt werden. Weiterhin können alle Beispiele sowie die Lösungen der Aufgaben dort abgerufen werden. Für Nutzer des Betriebssystems MS-Windows sind auch Hinweise zur Installation der Software dort verfügbar. Die Web-Adresse ist
http://woyand.eu/python_buch
Außerdem sind die Daten zum Buch unter folgender Webadresse aufrufbar:
http://www.plus.hanser-fachbuch.de.
Die Zugangsdaten finden Sie auf Seite 1 des Buches.
Hinweise, Fehlermeldungen und Anregungen werden über die E-Mail-Adresse
gern entgegengenommen.
Das Buch wurde mit größtmöglicher Sorgfalt erstellt. Trotzdem können Fehler nicht ganz ausgeschlossen werden. Aus diesem Grund sind die in diesem Buch dargestellten Verfahren mit keinerlei Garantie verbunden. Ich weise darauf hin, dass weder Autor noch Verlag eine Haftung für direkt oder indirekt entstandene Schäden übernehmen, die sich aus der Benutzung dieses Buches ergeben könnten.
Ich danke meiner Frau Annette Woyand für die sorgfältige Durchsicht des Manuskripts. Frau Mirja Werner vom Carl Hanser Verlag danke ich für Ihr Engagement beim Zustandekommen dieses Buches.
Ich wünsche allen Lesern viel Erfolg und Spaß beim Einstieg in Python.
Wuppertal, im März 2017
Hans-Bernhard Woyand
Vorwort zur zweiten AuflageFür die zweite Auflage wurden einige inhaltliche Verbesserungen vorgenommen und ein neues Kapitel hinzugefügt. In diesem Kapitel wird gezeigt, wie numerische Berechnungen mit der Python-Bibliothek Scipy durchgeführt werden können. Scipy ist sehr umfangreich. Deshalb werden – dem Ansatz dieses Buches entsprechend – wichtige Teilbereiche dieser Software-Bibliothek auf wenigen Seiten vorgestellt. Behandelt wird die numerische Berechnung von Integralen, die Interpolation, die Berechnung von Nullstellen, die numerische Optimierung, die Signalanalyse mit der schnellen Fourier Transformation (FFT) sowie die numerische Integration gewöhnlicher Differenzialgleichungen.
Ich hoffe, dass diese Erweiterung des Buchs für viele Leser hilfreich und anregend ist und wünsche viel Erfolg und Spaß mit Python.
Wuppertal, im Juli 2018
Hans-Bernhard Woyand
Vorwort zur dritten AuflageFür die dritte Auflage wurde das Kapitel 8 (3D-Grafik mit VPython) völlig überarbeitet, da sich die neue Version VPython 7 deutlich von den Vorgängerversionen unterscheidet. Mit dieser neuen Version von VPython können die dreidimensionalen Szenen im Webbrowser dargestellt werden. Auch die Benutzerinteraktionen wurden erheblich vereinfacht und neu strukturiert.
Weiterhin wurde das Kapitel 10 (Numerische Analysen mit Scipy) um zwei Themen erweitert. Es handelt sich um die Erzeugung von Dreiecksnetzen mit der Delaunay-Triangulierung sowie um die Berechnung der konvexen Hülle einer Punktmenge. Vier weitere Aufgaben mit kommentierten Lösungen wurden dem Buch hinzugefügt.
Wuppertal, im Januar 2019
Hans-Bernhard Woyand
Vorwort zur vierten AuflageFür die vierte Auflage des Buches wurden einige kleinere, inhaltliche Verbesserungen vorgenommen. Zudem wurde ein neues Kapitel 11 mit dem Titel „Bildverarbeitung mit scikit-image“ hinzugefügt. Scikit-image ist ein Erweiterungspaket der Programmiersprache Python, das zur automatisierten Manipulation und Analyse von Bildern (Fotos, Grafiken) entwickelt wurde. Es wird gezeigt, wie Bilder eingelesen, gewandelt und geschrieben werden können. Weiterhin werden Algorithmen zum Auffinden von Kanten, Ecken und Kreisen sowie zum Abgleich von Vorlagen vorgestellt und erläutert. Zwei weitere Aufgaben und deren Lösungen wurden ergänzt.
Witten, im November 2020
Hans-Bernhard Woyand
Vorwort zur fünften AuflageFür die fünfte Auflage dieses Buches wurden weitere inhaltliche Verbesserungen vorgenommen und einige Fehler entfernt. Das Kapitel 7 wurde etwas erweitert. Zusätzlich wurden zwei weitere Kapitel hinzugefügt.
Das Kapitel 12 mit dem Titel „Einführung in die Gestaltung grafischer Benutzeroberflächen mit Tkinter“ führt den Leser in die Erzeugung interaktiver, visueller Benutzerschnittstellen mit Fenstern, Buttons und Menüs ein. Dabei werden mehrere Beispiele vorgestellt und erläutert, die als Grundlage und Ausgangspunkt für eigene Lösungen dienen können.
Das Kapitel 13 mit dem Titel „Grundlagen der funktionalen Programmierung mit Python“ stellt das Paradigma der funktionalen Programmierung vor, die Python ebenso wie die objektorientierte Programmierung unterstützt. Die funktionale Programmierung baut vorwiegend auf der Nutzung von Listen auf und nutzt einen speziellen Typ von Funktionen, die Nebeneffekte ausschließen. Hierdurch entsteht stabiler und effizienter Code. Dieses Paradigma hat sich bei der Programmierung im technisch- wissenschaftlichen Bereich bewährt.
An dieser Stelle möchte ich auch meiner Lektorin Frau Natalia Silakova und Frau Christina Kubiak vom Lektorat des Hanser-Verlages für ihr Engagement beim Zustandekommen dieses Buches danken.
Witten, im August 2024
Hans-Bernhard Woyand
Titelei
Impressum
Inhalt
Vorwort
1 Einführung
1.1 Die Programmiersprache Python
1.2 Hinweise zur Installation
1.3 Erste Schritte – der Python-Interpreter
1.3.1 Addition und Subtraktion
1.3.2 Multiplikation und Division
1.3.3 Vergleichsausdrücke
1.3.4 Logische Ausdrücke
1.3.5 Mathematische Funktionen
1.3.6 Grundlegendes über Variablen und Zuweisungen
1.3.7 Zeichenketten (Strings)
1.3.8 Turtle-Grafik
1.4 Python-Programme mit IDLE erstellen
1.5 Aufgaben
1.6 Lösungen
2 Grundlagen
2.1 Einfache Objekttypen
2.1.1 Ganze Zahlen – Integer
2.1.2 Gleitpunktzahlen – Float
2.1.3 Komplexe Zahlen – Complex
2.1.4 Zeichenketten – Strings
2.1.5 Aufgaben
2.1.6 Lösungen
2.2 Operatoren und mathematische Standardfunktionen
2.2.1 Operatoren zur arithmetischen Berechnung
2.2.2 Mathematische Standardfunktionen
2.2.3 Aufgaben
2.2.4 Lösungen
2.3 Variablen und Zuweisungen
2.4 Funktionen
2.4.1 Funktionen mit Rückgabewert
2.4.2 Funktionen ohne Rückgabewert
2.4.3 Aufgaben
2.4.4 Lösungen
2.5 Ein- und Ausgabe
2.6 Programmverzweigungen
2.6.1 Einfache if-Anweisung
2.6.2 Erweiterte if-Anweisung
2.6.3 Aufgaben
2.6.4 Lösungen
2.7 Bedingungen
2.8 Programmschleifen
2.8.1 for-Schleifen
2.8.2 while-Schleifen
2.9 Aufgaben
2.10 Lösungen
3 Vertiefung
3.1 Listen
3.1.1 Aufgaben
3.1.2 Lösungen
3.2 Tupels
3.3 Sets – Mengen
3.4 Dictionaries
3.4.1 Aufgaben
3.4.2 Lösungen
3.5 Slicing
3.6 List Comprehension
3.7 Iteratoren und die zip-Funktion
3.8 Funktionen, Module und Rekursion
3.8.1 Schlüsselwort-Parameter
3.8.2 Module
3.8.3 Rekursion
3.8.4 Globale und lokale Variablen
3.9 Turtle-Grafik – verbessert
3.10 Dateien lesen und schreiben
3.11 Aufgaben
3.12 Lösungen
4 Objektorientiertes Programmieren
4.1 Klassen und Objekte
4.1.1 Die Grundidee
4.1.2 Klassen
4.1.3 Methoden
4.2 Konstruktoren und Destruktoren
4.3 Überladen von Operatoren
4.4 Vererbung
4.5 Aufgaben
4.6 Lösungen
5 Numerische Berechnungen mit Numpy
5.1 Hinweise zur Installation
5.2 Arrays
5.3 Darstellung von Matrizen
5.4 Spezielle Funktionen
5.5 Operationen
5.6 Lineare Algebra
5.7 Zufallswerte
5.8 Aufgaben
5.9 Lösungen
6 Grafische Darstellungen mit Matplotlib
6.1 Hinweise zur Installation
6.2 XY-Diagramme
6.3 Balkendiagramme
6.4 Tortendiagramme
6.5 Polardiagramme
6.6 Histogramme
6.7 Subplots
6.8 Axes
6.9 Anmerkungen und Legenden
6.10 Aufgaben
6.11 Lösungen
7 Computeralgebra mit Sympy
7.1 Hinweise zur Installation
7.2 Differentiation
7.3 Integration
7.3.1 Unbestimmte Integrale
7.3.2 Bestimmte Integrale
7.3.3 Uneigentliche Integrale
7.4 Potenzreihen
7.5 Matrizenrechnung – lineare Algebra
7.6 Die Datentypen Rational und Float
7.7 Nützliche Ergänzungen
7.8 Reihen und Reihensummen
7.9 Grenzwerte von Funktionen und Reihen
7.10 Gleichungen und Gleichungssysteme lösen
7.11 Aufgaben
7.12 Lösungen
8 3D-Grafik mit VPython 7
8.1 Hinweise zur Installation
8.2 Szenen
8.3 Grundkörper
8.4 Dreieck- und Viereckflächen (Triangle/Quad)
8.4.1 triangle
8.4.2 quad
8.4.3 STL-Dateien lesen und mit VPython darstellen
8.5 Widgets
8.6 Steuerung mit Tastatur und Maus
8.7 Aufgaben
8.8 Lösungen
9 Python-Versionen, Programmbibliotheken und Distributionen
9.1 Python 2
9.2 Die Python-Distribution Anaconda
9.3 Die Python-Distribution WinPython
9.4 Aufgaben
9.5 Lösungen
10 Numerische Analysen mit Scipy
10.1 Hinweise zur Installation
10.2 Numerische Berechnung von Integralen
10.3 Interpolation
10.4 Berechnung von Nullstellen – Rootfinding
10.5 Optimierung
10.6 Signalanalyse mit der Schnellen Fourier Transformation (FFT)
10.7 Numerische Integration gewöhnlicher Differenzialgleichungen
10.8 Delaunay-Triangulierung
10.9 Berechnung der konvexen Hülle
10.10 Aufgaben
10.11 Lösungen
11 Bildverarbeitung mit scikit-image
11.1 Hinweise zur Installation
11.2 Bilder einlesen, darstellen und ausgeben
11.3 Farbbilder in Graustufenbilder wandeln und Bilder skalieren
11.4 Graustufenbild durch Programmanweisungen erzeugen
11.5 Ecken ermitteln – Corner Detection
11.6 Kanten detektieren – Canny-Filter
11.7 Kreise erkennen – Hough-Transformation
11.8 Abgleich von Vorlagen – Template-Matching
11.9 Aufgaben
11.10 Lösungen
12 Einführung in die Gestaltung grafischer Benutzeroberflächen mit Tkinter
12.1 Ein Fenster erzeugen
12.2 Text anzeigen – das Label-Widget
12.3 Der Grid-Packer
12.4 Die Eigenschaften der Schrift verändern
12.5 Die Größe des Ausgabefensters verändern
12.6 Eingabefelder hinzufügen – das Entry-Widget
12.7 Einen Button erzeugen – das Button-Widget
12.8 Einen Schieberegler verwenden – das Scale-Widget
12.9 Eine Auswahlliste erzeugen – das Combobox-Widget
12.10 Eine Zeichenfläche für Grafiken erzeugen – das Canvas-Widget
12.11 Linien, Rechtecke und Kreise in das Canvas-Widget zeichnen
12.12 Benutzerkoordinaten im Canvas verwenden
12.13 Eine mathematische Funktion im Canvas darstellen
12.14 Eine Checkbox erzeugen
12.15 Grafische Elemente mit Checkboxen ein- und ausblenden
12.16 Radio-Buttons erzeugen
12.17 Grafische Elemente mit Radio-Buttons ein- und ausblenden
12.18 Eine Messagebox erzeugen
12.19 Eine Messagebox zum Abfangen eines Fehlers verwenden
12.20 Erweiterte Layoutgestaltung: die pack()- und die place()-Methode
12.21 Eine Statuszeile erzeugen
12.22 Ein Menü erzeugen
12.23 Grafische Elemente mit Menüs erzeugen und löschen
12.24 Grafische Elemente mit Icons erzeugen und löschen
12.25 Aufgaben
12.26 Lösungen
13 Grundlagen der funktionalen Programmierung mit Python
13.1 Die Grundidee
13.2 Anonyme Funktionen – Lambda-Funktionen
13.3 Die map()-Funktion
13.4 Die filter()-Funktion
13.5 Die Funktion reduce()
13.6 List Comprehension als Alternative
13.7 Beispiel: Zahlen aus einem Text extrahieren und summieren
13.8 Aufgaben
13.9 Lösungen
Literaturverzeichnis