2. Programmieren in MATLAB (1)

Ähnliche Dokumente
Prof. Dr. Stefan Funken, Dipl.-Ing. Christoph Erath 15. Mai WiMa-Praktikum (Matlab 2/9) Einführung in LATEXund Matlab

4.2 Selbstdefinierte Matlab-Funktionen 1. Teil

Fachhochschule Südwestfalen Wir geben Impulse. Kontrollstrukturen und Schleifen in Octave

m-files sind Folgen von MATLAB-Anweisungen oder Daten-Files.

Funktionen in Matlab. Lehrstuhl für Angewandte Mathematik Sommersemester und 29. Mai 2008

MATLAB als Programmiersprache

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Numerik-Programm, mittlerweile mit vielen Erweiterungen (Toolboxen) Matlab = Matrix Laboratory Sehr gute Doku (doc, help, lookfor)

Programmieren in MATLAB Mehr als nur ein Taschenrechner

Programmieren in MATLAB Mehr als nur ein Taschenrechner

Funktionen in JavaScript

Programmieren I + II Regeln der Code-Formatierung

Arithmetik in der tcsh

Einführung in die Programmierung (MA8003)

Java: Eine kurze Einführung an Beispielen

Funktionen in JavaScript

Funktionen in Matlab. Nutzerdefinierte Funktionen können in.m-datei gespeichert werden

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Einführung in MATLAB Blockkurs DLR:

2. Einführung in das Ingenieurtool MATLAB

Zyklen: break und continue

10:Exkurs MATLAB / Octave

Mathematische Computer-Software

Programmiervorkurs für die Numerik Teil 1/4

Variablen in MATLAB. Unterschiede zur Mathematik: Symbolisches und numerisches Rechnen. Skriptdateien. for-schleifen.

Inhaltsverzeichnis. Inhalt. Bemerkung... 9 Vorwort Programme und Programmiersprachen

Programmieren I + II Regeln der Code-Formatierung

Linux und Shell-Programmierung Teil 6

3 Kurzeinführung in Matlab

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

Übung April Was ist Matlab? Aufgabe 1.1: Hochschule Bochum Sommersemester 2014 Vorlesung Autonome Roboter Prof. Dr.

MATLAB Eine Einführung

Matlab: eine kurze Einführung

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur

MATLAB: Kapitel 3 Programmieren

Übersicht Shell-Scripten

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

Kurze Einführung in Octave

WS2018/ Oktober 2018

Einführung in MATLAB Blockkurs DLR:

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

Grundlagen der Programmierung

Programmiervorkurs für die Numerik Teil 2/4

2. Programmierung in C

Wima 1 - Praktikum (Woche 6)

Einstieg in die Informatik mit Java

Objektorientierung. Marc Satkowski 20. November C# Kurs

Bash-Skripting Linux-Kurs der Unix-AG

Funktionen. mehrfach benötigte Programmteile nur einmal zu schreiben und mehrfach aufzurufen

Einstieg in die Informatik mit Java

Einfache Bedingte Ausführung

Sprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

5 Funktionen und Skripte

javascript Coding-Guidelines 2. Ausgabe Februar 2015 Der Guideline beschreibt den verwendeten Coding-Stil von javascript als eigene Richtline.

WS2017/ Oktober 2017

Vorbemerkung. Allgemeines zu Shell Scripts. Aufruf. Einfaches Beispiel

Inhaltsverzeichnis. Vorwort.11

Inhaltsverzeichnis. Ulrich Stein. Einstieg in das Programmieren mit MATLAB ISBN: Weitere Informationen oder Bestellungen unter

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Einführung in die Programmierung (MA8003)

Vorlesung Skriptsprachen Duale Hochschule Stuttgart Sommersemester Dipl.-Ing. (FH) Volker Schepper

Schleifen. Auch das Berechnen von Produkten kann analog formuliert werden.

Allgemeines. Shell Programmierung Unix. Kommentar. Vorgangsweise. Mag. Thomas Griesmayer

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur

WiMa-Praktikum 1. Woche 8

Zwei-Punkt-Randwert-Aufgabe. Teil I Motivation Skript-Files Function-Files. Mathematische Anwendersysteme Einführung in MATLAB

Einführung in die Computerlinguistik

Kontrollstrukturen (1)

Java Anweisungen und Ablaufsteuerung

Programmiertechnik 1 FOR-SCHLEIFEN

Ulrich Stein. Einstieg in das Programmieren. mit MATLAB. 2., aktualisierte Auflage. Mit 153 Bildern. Fachbuchverlag Leipzig im Carl Hanser Verlag

