Vektoren - · PDF file2.3. GUI 21 Abbildung 2.1: Einfaches GUI zur Manipulation von Vektoren...

5
Kapitel 2 Vektoren In diesem Kapitel werden wir im wesentlichen die verschiedenen Formen der Darstellung von Vektoren in MatLab sowie Verkn¨ upfungen zwischen Vektoren betrachten. In letzterem Punkt ist die Darstellung von Vektoren bei den verschiedenen Produkten von Bedeutung. 2.1 Darstellung Die Darstellung von Vektoren in MatLab wurde bereits kurz in Abschn. 1.3.1 angesprochen. Formal unterscheidet MatLab nicht zwischen Vektoren und Matrizen sondern behandelt bei- de als Matrix, wobei ein Zeilenvektor eine Matrix mit nur einer Zeile ist, ein Spaltenvektor eine Matrix mit nur einer Spalte. MatLab ist sehr empfindlich in der Unterscheidung zwi- schen Zeilen- und Spaltenvektoren. Die Transponierte einer Matrix entsteht durch Vertauschen von Zeilen und Spalten: A T =(a ij ) T = a ji . Ein Zeilenvektor l¨ asst sich daher in einen Spaltenvektor umwandeln, indem man ihn trans- poniert: >> a=[1 2 3] a= 1 2 3 >> b = a’ b= 1 2 3 Dabei weist das Hochkomma MatLab an, die Transponierte des Vektors zu bilden. 2.1.1 Subtraktion und Addition Matrizen k¨ onnen nur dann addiert oder subtrahiert werden, wenn sie gleiche Dimensionen haben. In unserem Fall kann eine Addition zwischen Spaltenvektoren oder zwischen Zeilen- vektoren erfolgen, es kann jedoch nicht ein Spalten- zu einem Zeilenvektor addiert werden. Mit den Vektoren wie oben liefert MatLab >> a+b ??? Error using ==> plus Matrix dimensions must agree. Beschr¨ anken wir uns jedoch auf eine der beiden Arten von Vektoren, so lassen sich die Operationen direkt ausf¨ uhren. 17

Transcript of Vektoren - · PDF file2.3. GUI 21 Abbildung 2.1: Einfaches GUI zur Manipulation von Vektoren...

Page 1: Vektoren -  · PDF file2.3. GUI 21 Abbildung 2.1: Einfaches GUI zur Manipulation von Vektoren Fragen Frage 8 Welche Verfahren zur Multiplikation von Vektoren stehen in MatLab zur

Kapitel 2Vektoren

In diesem Kapitel werden wir im wesentlichen die verschiedenen Formen der Darstellungvon Vektoren in MatLab sowie Verknupfungen zwischen Vektoren betrachten. In letzteremPunkt ist die Darstellung von Vektoren bei den verschiedenen Produkten von Bedeutung.

2.1 Darstellung

Die Darstellung von Vektoren in MatLab wurde bereits kurz in Abschn. 1.3.1 angesprochen.Formal unterscheidet MatLab nicht zwischen Vektoren und Matrizen sondern behandelt bei-de als Matrix, wobei ein Zeilenvektor eine Matrix mit nur einer Zeile ist, ein Spaltenvektoreine Matrix mit nur einer Spalte. MatLab ist sehr empfindlich in der Unterscheidung zwi-schen Zeilen- und Spaltenvektoren.

Die Transponierte einer Matrix entsteht durch Vertauschen von Zeilen und Spalten:

AT = (aij)T = aji .

Ein Zeilenvektor lasst sich daher in einen Spaltenvektor umwandeln, indem man ihn trans-poniert:

>> a=[1 2 3] ←↩a =

1 2 3>> b = a’ ←↩b =

123

Dabei weist das Hochkomma ’ MatLab an, die Transponierte des Vektors zu bilden. ’

2.1.1 Subtraktion und Addition

Matrizen konnen nur dann addiert oder subtrahiert werden, wenn sie gleiche Dimensionenhaben. In unserem Fall kann eine Addition zwischen Spaltenvektoren oder zwischen Zeilen-vektoren erfolgen, es kann jedoch nicht ein Spalten- zu einem Zeilenvektor addiert werden.Mit den Vektoren wie oben liefert MatLab

>> a + b ←↩??? Error using ==> plusMatrix dimensions must agree.

Beschranken wir uns jedoch auf eine der beiden Arten von Vektoren, so lassen sich dieOperationen direkt ausfuhren.

17

Page 2: Vektoren -  · PDF file2.3. GUI 21 Abbildung 2.1: Einfaches GUI zur Manipulation von Vektoren Fragen Frage 8 Welche Verfahren zur Multiplikation von Vektoren stehen in MatLab zur

18 KAPITEL 2. VEKTOREN

Beispiel 4 Aus den drei Vektoren ~a = ( 3 −2 1 ),~b = (−2 3 1 ) und ~c = ( 2 3 −1 )

