Vektoren, Geraden ,Ebenen
Prof. Dr. Dörte Haftendorn, MuPAD 4, https://mathe.web.leuphana.de Aug.06
Automatische Übersetzung aus MuPAD 3.11, Mrz 06 Update 14.03.06
Es fehlen nocht textliche Änderungen, die MuPAD 4 direkt berücksichtigen, das ist in Arbeit.
Web: https://mathe.web.leuphana.de www.mathematik-verstehen.de
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1. Vektoren 2D #######
2. Vektoren 3D #######
3. Zwei Geraden #######
4. Ebenen #######
5. Geraden und Ebenen #######
6. Mehrere Ebenen #######
7. Skalarprodukt, Hessesche Normalform....--> Extraseite
1.Vektoren 2D ###################################
Vektoren werden als Matrizen aufgefasst.
Eingabe einer "flachen" Liste erzeugt Spaltenvektoren.
a := matrix([3,2]);
v := matrix([6,-2]);


Definition eines Zeilenvektors mit Doppelliste:
az := matrix([[3,2]]);
![]()
Hier wird eine Gerade als Funktion ihres Parameters definiert.
Es ginge aber auch als Term g:=a+r*v
gv:=r->a+r*v
![]()
gv(r)

p1:=gv(1)

Zum Zeichnen nimmt man den Pfeil-Befehl.
Es werden drei Graphik-Primitive erzeugt, die dann von plot dargestellt werden.
ag:=plot::Arrow2d(a);
p1g:=plot::Arrow2d(a+v);
vg:=plot::Arrow2d(a,a+v);
![]()
![]()
![]()
plot(ag,vg,p1g)

Eindrucksvolle annimierte Geradendarstellung:
vani:=plot::Arrow2d(a,gv(r),r=-2..2)
![]()
plot(ag,vani)

Zum Animieren: Doppeklick in der Graphik, dann oben Player bedienen.
Herausgreifen der Zeilen aus den Verktoren:
gv(r)[1]
![]()
Herstellen der üblichen 2d-Geradengleichung
gr:=solve({gv(r)[1]=x,gv(r)[2]=y},{y,r})

Hinten kann mann die Gleichung ablesen.
Automatisches Herausgreifen:
gerade:=gr[1][2][2]
![]()
geradeg:=plot::Function2d(gerade,x=-10..16, LineColor=RGB::Red):
plot(geradeg,ag,vani);

Zum Animieren: Doppeklick in der Graphik, dann oben Player bedienen.
2.Vektoren 3D ##########################################
Vektoren werden als Matrizen aufgefasst.
Eingabe einer "flachen" Liste erzeugt Spaltenvektoren.
a := matrix([3,2,-1]);
v := matrix([6,-2,2]); o:=matrix([0,0,0]):


Hier wird eine Gerade als Funktion ihres Parameters definiert.
Es ginge aber auch als Term g:=a+r*v
gv:=r->a+r*v
![]()
gv(r); gv(1)


Zum Zeichnen nimmt man den Pfeil-Befehl.
Es werden drei Graphik-Primitive erzeugt, die dann von plot dargestellt werden
ag:=plot::Arrow3d(a);
p1g:=plot::Arrow3d(a+v);
vag:=plot::Arrow3d(a,a+v);
![]()
![]()
![]()
plot(ag,vag,p1g)

3D-Graphik "anfassen", d.h. Doppelkick in der Graphik, dann mit Maus drehen.
Verändern der Eigenschaften:
ag::LineColor:=RGB::Green:
vag::LineColor:=RGB::Magenta:
p1g::LineStyle:=Dashed:
plot(ag,vag,p1g, Axes=Origin)

