Ellipse 4 in allgemeiner Lage

Prof. Dr. Dörte Haftendorn: Mathematik mit MuPAD 4 Juli 07   Update 11.07.07

Web:  https://mathe.web.leuphana.de             www.mathematik-verstehen.de ######################################################

Ganzzahlige Eigenwerte,

-----------------------------------

keg:=matrix([[29*x^2 - 6*x*y + 250*x + 21*y^2 - 150*y + 665]])

math

kegp:=plot::Implicit2d(keg[1]=0,x=-6..0,y=-1..5):

plot(kegp,Scaling=Constrained):

MuPAD graphics

Dieser Kegelschnitt ist offenbar eine Ellipse.

Durchführung einer Hauptachsentransformation

A:= matrix([[29,-3],[-3,21]]);

a:=matrix([250,-150]): at:=linalg::transpose(a);

d:=665;

math

math

math

Bestimmung der Achsenrichtungen:

evli:=linalg::eigenvectors(A)

math

Eigenwerte mit ihrer Vielfachheit und ihrem Eigenvektor.

ev1:=evli[1][3][1];

ev2:=evli[2][3][1];

math

math

ew1:=evli[1][1];

ew2:=evli[2][1];

math

math

linalg::det(ev1.ev2)

math

Wenn diese Determinate neagtiv ist, tauscht man die EV besser um.

Oder man nimmt einen der EV andersherum, Rechtsystem ist günstig.

Anderenfalls ist noch eineSpiegelung  im Spiel.

float(ev1),float(ev2)

math

Einzeichnen der Eigenvektoren:

ev1p:=plot::Arrow2d(ev1):

ev2p:=plot::Arrow2d(ev2):

plot(kegp,ev1p,ev2p, Scaling=Constrained)

MuPAD graphics

Wie erwartet sind die Eigenvektoren die Richtungen der Hauptachsen des Kegelschnittes.

---------------------------------------------------

Bestimmung der Kegelschnittgleichung

Die Theorie sagt, dass die Eigenwerte nun die Faktoren der quadratischen Glieder werden.

Das heißt hier, dass es zwei quadratisches Glieder mit positivem Vorzeichen gibt.

Damit muss es sich um eine Ellipse handeln, wenn es nicht ein entarteter Sonderfall wird.

Da wir oben schon gezeichnet haben, war ja schon klar, dass es eine Ellipse ist.

Soll die gegebene blaue Ellipse in Hauptachsenlage abgebildet werden,

so kann das geschehen durch eine Drehung um den Ursprung, evt. verknüpft mit einer

Achsenspiegelung an einer der Koordinatenachsen, gefolgt von einer Verschiebung.

  image    und     image

Aus den normierten Eigenvektoren erstellt man eine Matrix P.

Die Eigenvektoren stehen gleich von alleine senkrecht aufeinander, wenn die Eigenwerte verschieden sind.

P ist dann eine Orthonormal-Matrix. Für solche ist die inverse Matrix

gleich der transponierten Matrix, bezeichnet mit Pt (oder mit hochstelltem T).

Die Transformationsmatrix,  die den Kegelschnitt in eine Lage bewegt, bei der die Hauptachsen parallel

zu den Koordinatenachsen sind, ist Pt.

Die Theorie sagt nun, dass  Pt*A*P die Diagonalmatrix aus den Eigenwerten ist.

Davon kann man sich hier überzeugen:  

ev1n:=linalg::normalize(ev1):

ev2n:=linalg::normalize(ev2):

P:=ev1n.ev2n

math

float(P)

math

Pt:=linalg::transpose(P)

math

float(Pt)

math

Diagonalisierung, die klappt immer, wenn die EV eine ONB bilden,

wenn man also so ein P aufstellen kann.

Simplify(Pt*A*P);

float(Pt*A*P)

math

math

Evt.   winzige 10^-19 Werte sind numerisch 0.

---------------------------------------------------------------

Vektorschreibweise für die Abbildung image  und die 

Quadrikgleichungen, die sich durch Einsetzen ergeben:

image

Abbildung der linearen Terme  erfordert also

at

math

atb:=at*P

math

kegSD:=ew1*x^2+ew2*y^2+atb[1]*x+atb[2]*y+d

