. 1
( 11 .)



>>

MATLAB im Selbststudium
Eine Einfuhrung
¨
Christof Buskens
¨


Zentrum fur Technomathematik
¨
Fachbereich Mathematik
Universit¨t Bremen
a
28359 Bremen, Germany




Vorlesungsbegleitende Ausarbeitung
Sommersemester 2004




(Unkorrigierte Fassung)
Vorwort
Die vorliegende Ausarbeitung entstand wahrend meiner Tatigkeit als Privatdo-
¨ ¨
zent am Lehrstuhl fur Ingenieurmathematik der Universit¨t Bayreuth. Sie ent-
a
¨
stand im Rahmen einer vorlesungsbegleitenden Lehrveranstaltung, die ich im
Sommersemster 2003 gehalten habe. Als Vorlage dienten die Aufzeichnungen von
Prof. Dr. Lars Grune, dem ich auf diesem Wege herzlich danken mochte.
¨ ¨




¨
Bayreuth, April 2004 Christof Buskens
Inhaltsverzeichnis


Inhaltsverzeichnis 5


1 Einfuhrung in Matlab 7
¨
1.1 Matrizen und Vektoren . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 ™FOR™, ™IF™, ™WHILE™ und ™BREAK™ Anweisungen . . . . . . . . . 9
1.3 Plotten von Daten und Funktionen . . . . . . . . . . . . . . . . . 13
1.3.1 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3.2 Erweiterte Grundlagen . . . . . . . . . . . . . . . . . . . . 14
1.3.3 3D Gra¬k . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3.4 (*) Handle-Graphics . . . . . . . . . . . . . . . . . . . . . 21
1.4 Ausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26


2 Matlab, ein mathematisches Labor 29
2.1 Lineare Gleichungssysteme . . . . . . . . . . . . . . . . . . . . . . 29
2.1.1 Direkte Verfahren . . . . . . . . . . . . . . . . . . . . . . . 29
2.1.2 Iterative Verfahren . . . . . . . . . . . . . . . . . . . . . . 30
2.2 De¬nition von Funktionen . . . . . . . . . . . . . . . . . . . . . . 32
2.2.1 Funktionen von Zahlen . . . . . . . . . . . . . . . . . . . . 32
2.2.2 Funktionen von Vektoren und Matrizen . . . . . . . . . . . 33
2.2.3 Funktionen von Funktionen . . . . . . . . . . . . . . . . . 34
2.3 Nullstellen nichtlinearer Gleichungen . . . . . . . . . . . . . . . . 36
2.4 Polynome und Interpolation . . . . . . . . . . . . . . . . . . . . . 38
2.5 Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.6 Di¬erentialgleichungen . . . . . . . . . . . . . . . . . . . . . . . . 44

5
6 Inhaltsverzeichnis




3 Sonstiges 53
3.1 E¬zienzsteigerung in Matlab . . . . . . . . . . . . . . . . . . . . 53
3.1.1 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.1.2 Pro¬ler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Kapitel 1

Einfuhrung in Matlab
¨

1.1 Matrizen und Vektoren
Matrizen kann man einfach zeilenweise ™per Hand™ eingeben:

A = [1 2 3; 4 5 6; 7 8 9; 10 11 12]

Oder, wenn man eine Matrix ™leer™ de¬nieren m¨chte, z.B. um darin ein Rechen-
o
ergebnis abzulegen

B = zeros(4,3)

Spaltenvektoren gibt man einfach als einspaltige Matrizen ein

b = [3; 4; 5]

und Zeilenvektoren als einzeilige Matrizen

c = [3 4 5]

MATLAB kann Matrizen transponieren

A™

und Matrizen mit Matrizen oder Vektoren multiplizieren

C = [6 5; 4 3; 2 1]
A*C
A*b

Man kann auf die Elemente einer Matrix oder eines Vektors einzeln zugreifen

7
8 Einfuhrung in Matlab
¨




A(1,1)
A(2,3)
b(3)