Funktion, die 3 Vektoren in eine Liste umwandelt
vek3Liste:=(v1,v2,v3)->[[ v1[i]$i=1..3 ],[ v2[i]$i=1..3 ],[ v3[i]$i=1..3] ]:
vek3Liste(o,a,a+v)
![]()
3d-Polygone können genau dann gefüllt werden, wenn es sich um Dreiecke handelt.
dreieck:=plot::Polygon3d(vek3Liste(o,a,a+v),Filled=TRUE)
![]()
plot(dreieck,ag,vag,p1g, Axes=Origin)

Beim Drehen der Graphik kann man nun schön die räumliche Anordnung sehen.
3. Zwei Geraden ####################################
w:=matrix([1,1,3]);
wag:=plot::Arrow3d(a,a+w, LineColor=RGB::Black);

![]()
b:=2*a;
bg:=plot::Arrow3d(b)

![]()
gw:=r->b+r*w
![]()
solve(gw(r)=gv(s),{r,s})
![]()
Das überrascht nicht. Die Geraden sind windschief.
Zeichnen von Geraden im Raum
Die einfachste Art ist, den Orts- und den Richtungsvektor (oder ein Vielfaches) zu zeichnen
gvg:=plot::Arrow3d(a-2*v,a+2*v):
gwg:=plot::Arrow3d(b-2*w,b+2*w):
plot(ag,gvg,bg,gwg, Axes=Origin)

4. Ebenen #######################################
Nun soll eine Ebene definiert werden, diesmal ohne Funktion.
eb:=a+r*v+s*w:
[a,v,w,eb];

Die Angabe als Liste ist eine Lesehilfe.
plot(ag,vag,wag)

Bessere Sicht mit Ebenendreieck
ebene:=plot::Polygon3d(vek3Liste(a,a+v,a+w),Filled=TRUE);
![]()
[a,v,w]

[a,a+v,a+w]

ag;vag;wag;
![]()
![]()
![]()
plot(ebene,ag,vag,wag)

5. Gerade und Ebene
c:=matrix([-1,2,3]);
cg:=plot::Arrow3d(c);
u:=matrix([8,0,-4]);
ucg:=plot::Arrow3d(c,c+u,LineColor=RGB::Red);

![]()

![]()
plot(cg,ucg,ebene,ag,vag,wag)

gu:=r->c+r*u;
![]()
eb=gu(t)

solve(eb=gu(t),{r,s,t})

Die Ebene und die Gerade schneiden sich.
Probe und Schnittpunkt
[subs(eb, r=1/6, s= 1/3), gu(2/3)]

6. Mehrere Ebenen ###########################
ebe:=(r,s)->c+r*u+s*(v+w): [c,u,v+w]; ebe

![]()
ebeg:=plot::Polygon3d(vek3Liste(c,c+u,c+(v+w)),
Filled=TRUE, FillColor=[1,0.5,0.5]);plot(ebeg)
![]()

plot(cg,ucg,ebeg,ag,vag,wag,ebene)

eb=ebe(t,k)

solve(eb=ebe(t,k),{t,k,r})

Bei drei Gleichungen für die 4 Parameter ist zu erwarten,
dass i.a. ein Parameter unbestimmt bleibt. Hier ist es das s.
Man kann also ablesen, dass Die folgende Gerade Schnittgerade ist:
Übrigens hier zeigt sich, dass es günstig ist, Geraden und Ebenen als Funktionen
ihrer Parameter aufzufassen.
gs:=s->ebe(2/3,s-1/3);
gsg:=plot::Arrow3d(gs(0),gs(1))


plot(cg,ucg,ebeg,ag,vag,wag,ebene,gsg)

Orts und Richtungsvektor der Schnittgeraden sind:
Oben ist nur der Richtungsvektor passend eingezeichnet.
[gs(0),gs(1)-gs(0)]

7. Skalarprodukt, Hessesche Normalform.... --> Extraseite
[a,c,a.c]

_plus(x[i]*y[i] $i=1..3);
![]()
skalar3:=(x,y)-> _plus(x[i]*y[i] $i=1..3):
[a,c,skalar3(a,c)]