math

kegSDp:=plot::Implicit2d(kegSD=0,x=-4..4,y=-2..7,

         LineWidth=1,LineColor=[0,1,0],GridVisible=TRUE):

plot(kegp,kegSDp, Scaling=Constrained)

MuPAD graphics

Bei der Betrachtung dieses Bildes fällt auf, dass es sich um  eine negative

Drehung  um den Ursprung handelt.

Pt, float(Pt);

Dr:=phi->matrix([[cos(phi),-sin(phi)],[sin(phi),cos(phi)]]): Dr(`ϕ`);

math

math

Der Vergleich mit der allgemeinen Drehmatrix ergibt, dass es mit  dem Anpassen

von phi klappen kann:

cos(phi)=float(Pt[1,1]);sin(phi)=float(Pt[2,1]);

math

math

arccos((Pt[1,1]));

wi:=arcsin((Pt[2,1]));

math

math

Daraus folgt umgerechnet ins Winkelmaß:

float(arccos((Pt[1,1]))/PI*180);

wig:=float(arcsin((Pt[2,1]))/PI*180);

math

math

Damit kann die gemeinsame Lösung nur der negative Winkel wi sein.

So passt es auch zur Zeichnung.

Einzeichnen des Zwischenbildes:

p:=matrix([x,y]);

pt:=linalg::transpose(p);

math

math

float(Dr(wi)),float(Pt)

math

Beachte, dass die inverse Drehung die ist, die um den negativen Winkel dreht.

kegD:=simplify(pt*Dr(wi)*A*Dr(-wi)*p+at*Dr(-wi)*p+d);

math

Dieses hat man ja auch als transformierte Gleichung erhalten.

kegSD

math

kegDp:=plot::Implicit2d(kegD[1],x=-4..5,y=-2..5,

  LineWidth=1,LineColor=[1,0,1],LineStyle=Dashed,GridVisible=TRUE):

plot(kegp,kegSDp,kegDp,Scaling=Constrained)

MuPAD graphics

#############################

Bestimmung der Translation:

kegSD

math

Die Arbeitsweise ist dieselbe wie bei der Herstellung der Scheitelform einer Parabel.

Hier durch Hinsehen:

xterm:=hold(20*(x-1/2*sqrt(10))^2);expand(xterm);

yterm:=hold(30*(y-3/2*sqrt(10))^2);expand(yterm);

math

math

math

math

dd:=-50-675+d

math

Also

kegSDK:=xterm+yterm+dd

math

expand(kegSDK)   //Probe

math

passt.

Letzter Teil der Hauptachsentransformation ist die Translation t

t:=matrix([ -1/2*sqrt(10),-3/2*sqrt(10)])

math

image also image Das ergibt:

kegH:=ew1*x^2+ew2*y^2+dd

math

Angabe der Gleichung in der üblichen Form:

hold(x^2/3+y^2/2=1)

math

 

kegHp:=plot::Implicit2d(kegH,x=-4..4,y=-2..4,         LineWidth=1,LineColor=[1,0,0],GridVisible=TRUE):

plot(kegp,kegSDp,kegDp,kegHp,Scaling=Constrained)

MuPAD graphics

Bestimmung des ursprünglichen Scheitelpunktes:

image

m:=P*(-t)

math

Bestimmung des Urbildes des eines Punktes der Parabelachse:

image

Mit ev1 rechts ist hier der normierte 1. Eigenvektor gemeint.P

r:=sqrt(3): //auf der x-Achse

rur:=r*ev1n+m;

math

mp:=plot::Point2d(m, PointColor=[0,1,1]):

msp:=plot::Point2d(-t, PointColor=[0,1,1]):

rurp:=plot::Point2d(rur):

rp:=plot::Point2d([r,0]):

ev1urp:=plot::Arrow2d(m,m+ev1):

ev2urp:=plot::Arrow2d(m,m+ev2):

tp:=plot::Arrow2d(-t,[0,0]):

plot(kegp,kegSDp,kegDp,kegHp, mp,msp,rurp,rp,tp,

      ev1urp,ev2urp,PointSize=2,Scaling=Constrained)

MuPAD graphics