Kapitel 2. Einfache Beispielprogramme

Matlab Selbstlernkurs

Inhaltsverzeichnis. Ulrich Stein. Programmieren mit MATLAB. Programmiersprache, Grafische Benutzeroberflächen, Anwendungen

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Java Methoden. Informatik 1 für Nebenfachstudierende Grundmodul. Kai-Steffen Hielscher Folienversion: 1. Februar 2017

Eine kleine Anleitung zum Programmieren mit MATLAB

WS2018/ Oktober 2018

Probeklausur Name: (c)

Bedingte Anweisungen

Transkript:

Start Inhalt Programmieren in MATLAB (1) 1(35) 2. Programmieren in MATLAB (1) 2.1 Grundlagen Variable. Ausdrücke. Kontrollstrukturen. 2.2 m Files: Skripts und Funktionen m Files. Funktionsargumente, Rückgabewerte. 2.3 Der MATLAB Suchpfad Ausführen on m-files. 2.4 Beispiel: Newton-Verfahren Entwicklung von m Files für das Newton-Verfahren.

Start Inhalt Programmieren in MATLAB (1) Grundlagen 2(35) Programmierung: Grundlagen Kommandosyntax, Variable, Ausdrücke Schlüsselwörter Programmsteuerung

Start Inhalt Programmieren in MATLAB (1) Grundlagen 3(35) Grundelemente der Programmierung Die wichtigsten Aspekte MATLAB Kommandosyntax, die Definition und Verwendung von Variablen, Operatoren und Ausdrücke in wurden im Abschnitt Einstieg in MATLAB behandelt. Dies alles ist genauso in MATLAB Programmen zu benutzen.

Start Inhalt Programmieren in MATLAB (1) Grundlagen 4(35) Variable, Schlüsselwörter Variablennamen beginnen mit einem Buchstaben und bestehen aus einer Folge von Buchstaben, Ziffern und dem Unterstrich, wobei zwischen Groß- und Kleinbuchstaben unterschieden wird. Die maximale Länge liefert das Kommando namelengthmax. Zur Erinnerung: es gibt vordefinierte Variable (ans, eps,...) Sinnvollerweise sollte man keine Kommandonamen und Schlüsselwörter wie if, for,... für Variablennamen benutzen. Eine Liste der MATLAB Schlüsselwörter erhält man durch das Kommando iskeyword.

Start Inhalt Programmieren in MATLAB (1) Grundlagen 5(35) Programmsteuerung Es stehen die folgenden Kontrollstrukturen zur Verfügung if, else, elseif switch while for continue, break, return try... catch Die genaue Syntax ist der Online Hilfe zu entnehmen.

Start Inhalt Programmieren in MATLAB (1) Grundlagen 6(35) Beispiel: if... elseif... else % n positive and ungerade, Erhoehung um 1 und Division. if n < 0 % n negativ; Ausgabe einer Fehlermeldung disp( Wert muss positiv sein. ); elseif rem(n,2) == 0 % n positive und gerade, Division durch 2. A = n/2; else A = (n+1)/2; end

Start Inhalt Programmieren in MATLAB (1) Grundlagen 7(35) Beispiel: switch... case... otherwise % Abfrage der Variablen var auf die Werte 1, 2, 3, 4, 5 switch var case 1 disp( 1 ) case {2,3,4} disp( 2 or 3 or 4 ) case 5 disp( 5 ) otherwise disp( ein anderer Wert ) end

Start Inhalt Programmieren in MATLAB (1) Grundlagen 8(35) Beispiel: for und while Schleifen for n = 2:2:11 x = 2^n; fprintf(1, n = %2.0f end 2^n = %4.0f\n,n,x) n = 1; while prod(1:n) < 1e10 n = n + 1; end disp(n)

Start Inhalt Programmieren in MATLAB (1) Grundlagen 9(35) continue und break Sowohl in einer for als auch in einer while Schleife können die Anweisungen continue und break benutzt werden. continue beendet aktuellen Schleifendurchlauf, weiter mit dem nächsten Durchlauf break beendet die Schleife komplett

Start Inhalt Programmieren in MATLAB (1) Grundlagen 10(35) m Files Es gibt zweierlei Arten von m Files *.m : Scripts Diese enthalten keine Ein- und Ausgabeparameter, die Variablen sind im Arbeitsbereich sichtbar. Funktionen Diese enthalten eine durch das Schlüsselwort function eingeleitete Definitionszeile. Funktionen können Eingabeparameter entgegennehmen und Werte zurückliefern. Alle Variablen sind lokal.

