Einige Beispiele zu Drehmatrizen Dr. W. Tenten fürs Forum "Abenteuer-Universum" zusammengestellt Nov. 008 Die Hauptachsentransformation einer Quadrik in zwei Variablen liefert als Ergebnis eine Normalform eines Kegelschnittes. Wir bezeichnen im Folgenden die Variablen mit x und y statt mit x und x und benutzen die Matrizendarstellung [ x y ] a, x y x + [ a a ] + α 0. y Zunächst bestimmen wir die Eigenwerte λ und λ der symmetrischen Matrix A. a, Wir schreiben der Kürze halber α, α, α 4 a, und bekommen für A α α α α 4 nach einer früher gewonnenen Formel die Eigenwerte α α 4 λ + + ( α α 4 ) + 4 α 4 α α 4 ( α α 4 ) + 4 α 4 λ + und die zugehörigen Eigenvektoren v j λ j α 4, j,. α Die entsprechenden normierten Eigenvektoren bilden bei geeigneter Orientierung eine Drehmatrix R φ (Vorzeichen so setzen, daß die Determinante wird), welche den Kegelschnitt so dreht, daß seine Symmetrieachsen (Hauptachsen) danach parallel zu den Koordinatenachsen sind. Es gibt (durch Wahl der Reihenfolge der Eigenwerte bzw. der Koordinaten) mehrere Möglichkeiten, zu drehen - je nach Symmetrie eine, zwei oder vier! Die linearen Glieder muss man gegebenenfalls mit transformieren, also [ a, a ] durch [ a, a ] R φ ersetzen. Abschließend kann man durch quadratische Ergänzung die Koeffizienten der linearen Glieder zum Verschwinden
bringen. Beispiel : Eine gedrehte Ellipse > restart; interface(warnlevel0): with(plots): with(plottools): setoptions(scalingconstrained,axesnone): setoptionsd(scalingconstrained,stylepatchnogrid, lightmodellight): with(linalg): gren:color(rgb,0,.8,0): > q:(x,y)->6*x^+9*y^+4*x*y-80: 'q(x,y)'q(x,y); q ( x, y ) 6 x + 9 y + 4 y x 80 > Elschief:implicitplot(q(x,y)0,x-..,y-..,axesnormal): Elschief;
Symmetrische Matrix: > A:matrix(,,[6,,,9]): 'A'evalm(A); A 6 9 Charakteristisches Polynom: > p[a](x)sort(det(diag(x,x)-a),x); p A ( x ) x 65 x + 900 Eigenwerte: > print(lambda[]0,lambda[]45); λ 0, λ 45 Eigenvektoren: > print(v[] matrix(,,[9,]),v[] matrix(,,[,-9])); v 9, v -9
Drehmatrizen aus normierten Eigenvektoren: > print('r[phi]' matrix(,,[/5,-4/5,4/5,/5]),'r[psi]' matrix(,,[4/5,/5,-/5,4/5]));, R φ 5-4 5 4 5 5 R ψ 4 5 5-5 4 5 Drehwinkel: φ arccos 5 arcsin 4 5 arctan 4.979580, ψ φ π Achsenparallele Ellipsen: + 0 x 45 y 80 0 bzw. + 45 x 0 y 80 0 Normalformen: + x y bzw. + x y > Elnorm:implicitplot(0*x^+45*y^-800,x-..,y-..,colorb lue): Elsenk:implicitplot(45*x^+0*y^-800,x-..,y-..,colorg ren): display(elschief,elnorm,elsenk,axesnormal);
> Alternative Berechnung der Hauptachsentransformation Der Drehwinkel φ und die gesuchte Drehmatrix R φ cos( φ) sin( φ) sin( φ ) cos( φ) c s s c läßt sich auch direkt ohne Eigenwertberechnung finden: In der transformierten Matrix T β R φ A Rφ β β β 4 c sα α s c α c s α 4 s c α c + α s c + α 4 s ( α 4 α ) s c + α ( c s ) ( α 4 α ) s c + α ( c s ) α s α s c + α 4 c lautet der nicht auf der Diagonale stehende Koeffizient
β ( α 4 α ) sin( φ ) cos( φ) + α ( cos( φ) sin( φ) ) ( α 4 α ) sin( φ) + α cos( φ ). (Trigonometrische Summenformeln!) Um β 0, also eine Diagonalmatrix zu erreichen, setzt man cos( φ) α α 4 α cot( φ ) bzw. φ α 4 arccot sin( φ) α. α Weitere Lösungswinkel erhält man durch Addition ganzzahliger Vielfacher von π/ (Vierteldrehungen). Der Sonderfall α 0 ist hier unproblematisch, da A dann ja bereits eine Diagonalmatrix ist und man für R φ die Einheitsmatrix, d.h. φ 0 nehmen kann, was auch mit der Formel arccot( ) arccot( ) 0 zusammenpaßt. Beispiel : Eine gedrehte Hyperbel > q:(x,y)->x^+y^-4*x*y-: 'q(x,y)'q(x,y); q ( x, y ) x + y 4 y x > Hyschief:implicitplot(q(x,y)0,x-4..4,y-4..4,axesnormal): Hyschief;
Symmetrische Matrix: > A:matrix(,,[,-,-,]): 'A'evalm(A); Drehwinkel: cot( φ ) α α 4 0, α A - - π φ 4, cos( φ), sin( φ) Drehmatrizen: bzw. ψ π 4 (allgemein φ + n π ). > R: (/)*matrix(,,[sqrt(),-sqrt(),sqrt(),sqrt()]): print('r[phi]' R,'R[psi]' (/)*matrix(,,[sqrt(),sqrt(),-sqrt(),sqrt()]));
R φ, R ψ > print('r[phi]^t*a*r[phi]' evalm(transpose(r)&*a&*r)), 'R[psi]^T*A*R[psi]' evalm(r&*a&*transpose(r)); Achsenparallele Hyperbeln: T - 0 R φ A Rφ 0 T 0 R ψ A Rψ 0 - Normalformen: x + y 0 bzw. x y 0 x y + x y bzw.. > Hywaag:implicitplot(-x^+*y^-0,x-4..4,y-4..4,colorblue): Hysenk:implicitplot(*x^-y^-0,x-4..4,y-4..4,colorgren): display(hyschief,hywaag,hysenk,axesnormal);
> Die Hyperbel mit den "waagerechten" Ästen entstand durch Drehung um π/4 (Vierteldrehung gegen den Uhrzeigersinn), während die Hyperbel mit den "senkrechten" Ästen durch Drehung um π/4 (Vierteldrehung im Uhrzeigersinn) entstand. Verschiebung durch linearen Anteil: Hätten wir z.b. die Quadrik x + y 4 y x + x + y 5 0 zu untersuchen, so wäre noch der lineare Anteil zu transformieren, also [, ] R φ [, 0 ] zu bilden. Die transformierte Quadrik lautete dann x + y + x 5 0 bzw. ( x ) + y 0, und die ursprüngliche "waagerechte" Hyperbel wäre um Beispiel : Eine schiefe Parabel nach rechts verschoben.
> q:(x,y)->x^+*y^+*sqrt()*x*y-sqrt()*x+y+4: 'q(x,y)'q(x,y); q ( x, y ) x + y + x y x + y + 4 > Parschief:implicitplot(q(x,y)0,x0..6,y-5..0,axesnormal,nump oints000,view[-6..6,-6..6]): Parschief; Symmetrische Matrix: > A:matrix(,,[,sqrt(),sqrt(),]): 'A'evalm(A); A Charakteristisches Polynom: > p[a](x)sort(det(diag(x,x)-a),x); p A ( x ) 4 x x
Eigenwerte: > print(lambda[]0,lambda[]4); λ 0, λ 4 Eigenvektoren: > print(v[] matrix(,,[-,sqrt()]),v[] matrix(,,[,sqrt()])); - v, v Eine Drehmatrix (Determinante ) und eine Spiegelungsmatrix (Determinante -, symmetrisch): > print('r[phi]' matrix(,,[sqrt()/,/,-/,sqrt()/]), 'S[psi]' matrix(,,[/,sqrt()/,sqrt()/,-/])); R φ, S - ψ - π n π ψ π Drehwinkel: φ +, Steigungswinkel der Spiegelgeraden: 6 6. Transformation des linearen Anteils: > print('r[phi]^t'*matrix(,,[-sqrt(),]) evalm(matrix(,,[sqrt()/,-/,/,sqrt()/])&*matrix(,,[-s qrt(),])), 'S[psi]'*matrix(,,[-sqrt(),]) evalm(matrix(,,[/,sqrt()/,sqrt()/,-/])&*matrix(,,[-s qrt(),]))); Achsenparallele Parabeln: T R φ -, S 0 ψ 0-4 y x 4 0, 4 y + x + 4 0, 4 x y 4 0, 4 x + y + 4 0, x y +, x y, y x +, y x > Par:plot([-*y^-,y,y-..],colorblue): Par:plot([*y^+,y,y-..],colorblue): Par:plot([x,*x^+,x-..],colorgren): Par4:plot([x,-*x^-,x-..],colorgren): display(parschief,par,par,par,par4,axesnormal,view[-6..6,-6..6]);
> Invarianz des charakteristischen Polynoms Wegen der Produktregel für Determinanten gilt für Transformationen mit invertierbarer Matrix B det( B ( ) A B ) det ( B ) ( ) det( A ) det( B ) det( A ). Deshalb bleibt das charakteristische Polynom unverändert:. p A pb ( ) A B Insbesondere hat die transformierte Matrix B ( ) Vielfachheit) und auch die gleiche Spur wie A. Klassifikation der Kegelschnitte Wie erkennt man bei einer ebenen Quadrik A B genau die gleichen Eigenwerte (inkl. x + a, x + x x + x + a, x + a, 0
den Typ des dargestellten Kegelschnitts? Mit Hilfe der Eigenwerte bzw. der Determinante d det a, a, a, kann man sofort eine grobe Einteilung der Kegelschnitte vornehmen: Ellipse, Punkt oder leere Menge bei gleichem Vorzeichen der Eigenwerte (d > 0) Hyperbel oder Geradenpaar bei verschiedenem Vorzeichen der Eigenwerte (d < 0) Parabel, Parallelenpaar, Gerade oder leere Menge, falls der Eigenwert 0 auftritt (d 0). Die Achsenabschnitte bei Ellipsen und Hyperbeln findet man als reziproke Quadratwurzeln aus den positiven Eigenwerten. Zur feineren Unterscheidung braucht man außer d auch noch die Determinante der entsprechenden räumlichen Quadrik: Mit s + d a, det a, a,. a, a, a, hat man dann folgende Kriterien und Normalformen: d > 0, s d < 0 : Ellipse b x + a y a b d < 0, d 0, s d > 0 : leer b x + a y a b d 0 : Punkt b x + a y 0 d 0 : Hyperbel b x a y a b d 0 : sich schneidende Geraden b x a y 0 d 0 : Parabel x a y 0 d 0 : Parallele Geraden oder leer x a 0 Im letzten Fall handelt es sich nur um eine Gerade, falls die x-matrix den Rang hat. Satz über die Hauptachsentransformation symmetrischer Matrizen Jede symmetrische Matrix A aus R ( n x n ) hat nur reelle Eigenwerte und besitzt Orthonormalbasen (b,...,b n ) aus reellen Eigenvektoren. Spaltenweise zusammengesetzt bilden diese eine orthogonale Matrix B, so daß B T A B Λ eine Diagonalmatrix wird, deren Diagonalelemente die Eigenwerte von A sind.. Wir betrachten zunächst einen Eigenwert λ aus C und dazu einen Eigenvektor v. Es gilt also
A v λ v und folglich wegen A A A T : λ v T v ( λ v ) T v ( A v ) T v v T A T v v T A v λ v T v. Da v nicht der Nullvektor ist, also v T v v 0 gilt, muß λ λ reell sein.. Eigenvektoren zu verschiedenen Eigenwerten stehen aufeinander senkrecht: Ist A v λ v und A w µ w, so folgt und für v T ( λ µ ) w v T λ w v T µ w v T A w v T A w 0, λ µ erzwingt das v T w 0.. Jeder Eigenraum besitzt eine Orthonormalbasis. Wie man eine solche aus einer beliebigen Basis gewinnt, beschreiben wir weiter unten. 4. Man muß sich nun noch überlegen, daß algebraische und geometrische Vielfachheit der Eigenwerte im Falle einer symmetrischen Matrix übereinstimmen (was wir hier übergehen wollen). Dann kann man die in. gewonnenen Orthonormalbasen der Eigenräume zu einer Orthonormalbasis des Gesamtraumes R n zusammensetzen und bekommt mit der daraus gebauten Transformation die gewünschte Diagonalgestalt. Bei (x)-matrizen geht das einfach: - Entweder sind alle drei Eigenwerte verschieden, dann stehen die zugehörigen Eigenvektoren automatisch aufeinander senkrecht und müssen nur noch ggf. normiert werden, - oder alle drei Eigenvektoren sind gleich; dann ist A ein Vielfaches der Einheitsmatrix, und man kann irgendeine Orthonormalbasis des R (z.b. die kanonische) nehmen, - oder A hat einen einfachen und einen doppelten Eigenwert; dann nimmt man je einen normierten Eigenvektor zu diesen beiden Eigenwerten und ergänzt diese (orthogonalen!) Vektoren durch deren Kreuzprodukt zu einer Orthonormalbasis. Zusammenfassung: Hauptachsentransformation. Bestimmung aller Eigenwerte (notfalls näherungsweise).. Berechnung von Basen der Eigenräume mittels Elimination nach Gauß-Jordan.. Umformung in Orthonormalbasen. 4. Zusammensetzen zur Transformationsmatrix. Es bleibt zu klären, wie man aus einer gegebenen Basis eine Orthonormalbasis macht. Orthonormierung nach Gram-Schmidt: Ist c,...,c k Orthonormalbasis eines Unterraumes U und b ein nicht in U liegender Vektor, so erhält man eine Orthonormalbasis c,...,c k + des von U und b zusammen aufgespannten Raumes, indem man die Projektion von b auf U bildet: b U : b c +...+b ck, wobei b cj β j c j die Projektion von b auf c j mit β j b T c j ist, und den Lotvektor b b U 0 normiert, also c k + ( b b U ) setzt (zur Erinnerung: Der normierte Vektor u 0 entsteht aus u,
indem man durch den Betrag u dividiert). Wir verifizieren mit Hilfe des Skalarprodukts, daß b b U und damit auch c k + tatsächlich senkrecht auf jedem der Vektoren c j, j,...,k steht: T c j b k i T β i c i c j b T T wegen c j cj und c j ci 0 für i j. k i T T β i c j ci c j b b T c j 0 Durch Iteration dieses Verfahrens erhält man aus einer beliebigen Basis b,...,b r sukzessive eine Orthonormalbasis 0 0 T T T c : b, c : ( b c b b ), c : ( b c b c c b c ) 0... In der Praxis empfiehlt es sich meist, die Normierung erst ganz am Schluß vorzunehmen, um in den Zwischenschritten Wurzeln zu vermeiden: c : b, c : b α, c, c : b α, c α, c usw. mit α i, j T c i bj c i T ci Dann wird c 0, c 0, c 0... eine Orthonormalbasis. Beispiel 4: Orthonormalbasis eines Lösungsraumes Für das Gleichungssystem A x 0 mit der symmetrischen Matrix 4 5 4 5 6 A : 4 5 6 7 4 5 6 7 8 5 6 7 8 9 berechnet man mit dem Gauß-Jordan-Verfahren z.b. folgende Basisvektoren: b [,,, 0, 0 ], b [,, 0,, 0 ], b [, 4, 0, 0, ]. Hieraus bekommt man erst eine Orthogonalbasis durch die folgenden Schritte des Gram-Schmidt-Verfahrens: T c [,,, 0, 0 ], c c 6, T c b [,,, 0, 0 ] T [,, 0,, 0 ] 4, α,, c b α, c [,, 0,, 0 ] T c b [,,, 0, 0 ] T [, 4, 0, 0, ], 6, [,,, 0, 0],,,, 4 0, c T c 0, α,
T T c b,,,, 4 0 [, 4, 0, 0, ] 0, α,, [,,, 0, 0] c b α, c α, c [, 4, 0, 0, ],,,, 6 4 0,,,, 0, c T c 5. Probe: c c 0, c c 0, c c 0. Durch Normieren der Vektoren c j ergibt sich nun eine Orthonormalbasis: 0 [,,, 0, 0 ] 0 [,, 4,, 0] 0 [, 0,,, ] c, c, c 6 0 0. MAPLE berechnet mit dem Befehl nullspace eine Basis des Lösungsraums von A x 0... > A:matrix(5,5,[,,,4,5,,,4,5,6,,4,5,6,7,4,5,6,7,8,5,6,7,8,9 ]); nullspace(a); 4 5 4 5 6 A : 4 5 6 7 4 5 6 7 8 5 6 7 8 9 {[, -,, 0, 0 ], [, -, 0,, 0 ], [, -4, 0, 0, ] } und daraus mit dem Befehl GramSchmidt eine Orthogonalbasis: > GramSchmidt(%); { [, -,, 0, 0 ],, } - -4,,,, 0,,,, 0 - - Mit dem Befehl normalize wird schließlich noch normiert: > c[]:normalize([, -,, 0, 0]); c[]:normalize([/, -/, -4/,, 0]); c[]:normalize([/, 0, -/, -, ]); > c : c : c : 6 6 6,,, 0, 0 6 6 0 0,, 0 0,, 0 5 0 5 0 5 5 5, 0,,, 0 0 5 Wie man sieht, beseitigt MAPLE alle irrationalen Nenner. 5 5