Wissenschaftliches Rechnen ¢â‚¬â€œ Grundlagen mit MATLAB Dr. Stefan Brechtken Wissenschaftliches Rechnen

  • View
    0

  • Download
    0

Embed Size (px)

Text of Wissenschaftliches Rechnen ¢â‚¬â€œ Grundlagen mit MATLAB Dr....

  • Wissenschaftliches Rechnen – Grundlagen (Studienjahr 2015/2016)

    Stefan Brechtken Skriptum basierend auf den Skripten von Doz.Dr.habil. Werner Vogt

    Technische Universität Ilmenau FG Numerische Mathematik und Informationsverarbeitung

    98684 Ilmenau, Germany

    e-mail: stefan.brechtken@tu-ilmenau.de

    Kapitel 3 Teil 1 Programmierung

    mit MATLAB

    Dr. Stefan Brechtken ♠ Wissenschaftliches Rechnen – Grundlagen ♣ 2015/2016

    14. Oktober 2015

    1

  • Eine Sprache erlernt man nur, wenn man in ihr spricht –

    eine neue Programmiersprache lernt man nur, wenn man in ihr Programme schreibt.

    ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗∗

    (frei nach B. Kernighan und D. Richie)

    Das ursprüngliche Scriptum entstand 2007 - 2012 während der Vorle- sungen zu “Algorithmen und Programmierung“ und “Grundlagen des Wissenschaftlichen Rechnens“. Diese Version wurde dem Vorlesungsstoff “Grundlagen des Wissenschaftlichen Rechnens” angepasst und verkürzt. Den Urheberretsansprüchen des Originals entsprechend ist dieser Teil ausschließlich für den individuellen Gebrauch der Studierenden an der Technischen Universität Ilmenau bestimmt. Es ist einschließlich aller seiner Teile urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes, insbesondere jegliche kommerzielle Nutzung, ist unzulässig und straf- bar. Das gilt besonders für Vervielfältigungen, Übersetzungen, Mikro- verfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen.

  • Inhaltsverzeichnis

    3 Matlab 1 3.1 Datentypen in Matlab . . . . . . . . . . . . . . 4

    3.1.1 Grundlegende Sprachelemente . . . . . . . . 4 3.1.2 Vordefinierte skalare Standardtypen . . . . . 4 3.1.3 Arithmetische Ausdrücke . . . . . . . . . . . 7

    3.2 Programme in Matlab . . . . . . . . . . . . . . 8 3.2.1 Deklaration und Aufruf eines Script-Files . . . 8 3.2.2 Mathematische Standardfunktionen in Matlab . 11

    3.3 Bedingte Anweisungen (Selektion) . . . . . . . 13 3.3.1 Bedingungen . . . . . . . . . . . . . . . . 13 3.3.2 Einseitige if-Anweisung . . . . . . . . . . . 14 3.3.3 Zweiseitige (vollständige) if-Anweisung . . . . 14 3.3.4 Mehrseitige if-Anweisung . . . . . . . . . . 15 3.3.5 Switch-Anweisung (Auswahlanweisung) . . . . 16

    3.4 Zyklusanweisungen (Repetition) . . . . . . . . 17 3.4.1 While–Anweisung . . . . . . . . . . . . . . 17 3.4.2 For–Anweisung . . . . . . . . . . . . . . . 19

    3.5 Prozedurale Programmierung . . . . . . . . . . 20 3.5.1 Funktionsdeklaration und –definition . . . . . 20 3.5.2 Funktionsaufruf . . . . . . . . . . . . . . . 22

    3.6 Lokale und globale Objekte . . . . . . . . . . . 28 3.6.1 Lokale Programmobjekte . . . . . . . . . . 28 3.6.2 Globale Programmobjekte . . . . . . . . . . 30 3.6.3 Geschachtelte Funktionen . . . . . . . . . . 31

    3.7 Felder (arrays) . . . . . . . . . . . . . . . . . . 33

    3

  • Dr. Stefan Brechtken ♠ Wissenschaftliches Rechnen – Grundlagen ♣ 2015/2016 4

    3.7.1 Feldkonstruktion . . . . . . . . . . . . . . 33 3.7.2 Operationen auf Feldern . . . . . . . . . . . 35 3.7.3 Feld–Manipulation . . . . . . . . . . . . . 36

    3.8 2-dimensionale Grafik mit Feldern . . . . . . . 38 3.8.1 Das Plot-Kommando . . . . . . . . . . . . 38 3.8.2 Weitere 2D–Plots . . . . . . . . . . . . . 40

    3.9 Algorithmen auf Zeichenketten . . . . . . . . . 41 3.9.1 Zeichenketten-Definition und -Verarbeitung . . 41 3.9.2 Datum und Uhrzeit . . . . . . . . . . . . . 44

    3.10 Algorithmen auf mehrdimensionalen Feldern . 46 3.10.1 Feldkonstruktion und Feldallozierung . . . . . 46 3.10.2 Feldmanipulation und höherdimensionale Felder 49

    3.11 Matrizen und lineare Systeme . . . . . . . . . 50 3.11.1 Arithmetik auf Matrizen . . . . . . . . . . . 50 3.11.2 Lineare Gleichungssysteme . . . . . . . . . . 51 3.11.3 Beschleunigung aller Algorithmen . . . . . . 53

    3.12 3-dimensionale Grafik . . . . . . . . . . . . . . 53 3.12.1 Raumkurvendarstellung (plot3) . . . . . . . . 53 3.12.2 Gitter- und Flächendarstellungen . . . . . . . 54

    3.13 Rekursive Algorithmen . . . . . . . . . . . . . 56 3.13.1 Direkte und indirekte Rekursivität . . . . . . 57 3.13.2 Abarbeitungsprinzip rekursiver Funktionen . . 57 3.13.3 Terminiertheit rekursiver Funktionen . . . . . 61 3.13.4 Entwurfsprinzipien rekursiver Algorithmen . . . 61

    3.14 Algorithmen auf Strukturen und Dateien . . . 64 3.14.1 Algorithmen auf Strukturen (struct) . . . . . 64 3.14.2 Felder von Strukturen . . . . . . . . . . . . 66

    3.15 Algorithmen auf Dateien (file) . . . . . . . . . 67 3.15.1 Diary-Files und Script-Files in Matlab . . . 69

  • Dr. Stefan Brechtken ♠ Wissenschaftliches Rechnen – Grundlagen ♣ 2015/2016 0

    3.15.2 Schreiben/ Lesen von Binärdateien . . . . . . 69 3.15.3 Schreiben/ Lesen von ASCII-Textdateien . . . 71

    3.16 Symbolische Algorithmen und Grafik . . . . . . . . . 72 3.16.1 Computeralgebra-Systeme . . . . . . . . . . 73

  • Kapitel 3

    Matlab

    Was ist Matlab? • Matlab = Matrix Laboratory ist ein multifunktionales Pro-

    grammsystem der Firma Mathworks (www.mathworks.com) • Matlab besitzt eine imperative Programmiersprache zur struktu-

    rierten und zur prozeduralen Programmierung. Abstrakte Datenty- pen lassen sich generieren.

    • Matlab arbeitet als Interpretersystem, wobei Compilation möglich ist. Die Grundfunktionen liegen als schneller Code compiliert vor.

    • Matlab ist anwendungsorientiert und wird weltweit von Tausen- den von Ingenieuren (ET, MB, Regelungstechnik, Werkstofftechnik etc.) und Naturwissenschaftlern erfolgreich in der Praxis eingesetzt.

    Toolboxen von Matlab (Auswahl) • Symbolic Math Toolbox – symbolisches Rechnen (CAS) • Optimization Toolbox – lin. und nichtlin. Optimierung • Partial Differential Equation Toolbox – Näherungslösung PDGLn

    • Curve Fitting Toolbox – Approximation von Datenpunkten • Statistics Toolbox – statistische Daten-Analyse

    • Signal Processing Toolbox – digitale Signalverarbeitung • Wavelet Toolbox – Signal- und Bildverarbeitung mit Wavelets • Image Processing Toolbox – digitale Bildverarbeitung

    1

  • Dr. Stefan Brechtken ♠ Wissenschaftliches Rechnen – Grundlagen ♣ 2015/2016 2

    • Video and Image Processing Blockset – Videoverarbeitung • Financial Toolbox – finanzmathematische Analysen • Financial Derivatives Toolbox – equity and fixed-income derivatives

    Analysen • Parallel Computing Toolbox – Parallelverarbeitung auf Multicore-

    Computern und Computer-Clustern

    Erweiterungen von Matlab (Auswahl) • Simulink – Simulation und Analyse dynamischer Systeme • SimMechanics – Modellierung und Simulation mechanischer 3D-

    Systeme mit Animation • Stateflow – Design-Umgebung zur Entwicklung von Flussdiagram-

    men, automatische Generierung von C Code Weitere Infos: www.mathworks.com/products

    Integrierte Entwicklungsumgebung (IDE) von Matlab • Benutzeroberfläche (konfigurierbar) mit

    1. Kommandofenster (Command Window) 2. Aktuelles Verzeichnis (Current Directory) 3. Speicherbelegung (Workspace) 4. Kommando-Historie (Command History) 5. Menü- und Symbolleiste 6. Startpfad (Launch Pad)

    • Texteditor (konfigurierbar) mit 1. Syntax-Hervorhebung (Highlighting), Nummerierung 2. Debugger zur schnellen Fehlersuche

    • Hilfesystem mit 1. ausführlichem Matlab -Tutorial

  • Dr. Stefan Brechtken ♠ Wissenschaftliches Rechnen – Grundlagen ♣ 2015/2016 3

    2. Referenz aller Funktionen und Eigenschaften 3. Stichwort-Suche und Erläuterung

    • Grafiksystem (leicht programmierbar) mit 1. Grafikfenstern für 2D- und 3D-Grafiken 2. Grafikeditor (Property Editor) 3. umfangreiche Visualisierungsfunktionen 4. GUIDE zur Schaffung grafischer Nutzeroberflächen (GUIs)

    Alternative zu Matlab: GNU Octave

    • gleicher Grundfunktionsumfang wie Matlab, gleiche Syntax

    • vielzahl von Toolboxen (nicht vergleichbar mit Matlab)

    • auf allen Plattformen verfügbar, open source und kostenlos

    • ab Version 3.8 mit zu Matlab ähnlicher Grafikoberfläche

    • https://www.gnu.org/software/octave/ =⇒ Downloads

    • weitere Pakete für spezifische Aufgaben http://octave.sourceforge.net/index.html

    • Übungsaufgaben können mit Octave gelöst werden, solange auf Syn- taxkompatibilität geachtet wird!

  • Dr. Stefan Brechtken ♠ Wissenschaftliches Rechnen – Grundlagen ♣ 2015/2016 4

    3.1 Datentypen in Matlab

    3.1.1 Grundlegende Sprachelemente

    Alphabet (Grundsymbole) :

    ⟨Buchstabe⟩ ::= A|B|C|...|Z|a|b|c|...|y|z ⟨Ziffer⟩ ::= 0|1|2|3|4|5|6|7|8|9

    ⟨Sonderzeichen⟩ ::= +| − | ∗ | = | < | > | . . . |⟨Schlüsselwort⟩ ⟨Grundsymbol⟩ ::= ⟨Buchstabe⟩|⟨Ziffer⟩|⟨Sonderzeichen⟩

    Hinweis: Matlab unterscheidet zwischen Groß- und Kleinbuchstaben, es ist “case sensitiv“!

    Wichtige Zeichen: • Semikolon (;) dient der Unterdrückung der Ausgabe! • Prozentzeichen (%) leitet eine Kommentarzeile ein! • 3 Punkte (...) dienen der Fortsetzung einer Eingabezeile! • Wo 1 Leerzeichen stehen kann, dürfen beliebig viele stehen!

    3.1.2 Vordefinierte skalare Standardtypen Ein Datentyp definiert die Art der Werte, die eine Variable annehmen kann. Jede Variable in einem Programm muß genau einem Datentyp zu- geordnet werden. Das geschieht im allg. durch eine Wertzuweisung. Matlab unterscheidet skalare Datentypen und strukturierte Datenty- pe