Start Inhalt Programmieren in MATLAB (1) Grundlagen 11(35) Skripts Ausführung der Anweisungen wie bei Eingabe am Prompt keine Parameterübergabe und -rückgabe Variable des Workspace stehen zur Verfügung Variable aus dem m File sind anschliessend im Workspace bekannt Beispiel: myplot.m f = @(t) exp(10*t.*(t-1)).*sin(12*pi*t); t = linspace(-1,1,200); y = f(t); plot(t,y); Der Aufruf von myplot am Prompt liefert immer die Grafik der Funktion f. Nach Abarbeitung des Skripts befinden sich die Variablen f, t, y im Workspace.

Start Inhalt Programmieren in MATLAB (1) Grundlagen 12(35) Funktionen (1) Kennzeichen: function - Anweisung ist erste Zeile des m-files Beispiel: function [aus1,..., ausk] = myname(in1,... inn) function Schlüsselwort [aus1,..., ausk] Rückgabeparameter gibt es nur einen oder keinen Rückgabeparameter, entfallen die Klammern [ ] in1,... inn Eingabeparameter oder Argumente (können auch fehlen) myname frei wählbarer Funktionsname

Start Inhalt Programmieren in MATLAB (1) Grundlagen 13(35) Funktionen (2) Im allgemeinen wird das Funktions-m-File unter myname.m abgespeichert. Dies ist zwar nicht Pflicht, wird aber dringend empfohlen. Ein m-file kann auch mehrere Funktionen enthalten oder innerhalb einer Funktion können weitere Funktionen definiert werden. Namen von m-files sollten eindeutig sein, also z.b. keine Namen von MATLAB-Kommandos oder Schlüsselwörtern benutzen. Aufruf am Prompt: [y1,..., yk] = myname(a1,..., an)

Start Inhalt Programmieren in MATLAB (1) Grundlagen 14(35) Kommentarzeilen und Hilfe (1) Kommentare in m-files werden durch ein % - Zeichen eingeleitet. Der erste Block von Kommentarzeilen in einem m-file wird vom help-kommando ausgegeben. function myplot1(a,b) % FUNCTION myplot1(a,b) % zeichnet cos(t)*sin(t) im Intervall (a,b) % jetzt geht es los t = a:0.01:b; plot(t,cos(t).*sin(t));

Start Inhalt Programmieren in MATLAB (1) Grundlagen 15(35) Kommentarzeilen und Hilfe (2) Der Aufruf myplot1(-1,1) zeichnet die Funktion im aktuellen Graphikfenster. Der Aufruf help myplot1 produziert FUNCTION myplot1(a,b) zeichnet cos(t)*sin(t) im Intervall (a,b)

Start Inhalt Programmieren in MATLAB (1) Grundlagen 16(35) Rückgabeparameter Eine Funktion kann auch mit weniger als den festgelegten Rükgabeparametern aufgerufen werden. Die MATLAB-Funktion eig zur Bestimmung der Eigenwerte und Eigenvektoren einer Matrix A kann wie folgt aufgerufen werden. d = eig(a) [V,D] = eig(a) % Vektor d enthaelt Eigenwerte % V - Matrix der Eigenvektoren % D - Diagonalmatrix der Eigenwerte Die Anzahl beim Aufruf bereitgestellter Rückgabeparameter kann mit der Anweisung nargout abgefragt werden.

Start Inhalt Programmieren in MATLAB (1) Grundlagen 17(35) Funktionsargumente Die Liste der Funktionsargumente bzw. Eingabeparameter kann auch variabel sein. Der Programmierer muss den Fall fehlender Argumente absichern. Zur Abfrage der Anzahl der Argumente dient nargin. Beispiel: function c = testarg1(a, b) % ein Argument a --> Rueckgabe a^2 % zwei Argumente a,b --> Rueckgabe a+b if (nargin < 1) error( Kein Argument angegeben! ) elseif (nargin == 1) c = a.^ 2; elseif (nargin == 2) c = a + b; end

Start Inhalt Programmieren in MATLAB (1) Grundlagen 18(35) Funktionsnamen als Argument (1) Übergabe einer Funktion, welche entweder als m-file oder als anonyme Funktion vorliegt, an eine Funktion. function myplot2(f,a,b) % FUNCTION myplot2(f,a,b) % zeichnet f(t) im Intervall (a,b) % f function handle t = a:0.01:b; y = f(t); plot(t,y); Aufruf: f1 = @(x) 3*x.^2-2*x + 1; myplot2(f1,0,3)

