Kurzeinführung Matlab

Ähnliche Dokumente
Kurze Einführung in Octave

Mathematische Computer-Software

MATLAB: Kapitel 3 Programmieren

Einführung in Matlab Was ist MATLAB? Hilfe Variablen

4.2 Selbstdefinierte Matlab-Funktionen 1. Teil

Markus Grasmair. 8. März 2010

PPS "Bits on Air" 1. Teil, Matlab-Tutorial Vorbereitungsaufgaben (Lösungsvorschläge)

MATLAB Einführung. Numerische Methoden für ITET und MATL Dr. S. May, D. Devaud. ETH Zürich, Seminar for Applied Mathematics

Woche 08/12 15/12 4. Gershgorin-Kreise, Stabilität und Kondition 1 / 8

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

Praktikum zur Vorlesung: Numerische Mathematik für Lehramt SS Matlab: Fortsetzung. Jan Mayer. 4. Mai 2006

2 Matrizen und Vektoren

Einführung in. Pierre Bayerl

Schülerworkshop Computertomographie Mathematik als Schlüsseltechnologie

Lösbarkeit linearer Gleichungssysteme

3 Determinanten, Eigenwerte, Normalformen

Ökonometrische Analyse

Programmiervorkurs für die Numerik Teil 2/4

WiMa-Praktikum 1. Woche 8

Blockmatrizen. Beispiel 1 Wir berechnen das Produkt von A R 4 6 mit B R 6 4 :

Matlab Selbstlernkurs

NUMERISCHE MATHEMATIK I

Einführung in MATLAB + MATLAB Simulink. Dipl.-Inf. Markus Appel

Hilfsblätter Lineare Algebra

Beispiel-Glossar zu Octave

LABORÜBUNG MATLAB/OCTAVE

Einführung in MATLAB Blockkurs DLR:

Mathematik für Naturwissenschaftler, Pruscha & Rost Kap 7 Lösungen

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

Einführung in MATLAB / GNU Octave

Programmieren in MATLAB Mehr als nur ein Taschenrechner

Informationsverarbeitung im Bauwesen

Übungsblatt 3 Musterlösung

Matlab: eine kurze Einführung

Einführung in MATLAB

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

Lineare Algebra: Determinanten und Eigenwerte

3 Kurzeinführung in Matlab

3 Matrizenrechnung. 3. November

VF-2: 2. Es seien x = 1 3 und y = π Bei der Berechnung von sin(x) sin(y) in M(10, 12, 99, 99) tritt. Auslöschung auf.

Übungsblatt Matlab-Zentralübung Musterlösung

Einführung in MATLAB

D-MAVT NUMERISCHE MATHEMATIK FS 14 K. Nipp, A. Hiltebrand Lösung vom Test 2

Dr. Michael Lehn WS 2013/2014 Iris Häcker Klaus Stolle Institut für Numerische Mathematik Universität Ulm

Lösungsvorschlag zur Modulprüfung Numerische Methoden Sommersemester 2016

Numerik I. Universität zu Köln SS 2009 Mathematisches Institut Prof. Dr. C. Tischendorf Dr. M. Selva,

Eine Einführung zum numerischen Programmieren mit Matlab

Matrizen. a12 a1. a11. a1n a 21. a 2 j. a 22. a 2n. A = (a i j ) (m, n) = i te Zeile. a i 1. a i 2. a i n. a i j. a m1 a m 2 a m j a m n] j te Spalte

2. Einführung in das Ingenieurtool MATLAB

Lösungsvorschlag zur Modulprüfung Numerische Methoden - Wintersemester 2016/17

Einführung in MATLAB Blockkurs DLR:

Zugriff auf Matrizen. Anhängen von Elementen. Punktweise Operatoren. Vektoren und Matrizen in MATLAB II

Matlab: eine kurze Einführung

K. Eppler, Inst. f. Num. Mathematik Übungsaufgaben. 11. Übung: Woche vom

Übungsklausur Computerorientierte Mathematik I

Eine kurze Einführung in Matlab

