Quadriken 3d Paraboloid
Prof. Dr. Dörte Haftendorn: Mathematik mit MuPAD 4, Juni 07 Update 5.07.07
Web: https://mathe.web.leuphana.de www.mathematik-verstehen.de ######################################################
Rückwärts aufgestellt, siehe Datei Konstruktion-rückwärts 3d
p:=matrix([x,y,z]):pt:=linalg::transpose(p)
EW:=[0,1,2]: m:=[3,-1,-3] //liegt drauf
Quadrik:=matrix([[5*x^2 - 10*x*y - 4*x*z - 40*x + 5*y^2 + 4*y*z + 52*y + 8*z^2 + 64*z + 164]]);
Qp:=plot::Implicit3d(Quadrik[1]=0,x=-2..7,y=-5..0,z=-7..0,FillColor=[0,1,0,1]):
plot(Qp):
A und a passend aufstellen
A:=matrix([[5,-5,-2],[-5,5,2],[-2,+2,8]]);
a:=matrix([-40,52,64]): at:=linalg::transpose(a);
d:=164;
expand(pt*A*p+at*p+d); //Probe, ob man A,a und d richtig hat
%-Quadrik
hier muss 0 herauskommen
Hauptachtsentransformation
E3:=matrix([[1,0,0],[0,1,0],[0,0,1]])
evli:=linalg::eigenvectors(A) //Probe, was MuPAD liefert
Eigenwerte und Eigenvektoren
ew1 :=evli[1][1]; ew2 :=evli[2][1]; ew3 :=evli[3][1];
ev1:=evli[1][3][1]:
ev2:=-evli[2][3][1]://neg, damit es ein Rechtssystem wird
ev3:=evli[3][3][1]:
linalg::det(ev1.ev2.ev3)
Diese Determinante sollte positiv sein, donst ist später noch eine
Spiegelung im Spiel.
ev1n:=linalg::normalize(ev1):
ev2n:=linalg::normalize(ev2):
ev3n:=linalg::normalize(ev3):
P:=ev1n.ev2n.ev3n: Pt:=linalg::transpose(P);
Vektorschreibweise für die Abbildung und die
Quadrikgleichungen, die sich durch Einsetzen ergeben:
bzw. in 3D
quastrich:=Simplify(pt*Pt*A*P*p+at*P*p+d)
quastrichp:=plot::Implicit3d(quastrich[1],x=-5..4,y=-5..6, z=-7..0,FillColor=[1,1,0,1]):
plot(quastrichp , Scaling=Constrained):
quastrich
Die Arbeitsweise ist dieselbe wie bei der Herstellung der Scheitelform einer Parabel.
Hier durch Hinsehen:
yterm:=hold(6*(y-1/2*sqrt(6))^2);expand(yterm);
zterm:=hold(12*(z+13/6*sqrt(3))^2);expand(zterm);
dd:=d-9-169;
yterm+zterm+6*sqrt(2)*x+dd;
expand(%)-quastrich
Hier muss 0 herauskommen
xterm:=hold(6*sqrt(2)*(x-7/6*sqrt(2)));expand(xterm);
Also
quastrichK:=xterm+yterm+zterm
quastrich-expand(quastrichK)
hier muss 0 herauskommen
Letzter Teil der Hauptachsentransformation ist die Translation t
t:=matrix([-7/6*sqrt(2),-1/2*sqrt(6), 13/6*sqrt(3)]);
tt:=linalg::transpose(t):
tp:=plot::Arrow3d(t):
also Das ergibt:
quaH:=Simplify(expand((pt-tt)*Pt*A*P*(p-t)+at*P*(p-t)+d));
Angabe der Gleichung in der üblichen Form:
hold(x=-y^2/sqrt(2)-sqrt(2)*z^2)
quadrikHp:=plot::Implicit3d(quaH[1],x=-4..0,y=-3..3, z=-2..2,
Scaling=Constrained):
plot(%)
Bestimmung des ursprünglichen Mittelpunktes:
nun in 3D
m:=Simplify(P*(-t))
Dieses ist der alte Scheitelpunkt.
Bestimmung des Urbildes des rechten Hauptscheitels:
Mit ev1 rechts ist hier der normierte 1. Eigenvektor gemeint. Alles jetzt in 3D
r:=-ev1: // Achse des Paraboloids
rs:=Pt*r;
rp:=plot::Arrow3d(m,m+5*r, LineColor=[0,0,0], LineWidth=1 ):
rsp:=plot::Arrow3d(-t, -t+5*rs, LineColor=[0,0,0], LineWidth=1 ):
rssp:=plot::Arrow3d(5*rs, LineColor=[0,0,0], LineWidth=1):
pkt:=matrix([3,-1,-3]):
pktp:=plot::Point3d(pkt,PointColor=[1,0,1],PointSize=2,PointStyle=FilledSquares):
pkts:=Pt*pkt; float(%);
pktsp:=plot::Point3d(pkts,PointColor=[1,0,1], PointSize=2,PointStyle=FilledSquares):
pktss:=pkts+t;float(%);
pktssp:=plot::Point3d(pktss,PointColor=[1,0,1], PointSize=2,PointStyle=FilledSquares):
mp:=plot::Point3d(m,PointSize=2, PointColor=[0,1,0]):
msp:=plot::Point3d(-t,PointSize=2, PointColor=[0,1,0]):
Op:=plot::Point3d([0,0,0],PointSize=2, PointColor=[0,1,0]):
ev1urp:=plot::Arrow3d(m,m+3*ev1):
ev2urp:=plot::Arrow3d(m,m+3*ev2):
ev3urp:=plot::Arrow3d(m,m+3*ev3):
tp:=plot::Arrow3d(-t,[0,0,0],LineColor=[1,0,0]):
plot(Qp,quadrikHp,quastrichp,mp,msp,Op,rp,rsp,rssp,tp,pktp,pktsp,pktssp,
ev1urp,ev2urp,ev3urp,PointSize=2,Scaling=Constrained, Axes=Origin);
Test ob es eine Drehung allein oder gefolgt von Spiegelung ist. det=1 reine Drehung
linalg::det(Pt)
plot(Qp,quastrichp, quadrikHp,mp,Op,tp,rp,rp,rsp,
ev1urp,ev2urp,ev3urp,Axes=Origin,Scaling=Constrained)
####################################################
Weitere Untersuchungen, in anderer Datei