Start Inhalt Programmieren in MATLAB (1) Grundlagen 19(35) Funktionsnamen als Argument (2) oder die zu zeichnende Funktion ist im m-file ftest.m implementiert. function y = ftest(t) y = 3*t.^2-2*t + 1; Aufruf: myplot2(@ftest,0,3)

Start Inhalt Programmieren in MATLAB (1) Grundlagen 20(35) Funktionsnamen als Argument (3) In älteren MATLAB-Versionen stand der Datentyp function handle nicht zu Verfügung. Zur Auswertung der als Argument übergebenen Funktion musste feval benutzt werden. function myplot3(f,a,b) % FUNCTION myplot3(f,a,b) % zeichnet f(t) im Intervall (a,b) % Auswertung von f mittels feval t = a:0.01:b; y = feval(f,t); plot(t,y); Aufrufsvarianten: myplot3(f1,0,4) myplot3(@ftest,0,4) myplot3( ftest,0,4)

Start Inhalt Programmieren in MATLAB (1) Grundlagen 21(35) Unterfunktionen Neben der Hauptfunktion (deren Name gleich dem Namen des m-files ist) kann ein Funktion-m-File noch weitere Unterfunktionen enthalten. Diese sind nur für die Hauptfunktion (und alle anderen Unterfunktionen in dieser Datei) sichtbar. 1ex Unterfunktionen sind in der Regel Hilfsfunktionen, die nur von der Hauptfunktion benötigt werden und daher nicht unbedingt in einer eigenen m-datei stehen müssen.

Start Inhalt Programmieren in MATLAB (1) Grundlagen 22(35) Globale Variablen Hin und wieder (nie?) ist es erforderlich, Variablen als global zu erklären, womit diese in allen Unterprogrammen sichtbar werden. Dies geschieht mit der Anweisung global A Innerhalb einer Funktion sollten globale Variable vor deren ersten Verwendung erklärt werden, idealerweise am Anfang der Datei. Nach Konvention werden Bezeichner globaler Variabler aus Großbuchstaben gebildet. Die Namen globaler Variabler sollten möglichst lang sein, um Kollisionen zu vermeiden.

Start Inhalt Programmieren in MATLAB (1) Grundlagen 23(35) Rekursive Funktionen Funktionen in MATLAB können rekursiv sein, d.h. sie können sich selbst aufrufen. Beispiel: Koch-Kurve. (koch.m, kochbsp1.m, kochbsp2.m)

Start Inhalt Programmieren in MATLAB (1) Grundlagen 24(35) Stilfragen Folgendes wird empfohlen: Leerzeichen um = und um logische Operatoren eine Anweisung pro Zeile (nicht immer) Einrücken zur Betonung von for, if, switch und while Konstruktionen Matrizenbezeichner, die mit Großbuchstaben beginnen ausgewogene Verwendung von Kommentaren

Start Inhalt Programmieren in MATLAB (1) Der MATLAB Suchpfad 25(35) m-files und der MATLAB-Pfad (1) Ausführbare MATLAB-Kommandos bestehen aus in den Interpreter fest eingebaute Kommandos (z.b. eig) und m-dateien im File-System. Der MATLAB-Suchpfad ist eine Liste von Verzeichnissen, in denen MATLAB nach m-files und Kommandos sucht. path addpath pathtool File Set Path : gibt den aktuellen Wert der MATLAB-Pfades an : fügt Verzeichnisse dem MATLAB-Pfad hinzu : öffnet Dialogbox zur Manipulation des MATLAB-Pfades : wie pathtool VOR den Verzeichnissen des Suchpfades wird das aktuelle Verzeichnis durchsucht.

Start Inhalt Programmieren in MATLAB (1) Der MATLAB Suchpfad 26(35) m-files und der MATLAB-Pfad (2) Zum Ausführen eigener m-files muss Verzeichnis, welches die Dateien enthält, entweden im Suchpfad enthalten sein, oder man wechselt in das Verzeichnis oder man ruft das m-file mit vollständigem Pfad auf. Einige nützliche Kommandos: what : listet die M-Dateien im aktuellen Verzeichnis what [name] : listet M-Dateien im Verzeichnis name lookfor [Stichwort]: durchsucht Pfad nach M-Dateien mit Stichwort im Help-Text type [name] : gibt Quelltext von name.m aus more on : schaltet type-ausgabe auf seitenweise more off : schaltet dies wieder aus which [name] : gibt den vollen Pfadnamen zu name.m clear [name] : löscht name.m aus dem Speicher