Eine kleine Anleitung zum Programmieren mit MATLAB

Programmieren in MATLAB Mehr als nur ein Taschenrechner

Ingenieurinformatik II Numerik für Ingenieure Teil 2

MATLAB Sommersemester 2018 Dr. Ulf Mäder

10:Exkurs MATLAB / Octave

Matrizen und Determinanten, Aufgaben

Numerisches Programmieren, Übungen

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

Octave/Matlab-Übungen

Numerische Lineare Algebra - Matlab-Blatt 2

Matlab: eine kleine Einführung 2

Einführung in die Programmiersprache Julia Vorlesung Computerphysik Sommersemester 2018 Ralf Bulla Universität zu Köln

Einfache Bedingte Ausführung

Inhalt. Mathematik für Chemiker II Lineare Algebra. Vorlesung im Sommersemester Kurt Frischmuth. Rostock, April Juli 2015

Universität Tübingen Tübingen, den Mathematisches Institut D. Mansour, J. Seyrich

Einführung in die Grundlagen von Matlab. Ralph Neubecker

Anwendung von (Mathematica und) Matlab in der Physikalischen Chemie

Programmieren. Aufgabe 1 (Eine erste Datenstruktur)

1 Singulärwertzerlegung und Pseudoinverse

a 11 a 12 a 1(m 1) a 1m a n1 a n2 a n(m 1) a nm Matrizen Betrachten wir das nachfolgende Rechteckschema:

Übungsblatt

Transkript:

Kurzeinführung Matlab Sven Beuchler 24. März 2015 Inhaltsverzeichnis 1 Was ist MATLAB? 1 2 Matrizen und Vektoren 2 2.1 Eingabe von Matrizen............................. 2 2.2 Operationen mit Matrizen........................... 2 2.3 Blockmatrizen.................................. 4 2.4 Eingabe großer Matrizen............................ 5 3 Programmierelemente in MATLAB 5 3.1 Verzweigung................................... 6 3.2 Zählschleife................................... 6 3.3 Wiederholschleife................................ 6 3.4 Beispiele..................................... 6 4 M-Files 8 4.1 Skript-Files................................... 8 4.2 Funktions-Files................................. 9 5 Zeichnen von Daten 10 1 Was ist MATLAB? MATLAB ist eine Umgebung für die Entwicklung von Algorithmen, Darstellung und Analyse von Daten und numerische Berechnungen. Es basiert auf FORTRAN/C++ Programmen und kann zur Simulation und Tests numerischer Verfahren verwet werden. Für praktische Rechnungen sind richtige Programmiersprachen wie C++ und FORT- RAN geeigneter. MATLAB ist ein kommerzieller Code. Für den Preis von 80 Euro kann man eine Studentenversion käuflich erwerben. Es gibt zusätzlich den kostenfreien Klon OCTAVE, der mit den meisten Befehlen von MATLAB kompatibel ist. 1

2 Matrizen und Vektoren 2.1 Eingabe von Matrizen Matrizen können in MATLAB auf verschiedene Art und Weisen eingegeben werden: explizit: Wir demonstrieren dies am Beispiel der Matrix [ ] 1 2 2 A =. 0.5 4 3 Dann lautet der Eingabebefehl A=[ 1 2-2;0.5 4 3]; Damit ist die Variable A mit dem entsprechen Wert belegt. Das Semikolon am Ende verhindert, daß der Wert von A ausgegeben wird. mittels vordefinierter Funktionen und Programmierelemente, siehe Abschnitt 2.4. extern aus einem Datenfile: Hier verweisen wir auf die Literatur und Hilfe von MATLAB. 2.2 Operationen mit Matrizen Dazu stehen die Operatoren =, +,,, \, /,ˆzur Verfügung. Wir demonstrieren dies an folgem Beispiel: Beispiel 2.1. Es seien B = [ ] 3 1 1, b = 0 2 3 [ ] 1 2 1 und c = 1. 3 Wir berechnen nun die Matrizen C = 2A + B, E = C C, F = C C, G = E 2 lösen die linearen Gleichungssyteme Ex = b, y E = b und F z = c und berechnen b b. Dies erfolgt nun wiefolgt B=[3 1-1;0 2 3]; C=2*A+B C = 5 5-5 1 10 9 2

