{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "Dieses Material ist lizensiert unter der Lizemz Creative Commons Attribution-ShareAlike 4.0 International License \"Creative.\n", "\n", "

\n", " Implizit definierte 4-dimensionale \"Flächen\"\n", "

\n", "Wir betrachten nun die Situation eines Wesens in einem 3-dimensionalen Raum $R$ - nennen wir es R3D3 - der sich linear durch einen 4-dimensionalen Raum bewegt und dabei mit der Mannigfaltigkeit zusammenstößt, die durch die folgende Gleichung $Fl$ definiert ist." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "Fl: x^3 - y^3 + u^2 - v^2 - 2 == 0" ] }, "execution_count": 1, "metadata": { }, "output_type": "execute_result" } ], "source": [ "var('d,p,q,r,u,v,x,y')\n", "assume(x,'real');assume(y,'real');assume(u,'real');assume(v,'real')\n", "dmin=-2;dmax=2\n", "pmin=-4;pmax=4\n", "qmin=-4;qmax=4\n", "rmin=-4;rmax=4\n", "xmin=-2;xmax=2\n", "ymin=-2;ymax=2\n", "umin=-2;umax=2\n", "vmin=-2;vmax=2\n", "# Ändern Sie das Folgende, um eine andere Definition zu verwenden\n", "f(x,y,u,v)=x^3-y^3+u^2-v^2-2\n", "#f(x,y,u,v)=x^2+y^2+u^2+v^2-1\n", "Fl=f(x,y,u,v)==0\n", "show(LatexExpr(\"Fl: \"),Fl)\n", "def N3(x): return N(x,digits=3)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "Wir bestimmen als erstes die Bewegungsrichtung von $R$ durch einen Normalenvektor." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false, "jupyter": { "source_hidden": true } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "02452627fd3444549704178e836180c0", "version_major": 2, "version_minor": 0 }, "text/plain": [ "SW50ZXJhY3RpdmUgZnVuY3Rpb24gPGZ1bmN0aW9uIF8gYXQgMHg3ZjJmMTNmOThkZTg+IHdpdGggNCB3aWRnZXRzCiAgbl94MTogVHJhbnNmb3JtRmxvYXRTbGlkZXIodmFsdWU9MS4wLCBkZXPigKY=\n" ] }, "execution_count": 2, "metadata": { }, "output_type": "execute_result" } ], "source": [ "@interact\n", "def _(n_x1=slider(xmin,xmax,default=1,label=\"$n_x$\",step_size=0.1),n_y1=slider(ymin,ymax,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)):\n", " global n_x\n", " n_x=n_x1\n", " global n_y\n", " n_y=n_y1\n", " global n_u\n", " n_u=n_u1\n", " global n_v\n", " n_v=n_v1\n", " global vn\n", " vn=vector([n_x,n_y,n_u,n_v])\n", " show(LatexExpr(\"\\\\vec{n} = \\\\begin{pmatrix} n_x \\\\\\\\ n_y \\\\\\\\ n_u \\\\\\\\n_v\\\\end{pmatrix} =\"),latex(n(vn.column(),digits=2)))" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "Die Norm und der Einheitsvektor von $\\vec{n}$ ergeben sich daraus:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false, "jupyter": { "source_hidden": false } }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "d_n= 2.00 , \\vec{e_n}= [0.500]\n", "[0.500]\n", "[0.500]\n", "[0.500]" ] }, "execution_count": 3, "metadata": { }, "output_type": "execute_result" } ], "source": [ "d_n=vn.norm()\n", "e_n=(1/d_n)*vn\n", "e_nx=e_n[0]; e_ny=e_n[1]; e_nu=e_n[2]; e_nv=e_n[3]\n", "show(LatexExpr(\"d_n=\"),N(d_n,digits=3),LatexExpr(\", \\\\vec{e_n}=\"),N3(e_n.column()))" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "Die folgenden Vektoren ergänzen den Vektor $\\vec{e_n}$ zu einer Basis des 4-dimensionalen Raums." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "jupyter": { "source_hidden": true } }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "\\vec{a_1}= [ 1.00]\n", "[0.000]\n", "[0.000]\n", "[-1.00] ,\\vec{a_2}= [0.000]\n", "[ 1.00]\n", "[0.000]\n", "[-1.00] ,\\vec{a_3}= [0.000]\n", "[0.000]\n", "[ 1.00]\n", "[-1.00]" ] }, "execution_count": 4, "metadata": { }, "output_type": "execute_result" } ], "source": [ "M_n=matrix(RR,e_n.column())\n", "B=M_n.kernel().basis()\n", "a_1=B[0];a_2=B[1]; a_3=B[2]\n", "show(LatexExpr(\"\\\\vec{a_1}=\"),N3(a_1.column()),LatexExpr(\",\\\\vec{a_2}=\"),N3(a_2.column()),LatexExpr(\",\\\\vec{a_3}=\"),N3(a_3.column()))" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "Aus diesen 3 Vektoren berechnen wir ein Orthonormalsystem, das den selben Raum aufspannt." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "jupyter": { "source_hidden": true } }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "\\vec{b_1}= [-0.707]\n", "[-0.000]\n", "[-0.000]\n", "[ 0.707] ,\\vec{b_2}= [ 0.408]\n", "[-0.816]\n", "[ 0.000]\n", "[ 0.408] ,\\vec{b_3}= [ 0.289]\n", "[ 0.289]\n", "[-0.866]\n", "[ 0.289]" ] }, "execution_count": 5, "metadata": { }, "output_type": "execute_result" } ], "source": [ "BB,CC=matrix(RDF,B).gram_schmidt(orthonormal=True)\n", "b_1=BB[0]; b_2=BB[1]; b_3=BB[2]\n", "b_1x=b_1[0];b_1y=b_1[1];b_1u=b_1[2]; b_1v=b_1[3]\n", "b_2x=b_2[0];b_2y=b_2[1];b_2u=b_2[2]; b_2v=b_2[3]\n", "b_3x=b_3[0];b_3y=b_3[1];b_3u=b_3[2]; b_3v=b_3[3]\n", "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()))" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "Die Richtungsvektoren vom Endpunkt von $\\vec{n}$ zu $\\vec{n}+\\vec{b_1}, \\vec{n}+\\vec{b_2}, \\vec{n}+\\vec{b_3}$ bilden dann ein Koordinatensystem $K_n$, dessen Koordinatenachsen im 3-dimensionalen Raum $R$ von R3D3 liegen. \n", "Ein Punkt $P$ in $R$, der bezüglich $K_n$ eine Darstellung $\\begin{pmatrix}p \\\\ q \\\\ r\\end{pmatrix}$ hat, hat in dem Othonormalsystem für den 4-dimensionalen Raum, das aus $K_{n}$ durch Ergänzung um den Richtungsvektor vom Endpunkt von $\\vec{n}$ nach $\\vec{n}+\\vec{e_n}$ ergänzten Vektor entsteht, die Darstellung $\\begin{pmatrix}p \\\\ q \\\\ r \\\\0\\end{pmatrix}$. Wir können die Koordinaten von $P$ im kanonischen Koordinatensystem als $\\vec{n}+\\begin{pmatrix} \\vec{b_1} & \\vec{b_2} & \\vec{b_3} & \\vec{e_n}\\end{pmatrix}\\cdot\\begin{pmatrix}p \\\\ q \\\\ r \\\\ 0\\end{pmatrix}$ berechnen. \n", "Bewegt sich $R$ in Richtung des Normalenvektors $\\vec{n}=d_n\\vec{e_n}$ durch den Raum, so nimmt die Koordinatentransformation von $K_n$ in das Standard-Koordinatensystem des 4-dimensionalen Raumes - für einen variablen Abstand d vom Ursprung - die folgende Form an.\n", "$$\n", "P_x(d,p,q,r)=d\\cdot e_{nx}+b_{1x}p+b_{2x}q+b_{3x}r \\\\\n", "P_y(d,p,q,r)=d\\cdot e_{ny}+b_{1y}p+b_{2y}q+b_{3y}r \\\\\n", "P_u(d,p,q,r)=d\\cdot e_{nu}+b_{1u}p+b_{2u}q+b_{3u}r \\\\\n", "P_v(d,p,q,r)=d\\cdot e_{nv}+b_{1v}p+b_{2v}q+b_{3v}r\n", "$$ " ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false, "jupyter": { "source_hidden": true } }, "outputs": [ ], "source": [ "P_x(d,p,q,r)=d*e_nx+b_1x*p+b_2x*q+b_3x*r\n", "P_y(d,p,q,r)=d*e_ny+b_1y*p+b_2y*q+b_3y*r\n", "P_u(d,p,q,r)=d*e_nu+b_1u*p+b_2u*q+b_3u*r\n", "P_v(d,p,q,r)=d*e_nv+b_1v*p+b_2v*q+b_3v*r" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "Betrachten wir nun die durch $Fl$ in $R$ im $(p,q,r)$-System implizit definierte Mannigfaltigkeit. Dazu ersetzen wir in $Fl$ die Variablen $x,y,u,v$ durch diese $P_x,\\ldots,P_v$. Damit sehen Sie nun eine graphische Darstellung des Durchschnitts der Mannigfaltigkeit mit dem 3-dimensionalen Raum. Falls Sie nichts oder nur eine Fehlermeldung sehen, so ist dieser Durchschnitt gerade leer. Verschieben Sie in diesem Fall die Position von $R$ mit dem Schieberegler." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "jupyter": { "source_hidden": true } }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "Fl: x^3 - y^3 + u^2 - v^2 - 2 == 0" ] }, "execution_count": 7, "metadata": { }, "output_type": "execute_result" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "bd25e9eff55347c5b135f6cfe069a447", "version_major": 2, "version_minor": 0 }, "text/plain": [ "SW50ZXJhY3RpdmUgZnVuY3Rpb24gPGZ1bmN0aW9uIF8gYXQgMHg3ZjJkMTg3Mzg3NTg+IHdpdGggMSB3aWRnZXQKICBkMTogVHJhbnNmb3JtRmxvYXRTbGlkZXIodmFsdWU9Mi4wLCBkZXNjcmnigKY=\n" ] }, "execution_count": 7, "metadata": { }, "output_type": "execute_result" } ], "source": [ "show(LatexExpr(\"Fl: \"),Fl)\n", "@interact\n", "def _(d1=slider(dmin,dmax,default=d_n,label=\"$d_n$\",step_size=0.1)):\n", " global d_n\n", " d_n=d1\n", " Fl_L(p,q,r)=f(P_x(d1,p,q,r), P_y(d1,p,q,r), P_u(d1,p,q,r),P_v(d1,p,q,r))\n", " show(implicit_plot3d(Fl_L(p,q,r)==0,(p,pmin,pmax),(q,qmin,qmax),(r,rmin,rmax)),viewer=\"threejs\")" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "Hier können Sie den Durchgang des Raumes $R$ durch $Fl$ als Animation verfolgen. Die Berechnung kann etwas dauern." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false, "jupyter": { "source_hidden": true }, "scrolled": true }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "Animation with 8 frames" ] }, "execution_count": 8, "metadata": { }, "output_type": "execute_result" } ], "source": [ "frames=[implicit_plot3d(f(P_x(d1,p,q,r), P_y(d1,p,q,r), P_u(d1,p,q,r),P_v(d1,p,q,r))==0,(p,pmin,pmax),(q,qmin,qmax),(r,rmin,rmax)) for d1 in sxrange(dmin,dmax,0.5)]\n", "anim=animate(frames)\n", "show(anim)" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ ] } ], "metadata": { "kernelspec": { "display_name": "SageMath (stable)", "language": "sagemath", "metadata": { "cocalc": { "description": "Open-source mathematical software system", "priority": 10, "url": "https://www.sagemath.org/" } }, "name": "sagemath" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.15" } }, "nbformat": 4, "nbformat_minor": 0 }