Python für Ingenieure und Naturwissenschaftler - Hans-Bernhard Woyand - E-Book

Python für Ingenieure und Naturwissenschaftler E-Book

Hans-Bernhard Woyand

0,0

Beschreibung

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:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 453

Veröffentlichungsjahr: 2024

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



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

Vorwort

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.

Zielgruppe

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.

Aufgabenorientierte Lehre

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.

Software

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.

Webseite zum Buch

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

[email protected]

gern entgegengenommen.

Haftungsausschluss

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.

Danksagung

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 Auflage

Fü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 Auflage

Fü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 Auflage

Fü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 Auflage

Fü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

Inhalt

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

1Einführung