E=C*C E = F=C *C F = G=E^2 G = 75 10 10 182 26 35-16 35 125 65-16 65 106 b=[1;2]; c=[1,-1,1]; x=e\b x = y=b /E y = b *b ans = 0.0120 0.0103 5725 2570 2570 33224 0.0120 0.0103 5 3

z=f\c Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 7.085745e-18. > In matrix1 at 12 z = 1.0e+14 * -6.2724 3.3012-2.9711 Generell nutzt MATLAB numerische Verfahren, d.h. es rechnet mit Gleitkommazahlen. Da die Matrix E regulär ist, sind x und y eindeutig bestimmt. Die Matrix F ist jedoch singulär, wie uns >> eig(f) ans = 0.0000 74.0734 182.9266 zeigt, was die Eigenwerte berechnet. Dies erklärt auch die Warnung bei der Berechnung von z. 2.3 Blockmatrizen Man kann auch Matrizen der Form eingeben. Dies erfolgt analog H=[C A;A B;C A]; C H = A C A B A und erzeugt eine 6 6 Matrix H. Wichtig ist dabei, daß die Dimensionen passen. Man kann aus H auch wieder einen Teil der Matrix generieren. So erzeugt 4

J=H(2:5,3:4); eine Matrix J mit 4 Zeilen und 2 Spalten, die die Einträge von H aus den Zeilen 2 bis 5 und Spalten 3 bis 4 enthält. 2.4 Eingabe großer Matrizen Die Eingabe großer Matrizen, z.b. R n = [ i 2] n i=1 (2.1) mit, z.b. n = 100, oder 2 1 1/2 0 0... 0 0 2 1 1/2 0.. 0 2 1 1/2 S 100 =.. 0........ R 100 100 (2.2) 0 0... 0 0 2 1 1/2 0... 0 0 0 2 1 0... 0 0 0 0 2 kann nicht mehr explizit erfolgen. Dazu benötigen wir Funktionen zum Bau von Matrizen und Programmierelemente. Die wesentlichsten Funktionen lauten eye(n) generiert die n n Einheitsmatrix, zeros(m,n) generiert eine m n Rechtecksmatrix mit Nullen, ones(m,n) generiert eine m n Rechtecksmatrix mit Einsen, diag(v) generiert eine Diagonalmatrix mit dem Vektor v auf der Hauptdiagonalen, rand(m,n) generiert eine m n Rechtecksmatrix mit Zufallseinträgen, Weitere Befehle befinden sich in der Hilfe und Literatur. Damit allein können wir aber R n (2.1) und S 100 (2.2) nicht allein generieren. Deshalb benötigen wir programmiersprachliche Elemente, die wir im nächsten Abschnitt vorstellen werden. 3 Programmierelemente in MATLAB Die wesentlichen Elemente sind Verzweigung, Zählschleife, Wiederholschleife. 5

3.1 Verzweigung Die Syntax lautet if Bedingung anweisung1; else anweisung2; Falls die Bedingung erfüllt ist, wird die anweisung1 ausgeführt, sonst anweisung2. 3.2 Zählschleife Hier ist die Syntax for i=min:max anweisung(i); Hier wird für alle i von min bis max die vom Parameter i abhängige anweisung(i) ausgeführt. 3.3 Wiederholschleife Diese lautet while Bedingung anweisung; Solange die Bedingung erfüllt ist, wird die anweisung ausgeführt. 3.4 Beispiele Wir demonstrieren nun die Programmierelemente bei der Generierung der Matrizen R n (2.1) und S 100 (2.2). Die Diagonalmatrix R n kann über zwei Varianten generiert werden: einerseits mit dem diag Befehl, durch Setzen seiner Haupdiagonalelemente, Im letzteren Fall erzeugt man z.b. für n = 100 die folge Befehlskette % S k r i p t f i l e zur Generierung von R {100}(2.1) ( 1. Variante ) n=100; % F e s t s e t z e n der Groesse R=zeros (n, n ) ; % a l l e Eintraege auf Null for i =1:n R( i, i )= i ˆ 2 ; % Hauptdiagonale 6

