| Hosted by CoCalc | Download
Kernel: SageMath (stable)

Dieses Material ist lizensiert unter der Lizemz Creative Commons Attribution-ShareAlike 4.0 International License Creative Commons License.

Graphen komplexer Funktionen

Die Graphen komplexer Funktionen sind Teile des 4-dimensional (x,y,u,v)(x,y,u,v)-Raumes, die durch u=fr(x,y)=(f(x+iy),v=fi(x+iy=(f(x+iy)))u=f_r(x,y)=\Re(f(x+iy), v=f_i(x+iy=\Im(f(x+iy))) definiert sind:
var('d,p,q,r,u,v,x,y,z') assume(x,'real');assume(y,'real');assume(u,'real');assume(u,'real') dmin=-2;dmax=2 pmin=-4;pmax=4 qmin=-4;qmax=4 rmin=-4;rmax=4 x_min=-2;x_max=2 y_min=-2;y_max=2 umin=-2;umax=2 vmin=-2;vmax=2 # Ändern Sie das Folgende, um eine andere Definition zu verwenden f(z)=e^z #f(z)=z^3 f_r(x,y)=f(x+I*y).real().simplify_full() f_i(x,y)=f(x+I*y).imag().simplify_full() show(LatexExpr("f(z)=f(x+iy)="),f(z), LatexExpr(", u=f_r(x,y)=\Re(f(x+iy))="),f_r(x,y),LatexExpr(", v=f_i(x,y)=\Im(f(x+iy))="),f_i(x,y)) def N3(x): return N(x,digits=3)

Diese explizit definierten Graphen lassen sich auch implizit definieren, z.B. durch die Gleichung (u(f(x+iy)))2+(v(f(x+iy)))2=0(u-\Re(f(x+iy)))^2+(v-\Im(f(x+iy)))^2=0. Leider kann aber Sage so definierte Flächen und Funktionen nicht darstellen. Deshalb müssen wir etwas anders vorgehen. Als Erstes legen wir wieder die Bewegungsrichtung des 3-dimensionalen Raumes RR fest und bestimmen die Norm und den zugehörigen Einheitsvektor.

@interact def _(n_x1=slider(x_min,x_max,default=1,label="$n_x$",step_size=0.1),n_y1=slider(y_min,y_max,default=1,label="$n_y$",step_size=0.1),n_u1=slider(umin,umax,default=1,label="$n_u$",step_size=0.1),n_v1=slider(vmin,vmax,default=1,label="$n_v$",step_size=0.1)): global n_x n_x=n_x1 global n_y n_y=n_y1 global n_u n_u=n_u1 global n_v n_v=n_v1 global vn vn=vector([n_x,n_y,n_u,n_v]) show(LatexExpr("\\vec{n} = \\begin{pmatrix} n_x \\\\ n_y \\\\ n_u \\\\n_v\\end{pmatrix} ="),latex(n(vn.column(),digits=2))) global d_n d_n=vn.norm() global e_n e_n=(1/d_n)*vn global e_nx; global e_ny; global e_nu; global e_nv e_nx=e_n[0]; e_ny=e_n[1]; e_nu=e_n[2]; e_nv=e_n[3] show(LatexExpr("d_n="),N(d_n,digits=3),LatexExpr(", \\vec{e_n}="),N3(e_n.column()))

Wir berechnen ein Orthonormalsystem KnK'_n für den 4-dimensionalen Raum, das den Vektor en\vec{e_n} enthält:

M_n=matrix(RR,e_n.column()) B=M_n.kernel().basis() a_1=B[0];a_2=B[1]; a_3=B[2] M_n=matrix(RR,e_n.column()) B=M_n.kernel().basis() a_1=B[0];a_2=B[1]; a_3=B[2] BB,CC=matrix(RDF,B).gram_schmidt(orthonormal=True) b_1=BB[0]; b_2=BB[1]; b_3=BB[2] b_1x=b_1[0];b_1y=b_1[1];b_1u=b_1[2]; b_1v=b_1[3] b_2x=b_2[0];b_2y=b_2[1];b_2u=b_2[2]; b_2v=b_2[3] b_3x=b_3[0];b_3y=b_3[1];b_3u=b_3[2]; b_3v=b_3[3] show(LatexExpr("\\vec{b_1}="),N3(b_1.column()),LatexExpr(",\\vec{b_2}="),N3(b_2.column()),LatexExpr(",\\vec{b_3}="),N3(b_3.column()),LatexExpr(",\\vec{e_n}="),N3(e_n.column()))

Die Richtungsvektoren vom Endpunkt von n\vec{n} zu n+b1,n+b2,n+b3,n+en\vec{n}+\vec{b_1}, \vec{n}+\vec{b_2}, \vec{n}+\vec{b_3},\vec{n}+\vec{e_n} bilden dann ein Koordinatensystem KnK'_n, für den 4-dimensionalen Raum, dessen erste 3 Koordinatenachsen im 3-dimensionalen Raum RR von R3D3 liegen. Ein Punkt PP, des 4-dimensionale Raumes habe bezüglich KnK'_n eine Darstellung P=(pqrs)\vec{P}=\begin{pmatrix}p \\ q \\ r \\s\end{pmatrix}. Wir können die Koordinaten X\vec{X} von PP im kanonischen Koordinatensystem als X=n+(b1b2b3en)P\vec{X}=\vec{n}+\begin{pmatrix} \vec{b_1} & \vec{b_2} & \vec{b_3} & \vec{e_n}\end{pmatrix}\cdot\vec{P} berechnen. Bewegt sich RR in Richtung des Normalenvektors n=dnen\vec{n}=d_n\vec{e_n} durch den Raum, so nimmt die Koordinatentransformation von KnK'_n in das Standard-Koordinatensystem des 4-dimensionalen Raumes - für einen variablen Abstand dd vom Ursprung - die folgende Form an. Xx(d,p,q,r,s)=denx+b1xp+b2xq+b3xr+enxsXy(d,p,q,r,s)=deny+b1yp+b2yq+b3yr+enysXu(d,p,q,r,s)=denu+b1up+b2uq+b3ur+enusXv(d,p,q,r,s)=denv+b1vp+b2vq+b3vr+envs X_x(d,p,q,r,s)=d\cdot e_{nx}+b_{1x}p+b_{2x}q+b_{3x}r+e_{nx}s \\ X_y(d,p,q,r,s)=d\cdot e_{ny}+b_{1y}p+b_{2y}q+b_{3y}r+e_{ny}s \\ X_u(d,p,q,r,s)=d\cdot e_{nu}+b_{1u}p+b_{2u}q+b_{3u}r+e_{nu}s \\ X_v(d,p,q,r,s)=d\cdot e_{nv}+b_{1v}p+b_{2v}q+b_{3v}r+e_{nv}s

Die dazu inverse Transformation ist P=(b1b2b3en)(Xn)\vec{P} = \begin{pmatrix}\vec{b_1}\\ \vec{b_2} \\ \vec{b_3} \\ \vec{e_n}\end{pmatrix}\cdot (\vec{X}-\vec{n}). Da die bi\vec{b_i} und n=den\vec{n}=d\cdot\vec{e_n} orthogonal sind, können die ersten Komponenten zu biX\vec{b_i}\cdot \vec{X} vereinfacht werden (i=1,2,3i=1,2,3) und da en\vec{e_n} ein Einheitsvektor ist, ist die vierte Komponente durch enXd\vec{e_n}\cdot \vec{X}-d definiert. also Px(d,x,y,u,v)=b1xx+b1yy+b1uu+b1vvPy(d,x,y,u,v)=b2xx+b2yy+b2uu+b2vvPu(d,x,y,u,v)=b3xx+b3yy+b3uu+b3vvPv(d,x,y,u,v)=enxx+enyy+enuu+envvd \begin{align} P_x(d,x,y,u,v)&=b_{1x}x+b_{1y}y+b_{1u}u+b_{1v}v \\ P_y(d,x,y,u,v)&=b_{2x}x+b_{2y}y+b_{2u}u+b_{2v}v \\ P_u(d,x,y,u,v)&=b_{3x}x+b_{3y}y+b_{3u}u+b_{3v}v \\ P_v(d,x,y,u,v)&=e_{nx}x+e_{ny}y+e_{nu}u+e_{nv}v-d \end{align} Dass die ersten 3 Gleichung nicht mehr von dd abhängen wird verständlich, wenn man sich klarmacht, dass sich die Koordinaten in einem Koordinatensystem, das sich längs einer Koordinatenachse bewegt, nur in der Richtung der Bewegungsachse ändern.

X_x(d,p,q,r,s)=d*e_nx+b_1x*p+b_2x*q+b_3x*r+e_nx*s X_y(d,p,q,r,s)=d*e_ny+b_1y*p+b_2y*q+b_3y*r+e_ny*s X_u(d,p,q,r,s)=d*e_nu+b_1u*p+b_2u*q+b_3u*r+e_nu*s X_v(d,p,q,r,s)=d*e_nv+b_1v*p+b_2v*q+b_3v*r+e_nv*s P_x(d,x,y,u,v)=b_1x*x+b_1y*y+b_1u*u+b_1v*v P_y(d,x,y,u,v)=b_2x*x+b_2y*y+b_2u*u+b_2v*v P_u(d,x,y,u,v)=b_3x*x+b_3y*y+b_3u*u+b_3v*v P_v(d,x,y,u,v)=e_nx*x+e_ny*y+e_nu*u+e_nv*v-d

Ein Punkt X\vec{X}, dessen Koordinaten im Standardkoordinatensystem bekannt sind, liegt auf dem Graphen der Funktion genau dann, wenn seine Koordinaten den Gleichungen u=f(x+iy),v=f(x+iy)u=\Re{f(x+iy)}, v=\Im{f(x+iy)} genügen. Ins (p,q,r)(p,q,r)-System übertragen bedeutet dies Xu=(f(Xx+iXy))Xv=(f(Xx+iXy)) X_u=\Re(f(X_x+iX_y)) \\ X_v=\Im(f(X_x+iX_y)) Dabei wurden die Argumente p,q,r,sp,q,r,s der Funktione XX_* weggelassen. Damit der Punkt außerdem in RR liegt, muss die Koordinate ss in der Richtung von ne\vec{n_e}, die aus RR herauszeigt, 00 sein. s=0 s=0 Damit zeigt die folgende Abbildung den Realteil von ff in rot und den Imaginärteil in grün. Auf dem Graphen liegen die Punkte, die auf beiden Flächen liegen, also auf den Kurven, die den Durchschnitt beider Flächen bilden. Nur diese Kurven sieht R3D3 beim Durchgang von RR durch den Graphen der Funktion ff.

from sage.manifolds.utilities import set_axes_labels @interact def _(d1=slider(dmin,dmax,default=d_n,label="$d$",step_size=0.1)): global d_n d_n=d1 xx=X_x(d1,p,q,r,0) yy=X_y(d1,p,q,r,0) uu=X_u(d1,p,q,r,0) vv=X_v(d1,p,q,r,0) G_r=uu.simplify_full()==f_r(xx,yy).simplify_full() G_i=vv.simplify_full()==f_i(xx,yy).simplify_full() p_r=implicit_plot3d(G_r,(p,pmin,pmax),(q,qmin,qmax),(r,rmin,rmax),color="red",opacity=0.4) p_i=implicit_plot3d(G_i,(p,pmin,pmax),(q,qmin,qmax),(r,rmin,rmax),color="green",opacity=0.2) plot=set_axes_labels(p_r+p_i,'p','q','r', color='red') show(plot,viewer="threejs")

Hier können Sie den Real- und Imaginärteil aus der obigen Graphik beim Durchgang durch RR in einer Animation betrachten (die Berechnung kann etwas dauern).

var('d1') #p_r=implicit_plot3d(X_u(d1,p,q,r,0)==f_r(X_x(d1,p,q,r,0),X_y(d1,p,q,r,0)),(p,pmin,pmax),(q,qmin,qmax),(r,rmin,rmax),color="red",opacity=0.4) res=[implicit_plot3d(X_u(d1,p,q,r,0)==f_r(X_x(d1,p,q,r,0),X_y(d1,p,q,r,0)),(p,pmin,pmax),(q,qmin,qmax),(r,rmin,rmax),color="red",opacity=0.4)+implicit_plot3d(X_v(d1,p,q,r,0)==f_i(X_x(d1,p,q,r,0),X_y(d1,p,q,r,0)),(p,pmin,pmax),(q,qmin,qmax),(r,rmin,rmax),color="green",opacity=0.2) for d1 in sxrange(dmin,dmax,0.5)] a=animate(res) show(a)

Warum erscheint bei R3D3 eine Menge von Kurven als Bild der Funktion ff, während eine implizit definierte Funktion von x,y,u,vx,y,u,v, z.B. die Oberfläche einer 4-dimensionalen Kugel, als eine Fläche erscheint? Dies liegt daran, dass eine 4-dimensional Kugeloberfläche eine 3-dimensional Mannigfaltigkeit ist. Der Schnitt mit einem 3-dimensionalen Raum ergibt i. Allg. eine 2-dimensionalen Raum - eine Fläche. Sowohl die implizite Definition als auch die Definition des 3-dimensionalen Raumes legen jeweils einen der vier Freiheitsgrade im 4-dimensionalen fest - übrig bleiben die 2 Freiheitsgrad, die für die Definition von Flächen benötigt werden. Im Unterschied dazu wird der Graph einer komplexen Funktion durch zwei Gleichungen mit reellen Variablen und Werten definiert. Damit werden 2 Dreiheitsgerade festgelegt. Die Definition des 3-dime3nsionalen Unterraums legt einen weiteren Freiheitsgrad fest - übrig bleibt nur ein Freiheitsgrad, mit dem dann nur Kurven definiert werden können.

Real- und Imaginärteil

Real- und Imaginärteil einer komplexen Funktion lassen sich als Flächen über der (x,y)(x,y)-Ebene darstellen. Die 3. Koordinatenachse muss dazu in Richtung der uu- bzw. vv-Achse zeigen. Um etwa den Realteil darzustellen, könnten wir den Normalenvektor in Richtung der vv-Achse zeigen lassen, also n=en=(0001)\vec{n}=\vec{e_n}=\begin{pmatrix}0 \\ 0 \\ 0 \\1\end{pmatrix}. Dann können wir b1=(1000),b2=(0100),b3=(0010)\vec{b_1}=\begin{pmatrix}1 \\ 0 \\ 0 \\0\end{pmatrix},\vec{b_2}=\begin{pmatrix}0 \\ 1 \\ 0 \\0\end{pmatrix},\vec{b_3}=\begin{pmatrix}0 \\ 0 \\ 1 \\0\end{pmatrix} setzen und erhalten p=x,q=y,r=up=x, q=y, r=u. Die Gleichung r=u=(f(x+iy))r=u=\Re(f(x+iy)) definiert dann die (rote) Fläche, die den Realteil der Funktion darstellt. Wie wir oben gesehen haben, sind diese Werte auch unabhängig von dd, da die 3 Achsen unseres Koordinatensystems orthogonal zur Bewegungsrichtung n\vec{n} liegen.

Aber was ist mit der grünen Fläche, die durch den Imaginärteil - genauer: Durch die Gleichung Xv(d,p,q,r,0)=fi(Xx(d,p,q,r,0)+iXy(d,p,q,r,0)))X_v(d,p,q,r,0)=f_i(X_x(d,p,q,r,0)+iX_y(d,p,q,r,0))) - definiert wird? Diese Gleichung vereinfacht sich in unserem Fall zu d=fi(p+iq)d=f_i(p+iq). Daran ist zunächst bemerkenswert, dass in dieser Gleichung nur pp und qq vorkommen. Erfüllt (p,q)(p,q) diese Gleichung, so auch (p,q,r)(p,q,r) für beliebige rr, d.h. mit dem durch (p,q,0)(p,q,0) definierten Punkt PpqP_{pq} der (p,q)(p,q)-Ebene liegt auch jeder Punkt über bzw. unter PpqP_{pq} auf der grünen Fläche - sie steht in PpqP_{pq} senkrecht auf der (p,q)(p,q)-Ebene. Zwei Sonderfälle sind noch von Interesse. Hat die Gleichung d=f(x+iy)d=\Im{f(x+iy)} keine Lösung, die grüne Fläche ist leer und R3D3 sieht überhaupt nichts. Gilt d=f(x+iy)d=\Im{f(x+iy)} aber für alle x,yx,y, so füllt die grüne Fläche den ganzen Raum aus und R3D3 sieht den Realteil von ff als 3-dimensionales Gebilde.

Aufgabe: Probieren Sie dies im folgenden aus, indem Sie den Imaginärteil mit ff_i(p,q)=... geeignet wählen. Sie verändern dadurch die anderen Zellen nicht. Beachten Sie: Sage stellt eine Mannigfaltigkeit, die den ganzen Raum ausfüllt, nicht dar!

dd=1 ff_r=f_r # ff_i=f_i ff_i(p,q)=p^2+q^2 GG_r=r==ff_r(p,q).simplify_full() GG_i=dd==ff_i(p,q).simplify_full() pp_r=implicit_plot3d(GG_r,(p,pmin,pmax),(q,qmin,qmax),(r,rmin,rmax),color="red",opacity=0.4) pp_i=implicit_plot3d(GG_i,(p,pmin,pmax),(q,qmin,qmax),(r,rmin,rmax),color="green",opacity=0.2) pl=set_axes_labels(pp_r+pp_i,'p','q','r', color='red') show(pl,viewer="threejs")