Institut für Theoretische Physik Universität zu Köln
\n",
"
\n",
"
Prof. Dr. Simon Trebst Peter Bröcker
\n",
"
\n",
"
\n",
"\n",
"
Computerphysik
\n",
"
Übungsblatt 3
\n",
"\n",
"
Sommersemester 2016
\n",
"\n",
"**Website:** [http://www.thp.uni-koeln.de/trebst/Lectures/2016-CompPhys.shtml](http://www.thp.uni-koeln.de/trebst/Lectures/2016-CompPhys.shtml)\n",
"\n",
"**Abgabe**: Montag, 2. Mai, 2016 vor der Vorlesung\n",
"\n",
"**Name**: Bitte geben Sie ihren Namen an\n",
"\n",
"**Matrikelnummer**: Bitte geben Sie ihre Matrikelnummer an"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"
\n",
"
Simpson vs. Trapezregel
\n",
"
(5 Punkte)
\n",
"\n",
"Die Mathematik kennt eine Reihe von speziellen Funktionen, die gerade in der Physik eine besondere Relevanz besitzen. Dazu gehören die **Kugelfläachen-Funktionen**, welche in Problemen mit sphärischer oder zylindrischer Symmetrie auftreten. Vielleicht erinnern Sie sich an die Multipolentwicklung der Elektrostatik, oder aber Sie werden Ihnen in der Quantenmechanik bei der Lösung des Wasserstoffatoms wieder begegnen. \n",
"\n",
"Sie ergeben sich als Lösungen der **Eigenwertgleichung** des Winkelanteils des Laplace-Operators:\n",
"\n",
"$\\left(\\frac{\\partial^{2}}{\\partial\\vartheta^{2}}+\\frac{\\cos\\vartheta}{\\sin\\vartheta}\\frac{\\partial}{\\partial\\vartheta}+\\frac{1}{\\sin^{2}\\vartheta}\\frac{\\partial^{2}}{\\partial\\varphi^{2}}\\right)Y_{\\ell m}(\\vartheta,\\varphi)=-\\ell(\\ell+1)Y_{\\ell m}(\\vartheta,\\varphi),$\n",
"\n",
"wobei wir uns hier auf den Spezialfall $m=0$ beschränken.\n",
"\n",
"Die Lösung lautet dann\n",
"\n",
"$ Y_{\\ell 0}(\\vartheta,\\varphi)=\\frac{1}{\\sqrt{2\\pi}}\\, N_{\\ell 0}\\, P_{\\ell 0}(\\cos\\vartheta)$\n",
"\n",
"mit den Normierungsfaktoren $N_{\\ell 0}=\\sqrt\\frac{2\\ell+1}{2}$ sowie den Legendrepolynomen\n",
"\n",
"$ P_{\\ell 0}(x)= P_\\ell(x) = \\frac{1}{2^\\ell \\, \\ell!} \\, \\frac{\\mathrm{d}^\\ell}{\\mathrm{d}x^\\ell} \\left(x^2-1\\right)^\\ell$\n",
"\n",
"Unser Ziel ist es nun, die **Orthogonalitätsrelation**\n",
"\n",
"$\\int Y_{\\ell 0}^{*}(\\vartheta,\\varphi) \\, Y_{\\ell' 0}(\\vartheta,\\varphi) d\\Omega = \\delta_{\\ell\\,\\ell'}$\n",
"\n",
"der Kugelflächen-Funktionen durch numerische Integration für $\\ell \\in [0,\\dots,3]$ zu überprüfen.\n",
"\n",
"Die erste Methode, die Sie kennengelernt haben, ist die **Trapezregel**. Wie der Name schon suggeriert, wird der Flächeninhalt durch eine Reihe von Trapezen approximiert. Abhängig vom Verhalten der Funktion, dem Diskretisierungsschritt und der Größe des Integrationsbereichs kann dies bereits gute Ergebnisse liefern. Genauer ist allerdings die **Simpson Regel**, bei der die Funktion auch diskretisiert, aber dann intervallweise durch eine Parabel genähert wird. \n",
"\n",
"Implementieren Sie ein Programm basierend auf der Beschreibung in der Vorlesung. Berechnen Sie die ersten vier Kugelflächen-Funktionen und führen Sie mit ihrem Programm die Integration aus (Was passiert mit der Integration über $\\varphi$?). Verwenden Sie 15-20 Stützstellen für beide Verfahren. Beachten Sie, dass die Simpson-Regel zu gegebenen Stützstellen $a$ und $b$ immer auch $(a+b)/2$ hinzuzieht. Bewerten Sie, in welchen Fällen welche der beiden Methoden der anderen überlegen ist (bei gleicher Anzahl an Stützstellen).\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Wir haben Ihnen hier schon einmal die ersten vier Funktionen als Quadrat inklusive Raumwinkel definiert\n",
"f_1(x) = sqrt(1./(4 * pi))^2 * sin(x)\n",
"f_2(x) = (sqrt(3./(4 * pi)) * cos(x))^2 * sin(x) \n",
"f_3(x) = (sqrt(5./(16 * pi)) * (3 * cos(x)^2 - 1.))^2 * sin(x)\n",
"f_4(x) = (sqrt(7./(16 * pi)) * (5 * cos(x)^3 - 3. * cos(x)))^2 * sin(x)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"###...\n",
"### Fuegen Sie hier Ihren Code ein\n",
"# Berechnet die Trapezapproximation fuer die Funktion f im Intervall [a, b]\n",
"function trapez_element(f, a, b) \n",
" element = 0.\n",
" ### ...\n",
" return \n",
"end\n",
"\n",
"# Berechnet die Simpsonapproximation fuer die Funktion f im Intervall [a, b]\n",
"function simpson_element(f, a, b)\n",
" element = 0.\n",
" ### ... \n",
" return\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# definiere die gewuenschte Aufloesung\n",
"y_resolution = 15\n",
"y_trapez = linspace(0, pi, y_resolution) # Argumente sind start = 0, stop = pi, Anzahl der Schritte = y_resolution\n",
"y_simpson = linspace(0, pi, round(y_resolution / 2) + 1)\n",
"\n",
"# zum Speichern der Ergebnisse\n",
"integral_trapez = 0\n",
"integral_simpson = 0\n",
"\n",
"# Welche Funktion integrieren wir?\n",
"g = f_1\n",
"\n",
"# Integrationsschleife fuer Trapezregel\n",
"for (a, b) in zip(y_trapez[1:end - 1], y_trapez[2:end])\n",
"### ...\n",
"end\n",
"\n",
"# Integrationsschleife fuer Simpsonregel\n",
"for (a, b) in zip(y_simpson[1:end - 1], y_simpson[2:end])\n",
"### ...\n",
"end\n",
"\n",
"# Ausgabe des Ergebnis inklusive Abweichung von erwartetem Ergebnis 1\n",
"println(\"Trapez: \", integral_trapez, \"\\tDeviation: \", 1.0 - 2 * pi * integral_trapez)\n",
"println(\"Simpson: \", integral_simpson, \"\\tDeviation: \", 1.0 - 2 * pi * integral_simpson)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Julia 0.4.2",
"language": "julia",
"name": "julia-0.4"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "0.4.2"
}
},
"nbformat": 4,
"nbformat_minor": 0
}