Im ersten Fall lautet die Befehlskette % S k r i p t f i l e zur Generierung von R {100}(2.1) ( 2. Variante ) n=100; % F e s t s e t z e n der Groesse R=zeros (n, n ) ; % a l l e Eintraege auf Null for i =1:n v ( i )= i ˆ 2 ; % Vektor mit der Hauptdiagonale R=diag ( v ) ; Die Matrix S 100 ist eine obere Dreiecksmatrix mit Bandbreite 2. Desweiteren sind die Einträge auf den Diagonalen gleich. In den ersten zwei Varianten generieren wir S 100 zunächst als Zweifaches der Einheitsmatrix. Anschließ arbeiten wir die Nichtnulleinträge auf den Nebiagonalen ein, entweder zeilenweise oder spaltenweise. Dies erfolgt erneut mit Wiederhol- und Zählschleife. In beiden Fällen müssen wir beachten, daß die Nebiagonalen die Länge n 1 und n 2 haben. Die Befehlsketten lauten dann % S k r i p t f i l e zur Generierung der Matrix S n ( 2. 2 ) ( 1. Variante ) % vorher n eingeben S=2 eye ( n ) ; % zweimal E i n h e i t s m a t r i x for i =1:n 1 S ( i, i +1)=1; % 1. Nebiag i f i <(n 1) S ( i, i +2)=1/2; % 2. Nebiag (um 1 k u e r z e r ) oder alternativ % S k r i p t f i l e zur Generierung der Matrix S n ( 2. 2 ) ( 2. Variante ) % vorher n eingeben S=2 eye ( n ) ; % Hauptdiagonale S (1,2)=1; % 2. S p a l t e i =3; % gehe nun a l l e S p a l t e n ( ab 3) durch while i<=n S ( i 2, i )=1/2; S ( i 1, i )=1; i=i +1; % gehe in d i e naechste S p a l t e 7

Noch kürzer ist die Befehlskette mit dem toeplitz Befehl. Dabei wird ausgenutzt, daß S 100 (2.2) eine unsymmetrische Toeplitzmatrix ist. % S k r i p t f i l e zur Generierung der Matrix S n ( 2. 2 ) ( 3. Variante ) % vorher n eingeben, n >=3!!!! v=zeros (n, 1 ) ; % n i s t mindestens 3 w=zeros (n, 1 ) ; v (1)=2; % 1. Z e i l e [ 2 0... 0 ] w(1)=2; % 1. S p a l t e [ 2 1 1/2 0... 0 ] w(2)=1; w( 3 ) = 0. 5 ; S=toeplitz ( v,w) ; 4 M-Files Generell sollte man nicht alle Befehle in der Kommandozeile eingeben. Als Ausweg gibt es die M-Files. Dazu gibt es zwei Typen Skript-Files, Funktions-Files. 4.1 Skript-Files Hier wird einfach eine Reihenfolge von Befehlen abgearbeitet. Dies haben wir schon bei der Generierung der Matrizen R n (2.1) und S 100 (2.2) verwet. Geben wir z.b. n = 340 ein und lassen danach das File gens v1.m mit den Befehlen % S k r i p t f i l e zur Generierung der Matrix S n ( 2. 2 ) ( 1. Variante ) % vorher n eingeben S=2 eye ( n ) ; % zweimal E i n h e i t s m a t r i x for i =1:n 1 S ( i, i +1)=1; % 1. Nebiag i f i <(n 1) S ( i, i +2)=1/2; % 2. Nebiag (um 1 k u e r z e r ) laufen, erzeugt dies die analoge Matrix S 340 der Dimension 340. 8

