vl6-evaluated.nb Vektorrechnung VL Mathematische Software WS 26/7 Rudolf Schürer Lette Änderung: 28. Jänner 27 Grundlegende Operationen Vektoren werden in Mathematica durch Listen dargestellt, deren Elemente selbst keine Listen sind. Matrien werden in Mathematica durch Listen von Vektoren gleicher Länge (Zeilenvektoren) dargestellt. v = 8α, α 2, α 3 <; m = Table@β i,, 8i, 3<, 8, 3<D; v êê MatrixForm m êê MatrixForm i k α α 2 α 3 y { i β, β,2 β,3 y β 2, β 2,2 β 2,3 k β 3, β 3,2 β 3,3 { Dimensions@vD Dimensions@mD 83< 83, 3< VectorQ und MatrixQ überprüfen, ob es sich bei einem Obekt wirklich um einen Vektor bw. eine Matrix (gemäß obiger Definition) handelt. VectorQ ê@ 84, v, m, 88<, 83, 4<<< 8False, True, False, False< MatrixQ ê@ 84, v, m, 88<, 83, 4<<< 8False, False, True, False< Einige Operationen aus der Vektorrechnung funktionieren automatisch dadurch, dass die entsprechenden Mathematica-Funktionen das Attribut Listable haben.
vl6-evaluated.nb 2 ü Addition von Vektoren v + 8a, b, c< 8a + α, b + α 2, c + α 3 < ü Multiplikation mit einem Skalar 4 v 84 α, 4 α 2, 4 α 3 < λ m êê MatrixForm i λ β, λ β,2 λ β,3 y λ β 2, λ β 2,2 λ β 2,3 k λ β 3, λ β 3,2 λ β 3,3 { ü Innere Produkte Für das innere Produkt (wischen Vektor Vektor, Vektor Matrix und Matrix Matrix) verwendet Mathematica den Operator. (Punkt) oder Dot[]. v.8, 2, 3< α + 2 α 2 + 3 α 3 Dot@v, 8, 2, 3<D α + 2 α 2 + 3 α 3 Achtung: Die normale Multiplikation (Times, â, *, ) führt (via Listable-Attribut) eine koordinatenweise Multiplikation durch. Dau gibt es kein Analogon in der aus der Mathematik bekannten Vektorrechnung. v v 8α 2, α 2 2, α 3 2 < Für Vektoren ist Dot ist das gleiche wie: Plus @@ Hv 8, 2, 3<L α + 2 α 2 + 3 α 3 v.m êê MatrixForm i α β, + α 2 β 2, + α 3 β 3, y α β,2 + α 2 β 2,2 + α 3 β 3,2 k α β,3 + α 2 β 2,3 + α 3 β 3,3 {
vl6-evaluated.nb 3 m.m êê MatrixForm i k 2 β, + β,2 β 2, + β,3 β 3, β, β,2 + β,2 β 2,2 + β,3 β 3,2 β, β,3 + β,2 β 2,3 + β,3 β 3,3 2 β, β 2, + β 2, β 2,2 + β 2,3 β 3, β,2 β 2, + β 2,2 + β 2,3 β 3,2 β,3 β 2, + β 2,2 β 2,3 + β 2,3 β 3,3 β, β 3, + β 2, β 3,2 + β 3, β 3,3 β,2 β 3, + β 2,2 β 3,2 + β 3,2 β 3,3 β,3 β 3, + β 2,3 β 3,2 + β2 3,3 Soll ein Spaltenvektor mit einem Zeilenvektor multipliiert werden, um als Ergebnis eine Matrix u erhalten, so müssen die Vektoren expliit in Matrien konvertiert werden. v.v α 2 + α 2 2 + α 3 2 Das geschieht am einfachsten mit den folgenden Operationen: eile = 8v< spalte = 8#< & ê@ v spalte = Transpose@8v<D spalte = Partition@v, D 88α, α 2, α 3 << 88α <, 8α 2 <, 8α 3 << 88α <, 8α 2 <, 8α 3 << 88α <, 8α 2 <, 8α 3 << Dimensions@vD 83< Dimensions@eileD 8, 3< Dimensions@spalteD 83, < Jett kann (mit Matrien) multipliiert werden: eile.spalte 88α 2 + α 2 2 + α 3 2 << spalte.eile êê MatrixForm i α2 α α 2 α α 3 y α α 2 α2 2 α 2 α 3 k α α 3 α 2 α 3 α2 3 { y { ü Länge eines Vektors Ab Mathematica 5 erhält man die Länge eines Vektors mit Norm[].
vl6-evaluated.nb 4 Norm@vD "######################################################################## Abs@α D 2 + Abs@α 2 D 2 + Abs@α 3 D 2 In älteren Versionen von Mathematica verwendet man: è!!!!!!!!!! v.v "######################### α 2 + α 2 2 + α 3 ü Kreuprodukt Das Kreuprodukt von wei Vektoren erhält man mit ä (eingegeben: ÂcrossÂ) oder Cross[]. Achtung: ä ist verschieden von (Â*Â)! v v 8,, < v 8, 2, 3< 83 α 2 2 α 3, 3 α + α 3, 2 α α 2 < Ein kleiner Beweis Wollen eigen: Das Kreuprodukt ist antisymmetrisch, d.h. a äb = -b äa. a b b a a b b a Simplify@%D a b + b a Problem: Mathematica weiß nicht, dass a und b Vektoren mit drei Komponenten sind! a = Table@α k, 8k, 3<D b = Table@β k, 8k, 3<D 8α, α 2, α 3 < 8β, β 2, β 3 < a b 8 α 3 β 2 + α 2 β 3, α 3 β α β 3, α 2 β + α β 2 < b a 8α 3 β 2 α 2 β 3, α 3 β + α β 3, α 2 β α β 2 <
vl6-evaluated.nb 5 % %% True Wenn symbolisch mit Vektoren gerechnet werden soll, empfiehlt es sich, für die einelnen Koordinaten (und nicht für den ganen Vektor) Variablen u benuten. Matrix Operationen Transponieren einer Matrix (Zeilen und Spaltenindex vertauschen): m êê MatrixForm i β, β,2 β,3 y β 2, β 2,2 β 2,3 k β 3, β 3,2 β 3,3 { Transpose@mD êê MatrixForm i β, β 2, β 3, y β,2 β 2,2 β 3,2 k β,3 β 2,3 β 3,3 { Determinante einer Matrix: Det@mD Inverse Matrix: β,3 β 2,2 β 3, + β,2 β 2,3 β 3, + β,3 β 2, β 3,2 β, β 2,3 β 3,2 β,2 β 2, β 3,3 + β, β 2,2 β 3,3 Hinv = Inverse@mDL êê MatrixForm i k β 2,3 β 3,2 +β 2,2 β 3,3 β,3 β 2,2 β 3,+β,2 β 2,3 β 3,+β,3 β 2, β 3,2 β, β 2,3 β 3,2 β,2 β 2, β 3,3+β, β 2,2 β β,3 β 3 3,3 β,3 β 2,2 β 3,+β,2 β 2,3 β 3,+β,3 β 2, β β 2,3 β 3, β 2, β 3,3 β,3 β 2,2 β 3, +β,2 β 2,3 β 3, +β,3 β 2, β 3,2 β, β 2,3 β 3,2 β,2 β 2, β 3,3 +β, β 2,2 β 3,3 β,3 β β,3 β 2,2 β 3, +β,2 β 2,3 β 3, +β,3 β 2, β β 2,2 β 3, +β 2, β 3,2 β,3 β 2,2 β 3,+β,2 β 2,3 β 3,+β,3 β 2, β 3,2 β, β 2,3 β 3,2 β,2 β 2, β 3,3+β, β 2,2 β β,2 β 3 3,3 β,3 β 2,2 β 3,+β,2 β 2,3 β 3,+β,3 β 2, β Beachte, dass hier uerst die inverse Matrix in der Variablen inv gespeichert wird und erst dann das Ergebnis mit MatrixForm formatiert wird. Das ist wichtig, weil man sonst mit inv nicht vernünftig weiterrechnen könnte. Simplify@m.invD êê MatrixForm Simplify@inv.mD êê MatrixForm i y k { i y k { Einheitsmatrix und Nullmatrix:
vl6-evaluated.nb 6 Diagonalmatrix: IdentityMatrix@4D êê MatrixForm Table@, 84<, 84<D êê MatrixForm i y k { i y k { DiagonalMatrix@8, 2, 4, 8<D êê MatrixForm i y 2 4 k 8 { Lineare Gleichungssysteme i 2 5 4 y 2 4 8 a = ; 4 3 k5 2 9 2{ b = 8, 2, 3, 34<; LinearSolve[ A,b] findet einen Vektor x, der das Gleichungssystem A x = b löst (partikuläre Lösung des inhomogenen Systems). Wenn das Gleichungssystem keine Lösung besitt, bricht LinearSolve mit einer Fehlermeldung ab. Probe: x = LinearSolve@a, bd 86, 2,, < a.x 8, 2, 3, 34< Wenn A singulär ist, ist die Lösung nicht eindeutig. Alle Lösungen erhält man durch Addieren der partikulären Lösung und des Lösungsraumes des homogenen Systems A x =, d.h. des Kerns von A. NullSpace ermittelt eine Basis des Kerns von A. basis = NullSpace@aD 88 2,,, <, 8, 2,, << Alle Lösungen haben also die Form x + λ basispt + λ 2 basisp2t 86 2 λ λ 2, 2 λ 2 λ 2, λ 2, λ <
vl6-evaluated.nb 7 Oder, allgemein: Oder auch: Probe: Passt! x + Sum@λ i basispit, 8i, Length@basisD<D 86 2 λ λ 2, 2 λ 2 λ 2, λ 2, λ < x + Table@λ i, 8i, Length@basisD<D.basis 86 2 λ λ 2, 2 λ 2 λ 2, λ 2, λ < a.% 86 + 2 λ + 2 H2 λ 2 λ 2 L + 4 λ 2, 8 λ + 4 H2 λ 2 λ 2 L + 2 H6 2 λ λ 2 L + λ 2, λ + 3 H2 λ 2 λ 2 L + 4 H6 2 λ λ 2 L + λ 2, 2 λ + 2 H2 λ 2 λ 2 L + 5 H6 2 λ λ 2 L + 9 λ 2 < Simplify@%D 8, 2, 3, 34< ü Beispiel Im 3 seien wei Ebenen e : 4 x + y - 3 = 7 und gegeben. Gesucht ist die Schnittgerade. i x y i 3 y i y i 3 y e 2 : y = 4 + l 2 + l 2 k { k 7 { k 3 { k { Dau müssen wir uerst die Matrix A und den Vector b für das lineare Gleichungssystem finden. Für e braucht man dau nur die Koeffiienten aus der Gleichung abschreiben. Für e 2 berechen wir uerst den Normalvektor auf e 2 und stellen damit die Ebenengleichung auf: normalvector = Cross@8, 2, 3<, 83,, <D 82, 8, 6< punkt = 83, 4, 7<; Damit ergibt sich folgende Ebenengleichung für e 2 : normalvector.8x, y, < normalvector.punkt Dot::rect : Non rectangular tensor encountered. Mehr 82, 8, 6<.886, 2,, <, y, < 4
vl6-evaluated.nb 8 Jett lässt sich die Matrix A und der Vector b leicht angeben. a = 8 84,, 3<, normalvector <; b = 87, normalvector.punkt<; Mit LinearSolve und NullSpace wird das System gelöst: LinearSolve@a, bd 82,, < NullSpace@aD 883, 3, 5<< i x y i 2 y i 3 y Daher ist die Schnittgerade gegeben durch y = - + l 3. k { k { k 5 { Plotten von Funktionen in den 2 oder 3 Bei Funktionen in den 2 oder 3 ist der Graph nur schwer oder gar nicht visualisierbar. Es ist bei solchen Funktionen oft besser, ihr Bild als Teilmenge des 2 oder 3 darustellen. ü Funktionen in den 2 Betrachten wir die beiden folgenden Funktionen von @, 2 pd Õ nach : Plot@8Cos@φD, Sin@φD<, 8φ,, 2 π<d;.5 -.5 2 3 4 5 6 - Wir können dieses beiden Funktionen auch als eine Funktion von @, 2 pd Ø 2 ansehen (also eine Kurve im 2 ), die für eden Winkel f wischen und 2 p einen Punkt HxHfL, yhfll = Hcos f, sin fl œ 2 definiert. Diese Punkte liegen auf einem Kreis, d.h. das Bild dieser Funktion ist ein Kreis. Dieses Bild lässt sich mit ParametricPlot darstellen. ParametricPlot wird genauso wie Plot aufgerufen. Die Liste von Funktionen muss genau wei Funktionen enthalten (eine für x-, eine für y-koordinate).
vl6-evaluated.nb 9 ParametricPlot@8Cos@φD, Sin@φD<, 8φ,, 2 π<, AspectRatio D;.5 - -.5.5 -.5 - Ein interessanteres Beispiel: Needs@"Graphics`Colors`"D kreis@φ_d := 8Cos@φD, Sin@φD< spirale@φ_d := φ kreis@φd ParametricPlot@ spirale@φd, 8φ,, π<, AspectRatio, PlotStyle 8Red, Thickness@ ê D<D; 2-2 - 2 3 - -2-3 Wie bei Plot kann auch bei ParametricPlot eine Liste von Funktionen angegeben werden, deren Bilder dann in ein gemeinsames Koordinatensystem geeichnet werden.
vl6-evaluated.nb ParametricPlotA 9spirale@φD, i + k Sin@ φdy spirale@φd=, { 8φ,, π<, AspectRatio, PlotPoints, PlotStyle 88Red, Thickness@ ê D<, 8Blue<<E; 3 2-3 -2-2 3 - -2-3 ü Funktionen in den 3 Wir haben gesehen, dass sich Funktionen in den 2 mit ParametricPlot darstellen lassen. Wie schaut es mit Funktionen in den 3 aus? Die folgende Funktion liefert für gegebenen Längengrad (wischen -p und p, oder wischen und 2 p) und Breitengrad (wischen -p ê 2 (Südpol) und p ê 2 (Nordpol)) die kartesischen Koordinaten des daugehörigen Punktes auf der Oberfläche einer Kugel mit Mittelpunkt im Ursprung und Radius. kugelpunkt@länge_, breite_d := 8Cos@breiteD Cos@längeD, Cos@breiteD Sin@längeD, Sin@breiteD< Das folgende Bild eigt eine Kurve, die eine Kugel schneckenförmig 5-mal umrundet und sich dabei vom Südpol um Nordpol bewegt.
vl6-evaluated.nb ParametricPlot3D@kugelpunkt@3 φ, φd, 8φ, π ê 2, π ê 2<, PlotPoints 2D; -.5 -.5.5 -.5 - - -.5.5 ParametricPlot3D stellt Kurven und Flächen im 3 dar. Funktionen @a, bd Ø 3 werden als Kurve, Funktionen @a, bd µ @c, dd Ø 3 als Fläche dargestellt, wie das folgende Beispiel eigt. Mathematica unterscheidet die beiden Fälle e nachdem ob ein Wertebereich für eine weite Variable angegeben ist. ParametricPlot3D@kugelpunkt@länge, breited, 8länge,. 2 π,.7 2 π<, 8breite, π ê 2, π ê 2<, PlotPoints 85, 4<D; -.5.5.5 -.5 - - -.5.5