und ebenso auf einzelne Zeilen

A(2,:)

oder Spalten

A(:,3)

Diese kann man nicht nur auslesen, sondern auch zuweisen

A(:,2) = [1; 2; 3; 4]

Man kann (Zeilen)-Vektoren mit abgez¨hlten Eintr¨gen auch mit einer Abkurzung
a a ¨
de¬nieren. Hierbei gibt man den ersten Eintrag, die Schrittweite und den letzten
Eintrag, jeweils durch Doppelpunkt getrennt an. Z.B.: Erzeuge den Vektor [1; 2;
3; 4; 5]

t= [1:1:5]

Schließlich kann man nicht nur Matrizenrechnung direkt ausfuhren, sondern auf
¨
Vektoren und Matrizen auch komponentenweise rechnen Hierzu setzt man einen
™.™ vor den entsprechenden mathematischen Operator. Um z.B. jedes Element des
obigen Vektors t mit sich selbst zu multiplizieren, berechnet man

t.*t

Beachte, dass t*t aus Dimensionsgrunden eine Fehlermeldung ergibt.
¨
Wir illustrieren einige Matrix-Operationen, die aus der Vorlesung bzw. aus
den grundlegenden Mathematikvorlesungen bekannt sind: Seien

A = [ 1 5 6; 7 9 6; 2 3 4]
b = [29; 43; 20]

Berechnung der Determinante:

det(A)

Berechnung der Inversen

inv(A)

Berechnung von Vektornormen . fur p=1,2,unendlich (inf)
¨
p
Einfuhrung in Matlab 9
¨




norm(b,1)
norm(b,2)
norm(b,inf)

Berechnung der zugeh¨rigen induzierten Matrixnormen
o

norm(A,1)
norm(A,2)
norm(A,inf)

Berechnung der Kondition einer Matrix fur p=1,2,unendlich (inf)
¨

cond(A,1)
cond(A,2)
cond(A,inf)


1.2 ™FOR™, ™IF™, ™WHILE™ und ™BREAK™ Anwei-
sungen
MATLAB™s Programmiersprache bietet eine Reihe von M¨glichkeiten, den Pro-
o
grammablauf in einem M-File zu steuern. Wir werden hier einige kennen lernen:
Die ™for™ Schleife erm¨glicht es, eine oder mehrere Operationen nacheinander
o
fur verschiedene Werte einer Variablen auszufuhren Der mehrfach auszufuhrende
¨ ¨ ¨
Block von Operationen wird mit ™end™ beendet.
Beispiel: Ausgabe der ersten 10 Quadratzahlen:

for i = 1:10
i^2
end
input(™Druecke RETURN™);

Schleifen konnen auch ruckwarts zahlen, dabei muss zwischen Anfangs- und
¨ ¨ ¨ ¨
Endwert die Schrittweite (hier ™-1™) angegeben werden

for i= 10:-1:1
sqrt(i)
end
input(™Druecke RETURN™);

Desweiteren kann man Schleifen verschachteln
10 Einfuhrung in Matlab
¨




for i = 1:10
i
for j = 10:-1:i
j
end
end
input(™Druecke RETURN™);

Mit solchen Schleifen kann man z.B. eine Matrizenmultiplikation programmieren

A = [1 2 3; 4 5 6; 7 8 9]
B = [5 4 6; 1 7 5; 3 9 6]
AB = zeros(3,3)
for i=1:3
for j=1:3
for k=1:3
AB(i,j) = AB(i,j) + A(i,k)*B(k,j);
end
end
end
AB
input(™Druecke RETURN™);

Oft will man abh¨ngig von Werten von Variablen unterschiedliche Anwei-
a
sungen ausfuhren. Dazu dient die ™if™ Anweisung. Nach ™if™ steht eine logische
¨
Aussage. Ist diese wahr, werden die Anweisungen im nachsten Block (bis zum
¨
n¨chsten ™end™) ausgefuhrt
a ¨

for i=1:10
i
if i>5

. 1
( 11 .)



>>