4.2 Funktions-Files Damit können selbstdefinierte Funktionen erzeugt werden. [ Wir ] demonstrieren dies für x die Berechnung der Polarkoordinaten (r, φ) eines Vektors, d.h. y Input: x, y R, Ouput: r 0, φ [0, 2π) mit x = r cos φ, y = r sin φ. Dann lautet die Befehlslinie function [r,phi]=polar(x,y); wobei polar.m der Name und das File der Funktion ist. function [ r, phi ] = polar ( x, y ) % F u n k t i o n s f i l e zum Berechnen der Polarkoordinaten % e i n e s Punktes ( x, y )\ in \Rˆ2 % Input : x, y % Output : r, phi r=sqrt ( xˆ2+y ˆ 2 ) ; i f ( r >0) phi=acos ( x/ r ) ; % acos i s t der Arccos else phi =0; % Im Nullpunkt Ruft man nun [r,phi]=polar(3,-4) so lautet der Output r = 5 phi = 0.9273 9

5 Zeichnen von Daten Zur Visualiserung von Daten gibt es den plot(x,y)-befehl mit x, y R n. Dabei werden Punktepaare (x i, y i ) n i=1 im R2 gezeichnet und evtl. miteinander verbunden. Mit help plot erhalten wir eine ausführliche Beschreibung dieses Befehls. Wir demonstrieren dies an Beispiel 5.1. Wir möchten die Funktion zeichnen. f : [0, 2] R mit f(x) = (x + 1) x 1 (5.1) Da plot Punktepaare miteinander verbinden kann, ist die Idee nun das Intervall fein genug zu unterteilen. % S k r i p t f i l e zur Zeichnen von f ( x)=(x +1) x 1 in [ 0, 2 ] % Vorher Anzahl der G i t t e r p u n k t e n eingeben. h=2/n ; % S c h r i t t w e i t e, n+1 Punkte x=zeros ( n +1,1); y=zeros ( n +1,1); for i =0:n xw=h i ; x ( i +1)=xw ; y ( i +1)=abs (xw 1) (xw+1); plot ( x, y ) ; Gibt man nun n = 4 ein, so ist die Qualität sehr bescheiden, besser wird es bei n = 10 und n = 100, siehe Abbildung 1. Abbildung 1: Darstellung der Funktion f (5.1) mit n = 4 (links), n = 10 (mitte) und n = 100 (rechts) Punkten. Abschließ noch 10

Beispiel 5.2. Man berechne das Integral 1 0 tan x dx = ln(cos 1) approximativ mittels einer Riemann-Summe mit äquidistanter Unterteilung in n = 2 k, k = 1, 2,..., 15 Intervalle und stelle den Fehler graphisch in Abhängigkeit von n dar. Zunächst schreiben wir ein M-File, daß für gegebenes n die Riemann-Summe berechnet function [ app ] = riemanntan ( k ) % Funktion b e r e c h n e t d i e Riemannsumme von i n t 0 ˆ1 tan ( x ) dx % mit 2ˆ k I n t e r v a l l e n, % Input : k % Output : app.. Die Riemannsumme n=2ˆk ; % Anz I n t e r v a l l e h=1/n ; % S c h r i t t w e i t e app=0; % I n t e g r a l auf 0 s e t z e n for i =1:n x=(( i 1)+rand ( 1 ) ) h ; % z u f a e l l i g e f=tan ( x ) ; app=app+h f ; % Aufsummieren S t u e t z s t e l l e Anschließ können wir den Fehler wiefolgt visualisieren. Hierbei sollten aber die Achsen logarithmisch skaliert werden. exakt= log ( cos ( 1 ) ) ; for k=1:15 appint=riemanntan ( k ) ; error ( k)=abs ( appint exakt ) ; n=2ˆk ; x ( k)=n ; 11

loglog ( x, error, l i n e w i d t h, 2 ) ; xlabel ( Anzahl I n t e r v a l l e ) ; % x Achse bezeichnen ylabel ( Fehler ) ; % y Achse bezeichnen % Programm z e i c h n e t den Fehler b e i der I n t e g r a t i o n % e i n e r Riemannsumme mit % n=2ˆk, k =1..15 S t u e t z s t e l l e n % Programm r u f t riemanntan.m 12