ist die Summe, das Doppelte des Vektors ~b sowie der Ausdruck ~a + 2~b − 7~c zu bestimmen.Dazu verwenden wir die Befehlssequenz

>> a=[3 -2 1]; b=[-2 3 1]; c=[2 3 -1]; ←↩>> d = a + b + c ←↩d =

3 4 1>> e = 2*b ←↩e =

−4 6 2>> f = a + 2*b -7*c ←↩f =

−15 −17 10

In dieser Darstellung haben wir alle Vektoren als Zeilenvektoren aufgefasst. Wir hatten alter-nativ auch alle Vektoren als Spaltenvektoren schreiben konnen. Die entsprechende Sequenzin MatLab sieht dann folgendermaßen aus:

>> a=[3;-2;1]; b=[-2;3;1]; c=[2;3;-1]; ←↩>> d = a + b + c ←↩d =

341

>> e = 2*b ←↩e =

−462

>> f = a + 2*b -7*c ←↩f =

−15−1710

2

2.1.2 Krummlinige Koordinaten

MatLab stellt fur die Umwandlung von Vektoren von einem in ein anderes Koordinatensys-tem die folgenden Routinen zur Verfugung:

cart2pol [THETA,RHO,Z] = cart2pol(X,Y,Z) kartesisch in Polar oder Zylindercart2sph [THETA,PHI,R] = cart2sph(X,Y,Z) kartesisch in Kugelpol2cart [X,Y,Z] = pol2cart(THETA,RHO,Z) Polar bzw. Zylinder in kartesischsph2cart [x,y,z] = sph2cart(THETA,PHI,R) Kugel in kartesisch

MatLab unterscheidet nicht zwischen Polar- und Zylinderkoordinaten: werden drei Kompo-nenten ubergeben, so interpretiert MatLab dies als Zylinderkoordinaten; bei zwei Kompo-nenten sind es Polarkoordinaten.

Formal werden alle vier Routinen gleich verwendet: der Vektor ist in drei Komponentengegeben, der Output der Routine ist wieder ein System aus drei Zahlen. Als Beispiel wandelnwir kartesische Koordinaten in Kugelkoordinaten um:cart2sph

>> x=2;y=3;z=4; [Theta,Phi,R] = cart2sph(x,y,z) ←↩THETA =

0.9828PHI =

0.8372R =

5.3852

12. Januar 2005 c© M.-B. Kallenrode

Page 3: Vektoren -  · PDF file2.3. GUI 21 Abbildung 2.1: Einfaches GUI zur Manipulation von Vektoren Fragen Frage 8 Welche Verfahren zur Multiplikation von Vektoren stehen in MatLab zur

2.2. PRODUKTE 19

2.2 Produkte

Stellt man die Produkte uber dot bzw. cross dar, so gilt das bei der Addition gesagte: es istegal, ob die Vektoren Zeilen- oder Spaltenvektoren sind, es mussen nur alle Multiplikandendie gleiche Form haben bzw. durch Transposition auf gleiche Form gebracht werden. Bei derVerwendung des Multiplikationszeichens * dagegen will MatLab eine Matrixmultiplikationdurchfuhren und es gelten die bereits in Abschn. 1.3.1 erwahnten Einschrankungen.

2.2.1 Skalarprodukt

Das Skalarprodukt wird durch den Befehl dot ausgefuhrt: dot

>> a=[3;-2;1]; b=[-2;3;1]; ←↩>> c = dot(a,b) ←↩c =

-11

Alternativ konnen wir das Skalarprodukt auch durch punktweise Multiplikation und an-schließende Summation der Produkte bestimmen:

>> a=[3;-2;1]; b=[-2;3;1]; ←↩>> c = sum(a.*b) ←↩c =

-11

Den Betrag eines Vektors bestimmt man am einfachsten uber die Wurzel aus dem Ska-larprodukt des Vektors mit sich selbst:

>> a=[3 -2 1]; betrag a=sqrt(dot(a,a)) ←↩betrag a =

3.7417

MatLab kennt fur den Betrag eines Vektors auch die Abkurzung norm: betrag a=norm(a). norm

2.2.2 Kreuzprodukt

Fur das Kreuzprodukt steht in MatLab der Befehl cross zur Verfugung: cross

>> a=[3;-2;1]; b=[-2;3;1]; ←↩>> c = cross(a,b) ←↩c =

−5−55

Im Gegensatz zum Skalarprodukt gibt es keine elegante Moglichkeit einer alternativenSchreibweise ohne Verwendung des Befehls cross. Ein Blick in die MatLab-Funktion crosszeigt, dass auch MatLab keine elegante Abkurzung kennt sondern die Regel zur Bildung desKreuzprodukts explizit angibt.1

2.2.3 Spatprodukt

Fur das Spatprodukt gibt es keine Abkurzung. Wir konnen es unter Verwendung von dotund cross bestimmen als