Start Inhalt Programmieren in MATLAB (1) Beispiel: Newton-Verfahren 27(35) Ein m-file für das Newton Verfahren Das Newton Verfahren kann zur näherungsweisen iterativen Berechnung von Nullstellen von Funktionen f (x) bzw. zur näherungsweisen Lösung von f (x) = 0 benutzt werden. Die Verfahrensvorschrift lautet Startwert x 0 x k+1 = x k f (x k ) f (x k ). Als Beispiel soll uns die folgende Funktion dienen. f (x) = log(x 1) + cos(x 1)

Start Inhalt Programmieren in MATLAB (1) Beispiel: Newton-Verfahren 28(35) Newton Verfahren (2) Das Newton Verfahren kann auch für nichtlineare Gleichungssysteme eingesetzt werden. Unser Beispiel: f 1 (x 1, x 2 ):=20 18x 1 2x 2 2 = 0 f 2 (x 1, x 2 ):= 4x 2 (x 1 x 2 2 ) = 0 Die Verfahrensvorschrift modifiziert sich zu Startvektor x 0 = (x 0 1, x 0 2 ) F (x k )w k = F(x k ) x k+1 = x k + w k. Dabei ist F (x) die Matrix aller ersten partiellen Ableitungen (Jacobimatrix).

Start Inhalt Programmieren in MATLAB (1) Beispiel: Newton-Verfahren 29(35) Newton Verfahren (3) Es werden die Funktions-m-Files nv10.m, nv11.m, nv12.m, nv13.m, nv14.m sowie nv20.m entwickelt, wobei jeweils die Funktionalität erweitert wird. Die letzte Version nv20.m ist dann für Systeme einsetzbar. Die einzelen m-files kann man über die Kurswebseite herunterladen.

Start Inhalt Programmieren in MATLAB (1) Beispiel: Newton-Verfahren 30(35) Newton Verfahren (4) nv10.m % Newton-Verfahren Version 1.0 % f(x) = log(x-1) + cos(x-1) % f (x) = 1/(x-1) - sin(x-1) function x=nv10(x,itmax)

Start Inhalt Programmieren in MATLAB (1) Beispiel: Newton-Verfahren 31(35) Newton Verfahren (5) nv11.m % Newton-Verfahren Version 1.1 % f(x) = log(x-1) + cos(x-1) % f (x) = 1/(x-1) - sin(x-1) % + Rueckgabe von Iterationszahl und Funktionswert function [x,it,fwert]=nv11(x,itmax)

Start Inhalt Programmieren in MATLAB (1) Beispiel: Newton-Verfahren 32(35) Newton Verfahren (6) nv12.m % Newton-Verfahren Version 1.2 % f(x) = log(x-1) + cos(x-1) % f (x) = 1/(x-1) - sin(x-1) % + Rueckgabe von Iterationszahl und Funktionswert % + Verbesserung der Ablaufsteuerung % (Startwert, relativer Abbruchtest, % Test auf Division durch 0) function [x,it,fwert]=nv12(x0,itmax,epsilon)

Start Inhalt Programmieren in MATLAB (1) Beispiel: Newton-Verfahren 33(35) Newton Verfahren (7) nv13.m % Newton-Verfahren Version 1.3 % f(x) = log(x-1) + cos(x-1) % f (x) = 1/(x-1) - sin(x-1) % + Rueckgabe von Iterationszahl und Funktionswert % + Verbesserung der Ablaufsteuerung % (Startwert, relativer Abbruchtest, % Test auf Division durch 0) % + Funktionswertberechnung ueber m-files f0.m, f1.m function [x,it,fwert]=nv13(x0,itmax,epsilon)

Start Inhalt Programmieren in MATLAB (1) Beispiel: Newton-Verfahren 34(35) nv14.m Newton Verfahren (8) % Newton-Verfahren Version 1.4 % f(x) = log(x-1) + cos(x-1) % f (x) = 1/(x-1) - sin(x-1) % + Rueckgabe von Iterationszahl und Funktionswert % + Verbesserung der Ablaufsteuerung % (Startwert, relativer Abbruchtest, % Test auf Division durch 0) % + Funktionswertberechnung ueber m-files f0.m, f1.m % + Namen der m-files variabel und % nur ein m-file fuer f0 und f1 function [x,it,fwert]=nv14(func,x0,itmax,epsilon)

Start Inhalt Programmieren in MATLAB (1) Beispiel: Newton-Verfahren 35(35) Newton Verfahren (9) nv20.m % Newton-Verfahren Version 2.0 % wie Version 1.4, aber auch fuer Systeme % abs --> norm % Division f(x)/f (x) --> Loesen lineares GS function [x,it,fwert]=nv20(func,x0,itmax,epsilon)