1Die m-Files der in MatLab implementierten Funktionen finden sich im Unterverzeichnis \Toolbox\matlabin verschiedenen Unterverzeichnissen, in diesem Fall in specfun. Ein Blick in die im gleichen Unterverzeichniszu findende Funktion dot zeigt, das dort in der Tat die weiter oben eingefuhrte explizite Variante fur dasSkalarprodukt verwendet wird.

c© M.-B. Kallenrode 12. Januar 2005

Page 4: Vektoren -  · PDF file2.3. GUI 21 Abbildung 2.1: Einfaches GUI zur Manipulation von Vektoren Fragen Frage 8 Welche Verfahren zur Multiplikation von Vektoren stehen in MatLab zur

20 KAPITEL 2. VEKTOREN

>> a=[3;-2;1]; b=[-2;3;1]; c=[2;3;-1]; ←↩>> f = dot(cross(a,b),c) ←↩f =

-30

Wir mussen nicht alle Vektoren einzeln eingeben sondern konnen sie auch als eine Matrixmit den Vektoren als Spalten eingeben. Fur obiges Spatprodukt lasst sich auch schreiben

>> A=[3 -2 2;-2 3 3;1 1 -1] ; ←↩>> f=dot(cross(A(1,:),A(2,:)),A(3,:)) ←↩f =

-30

oder wenn man berucksichtigt, dass das Spatprodukt die mit Hilfe des Befehls det Determi-det

nante der aus den drei Vektoren gebildeten Matrix ist:

>> A=[3 -2 2;-2 3 3;1 1 -1] ; ←↩>> f= det(A) ←↩f =

-30

2.2.4 Dyadisches Produkt

Die beiden Vektoren ~a und ~b aus Beispiel 4 lassen sich nicht direkt mit Hilfe des Multiplika-tionszeichens * multiplizieren. Transponieren eines der Vektoren liefert jedoch entweder einSkalarprodukt aus einem Zeilen- und einem Spaltenvektor oder ein dyadisches Produkt auseinem Spalten- und einem Zeilenvektor:

>> a=[3 -2 1]; b=[-2 3 1]; ←↩>> sp=a*b’ ←↩sp=

-11>> dp=a’*b ←↩dp=

−6 4 −29 −6 33 −2 1

Beide Vektoren werden in der ersten Zeile als Zeilenvektoren angegeben. Fur die Produktbil-dung wird jeweils einer der Vektoren durch Bildung der Transponierten in einen Spaltenvek-tor uberfuhrt. Damit konnen die Regeln der Matrixmultiplikation bei der Produktbildungberucksichtigt werden.

2.3 GUI

Die Datei vektoren enthalt ein sehr einfaches GUI, das es Ihnen erlaubt, drei Vektoreneinzugeben und auf verschiedene Weise zu verknupfen. Die drei Vektoren werden als Zeilen-vektoren

vektoren in den Feldern a, b und c im rechten oberen Teil eingeben. Werden in diese Felderkeine Werte eingetragen, so werden die vorgegebenen Vektoren verwendet. Uber ein Pop-UpMenu kann die Art der Verknupfung ausgewahlt werden. Dazu gehort die Bestimmung derWinkel zwischen den Vektoren (jeweils paarweise), die Bestimmung der Skalarprodukte, derKreuzprodukte oder des Spatprodukts. Die entsprechenden Werte werden im Feld rechts un-ten ausgegeben. Die Lage der Ausgangsvektoren wird im linken Teil des Fensters graphischdargestellt, vgl. Abb. 2.1.

Wie bei einem MatLab-Skript konnen wir die Datei direkt im Kommandofenster aufrufenoder im Editor offnen und dann mit der Taste F5 starten. Das Skript vektoren ruft eineFunktion setvektoren auf, die sich im gleichen Verzeichnis befinden muss.setvektoren

12. Januar 2005 c© M.-B. Kallenrode

Page 5: Vektoren -  · PDF file2.3. GUI 21 Abbildung 2.1: Einfaches GUI zur Manipulation von Vektoren Fragen Frage 8 Welche Verfahren zur Multiplikation von Vektoren stehen in MatLab zur

2.3. GUI 21

Abbildung 2.1: Einfaches GUI zur Manipulation von Vektoren

Fragen

Frage 8 Welche Verfahren zur Multiplikation von Vektoren stehen in MatLab zur Verfugung? Wie

unterscheiden sie sich?

Frage 9 Wie ist es moglich, eine Funktion wie cart2pol mal mit 2 und mal mit drei Ein- und

Ausgabeparametern zu betreiben?

Aufgaben

Aufgabe 6 Schreiben Sie ein MatLab-Skript zur Bestimmung des Skalarprodukts (ohne Verwen-

dung der eingebauten Funktion).

Aufgabe 7 Schreiben Sie eine MatLab-Funktion zur Bestimmung aller Produkte zweier Vektoren.

Aufgabe 8 Schreiben Sie eine MatLab-Funktion zur Bestimmung von Produkten mehrere Vek-

toren, wobei Sie Moglichkeiten zu lassen, die Art des Mehrfachprodukts auszuwahlen.

c© M.-B. Kallenrode 12. Januar 2005