aboutsummaryrefslogtreecommitdiffstats
path: root/buch/papers/kugel
diff options
context:
space:
mode:
Diffstat (limited to 'buch/papers/kugel')
-rw-r--r--buch/papers/kugel/Makefile3
-rw-r--r--buch/papers/kugel/Makefile.inc8
-rw-r--r--buch/papers/kugel/applications.tex9
-rw-r--r--buch/papers/kugel/figures/flux.pdfbin0 -> 345665 bytes
-rw-r--r--buch/papers/kugel/figures/povray/Makefile30
-rw-r--r--buch/papers/kugel/figures/povray/curvature.jpgbin0 -> 265649 bytes
-rw-r--r--buch/papers/kugel/figures/povray/curvature.maxima6
-rw-r--r--buch/papers/kugel/figures/povray/curvature.pngbin0 -> 590402 bytes
-rw-r--r--buch/papers/kugel/figures/povray/curvature.pov139
-rw-r--r--buch/papers/kugel/figures/povray/curvgraph.m140
-rw-r--r--buch/papers/kugel/figures/povray/spherecurve.cpp292
-rw-r--r--buch/papers/kugel/figures/povray/spherecurve.jpgbin0 -> 171287 bytes
-rw-r--r--buch/papers/kugel/figures/povray/spherecurve.m160
-rw-r--r--buch/papers/kugel/figures/povray/spherecurve.maxima13
-rw-r--r--buch/papers/kugel/figures/povray/spherecurve.pngbin0 -> 423490 bytes
-rw-r--r--buch/papers/kugel/figures/povray/spherecurve.pov73
-rw-r--r--buch/papers/kugel/figures/tikz/Makefile12
-rw-r--r--buch/papers/kugel/figures/tikz/curvature-1d.dat500
-rw-r--r--buch/papers/kugel/figures/tikz/curvature-1d.pdfbin0 -> 15387 bytes
-rw-r--r--buch/papers/kugel/figures/tikz/curvature-1d.py32
-rw-r--r--buch/papers/kugel/figures/tikz/curvature-1d.tex21
-rw-r--r--buch/papers/kugel/figures/tikz/spherical-coordinates.pdfbin0 -> 40319 bytes
-rw-r--r--buch/papers/kugel/figures/tikz/spherical-coordinates.tex99
-rw-r--r--buch/papers/kugel/introduction.tex35
-rw-r--r--buch/papers/kugel/main.tex39
-rw-r--r--buch/papers/kugel/packages.tex10
-rw-r--r--buch/papers/kugel/preliminaries.tex346
-rw-r--r--buch/papers/kugel/proofs.tex245
-rw-r--r--buch/papers/kugel/references.bib237
-rw-r--r--buch/papers/kugel/spherical-harmonics.tex410
-rw-r--r--buch/papers/kugel/teil0.tex22
-rw-r--r--buch/papers/kugel/teil1.tex55
-rw-r--r--buch/papers/kugel/teil2.tex40
-rw-r--r--buch/papers/kugel/teil3.tex40
34 files changed, 2792 insertions, 224 deletions
diff --git a/buch/papers/kugel/Makefile b/buch/papers/kugel/Makefile
index f798a55..995206b 100644
--- a/buch/papers/kugel/Makefile
+++ b/buch/papers/kugel/Makefile
@@ -5,5 +5,6 @@
#
images:
- @echo "no images to be created in kugel"
+ $(MAKE) -C ./figures/povray/
+ $(MAKE) -C ./figures/tikz/
diff --git a/buch/papers/kugel/Makefile.inc b/buch/papers/kugel/Makefile.inc
index d926229..50d6825 100644
--- a/buch/papers/kugel/Makefile.inc
+++ b/buch/papers/kugel/Makefile.inc
@@ -4,11 +4,7 @@
# (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
#
dependencies-kugel = \
- papers/kugel/packages.tex \
+ papers/kugel/packages.tex \
papers/kugel/main.tex \
- papers/kugel/references.bib \
- papers/kugel/teil0.tex \
- papers/kugel/teil1.tex \
- papers/kugel/teil2.tex \
- papers/kugel/teil3.tex
+ papers/kugel/references.bib
diff --git a/buch/papers/kugel/applications.tex b/buch/papers/kugel/applications.tex
new file mode 100644
index 0000000..b2f227e
--- /dev/null
+++ b/buch/papers/kugel/applications.tex
@@ -0,0 +1,9 @@
+% vim:ts=2 sw=2 et spell:
+
+\section{Applications}
+
+\subsection{Electroencephalography (EEG)}
+
+\subsection{Measuring Gravitational Fields}
+
+\subsection{Quantisation of Angular Momentum}
diff --git a/buch/papers/kugel/figures/flux.pdf b/buch/papers/kugel/figures/flux.pdf
new file mode 100644
index 0000000..6a87288
--- /dev/null
+++ b/buch/papers/kugel/figures/flux.pdf
Binary files differ
diff --git a/buch/papers/kugel/figures/povray/Makefile b/buch/papers/kugel/figures/povray/Makefile
new file mode 100644
index 0000000..4226dab
--- /dev/null
+++ b/buch/papers/kugel/figures/povray/Makefile
@@ -0,0 +1,30 @@
+#
+# Makefile -- build images
+#
+# (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+#
+all: curvature.jpg spherecurve.jpg
+
+curvature.inc: curvgraph.m
+ octave curvgraph.m
+
+curvature.png: curvature.pov curvature.inc
+ povray +A0.1 +W1920 +H1080 +Ocurvature.png curvature.pov
+
+curvature.jpg: curvature.png
+ convert curvature.png -density 300 -units PixelsPerInch curvature.jpg
+
+spherecurve2.inc: spherecurve.m
+ octave spherecurve.m
+
+spherecurve.png: spherecurve.pov spherecurve.inc
+ povray +A0.1 +W1080 +H1080 +Ospherecurve.png spherecurve.pov
+
+spherecurve.jpg: spherecurve.png
+ convert spherecurve.png -density 300 -units PixelsPerInch spherecurve.jpg
+
+spherecurve: spherecurve.cpp
+ g++ -o spherecurve -g -Wall -O spherecurve.cpp
+
+spherecurve.inc: spherecurve
+ ./spherecurve
diff --git a/buch/papers/kugel/figures/povray/curvature.jpg b/buch/papers/kugel/figures/povray/curvature.jpg
new file mode 100644
index 0000000..6448966
--- /dev/null
+++ b/buch/papers/kugel/figures/povray/curvature.jpg
Binary files differ
diff --git a/buch/papers/kugel/figures/povray/curvature.maxima b/buch/papers/kugel/figures/povray/curvature.maxima
new file mode 100644
index 0000000..6313642
--- /dev/null
+++ b/buch/papers/kugel/figures/povray/curvature.maxima
@@ -0,0 +1,6 @@
+
+f: exp(-r^2/sigma^2)/sigma;
+laplacef: ratsimp(diff(r * diff(f,r), r) / r);
+f: exp(-r^2/(2*sigma^2))/(sqrt(2)*sigma);
+laplacef: ratsimp(diff(r * diff(f,r), r) / r);
+
diff --git a/buch/papers/kugel/figures/povray/curvature.png b/buch/papers/kugel/figures/povray/curvature.png
new file mode 100644
index 0000000..20268f2
--- /dev/null
+++ b/buch/papers/kugel/figures/povray/curvature.png
Binary files differ
diff --git a/buch/papers/kugel/figures/povray/curvature.pov b/buch/papers/kugel/figures/povray/curvature.pov
new file mode 100644
index 0000000..3b15d77
--- /dev/null
+++ b/buch/papers/kugel/figures/povray/curvature.pov
@@ -0,0 +1,139 @@
+//
+// curvature.pov
+//
+// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+//
+
+#version 3.7;
+#include "colors.inc"
+
+global_settings {
+ assumed_gamma 1
+}
+
+#declare imagescale = 0.09;
+
+camera {
+ location <10, 10, -40>
+ look_at <0, 0, 0>
+ right 16/9 * x * imagescale
+ up y * imagescale
+}
+
+light_source {
+ <-10, 10, -40> color White
+ area_light <1,0,0> <0,0,1>, 10, 10
+ adaptive 1
+ jitter
+}
+
+sky_sphere {
+ pigment {
+ color rgb<1,1,1>
+ }
+}
+
+//
+// draw an arrow from <from> to <to> with thickness <arrowthickness> with
+// color <c>
+//
+#macro arrow(from, to, arrowthickness, c)
+#declare arrowdirection = vnormalize(to - from);
+#declare arrowlength = vlength(to - from);
+union {
+ sphere {
+ from, 1.1 * arrowthickness
+ }
+ cylinder {
+ from,
+ from + (arrowlength - 5 * arrowthickness) * arrowdirection,
+ arrowthickness
+ }
+ cone {
+ from + (arrowlength - 5 * arrowthickness) * arrowdirection,
+ 2 * arrowthickness,
+ to,
+ 0
+ }
+ pigment {
+ color c
+ }
+ finish {
+ specular 0.9
+ metallic
+ }
+}
+#end
+
+arrow(<-3.1,0,0>, <3.1,0,0>, 0.01, White)
+arrow(<0,-1,0>, <0,1,0>, 0.01, White)
+arrow(<0,0,-2.1>, <0,0,2.1>, 0.01, White)
+
+#include "curvature.inc"
+
+#declare sigma = 1;
+#declare s = 1.4;
+#declare N0 = 0.4;
+#declare funktion = function(r) {
+ (exp(-r*r/(sigma*sigma)) / sigma
+ -
+ exp(-r*r/(2*sigma*sigma)) / (sqrt(2)*sigma)) / N0
+};
+#declare hypot = function(xx, yy) { sqrt(xx*xx+yy*yy) };
+
+#declare Funktion = function(x,y) { funktion(hypot(x+s,y)) - funktion(hypot(x-s,y)) };
+#macro punkt(xx,yy)
+ <xx, Funktion(xx, yy), yy>
+#end
+
+#declare griddiameter = 0.006;
+union {
+ #declare xmin = -3;
+ #declare xmax = 3;
+ #declare ymin = -2;
+ #declare ymax = 2;
+
+
+ #declare xstep = 0.2;
+ #declare ystep = 0.02;
+ #declare xx = xmin;
+ #while (xx < xmax + xstep/2)
+ #declare yy = ymin;
+ #declare P = punkt(xx, yy);
+ #while (yy < ymax - ystep/2)
+ #declare yy = yy + ystep;
+ #declare Q = punkt(xx, yy);
+ sphere { P, griddiameter }
+ cylinder { P, Q, griddiameter }
+ #declare P = Q;
+ #end
+ sphere { P, griddiameter }
+ #declare xx = xx + xstep;
+ #end
+
+ #declare xstep = 0.02;
+ #declare ystep = 0.2;
+ #declare yy = ymin;
+ #while (yy < ymax + ystep/2)
+ #declare xx = xmin;
+ #declare P = punkt(xx, yy);
+ #while (xx < xmax - xstep/2)
+ #declare xx = xx + xstep;
+ #declare Q = punkt(xx, yy);
+ sphere { P, griddiameter }
+ cylinder { P, Q, griddiameter }
+ #declare P = Q;
+ #end
+ sphere { P, griddiameter }
+ #declare yy = yy + ystep;
+ #end
+
+ pigment {
+ color rgb<0.8,0.8,0.8>
+ }
+ finish {
+ metallic
+ specular 0.8
+ }
+}
+
diff --git a/buch/papers/kugel/figures/povray/curvgraph.m b/buch/papers/kugel/figures/povray/curvgraph.m
new file mode 100644
index 0000000..75effd6
--- /dev/null
+++ b/buch/papers/kugel/figures/povray/curvgraph.m
@@ -0,0 +1,140 @@
+#
+# curvature.m
+#
+# (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+#
+
+global N;
+N = 10;
+
+global sigma2;
+sigma2 = 1;
+
+global s;
+s = 1.4;
+
+global cmax;
+cmax = 0.9;
+global cmin;
+cmin = -0.9;
+
+global Cmax;
+global Cmin;
+Cmax = 0;
+Cmin = 0;
+
+xmin = -3;
+xmax = 3;
+xsteps = 200;
+hx = (xmax - xmin) / xsteps;
+
+ymin = -2;
+ymax = 2;
+ysteps = 200;
+hy = (ymax - ymin) / ysteps;
+
+function retval = f0(r)
+ global sigma2;
+ retval = exp(-r^2/sigma2)/sqrt(sigma2) - exp(-r^2/(2*sigma2))/(sqrt(2*sigma2));
+end
+
+global N0;
+N0 = f0(0)
+N0 = 0.4;
+
+function retval = f1(x,y)
+ global N0;
+ retval = f0(hypot(x, y)) / N0;
+endfunction
+
+function retval = f(x, y)
+ global s;
+ retval = f1(x+s, y) - f1(x-s, y);
+endfunction
+
+function retval = curvature0(r)
+ global sigma2;
+ retval = (
+ -4*(sigma2-r^2)*exp(-r^2/sigma2)
+ +
+ (2*sigma2-r^2)*exp(-r^2/(2*sigma2))
+ ) / (sigma2^(5/2));
+endfunction
+
+function retval = curvature1(x, y)
+ retval = curvature0(hypot(x, y));
+endfunction
+
+function retval = curvature(x, y)
+ global s;
+ retval = curvature1(x+s, y) - curvature1(x-s, y);
+endfunction
+
+function retval = farbe(x, y)
+ global Cmax;
+ global Cmin;
+ global cmax;
+ global cmin;
+ c = curvature(x, y);
+ if (c < Cmin)
+ Cmin = c
+ endif
+ if (c > Cmax)
+ Cmax = c
+ endif
+ u = (c - cmin) / (cmax - cmin);
+ if (u > 1)
+ u = 1;
+ endif
+ if (u < 0)
+ u = 0;
+ endif
+ color = [ u, 0.5, 1-u ];
+ color = color/max(color);
+ color(1,4) = c/2;
+ retval = color;
+endfunction
+
+function dreieck(fn, A, B, C)
+ fprintf(fn, "\ttriangle {\n");
+ fprintf(fn, "\t <%.4f,%.4f,%.4f>,\n", A(1,1), A(1,3), A(1,2));
+ fprintf(fn, "\t <%.4f,%.4f,%.4f>,\n", B(1,1), B(1,3), B(1,2));
+ fprintf(fn, "\t <%.4f,%.4f,%.4f>\n", C(1,1), C(1,3), C(1,2));
+ fprintf(fn, "\t}\n");
+endfunction
+
+function viereck(fn, punkte)
+ color = farbe(mean(punkte(:,1)), mean(punkte(:,2)));
+ fprintf(fn, " mesh {\n");
+ dreieck(fn, punkte(1,:), punkte(2,:), punkte(3,:));
+ dreieck(fn, punkte(2,:), punkte(3,:), punkte(4,:));
+ fprintf(fn, "\tpigment { color rgb<%.4f,%.4f,%.4f> } // %.4f\n",
+ color(1,1), color(1,2), color(1,3), color(1,4));
+ fprintf(fn, " }\n");
+endfunction
+
+fn = fopen("curvature.inc", "w");
+punkte = zeros(4,3);
+for ix = (0:xsteps-1)
+ x = xmin + ix * hx;
+ punkte(1,1) = x;
+ punkte(2,1) = x;
+ punkte(3,1) = x + hx;
+ punkte(4,1) = x + hx;
+ for iy = (0:ysteps-1)
+ y = ymin + iy * hy;
+ punkte(1,2) = y;
+ punkte(2,2) = y + hy;
+ punkte(3,2) = y;
+ punkte(4,2) = y + hy;
+ for i = (1:4)
+ punkte(i,3) = f(punkte(i,1), punkte(i,2));
+ endfor
+ viereck(fn, punkte);
+ end
+end
+#fprintf(fn, " finish { metallic specular 0.5 }\n");
+fclose(fn);
+
+printf("Cmax = %.4f\n", Cmax);
+printf("Cmin = %.4f\n", Cmin);
diff --git a/buch/papers/kugel/figures/povray/spherecurve.cpp b/buch/papers/kugel/figures/povray/spherecurve.cpp
new file mode 100644
index 0000000..8ddf5e5
--- /dev/null
+++ b/buch/papers/kugel/figures/povray/spherecurve.cpp
@@ -0,0 +1,292 @@
+/*
+ * spherecurve.cpp
+ *
+ * (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+ */
+#include <cstdio>
+#include <cstdlib>
+#include <cmath>
+#include <string>
+#include <iostream>
+
+inline double sqr(double x) { return x * x; }
+
+/**
+ * \brief Class for 3d vectors (also used as colors)
+ */
+class vector {
+ double X[3];
+public:
+ vector() { X[0] = X[1] = X[2] = 0; }
+ vector(double a) { X[0] = X[1] = X[2] = a; }
+ vector(double x, double y, double z) {
+ X[0] = x; X[1] = y; X[2] = z;
+ }
+ vector(double theta, double phi) {
+ double s = sin(theta);
+ X[0] = cos(phi) * s;
+ X[1] = sin(phi) * s;
+ X[2] = cos(theta);
+ }
+ vector(const vector& other) {
+ for (int i = 0; i < 3; i++) {
+ X[i] = other.X[i];
+ }
+ }
+ vector operator+(const vector& other) const {
+ return vector(X[0] + other.X[0],
+ X[1] + other.X[1],
+ X[2] + other.X[2]);
+ }
+ vector operator*(double l) const {
+ return vector(X[0] * l, X[1] * l, X[2] * l);
+ }
+ double operator*(const vector& other) const {
+ double s = 0;
+ for (int i = 0; i < 3; i++) {
+ s += X[i] * other.X[i];
+ }
+ return s;
+ }
+ double norm() const {
+ double s = 0;
+ for (int i = 0; i < 3; i++) {
+ s += sqr(X[i]);
+ }
+ return sqrt(s);
+ }
+ vector normalize() const {
+ double l = norm();
+ return vector(X[0]/l, X[1]/l, X[2]/l);
+ }
+ double max() const {
+ return std::max(X[0], std::max(X[1], X[2]));
+ }
+ double l0norm() const {
+ double l = 0;
+ for (int i = 0; i < 3; i++) {
+ if (fabs(X[i]) > l) {
+ l = fabs(X[i]);
+ }
+ }
+ return l;
+ }
+ vector l0normalize() const {
+ double l = l0norm();
+ vector result(X[0]/l, X[1]/l, X[2]/l);
+ return result;
+ }
+ const double& operator[](int i) const { return X[i]; }
+ double& operator[](int i) { return X[i]; }
+};
+
+/**
+ * \brief Derived 3d vector class implementing color
+ *
+ * The constructor in this class converts a single value into a
+ * color on a suitable gradient.
+ */
+class color : public vector {
+public:
+ static double utop;
+ static double ubottom;
+ static double green;
+public:
+ color(double u) {
+ u = (u - ubottom) / (utop - ubottom);
+ if (u > 1) {
+ u = 1;
+ }
+ if (u < 0) {
+ u = 0;
+ }
+ u = pow(u,2);
+ (*this)[0] = u;
+ (*this)[1] = green * u * (1 - u);
+ (*this)[2] = 1-u;
+ double l = l0norm();
+ for (int i = 0; i < 3; i++) {
+ (*this)[i] /= l;
+ }
+ }
+};
+
+double color::utop = 12;
+double color::ubottom = -31;
+double color::green = 0.5;
+
+/**
+ * \brief Surface model
+ *
+ * This class contains the definitions of the functions to plot
+ * and the parameters to
+ */
+class surfacefunction {
+ static vector axes[6];
+
+ double _a;
+ double _A;
+
+ double _umin;
+ double _umax;
+public:
+ double a() const { return _a; }
+ double A() const { return _A; }
+
+ double umin() const { return _umin; }
+ double umax() const { return _umax; }
+
+ surfacefunction(double a, double A) : _a(a), _A(A), _umin(0), _umax(0) {
+ }
+
+ double f(double z) {
+ return A() * exp(a() * (sqr(z) - 1));
+ }
+
+ double g(double z) {
+ return -f(z) * 2*a() * ((2*a()*sqr(z) + (3-2*a()))*sqr(z) - 1);
+ }
+
+ double F(const vector& v) {
+ double s = 0;
+ for (int i = 0; i < 6; i++) {
+ s += f(axes[i] * v);
+ }
+ return s / 6;
+ }
+
+ double G(const vector& v) {
+ double s = 0;
+ for (int i = 0; i < 6; i++) {
+ s += g(axes[i] * v);
+ }
+ return s / 6;
+ }
+protected:
+ color farbe(const vector& v) {
+ double u = G(v);
+ if (u < _umin) {
+ _umin = u;
+ }
+ if (u > _umax) {
+ _umax = u;
+ }
+ return color(u);
+ }
+};
+
+static double phi = (1 + sqrt(5)) / 2;
+static double sl = sqrt(sqr(phi) + 1);
+vector surfacefunction::axes[6] = {
+ vector( 0. , -1./sl, phi/sl ),
+ vector( 0. , 1./sl, phi/sl ),
+ vector( 1./sl, phi/sl, 0. ),
+ vector( -1./sl, phi/sl, 0. ),
+ vector( phi/sl, 0. , 1./sl ),
+ vector( -phi/sl, 0. , 1./sl )
+};
+
+/**
+ * \brief Class to construct the plot
+ */
+class surface : public surfacefunction {
+ FILE *outfile;
+
+ int _phisteps;
+ int _thetasteps;
+ double _hphi;
+ double _htheta;
+public:
+ int phisteps() const { return _phisteps; }
+ int thetasteps() const { return _thetasteps; }
+ double hphi() const { return _hphi; }
+ double htheta() const { return _htheta; }
+ void phisteps(int s) { _phisteps = s; _hphi = 2 * M_PI / s; }
+ void thetasteps(int s) { _thetasteps = s; _htheta = M_PI / s; }
+
+ surface(const std::string& filename, double a, double A)
+ : surfacefunction(a, A) {
+ outfile = fopen(filename.c_str(), "w");
+ phisteps(400);
+ thetasteps(200);
+ }
+
+ ~surface() {
+ fclose(outfile);
+ }
+
+private:
+ void triangle(const vector& v0, const vector& v1, const vector& v2) {
+ fprintf(outfile, " mesh {\n");
+ vector c = (v0 + v1 + v2) * (1./3.);
+ vector color = farbe(c.normalize());
+ vector V0 = v0 * (1 + F(v0));
+ vector V1 = v1 * (1 + F(v1));
+ vector V2 = v2 * (1 + F(v2));
+ fprintf(outfile, "\ttriangle {\n");
+ fprintf(outfile, "\t <%.6f,%.6f,%.6f>,\n",
+ V0[0], V0[2], V0[1]);
+ fprintf(outfile, "\t <%.6f,%.6f,%.6f>,\n",
+ V1[0], V1[2], V1[1]);
+ fprintf(outfile, "\t <%.6f,%.6f,%.6f>\n",
+ V2[0], V2[2], V2[1]);
+ fprintf(outfile, "\t}\n");
+ fprintf(outfile, "\tpigment { color rgb<%.4f,%.4f,%.4f> }\n",
+ color[0], color[1], color[2]);
+ fprintf(outfile, "\tfinish { metallic specular 0.5 }\n");
+ fprintf(outfile, " }\n");
+ }
+
+ void northcap() {
+ vector v0(0, 0, 1);
+ for (int i = 1; i <= phisteps(); i++) {
+ fprintf(outfile, " // northcap i = %d\n", i);
+ vector v1(htheta(), (i - 1) * hphi());
+ vector v2(htheta(), i * hphi());
+ triangle(v0, v1, v2);
+ }
+ }
+
+ void southcap() {
+ vector v0(0, 0, -1);
+ for (int i = 1; i <= phisteps(); i++) {
+ fprintf(outfile, " // southcap i = %d\n", i);
+ vector v1(M_PI - htheta(), (i - 1) * hphi());
+ vector v2(M_PI - htheta(), i * hphi());
+ triangle(v0, v1, v2);
+ }
+ }
+
+ void zone() {
+ for (int j = 1; j < thetasteps() - 1; j++) {
+ for (int i = 1; i <= phisteps(); i++) {
+ fprintf(outfile, " // zone j = %d, i = %d\n",
+ j, i);
+ vector v0( j * htheta(), (i-1) * hphi());
+ vector v1((j+1) * htheta(), (i-1) * hphi());
+ vector v2( j * htheta(), i * hphi());
+ vector v3((j+1) * htheta(), i * hphi());
+ triangle(v0, v1, v2);
+ triangle(v1, v2, v3);
+ }
+ }
+ }
+public:
+ void draw() {
+ northcap();
+ southcap();
+ zone();
+ }
+};
+
+/**
+ * \brief main function
+ */
+int main(int argc, char *argv[]) {
+ surface S("spherecurve.inc", 5, 10);
+ color::green = 1.0;
+ S.draw();
+ std::cout << "umin: " << S.umin() << std::endl;
+ std::cout << "umax: " << S.umax() << std::endl;
+ return EXIT_SUCCESS;
+}
diff --git a/buch/papers/kugel/figures/povray/spherecurve.jpg b/buch/papers/kugel/figures/povray/spherecurve.jpg
new file mode 100644
index 0000000..cd2e7c8
--- /dev/null
+++ b/buch/papers/kugel/figures/povray/spherecurve.jpg
Binary files differ
diff --git a/buch/papers/kugel/figures/povray/spherecurve.m b/buch/papers/kugel/figures/povray/spherecurve.m
new file mode 100644
index 0000000..99d5c9a
--- /dev/null
+++ b/buch/papers/kugel/figures/povray/spherecurve.m
@@ -0,0 +1,160 @@
+#
+# spherecurve.m
+#
+# (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+#
+global a;
+a = 5;
+global A;
+A = 10;
+
+phisteps = 400;
+hphi = 2 * pi / phisteps;
+thetasteps = 200;
+htheta = pi / thetasteps;
+
+function retval = f(z)
+ global a;
+ global A;
+ retval = A * exp(a * (z^2 - 1));
+endfunction
+
+function retval = g(z)
+ global a;
+ retval = -f(z) * 2 * a * (2 * a * z^4 + (3 - 2*a) * z^2 - 1);
+ # 2
+ # - a 2 4 2 2 a z
+ #(%o6) - %e (4 a z + (6 a - 4 a ) z - 2 a) %e
+endfunction
+
+phi = (1 + sqrt(5)) / 2;
+
+global axes;
+axes = [
+ 0, 0, 1, -1, phi, -phi;
+ 1, -1, phi, phi, 0, 0;
+ phi, phi, 0, 0, 1, 1;
+];
+axes = axes / (sqrt(phi^2+1));
+
+function retval = kugel(theta, phi)
+ retval = [
+ cos(phi) * sin(theta);
+ sin(phi) * sin(theta);
+ cos(theta)
+ ];
+endfunction
+
+function retval = F(v)
+ global axes;
+ s = 0;
+ for i = (1:6)
+ z = axes(:,i)' * v;
+ s = s + f(z);
+ endfor
+ retval = s / 6;
+endfunction
+
+function retval = F2(theta, phi)
+ v = kugel(theta, phi);
+ retval = F(v);
+endfunction
+
+function retval = G(v)
+ global axes;
+ s = 0;
+ for i = (1:6)
+ s = s + g(axes(:,i)' * v);
+ endfor
+ retval = s / 6;
+endfunction
+
+function retval = G2(theta, phi)
+ v = kugel(theta, phi);
+ retval = G(v);
+endfunction
+
+function retval = cnormalize(u)
+ utop = 11;
+ ubottom = -30;
+ retval = (u - ubottom) / (utop - ubottom);
+ if (retval > 1)
+ retval = 1;
+ endif
+ if (retval < 0)
+ retval = 0;
+ endif
+endfunction
+
+global umin;
+umin = 0;
+global umax;
+umax = 0;
+
+function color = farbe(v)
+ global umin;
+ global umax;
+ u = G(v);
+ if (u < umin)
+ umin = u;
+ endif
+ if (u > umax)
+ umax = u;
+ endif
+ u = cnormalize(u);
+ color = [ u, 0.5, 1-u ];
+ color = color/max(color);
+endfunction
+
+function dreieck(fn, v0, v1, v2)
+ fprintf(fn, " mesh {\n");
+ c = (v0 + v1 + v2) / 3;
+ c = c / norm(c);
+ color = farbe(c);
+ v0 = v0 * (1 + F(v0));
+ v1 = v1 * (1 + F(v1));
+ v2 = v2 * (1 + F(v2));
+ fprintf(fn, "\ttriangle {\n");
+ fprintf(fn, "\t <%.6f,%.6f,%.6f>,\n", v0(1,1), v0(3,1), v0(2,1));
+ fprintf(fn, "\t <%.6f,%.6f,%.6f>,\n", v1(1,1), v1(3,1), v1(2,1));
+ fprintf(fn, "\t <%.6f,%.6f,%.6f>\n", v2(1,1), v2(3,1), v2(2,1));
+ fprintf(fn, "\t}\n");
+ fprintf(fn, "\tpigment { color rgb<%.4f,%.4f,%.4f> }\n",
+ color(1,1), color(1,2), color(1,3));
+ fprintf(fn, "\tfinish { metallic specular 0.5 }\n");
+ fprintf(fn, " }\n");
+endfunction
+
+fn = fopen("spherecurve2.inc", "w");
+
+ for i = (1:phisteps)
+ # Polkappe nord
+ v0 = [ 0; 0; 1 ];
+ v1 = kugel(htheta, (i-1) * hphi);
+ v2 = kugel(htheta, i * hphi);
+ fprintf(fn, " // i = %d\n", i);
+ dreieck(fn, v0, v1, v2);
+
+ # Polkappe sued
+ v0 = [ 0; 0; -1 ];
+ v1 = kugel(pi-htheta, (i-1) * hphi);
+ v2 = kugel(pi-htheta, i * hphi);
+ dreieck(fn, v0, v1, v2);
+ endfor
+
+ for j = (1:thetasteps-2)
+ for i = (1:phisteps)
+ v0 = kugel( j * htheta, (i-1) * hphi);
+ v1 = kugel((j+1) * htheta, (i-1) * hphi);
+ v2 = kugel( j * htheta, i * hphi);
+ v3 = kugel((j+1) * htheta, i * hphi);
+ fprintf(fn, " // i = %d, j = %d\n", i, j);
+ dreieck(fn, v0, v1, v2);
+ dreieck(fn, v1, v2, v3);
+ endfor
+ endfor
+
+fclose(fn);
+
+umin
+umax
diff --git a/buch/papers/kugel/figures/povray/spherecurve.maxima b/buch/papers/kugel/figures/povray/spherecurve.maxima
new file mode 100644
index 0000000..1e9077c
--- /dev/null
+++ b/buch/papers/kugel/figures/povray/spherecurve.maxima
@@ -0,0 +1,13 @@
+/*
+ * spherecurv.maxima
+ *
+ * (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+ */
+f: exp(-a * sin(theta)^2);
+
+g: ratsimp(diff(sin(theta) * diff(f, theta), theta)/sin(theta));
+g: subst(z, cos(theta), g);
+g: subst(sqrt(1-z^2), sin(theta), g);
+ratsimp(g);
+
+f: ratsimp(subst(sqrt(1-z^2), sin(theta), f));
diff --git a/buch/papers/kugel/figures/povray/spherecurve.png b/buch/papers/kugel/figures/povray/spherecurve.png
new file mode 100644
index 0000000..ff24371
--- /dev/null
+++ b/buch/papers/kugel/figures/povray/spherecurve.png
Binary files differ
diff --git a/buch/papers/kugel/figures/povray/spherecurve.pov b/buch/papers/kugel/figures/povray/spherecurve.pov
new file mode 100644
index 0000000..b1bf4b8
--- /dev/null
+++ b/buch/papers/kugel/figures/povray/spherecurve.pov
@@ -0,0 +1,73 @@
+//
+// curvature.pov
+//
+// (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule
+//
+
+#version 3.7;
+#include "colors.inc"
+
+global_settings {
+ assumed_gamma 1
+}
+
+#declare imagescale = 0.13;
+
+camera {
+ location <10, 10, -40>
+ look_at <0, 0, 0>
+ right x * imagescale
+ up y * imagescale
+}
+
+light_source {
+ <-10, 10, -40> color White
+ area_light <1,0,0> <0,0,1>, 10, 10
+ adaptive 1
+ jitter
+}
+
+sky_sphere {
+ pigment {
+ color rgb<1,1,1>
+ }
+}
+
+//
+// draw an arrow from <from> to <to> with thickness <arrowthickness> with
+// color <c>
+//
+#macro arrow(from, to, arrowthickness, c)
+#declare arrowdirection = vnormalize(to - from);
+#declare arrowlength = vlength(to - from);
+union {
+ sphere {
+ from, 1.1 * arrowthickness
+ }
+ cylinder {
+ from,
+ from + (arrowlength - 5 * arrowthickness) * arrowdirection,
+ arrowthickness
+ }
+ cone {
+ from + (arrowlength - 5 * arrowthickness) * arrowdirection,
+ 2 * arrowthickness,
+ to,
+ 0
+ }
+ pigment {
+ color c
+ }
+ finish {
+ specular 0.9
+ metallic
+ }
+}
+#end
+
+arrow(<-2.7,0,0>, <2.7,0,0>, 0.03, White)
+arrow(<0,-2.7,0>, <0,2.7,0>, 0.03, White)
+arrow(<0,0,-2.7>, <0,0,2.7>, 0.03, White)
+
+#include "spherecurve.inc"
+
diff --git a/buch/papers/kugel/figures/tikz/Makefile b/buch/papers/kugel/figures/tikz/Makefile
new file mode 100644
index 0000000..4ec4e5a
--- /dev/null
+++ b/buch/papers/kugel/figures/tikz/Makefile
@@ -0,0 +1,12 @@
+FIGURES := spherical-coordinates.pdf curvature-1d.pdf
+
+all: $(FIGURES)
+
+%.pdf: %.tex
+ pdflatex $<
+
+curvature-1d.pdf: curvature-1d.tex curvature-1d.dat
+ pdflatex curvature-1d.tex
+
+curvature-1d.dat: curvature-1d.py
+ python3 $<
diff --git a/buch/papers/kugel/figures/tikz/curvature-1d.dat b/buch/papers/kugel/figures/tikz/curvature-1d.dat
new file mode 100644
index 0000000..6622398
--- /dev/null
+++ b/buch/papers/kugel/figures/tikz/curvature-1d.dat
@@ -0,0 +1,500 @@
+0.000000000000000000e+00 1.000000000000000000e+00 5.000007286987066095e+02
+2.004008016032064049e-02 1.025056790958151831e+00 4.899813296957295279e+02
+4.008016032064128098e-02 1.050121598724190752e+00 4.799659543969494848e+02
+6.012024048096192147e-02 1.075186379145250948e+00 4.699586248906784931e+02
+8.016032064128256196e-02 1.100243094530689136e+00 4.599633600341078932e+02
+1.002004008016031955e-01 1.125283716879951434e+00 4.499841738393695891e+02
+1.202404809619238429e-01 1.150300231106550664e+00 4.400250738615438877e+02
+1.402805611222444904e-01 1.175284638256853809e+00 4.300900595892592833e+02
+1.603206412825651239e-01 1.200228958722394657e+00 4.201831208385332275e+02
+1.803607214428857575e-01 1.225125235444413541e+00 4.103082361504954747e+02
+2.004008016032063910e-01 1.249965537109345881e+00 4.004693711936409954e+02
+2.204408817635270523e-01 1.274741961333968554e+00 3.906704771712513775e+02
+2.404809619238476859e-01 1.299446637838927776e+00 3.809154892346260795e+02
+2.605210420841683194e-01 1.324071731609375302e+00 3.712083249027585907e+02
+2.805611222444889807e-01 1.348609446041445725e+00 3.615528824890962483e+02
+3.006012024048095865e-01 1.373052026073301457e+00 3.519530395360096122e+02
+3.206412825651302478e-01 1.397391761299501045e+00 3.424126512576057166e+02
+3.406813627254509091e-01 1.421620989067430063e+00 3.329355489915074031e+02
+3.607214428857715149e-01 1.445732097554558448e+00 3.235255386602207750e+02
+3.807615230460921762e-01 1.469717528825280173e+00 3.141863992427096832e+02
+4.008016032064127820e-01 1.493569781866116220e+00 3.049218812567906411e+02
+4.208416833667334433e-01 1.517281415598057848e+00 2.957357052529569614e+02
+4.408817635270541047e-01 1.540845051864837556e+00 2.866315603202378384e+02
+4.609218436873747105e-01 1.564253378395934257e+00 2.776131026046919601e+02
+4.809619238476953718e-01 1.587499151743118286e+00 2.686839538411309150e+02
+5.010020040080159776e-01 1.610575200189357625e+00 2.598476998986618582e+02
+5.210420841683366389e-01 1.633474426628916509e+00 2.511078893406329655e+02
+5.410821643286573002e-01 1.656189811417493107e+00 2.424680319995614752e+02
+5.611222444889779615e-01 1.678714415191247422e+00 2.339315975676150003e+02
+5.811623246492986228e-01 1.701041381653590534e+00 2.255020142032130082e+02
+6.012024048096191731e-01 1.723163940328612753e+00 2.171826671543084046e+02
+6.212424849699398344e-01 1.745075409280051337e+00 2.089768973989005474e+02
+6.412825651302604957e-01 1.766769197794693991e+00 2.008880003033277433e+02
+6.613226452905811570e-01 1.788238809029157217e+00 1.929192242988764008e+02
+6.813627254509018183e-01 1.809477842618958832e+00 1.850737695772391760e+02
+7.014028056112223686e-01 1.830479997248850577e+00 1.773547868053454408e+02
+7.214428857715430299e-01 1.851239073183373218e+00 1.697653758600805816e+02
+7.414829659318636912e-01 1.871748974756613837e+00 1.623085845834024497e+02
+7.615230460921843525e-01 1.892003712820175432e+00 1.549874075583541639e+02
+7.815631262525050138e-01 1.911997407148365635e+00 1.478047849064652723e+02
+8.016032064128255641e-01 1.931724288799645972e+00 1.407636011070246695e+02
+8.216432865731462254e-01 1.951178702433387091e+00 1.338666838386980942e+02
+8.416833667334668867e-01 1.970355108581006931e+00 1.271168028439571600e+02
+8.617234468937875480e-01 1.989248085870571892e+00 1.205166688167746969e+02
+8.817635270541082093e-01 2.007852333203973494e+00 1.140689323140332476e+02
+9.018036072144288706e-01 2.026162671885804123e+00 1.077761826910842018e+02
+9.218436873747494209e-01 2.044174047703075203e+00 1.016409470618853419e+02
+9.418837675350700822e-01 2.061881532954947804e+00 9.566568928413349227e+01
+9.619238476953907435e-01 2.079280328431652780e+00 8.985280896980044929e+01
+9.819639278557114048e-01 2.096365765341811738e+00 8.420464052146976996e+01
+1.002004008016031955e+00 2.113133307187384347e+00 7.872345219486057033e+01
+1.022044088176352616e+00 2.129578551585488810e+00 7.341144518791566043e+01
+1.042084168336673278e+00 2.145697232036356539e+00 6.827075275681968947e+01
+1.062124248496993939e+00 2.161485219636723798e+00 6.330343935930140020e+01
+1.082164328657314600e+00 2.176938524737964453e+00 5.851149982556578522e+01
+1.102204408817635262e+00 2.192053298548298113e+00 5.389685855718687435e+01
+1.122244488977955923e+00 2.206825834678430187e+00 4.946136875428519630e+01
+1.142284569138276584e+00 2.221252570630007028e+00 4.520681167129833966e+01
+1.162324649298597246e+00 2.235330089226285288e+00 4.113489590164444110e+01
+1.182364729458917685e+00 2.249055119984439521e+00 3.724725669156617869e+01
+1.202404809619238346e+00 2.262424540428958686e+00 3.354545528342948302e+01
+1.222444889779559007e+00 2.275435377345608856e+00 3.003097828874255271e+01
+1.242484969939879669e+00 2.288084807975446999e+00 2.670523709114522859e+01
+1.262525050100200330e+00 2.300370161148418191e+00 2.356956727960955078e+01
+1.282565130260520991e+00 2.312288918356074419e+00 2.062522811207871243e+01
+1.302605210420841653e+00 2.323838714762985536e+00 1.787340200976009186e+01
+1.322645290581162314e+00 2.335017340156437360e+00 1.531519408227492640e+01
+1.342685370741482975e+00 2.345822739834032333e+00 1.295163168385587404e+01
+1.362725450901803637e+00 2.356253015428841913e+00 1.078366400077049292e+01
+1.382765531062124298e+00 2.366306425671775404e+00 8.812161670136093861e+00
+1.402805611222444737e+00 2.375981387090854824e+00 7.037916430279492097e+00
+1.422845691382765398e+00 2.385276474647127998e+00 5.461640802781636772e+00
+1.442885771543086060e+00 2.394190422306948562e+00 4.083967806335150996e+00
+1.462925851703406721e+00 2.402722123550405264e+00 2.905450702529595031e+00
+1.482965931863727382e+00 2.410870631815691834e+00 1.926562773666154138e+00
+1.503006012024048044e+00 2.418635160879236246e+00 1.147697132691613664e+00
+1.523046092184368705e+00 2.426015085171442820e+00 5.691665653277303560e-01
+1.543086172344689366e+00 2.433009940027915263e+00 1.912034044591185422e-01
+1.563126252505010028e+00 2.439619421876060734e+00 1.395943683027547552e-02
+1.583166332665330689e+00 2.445843388357002546e+00 3.750584208938356756e-02
+1.603206412825651128e+00 2.451681858382752210e+00 2.618331642032580286e-01
+1.623246492985971789e+00 2.457135012128611962e+00 6.868513152547650602e-01
+1.643286573146292451e+00 2.462203190960818411e+00 1.312389611621266550e+00
+1.663326653306613112e+00 2.466886897299453096e+00 2.138196842519770602e+00
+1.683366733466933773e+00 2.471186794416676769e+00 3.163941370891084848e+00
+1.703406813627254435e+00 2.475103706170361573e+00 4.389211266582178084e+00
+1.723446893787575096e+00 2.478638616673238371e+00 5.813514471774004377e+00
+1.743486973947895757e+00 2.481792669897687542e+00 7.436278998587575018e+00
+1.763527054108216419e+00 2.484567169216326032e+00 9.256853158789395408e+00
+1.783567134268537080e+00 2.486963576878586935e+00 1.127450582550371472e+01
+1.803607214428857741e+00 2.488983513423490557e+00 1.348842672682692978e+01
+1.823647294589178181e+00 2.490628757028852114e+00 1.589772677122579658e+01
+1.843687374749498842e+00 2.491901242797179172e+00 1.850143840458866151e+01
+1.863727454909819503e+00 2.492803061978552392e+00 2.129851599878729118e+01
+1.883767535070140164e+00 2.493336461130795989e+00 2.428783627159159408e+01
+1.903807615230460826e+00 2.493503841217282080e+00 2.746819873777046439e+01
+1.923847695390781487e+00 2.493307756642720641e+00 3.083832619119621654e+01
+1.943887775551102148e+00 2.492750914227336079e+00 3.439686521775931283e+01
+1.963927855711422810e+00 2.491836172119830994e+00 3.814238673888808506e+01
+1.983967935871743471e+00 2.490566538649576334e+00 4.207338658545420174e+01
+2.004008016032063910e+00 2.488945171118494670e+00 4.618828610183413019e+01
+2.024048096192384794e+00 2.486975374533113126e+00 5.048543277988349587e+01
+2.044088176352705233e+00 2.484660600277302400e+00 5.496310092257003532e+01
+2.064128256513026116e+00 2.482004444726231274e+00 5.961949233699898087e+01
+2.084168336673346555e+00 2.479010647802090794e+00 6.445273705655124274e+01
+2.104208416833667439e+00 2.475683091472176578e+00 6.946089409184656915e+01
+2.124248496993987878e+00 2.472025798189923851e+00 7.464195221022733051e+01
+2.144288577154308317e+00 2.468042929279522735e+00 7.999383074345310263e+01
+2.164328657314629201e+00 2.463738783264768806e+00 8.551438042327842481e+01
+2.184368737474949640e+00 2.459117794142811952e+00 9.120138424458035331e+01
+2.204408817635270523e+00 2.454184529603501197e+00 9.705255835568922862e+01
+2.224448897795590963e+00 2.448943689195040463e+00 1.030655529755629374e+02
+2.244488977955911846e+00 2.443400102436689814e+00 1.092379533374396345e+02
+2.264529058116232285e+00 2.437558726879272442e+00 1.155672806585862560e+02
+2.284569138276553169e+00 2.431424646114265897e+00 1.220509931357573947e+02
+2.304609218436873608e+00 2.425003067732275142e+00 1.286864869659601709e+02
+2.324649298597194491e+00 2.418299321231706767e+00 1.354710973921206971e+02
+2.344689378757514930e+00 2.411318855878493483e+00 1.424020997732258422e+02
+2.364729458917835370e+00 2.404067238517710425e+00 1.494767106785168664e+02
+2.384769539078156253e+00 2.396550151337982548e+00 1.566920890052907680e+02
+2.404809619238476692e+00 2.388773389589562868e+00 1.640453371198620403e+02
+2.424849699398797576e+00 2.380742859257013677e+00 1.715335020212285144e+02
+2.444889779559118015e+00 2.372464574687412675e+00 1.791535765269697436e+02
+2.464929859719438898e+00 2.363944656175040571e+00 1.869025004809070936e+02
+2.484969939879759337e+00 2.355189327503528496e+00 1.947771619820341300e+02
+2.505010020040080221e+00 2.346204913446435114e+00 2.027743986342312610e+02
+2.525050100200400660e+00 2.336997837227277053e+00 2.108909988162550349e+02
+2.545090180360721543e+00 2.327574617940013191e+00 2.191237029714987443e+02
+2.565130260521041983e+00 2.317941867931036182e+00 2.274692049170012638e+02
+2.585170340681362422e+00 2.308106290143709938e+00 2.359241531711823257e+02
+2.605210420841683305e+00 2.298074675426524660e+00 2.444851522997685436e+02
+2.625250501002003745e+00 2.287853899805951663e+00 2.531487642793698569e+02
+2.645290581162324628e+00 2.277450921725090449e+00 2.619115098781609845e+02
+2.665330661322645067e+00 2.266872779249217817e+00 2.707698700531099121e+02
+2.685370741482965951e+00 2.256126587239360770e+00 2.797202873631965190e+02
+2.705410821643286390e+00 2.245219534495030533e+00 2.887591673980486462e+02
+2.725450901803607273e+00 2.234158880867263886e+00 2.978828802214276834e+02
+2.745490981963927712e+00 2.222951954343126868e+00 3.070877618289785573e+02
+2.765531062124248596e+00 2.211606148102859937e+00 3.163701156196634088e+02
+2.785571142284569035e+00 2.200128917550841834e+00 3.257262138802831259e+02
+2.805611222444889474e+00 2.188527777321561008e+00 3.351522992824964149e+02
+2.825651302605210358e+00 2.176810298261803389e+00 3.446445863917298311e+02
+2.845691382765530797e+00 2.164984104390269337e+00 3.541992631873747541e+02
+2.865731462925851680e+00 2.153056869835828113e+00 3.638124925936636487e+02
+2.885771543086172120e+00 2.141036315755658670e+00 3.734804140206049965e+02
+2.905811623246493003e+00 2.128930207234495775e+00 3.831991449143642399e+02
+2.925851703406813442e+00 2.116746350166242685e+00 3.929647823164625606e+02
+2.945891783567134325e+00 2.104492588119187158e+00 4.027734044311732191e+02
+2.965931863727454765e+00 2.092176799186097114e+00 4.126210722004783520e+02
+2.985971943887775648e+00 2.079806892820440289e+00 4.225038308859634526e+02
+3.006012024048096087e+00 2.067390806660023728e+00 4.324177116570036219e+02
+3.026052104208416527e+00 2.054936503339299669e+00 4.423587331846135839e+02
+3.046092184368737410e+00 2.042451967291644355e+00 4.523229032403145879e+02
+3.066132264529057849e+00 2.029945201542878497e+00 4.623062202993779124e+02
+3.086172344689378733e+00 2.017424224497317731e+00 4.723046751478044598e+02
+3.106212424849699172e+00 2.004897066717655107e+00 4.823142524923883343e+02
+3.126252505010020055e+00 1.992371767699953278e+00 4.923309325732264483e+02
+3.146292585170340494e+00 1.979856372645053764e+00 5.023506927780170486e+02
+3.166332665330661378e+00 1.967358929227692510e+00 5.123695092575079570e+02
+3.186372745490981817e+00 1.954887484364624450e+00 5.223833585414381560e+02
+3.206412825651302256e+00 1.942450080983050720e+00 5.323882191543301587e+02
+3.226452905811623140e+00 1.930054754790647475e+00 5.423800732304792973e+02
+3.246492985971943579e+00 1.917709531048496396e+00 5.523549081274929904e+02
+3.266533066132264462e+00 1.905422421348207829e+00 5.623087180377352752e+02
+3.286573146292584902e+00 1.893201420394537093e+00 5.722375055970223912e+02
+3.306613226452905785e+00 1.881054502794775818e+00 5.821372834899317468e+02
+3.326653306613226224e+00 1.868989619856223694e+00 5.920040760510720474e+02
+3.346693386773547108e+00 1.857014696393007203e+00 6.018339208616766882e+02
+3.366733466933867547e+00 1.845137627543546266e+00 6.116228703408767160e+02
+3.386773547094188430e+00 1.833366275599931816e+00 6.213669933310161468e+02
+3.406813627254508869e+00 1.821708466850500807e+00 6.310623766763693538e+02
+3.426853707414829309e+00 1.810171988436861001e+00 6.407051267946321786e+02
+3.446893787575150192e+00 1.798764585226647394e+00 6.502913712405503475e+02
+3.466933867735470631e+00 1.787493956703248177e+00 6.598172602610595732e+02
+3.486973947895791515e+00 1.776367753873757227e+00 6.692789683413144530e+02
+3.507014028056111954e+00 1.765393576196397918e+00 6.786726957409805436e+02
+3.527054108216432837e+00 1.754578968528644589e+00 6.879946700201794556e+02
+3.547094188376753277e+00 1.743931418097274477e+00 6.972411475544654422e+02
+3.567134268537074160e+00 1.733458351491558469e+00 7.064084150382354892e+02
+3.587174348697394599e+00 1.723167131680813480e+00 7.154927909759586555e+02
+3.607214428857715482e+00 1.713065055057490182e+00 7.244906271606341761e+02
+3.627254509018035922e+00 1.703159348507010673e+00 7.333983101388791965e+02
+3.647294589178356361e+00 1.693457166505509370e+00 7.422122626620608798e+02
+3.667334669338677244e+00 1.683965588246658651e+00 7.509289451228887629e+02
+3.687374749498997684e+00 1.674691614798728523e+00 7.595448569768896050e+02
+3.707414829659318567e+00 1.665642166293012316e+00 7.680565381481970917e+02
+3.727454909819639006e+00 1.656824079144766593e+00 7.764605704190873894e+02
+3.747494989979959890e+00 1.648244103307762831e+00 7.847535788027066701e+02
+3.767535070140280329e+00 1.639908899563566447e+00 7.929322328984358137e+02
+3.787575150300601212e+00 1.631825036846622945e+00 8.009932482293520479e+02
+3.807615230460921651e+00 1.623998989606231236e+00 8.089333875612445581e+02
+3.827655310621242535e+00 1.616437135206458375e+00 8.167494622026619027e+02
+3.847695390781562974e+00 1.609145751365050003e+00 8.244383332854611126e+02
+3.867735470941883413e+00 1.602131013632347223e+00 8.319969130253510912e+02
+3.887775551102204297e+00 1.595398992911243319e+00 8.394221659619206548e+02
+3.907815631262524736e+00 1.588955653019160641e+00 8.467111101776515625e+02
+3.927855711422845619e+00 1.582806848293030866e+00 8.538608184954326816e+02
+3.947895791583166059e+00 1.576958321238246530e+00 8.608684196540875746e+02
+3.967935871743486942e+00 1.571415700222517753e+00 8.677310994614492756e+02
+3.987975951903807381e+00 1.566184497215570515e+00 8.744461019245148918e+02
+4.008016032064127820e+00 1.561270105575586431e+00 8.810107303562293737e+02
+4.028056112224448704e+00 1.556677797883275982e+00 8.874223484584509833e+02
+4.048096192384769587e+00 1.552412723824457164e+00 8.936783813806663375e+02
+4.068136272545089582e+00 1.548479908121984883e+00 8.997763167540272207e+02
+4.088176352705410466e+00 1.544884248517864656e+00 9.057137057002989877e+02
+4.108216432865731349e+00 1.541630513806363734e+00 9.114881638153049153e+02
+4.128256513026052232e+00 1.538723341918903031e+00 9.170973721264856522e+02
+4.148296593186372228e+00 1.536167238061506124e+00 9.225390780241765469e+02
+4.168336673346693111e+00 1.533966572905543835e+00 9.278110961662381442e+02
+4.188376753507013994e+00 1.532125580832512046e+00 9.329113093556687772e+02
+4.208416833667334878e+00 1.530648358233542172e+00 9.378376693908538755e+02
+4.228456913827654873e+00 1.529538861864323529e+00 9.425881978881050145e+02
+4.248496993987975756e+00 1.528800907256105734e+00 9.471609870761637922e+02
+4.268537074148296639e+00 1.528438167183412855e+00 9.515542005623437944e+02
+4.288577154308616635e+00 1.528454170189090799e+00 9.557660740700115412e+02
+4.308617234468937518e+00 1.528852299167273276e+00 9.597949161471043453e+02
+4.328657314629258401e+00 1.529635790004841844e+00 9.636391088454030296e+02
+4.348697394789579285e+00 1.530807730281920964e+00 9.672971083702858550e+02
+4.368737474949899280e+00 1.532371058031932520e+00 9.707674457007029787e+02
+4.388777555110220163e+00 1.534328560561707189e+00 9.740487271791230341e+02
+4.408817635270541047e+00 1.536682873332125610e+00 9.771396350712136609e+02
+4.428857715430861930e+00 1.539436478899741445e+00 9.800389280950321336e+02
+4.448897795591181925e+00 1.542591705919805545e+00 9.827454419195138371e+02
+4.468937875751502808e+00 1.546150728211101333e+00 9.852580896320574766e+02
+4.488977955911823692e+00 1.550115563882954017e+00 9.875758621750194379e+02
+4.509018036072143687e+00 1.554488074524779329e+00 9.896978287509432448e+02
+4.529058116232464570e+00 1.559269964458483093e+00 9.916231371963593801e+02
+4.549098196392785454e+00 1.564462780054019841e+00 9.933510143240067691e+02
+4.569138276553106337e+00 1.570067909108384452e+00 9.948807662333381359e+02
+4.589178356713426332e+00 1.576086580288286632e+00 9.962117785891847461e+02
+4.609218436873747216e+00 1.582519862636726060e+00 9.973435168684678729e+02
+4.629258517034068099e+00 1.589368665143676473e+00 9.982755265748584179e+02
+4.649298597194388982e+00 1.596633736381040114e+00 9.990074334212996519e+02
+4.669338677354708977e+00 1.604315664202031311e+00 9.995389434803163340e+02
+4.689378757515029861e+00 1.612414875505097545e+00 9.998698433020541643e+02
+4.709418837675350744e+00 1.620931636062481251e+00 1.000000000000000000e+03
+4.729458917835670739e+00 1.629866050413486533e+00 9.999293613043465712e+02
+4.749498997995991623e+00 1.639218061822500072e+00 9.996579555829848687e+02
+4.769539078156312506e+00 1.648987452301774237e+00 9.991858918301107906e+02
+4.789579158316633389e+00 1.659173842698966617e+00 9.985133596224548000e+02
+4.809619238476953385e+00 1.669776692849408217e+00 9.976406290431494881e+02
+4.829659318637274268e+00 1.680795301793028163e+00 9.965680505732656229e+02
+4.849699398797595151e+00 1.692228808055850298e+00 9.952960549510630699e+02
+4.869739478957916035e+00 1.704076189995956891e+00 9.938251529990096742e+02
+4.889779559118236030e+00 1.716336266213768447e+00 9.921559354186391602e+02
+4.909819639278556913e+00 1.729007696026489072e+00 9.902890725533304703e+02
+4.929859719438877796e+00 1.742088980006505361e+00 9.882253141191039276e+02
+4.949899799599197792e+00 1.755578460583548051e+00 9.859654889035417682e+02
+4.969939879759518675e+00 1.769474322710359537e+00 9.835105044329535531e+02
+4.989979959919839558e+00 1.783774594591596818e+00 9.808613466079225418e+02
+5.010020040080160442e+00 1.798477148475690290e+00 9.780190793073752502e+02
+5.030060120240480437e+00 1.813579701509330233e+00 9.749848439613382425e+02
+5.050100200400801320e+00 1.829079816654240354e+00 9.717598590925483677e+02
+5.070140280561122204e+00 1.844974903665872024e+00 9.683454198271051609e+02
+5.090180360721443087e+00 1.861262220133622414e+00 9.647428973743595861e+02
+5.110220440881763082e+00 1.877938872582164631e+00 9.609537384762481906e+02
+5.130260521042083965e+00 1.895001817633443997e+00 9.569794648262927694e+02
+5.150300601202404849e+00 1.912447863228867728e+00 9.528216724585031443e+02
+5.170340681362724844e+00 1.930273669911211520e+00 9.484820311064232783e+02
+5.190380761523045727e+00 1.948475752165717889e+00 9.439622835325791357e+02
+5.210420841683366611e+00 1.967050479819845377e+00 9.392642448286025001e+02
+5.230460921843687494e+00 1.985994079501115728e+00 9.343898016863045086e+02
+5.250501002004007489e+00 2.005302636152468398e+00 9.293409116399966479e+02
+5.270541082164328373e+00 2.024972094604515771e+00 9.241196022803618462e+02
+5.290581162324649256e+00 2.044998261204058920e+00 9.187279704401921663e+02
+5.310621242484970139e+00 2.065376805498225998e+00 9.131681813523182427e+02
+5.330661322645290134e+00 2.086103261973545120e+00 9.074424677800708423e+02
+5.350701402805611018e+00 2.107173031849256084e+00 9.015531291206212927e+02
+5.370741482965931901e+00 2.128581384924137954e+00 8.955025304815651452e+02
+5.390781563126251896e+00 2.150323461476119746e+00 8.892931017311141204e+02
+5.410821643286572780e+00 2.172394274213905074e+00 8.829273365222821894e+02
+5.430861723446893663e+00 2.194788710279818922e+00 8.764077912914567605e+02
+5.450901803607214546e+00 2.217501533303093186e+00 8.697370842317545794e+02
+5.470941883767534542e+00 2.240527385502743662e+00 8.629178942415799156e+02
+5.490981963927855425e+00 2.263860789839213794e+00 8.559529598487991962e+02
+5.511022044088176308e+00 2.287496152213901457e+00 8.488450781109748959e+02
+5.531062124248497192e+00 2.311427763715702355e+00 8.415971034920893317e+02
+5.551102204408817187e+00 2.335649802913659201e+00 8.342119467162179944e+02
+5.571142284569138070e+00 2.360156338194801862e+00 8.266925735986054633e+02
+5.591182364729458953e+00 2.384941330146225447e+00 8.190420038546226351e+02
+5.611222444889778949e+00 2.409998633980471094e+00 8.112633098870738877e+02
+5.631262525050099832e+00 2.435322002003218689e+00 8.033596155523445077e+02
+5.651302605210420715e+00 2.460905086122306518e+00 7.953340949058906517e+02
+5.671342685370741599e+00 2.486741440397069347e+00 7.871899709275636496e+02
+5.691382765531061594e+00 2.512824523626973505e+00 7.789305142272897911e+02
+5.711422845691382477e+00 2.539147701978509364e+00 7.705590417316205958e+02
+5.731462925851703361e+00 2.565704251649277179e+00 7.620789153516853958e+02
+5.751503006012024244e+00 2.592487361568209359e+00 7.534935406330763499e+02
+5.771543086172344239e+00 2.619490136130837588e+00 7.448063653882098833e+02
+5.791583166332665122e+00 2.646705597968513235e+00 7.360208783117147959e+02
+5.811623246492986006e+00 2.674126690750449509e+00 7.271406075794046728e+02
+5.831663326653306001e+00 2.701746282017488454e+00 7.181691194313910955e+02
+5.851703406813626884e+00 2.729557166046437722e+00 7.091100167399115435e+02
+5.871743486973947768e+00 2.757552066743818919e+00 6.999669375624501981e+02
+5.891783567134268651e+00 2.785723640567889792e+00 6.907435536807222434e+02
+5.911823647294588646e+00 2.814064479477745628e+00 6.814435691261201100e+02
+5.931863727454909530e+00 2.842567113908326615e+00 6.720707186922043093e+02
+5.951903807615230413e+00 2.871224015770126758e+00 6.626287664348450335e+02
+5.971943887775551296e+00 2.900027601472412453e+00 6.531215041606080831e+02
+5.991983967935871291e+00 2.928970234968723663e+00 6.435527499039991426e+02
+6.012024048096192175e+00 2.958044230823453802e+00 6.339263463941722421e+02
+6.032064128256513058e+00 2.987241857298241765e+00 6.242461595117250681e+02
+6.052104208416833053e+00 3.016555339456976181e+00 6.145160767361943499e+02
+6.072144288577153937e+00 3.045976862288150677e+00 6.047400055848752345e+02
+6.092184368737474820e+00 3.075498573843291616e+00 5.949218720435990235e+02
+6.112224448897795703e+00 3.105112588390241068e+00 5.850656189900898880e+02
+6.132264529058115698e+00 3.134810989579997376e+00 5.751752046105395948e+02
+6.152304609218436582e+00 3.164585833625852995e+00 5.652546008100322297e+02
+6.172344689378757465e+00 3.194429152493549307e+00 5.553077916174643178e+02
+6.192384769539078349e+00 3.224332957101171182e+00 5.453387715855913029e+02
+6.212424849699398344e+00 3.254289240527490801e+00 5.353515441868502194e+02
+6.232464929859719227e+00 3.284289981227487498e+00 5.253501202055987278e+02
+6.252505010020040110e+00 3.314327146253717160e+00 5.153385161274204620e+02
+6.272545090180360106e+00 3.344392694482282824e+00 5.053207525261383921e+02
+6.292585170340680989e+00 3.374478579842083992e+00 4.953008524491854700e+02
+6.312625250501001872e+00 3.404576754546040807e+00 4.852828398019860288e+02
+6.332665330661322756e+00 3.434679172323020335e+00 4.752707377319885609e+02
+6.352705410821642751e+00 3.464777791649148231e+00 4.652685670130051676e+02
+6.372745490981963634e+00 3.494864578977221026e+00 4.552803444305018843e+02
+6.392785571142284518e+00 3.524931511962900554e+00 4.453100811684944347e+02
+6.412825651302604513e+00 3.554970582686421299e+00 4.353617811986907782e+02
+6.432865731462925396e+00 3.584973800868508143e+00 4.254394396725285787e+02
+6.452905811623246279e+00 3.614933197079194027e+00 4.155470413167602146e+02
+6.472945891783567163e+00 3.644840825938279849e+00 4.056885588332180532e+02
+6.492985971943887158e+00 3.674688769306128311e+00 3.958679513034139177e+02
+6.513026052104208041e+00 3.704469139463525185e+00 3.860891625986033660e+02
+6.533066132264528925e+00 3.734174082279312135e+00 3.763561197959638776e+02
+6.553106212424849808e+00 3.763795780364542765e+00 3.666727316015129077e+02
+6.573146292585169803e+00 3.793326456211875808e+00 3.570428867804062634e+02
+6.593186372745490686e+00 3.822758375318961566e+00 3.474704525952413405e+02
+6.613226452905811570e+00 3.852083849294539952e+00 3.379592732530011290e+02
+6.633266533066131565e+00 3.881295238946041781e+00 3.285131683612518714e+02
+6.653306613226452448e+00 3.910384957347420976e+00 3.191359313942206768e+02
+6.673346693386773332e+00 3.939345472885993349e+00 3.098313281693717158e+02
+6.693386773547094215e+00 3.968169312287071815e+00 3.006030953350844470e+02
+6.713426853707414210e+00 3.996849063615168340e+00 2.914549388700485792e+02
+6.733466933867735094e+00 4.025377379250564047e+00 2.823905325949738199e+02
+6.753507014028055977e+00 4.053746978840048421e+00 2.734135166972172897e+02
+6.773547094188376860e+00 4.081950652220645459e+00 2.645274962689139784e+02
+6.793587174348696855e+00 4.109981262315153927e+00 2.557360398592040838e+02
+6.813627254509017739e+00 4.137831747998339971e+00 2.470426780411323762e+02
+6.833667334669338622e+00 4.165495126932617254e+00 2.384509019938032282e+02
+6.853707414829658617e+00 4.192964498372094617e+00 2.299641621003518992e+02
+6.873747494989979501e+00 4.220233045933865057e+00 2.215858665622992305e+02
+6.893787575150300384e+00 4.247294040335392928e+00 2.133193800308498282e+02
+6.913827655310621267e+00 4.274140842096944226e+00 2.051680222556753677e+02
+6.933867735470941263e+00 4.300766904207941721e+00 1.971350667517327224e+02
+6.953907815631262146e+00 4.327165774756191574e+00 1.892237394846470409e+02
+6.973947895791583029e+00 4.353331099518909397e+00 1.814372175751938983e+02
+6.993987975951903913e+00 4.379256624514525242e+00 1.737786280233937930e+02
+7.014028056112223908e+00 4.404936198514227463e+00 1.662510464527364036e+02
+7.034068136272544791e+00 4.430363775512244473e+00 1.588574958750354824e+02
+7.054108216432865675e+00 4.455533417153866971e+00 1.516009454764152053e+02
+7.074148296593185670e+00 4.480439295120240750e+00 1.444843094249101227e+02
+7.094188376753506553e+00 4.505075693468969966e+00 1.375104457001587832e+02
+7.114228456913827436e+00 4.529437010929587615e+00 1.306821549456662126e+02
+7.134268537074148320e+00 4.553517763152981068e+00 1.240021793440882476e+02
+7.154308617234468315e+00 4.577312584913854288e+00 1.174732015159950436e+02
+7.174348697394789198e+00 4.600816232265364292e+00 1.110978434425529429e+02
+7.194388777555110082e+00 4.624023584645035712e+00 1.048786654125609346e+02
+7.214428857715430965e+00 4.646929646931139857e+00 9.881816499425976019e+01
+7.234468937875750960e+00 4.669529551448691862e+00 9.291877603233054117e+01
+7.254509018036071843e+00 4.691818559924266552e+00 8.718286767048279273e+01
+7.274549098196392727e+00 4.713792065388847874e+00 8.161274340002822214e+01
+7.294589178356712722e+00 4.735445594027945404e+00 7.621064013481766608e+01
+7.314629258517033605e+00 4.756774806978249615e+00 7.097872731291521120e+01
+7.334669338677354489e+00 4.777775502070065627e+00 6.591910602537187458e+01
+7.354709418837675372e+00 4.798443615514884186e+00 6.103380817244479317e+01
+7.374749498997995367e+00 4.818775223537352659e+00 5.632479564760383539e+01
+7.394789579158316251e+00 4.838766543951037669e+00 5.179395954965144000e+01
+7.414829659318637134e+00 4.858413937677311445e+00 4.744311942327492204e+01
+7.434869739478958017e+00 4.877713910206781023e+00 4.327402252833200436e+01
+7.454909819639278012e+00 4.896663113002647449e+00 3.928834313816695811e+01
+7.474949899799598896e+00 4.915258344845452321e+00 3.548768186723586382e+01
+7.494989979959919779e+00 4.933496553118660088e+00 3.187356502831510241e+01
+7.515030060120239774e+00 4.951374835034558330e+00 2.844744401954644530e+01
+7.535070140280560658e+00 4.968890438800001697e+00 2.521069474156775314e+01
+7.555110220440881541e+00 4.986040764721496821e+00 2.216461704496407137e+01
+7.575150300601202424e+00 5.002823366249223191e+00 1.931043420825829671e+01
+7.595190380761522420e+00 5.019235950959545889e+00 1.664929244665321662e+01
+7.615230460921843303e+00 5.035276381475634722e+00 1.418226045172094807e+01
+7.635270541082164186e+00 5.050942676325811398e+00 1.191032896222642634e+01
+7.655310621242485070e+00 5.066233010739295217e+00 9.834410366254722646e+00
+7.675350701402805065e+00 5.081145717379013327e+00 7.955338334803988332e+00
+7.695390781563125948e+00 5.095679287011193104e+00 6.273867486990178044e+00
+7.715430861723446831e+00 5.109832369111450667e+00 4.790673086998884500e+00
+7.735470941883766827e+00 5.123603772407154366e+00 3.506350772904916813e+00
+7.755511022044087710e+00 5.136992465355831428e+00 2.421416317469038848e+00
+7.775551102204408593e+00 5.149997576559419699e+00 1.536305421008269612e+00
+7.795591182364729477e+00 5.162618395114220604e+00 8.513735364222744240e-01
+7.815631262525049472e+00 5.174854370896386335e+00 3.668957264467385126e-01
+7.835671342685370355e+00 5.186705114782850679e+00 8.306655319023606432e-02
+7.855711422845691239e+00 5.198170398807591575e+00 0.000000000000000000e+00
+7.875751503006012122e+00 5.209250156253183661e+00 1.177294256871248418e-01
+7.895791583166332117e+00 5.219944481677590176e+00 4.362075511299656205e-01
+7.915831663326653000e+00 5.230253630876193327e+00 9.553064782610614092e-01
+7.935871743486973884e+00 5.240178020779059587e+00 1.674817741429812656e+00
+7.955911823647293879e+00 5.249718229283516280e+00 2.594452391120483092e+00
+7.975951903807614762e+00 5.258874995022061682e+00 3.713841109991943057e+00
+7.995991983967935646e+00 5.267649217065747180e+00 5.032534361192301020e+00
+8.016032064128255641e+00 5.276041954563106096e+00 6.550002568888864118e+00
+8.036072144288576524e+00 5.284054426314822805e+00 8.265636330941418919e+00
+8.056112224448897408e+00 5.291688010284259391e+00 1.017874666363291603e+01
+8.076152304609218291e+00 5.298944243044088509e+00 1.228856527835901602e+01
+8.096192384769539174e+00 5.305824819159209227e+00 1.459424489016658200e+01
+8.116232464929860058e+00 5.312331590506231827e+00 1.709485955801583756e+01
+8.136272545090179165e+00 5.318466565529778478e+00 1.978940505663001659e+01
+8.156312625250500048e+00 5.324231908435906213e+00 2.267679927978462828e+01
+8.176352705410820931e+00 5.329629938322985261e+00 2.575588267487045968e+01
+8.196392785571141815e+00 5.334663128250363151e+00 2.902541870856099848e+01
+8.216432865731462698e+00 5.339334104245210710e+00 3.248409436339298395e+01
+8.236472945891783581e+00 5.343645644247928317e+00 3.613052066506330817e+01
+8.256513026052104465e+00 5.347600676996553837e+00 3.996323324022881707e+01
+8.276553106212425348e+00 5.351202280850603010e+00 4.398069290458620628e+01
+8.296593186372744455e+00 5.354453682554823679e+00 4.818128628099457700e+01
+8.316633266533065338e+00 5.357358255943372782e+00 5.256332644739540427e+01
+8.336673346693386222e+00 5.359919520584902841e+00 5.712505361426364914e+01
+8.356713426853707105e+00 5.362141140369139691e+00 6.186463583132555044e+01
+8.376753507014027988e+00 5.364026922035497691e+00 6.678016972325357870e+01
+8.396793587174348872e+00 5.365580813644318603e+00 7.186968125404561647e+01
+8.416833667334669755e+00 5.366806902991370976e+00 7.713112651978079271e+01
+8.436873747494988862e+00 5.367709415966225528e+00 8.256239256943308646e+01
+8.456913827655309746e+00 5.368292714855172676e+00 8.816129825341631943e+01
+8.476953907815630629e+00 5.368561296589365206e+00 9.392559509951207986e+01
+8.496993987975951512e+00 5.368519790938893976e+00 9.985296821583851568e+01
+8.517034068136272396e+00 5.368172958653508076e+00 1.059410372204906849e+02
+8.537074148296593279e+00 5.367525689550741497e+00 1.121873571974812194e+02
+8.557114228456914162e+00 5.366583000552199501e+00 1.185894196785977641e+02
+8.577154308617233269e+00 5.365350033668812024e+00 1.251446536507811516e+02
+8.597194388777554153e+00 5.363832053935846389e+00 1.318504265886247424e+02
+8.617234468937875036e+00 5.362034447298508866e+00 1.387040455115703708e+02
+8.637274549098195919e+00 5.359962718449001073e+00 1.457027580653883660e+02
+8.657314629258516803e+00 5.357622488615882084e+00 1.528437536274986712e+02
+8.677354709418837686e+00 5.355019493306628853e+00 1.601241644356925917e+02
+8.697394789579158569e+00 5.352159580004308026e+00 1.675410667398015221e+02
+8.717434869739479453e+00 5.349048705819276606e+00 1.750914819758495753e+02
+8.737474949899798560e+00 5.345692935096859166e+00 1.827723779622187124e+02
+8.757515030060119443e+00 5.342098436981957299e+00 1.905806701173493138e+02
+8.777555110220440326e+00 5.338271482941573609e+00 1.985132226984773354e+02
+8.797595190380761210e+00 5.334218444246249469e+00 2.065668500609244802e+02
+8.817635270541082093e+00 5.329945789411409507e+00 2.147383179374249096e+02
+8.837675350701402976e+00 5.325460081599669770e+00 2.230243447369789749e+02
+8.857715430861723860e+00 5.320767975985125631e+00 2.314216028627118078e+02
+8.877755511022042967e+00 5.315876217080687027e+00 2.399267200482068745e+02
+8.897795591182363850e+00 5.310791636029545515e+00 2.485362807117820694e+02
+8.917835671342684734e+00 5.305521147861844256e+00 2.572468273281535289e+02
+8.937875751503005617e+00 5.300071748717661180e+00 2.660548618169502788e+02
+8.957915831663326500e+00 5.294450513037422645e+00 2.749568469475133838e+02
+8.977955911823647384e+00 5.288664590720861369e+00 2.839492077594163675e+02
+8.997995991983968267e+00 5.282721204255688363e+00 2.930283329981389784e+02
+9.018036072144287374e+00 5.276627645817097978e+00 3.021905765653149274e+02
+9.038076152304608257e+00 5.270391274339290000e+00 3.114322589829767480e+02
+9.058116232464929141e+00 5.264019512560196290e+00 3.207496688711975139e+02
+9.078156312625250024e+00 5.257519844040566603e+00 3.301390644385522819e+02
+9.098196392785570907e+00 5.250899810158627723e+00 3.395966749847884216e+02
+9.118236472945891791e+00 5.244167007081546927e+00 3.491187024151063270e+02
+9.138276553106212674e+00 5.237329082714865081e+00 3.587013227654414891e+02
+9.158316633266533557e+00 5.230393733631166775e+00 3.683406877381355002e+02
+9.178356713426852664e+00 5.223368701979203443e+00 3.780329262473783842e+02
+9.198396793587173548e+00 5.216261772374713779e+00 3.877741459738065259e+02
+9.218436873747494431e+00 5.209080768774191128e+00 3.975604349276194398e+02
+9.238476953907815314e+00 5.201833551332843975e+00 4.073878630196048221e+02
+9.258517034068136198e+00 5.194528013248028486e+00 4.172524836394272256e+02
+9.278557114228457081e+00 5.187172077589415231e+00 4.271503352405529768e+02
+9.298597194388777964e+00 5.179773694117139726e+00 4.370774429311730955e+02
+9.318637274549097071e+00 5.172340836089261096e+00 4.470298200704844476e+02
+9.338677354709417955e+00 5.164881497059755411e+00 4.570034698696940154e+02
+9.358717434869738838e+00 5.157403687668390191e+00 4.669943869970894639e+02
+9.378757515030059722e+00 5.149915432423705752e+00 4.769985591865493006e+02
+9.398797595190380605e+00 5.142424766480450771e+00 4.870119688488334759e+02
+9.418837675350701488e+00 5.134939732412731495e+00 4.970305946850124315e+02
+9.438877755511022372e+00 5.127468376984182008e+00 5.070504133013864703e+02
+9.458917835671341479e+00 5.120018747916452284e+00 5.170674008252445901e+02
+9.478957915831662362e+00 5.112598890657316097e+00 5.270775345208204499e+02
+9.498997995991983245e+00 5.105216845149687543e+00 5.370767944047840956e+02
+9.519038076152304129e+00 5.097880642602845569e+00 5.470611648606347899e+02
+9.539078156312625012e+00 5.090598302267177466e+00 5.570266362513380045e+02
+9.559118236472945895e+00 5.083377828213707872e+00 5.669692065295602106e+02
+9.579158316633266779e+00 5.076227206119739321e+00 5.768848828448577706e+02
+9.599198396793587662e+00 5.069154400061871790e+00 5.867696831471699852e+02
+9.619238476953906769e+00 5.062167349317696186e+00 5.966196377859761242e+02
+9.639278557114227652e+00 5.055273965177453199e+00 6.064307911044755883e+02
+9.659318637274548536e+00 5.048482127766917849e+00 6.161992030281406869e+02
+9.679358717434869419e+00 5.041799682882824207e+00 6.259209506470201632e+02
+9.699398797595190302e+00 5.035234438842048021e+00 6.355921297911449983e+02
+9.719438877755511186e+00 5.028794163345857271e+00 6.452088565984089428e+02
+9.739478957915832069e+00 5.022486580360477681e+00 6.547672690742948589e+02
+9.759519038076151176e+00 5.016319367015202424e+00 6.642635286428171639e+02
+9.779559118236472059e+00 5.010300150519331197e+00 6.736938216880639629e+02
+9.799599198396792943e+00 5.004436505099149279e+00 6.830543610857074555e+02
+9.819639278557113826e+00 4.998735948956176678e+00 6.923413877238837131e+02
+9.839679358717434710e+00 4.993205941247933488e+00 7.015511720128191655e+02
+9.859719438877755593e+00 4.987853879092396525e+00 7.106800153826006863e+02
+9.879759519038076476e+00 4.982687094597387123e+00 7.197242517684906034e+02
+9.899799599198395583e+00 4.977712851916056280e+00 7.286802490831846626e+02
+9.919839679358716467e+00 4.972938344329665306e+00 7.375444106754310951e+02
+9.939879759519037350e+00 4.968370691358828140e+00 7.463131767744092713e+02
+9.959919839679358233e+00 4.964016935904367323e+00 7.549830259193067832e+02
+9.979959919839679117e+00 4.959884041418952449e+00 7.635504763735062852e+02
+1.000000000000000000e+01 4.955978889110630448e+00 7.720120875228209343e+02
diff --git a/buch/papers/kugel/figures/tikz/curvature-1d.pdf b/buch/papers/kugel/figures/tikz/curvature-1d.pdf
new file mode 100644
index 0000000..6425af6
--- /dev/null
+++ b/buch/papers/kugel/figures/tikz/curvature-1d.pdf
Binary files differ
diff --git a/buch/papers/kugel/figures/tikz/curvature-1d.py b/buch/papers/kugel/figures/tikz/curvature-1d.py
new file mode 100644
index 0000000..4710fc8
--- /dev/null
+++ b/buch/papers/kugel/figures/tikz/curvature-1d.py
@@ -0,0 +1,32 @@
+import numpy as np
+import matplotlib.pyplot as plt
+
+
+@np.vectorize
+def fn(x):
+ return (x ** 2) * 2 / 100 + (1 + x / 4) + np.sin(x)
+
+@np.vectorize
+def ddfn(x):
+ return 2 * 5 / 100 - np.sin(x)
+
+x = np.linspace(0, 10, 500)
+y = fn(x)
+ddy = ddfn(x)
+
+cmap = ddy - np.min(ddy)
+cmap = cmap * 1000 / np.max(cmap)
+
+plt.plot(x, y)
+plt.plot(x, ddy)
+# plt.plot(x, cmap)
+
+plt.show()
+
+fname = "curvature-1d.dat"
+np.savetxt(fname, np.array([x, y, cmap]).T, delimiter=" ")
+
+# with open(fname, "w") as f:
+# # f.write("x y cmap\n")
+# for xv, yv, cv in zip(x, y, cmap):
+# f.write(f"{xv} {yv} {cv}\n")
diff --git a/buch/papers/kugel/figures/tikz/curvature-1d.tex b/buch/papers/kugel/figures/tikz/curvature-1d.tex
new file mode 100644
index 0000000..6983fb0
--- /dev/null
+++ b/buch/papers/kugel/figures/tikz/curvature-1d.tex
@@ -0,0 +1,21 @@
+% vim:ts=2 sw=2 et:
+\documentclass[tikz, border=5mm]{standalone}
+\usepackage{pgfplots}
+
+\begin{document}
+\begin{tikzpicture}
+ \begin{axis}[
+ clip = false,
+ width = 8cm, height = 6cm,
+ xtick = \empty, ytick = \empty,
+ colormap name = viridis,
+ axis lines = middle,
+ axis line style = {ultra thick, -latex}
+ ]
+ \addplot+[
+ smooth, mark=none, line width = 3pt, mesh,
+ point meta=explicit,
+ ] file {curvature-1d.dat};
+ \end{axis}
+\end{tikzpicture}
+\end{document}
diff --git a/buch/papers/kugel/figures/tikz/spherical-coordinates.pdf b/buch/papers/kugel/figures/tikz/spherical-coordinates.pdf
new file mode 100644
index 0000000..1bff016
--- /dev/null
+++ b/buch/papers/kugel/figures/tikz/spherical-coordinates.pdf
Binary files differ
diff --git a/buch/papers/kugel/figures/tikz/spherical-coordinates.tex b/buch/papers/kugel/figures/tikz/spherical-coordinates.tex
new file mode 100644
index 0000000..3a45385
--- /dev/null
+++ b/buch/papers/kugel/figures/tikz/spherical-coordinates.tex
@@ -0,0 +1,99 @@
+\documentclass[tikz]{standalone}
+\usepackage{amsmath}
+\usepackage{amssymb}
+\usepackage{bm}
+\usepackage{lmodern}
+\usepackage{tikz-3dplot}
+
+\usetikzlibrary{arrows}
+\usetikzlibrary{intersections}
+\usetikzlibrary{math}
+\usetikzlibrary{positioning}
+\usetikzlibrary{arrows.meta}
+\usetikzlibrary{shapes.misc}
+\usetikzlibrary{calc}
+
+\begin{document}
+
+\tdplotsetmaincoords{60}{130}
+\pgfmathsetmacro{\l}{2}
+
+\begin{tikzpicture}[
+ >=latex,
+ tdplot_main_coords,
+ dot/.style = {
+ black, fill = black, circle,
+ outer sep = 0, inner sep = 0,
+ minimum size = .8mm
+ },
+ round/.style = {
+ draw = orange, thick, circle,
+ minimum size = 1mm,
+ inner sep = 0pt, outer sep = 0pt,
+ },
+ cross/.style = {
+ cross out, draw = magenta, thick,
+ minimum size = 1mm,
+ inner sep = 0pt, outer sep = 0pt
+ },
+ ]
+
+ % origin
+ \coordinate (O) at (0,0,0);
+
+ % poles
+ \coordinate (NP) at (0,0,\l);
+ \coordinate (SP) at (0,0,-\l);
+
+ % \draw (SP) node[dot, gray] {};
+ % \draw (NP) node[dot, gray] {};
+
+ % gray unit circle
+ \tdplotdrawarc[gray]{(O)}{\l}{0}{360}{}{};
+ \draw[gray, dashed] (-\l, 0, 0) to (\l, 0, 0);
+ \draw[gray, dashed] (0, -\l, 0) to (0, \l, 0);
+
+ % axis
+ \draw[->] (O) -- ++(1.25*\l,0,0) node[left] {\(\mathbf{\hat{x}}\)};
+ \draw[->] (O) -- ++(0,1.25*\l,0) node[right] {\(\mathbf{\hat{y}}\)};
+ \draw[->] (O) -- ++(0,0,1.25*\l) node[above] {\(\mathbf{\hat{z}}\)};
+
+ % meridians
+ \foreach \phi in {0, 30, 60, ..., 150}{
+ \tdplotsetrotatedcoords{\phi}{90}{0};
+ \tdplotdrawarc[lightgray, densely dotted, tdplot_rotated_coords]{(O)}{\l}{0}{360}{}{};
+ }
+
+ % dot above and its projection
+ \pgfmathsetmacro{\phi}{120}
+ \pgfmathsetmacro{\theta}{40}
+
+ \pgfmathsetmacro{\px}{cos(\phi)*sin(\theta)*\l}
+ \pgfmathsetmacro{\py}{sin(\phi)*sin(\theta)*\l}
+ \pgfmathsetmacro{\pz}{cos(\theta)*\l})
+
+ % point A
+ \coordinate (A) at (\px,\py,\pz);
+ \coordinate (Ap) at (\px,\py, 0);
+
+ % lines
+ \draw[red!80!black, ->] (O) -- (A);
+ \draw[red!80!black, densely dashed] (O) -- (Ap) -- (A)
+ node[above right] {\(\mathbf{\hat{r}}\)};
+
+ % arcs
+ \tdplotdrawarc[blue!80!black, ->]{(O)}{.8\l}{0}{\phi}{}{};
+ \node[below right, blue!80!black] at (.8\l,0,0) {\(\bm{\hat{\varphi}}\)};
+
+ \tdplotsetrotatedcoords{\phi-90}{-90}{0};
+ \tdplotdrawarc[blue!80!black, ->, tdplot_rotated_coords]{(O)}{.95\l}{0}{\theta}{}{};
+ \node[above right = 1mm, blue!80!black] at (0,0,.8\l) {\(\bm{\hat{\vartheta}}\)};
+
+
+ % dots
+ \draw (O) node[dot] {};
+ \draw (A) node[dot, fill = red!80!black] {};
+
+\end{tikzpicture}
+\end{document}
+% vim:ts=2 sw=2 et:
diff --git a/buch/papers/kugel/introduction.tex b/buch/papers/kugel/introduction.tex
new file mode 100644
index 0000000..5b09e9c
--- /dev/null
+++ b/buch/papers/kugel/introduction.tex
@@ -0,0 +1,35 @@
+% vim:ts=2 sw=2 et spell tw=78:
+
+\section{Introduction}
+
+This chapter of the book is devoted to the sef of functions called
+\emph{spherical harmonics}. However, before we dive into the topic, we want to
+make a few preliminary remarks to avoid ``upsetting'' a certain type of
+reader. Specifically, we would like to specify that the authors of this
+chapter not mathematicians but engineers, and therefore the text will not be
+always complete with sound proofs after every claim. Instead we will go
+through the topic in a more intuitive way including rigorous proofs only if
+they are enlightening or when they are very short. Where no proofs are given
+we will try to give an intuition for why it is true.
+
+That being said, when talking about spherical harmonics one could start by
+describing their name. The latter may be a cause of some confusion because of
+the misleading translations in other languages. In German the name for this
+set of functions is ``Kugelfunktionen'', which puts the emphasis only on the
+spherical context, whereas the English name ``spherical harmonics'' also
+contains the \emph{harmonic} part hinting at Fourier theories and harmonic
+analysis in general.
+
+The structure of this chapter is organized in the following way. First, we
+will quickly go through some fundamental linear algebra and Fourier theory to
+refresh a few important concepts. In principle, we could have written the
+whole thing starting from a much more abstract level without much preparation,
+but then we would have lost some of the beauty that comes from the
+appreciation of the power of some surprisingly simple ideas. Then once the
+basics are done, we can explore the main topic of spherical harmonics which as
+we will see arises from the eigenfunctions of the Laplacian operator in
+spherical coordinates. Finally, after studying what we think are the most
+beautiful and interesting properties of the spherical harmonics, to conclude
+this journey we will present a few real-world applications, which are of
+course most of interest for engineers.
+
diff --git a/buch/papers/kugel/main.tex b/buch/papers/kugel/main.tex
index 0e632ec..d063f87 100644
--- a/buch/papers/kugel/main.tex
+++ b/buch/papers/kugel/main.tex
@@ -1,36 +1,21 @@
-%
+% vim:ts=2 sw=2 et:
+
% main.tex -- Paper zum Thema <kugel>
%
% (c) 2020 Hochschule Rapperswil
%
-\chapter{Thema\label{chapter:kugel}}
-\lhead{Thema}
+\begin{otherlanguage}{english}
+\chapter{Spherical Harmonics\label{chapter:kugel}}
+\lhead{Spherical Harmonics}
\begin{refsection}
-\chapterauthor{Hans Muster}
-
-Ein paar Hinweise für die korrekte Formatierung des Textes
-\begin{itemize}
-\item
-Absätze werden gebildet, indem man eine Leerzeile einfügt.
-Die Verwendung von \verb+\\+ ist nur in Tabellen und Arrays gestattet.
-\item
-Die explizite Platzierung von Bildern ist nicht erlaubt, entsprechende
-Optionen werden gelöscht.
-Verwenden Sie Labels und Verweise, um auf Bilder hinzuweisen.
-\item
-Beginnen Sie jeden Satz auf einer neuen Zeile.
-Damit ermöglichen Sie dem Versionsverwaltungssysteme, Änderungen
-in verschiedenen Sätzen von verschiedenen Autoren ohne Konflikt
-anzuwenden.
-\item
-Bilden Sie auch für Formeln kurze Zeilen, einerseits der besseren
-Übersicht wegen, aber auch um GIT die Arbeit zu erleichtern.
-\end{itemize}
+\chapterauthor{Manuel Cattaneo, Naoki Pross}
-\input{papers/kugel/teil0.tex}
-\input{papers/kugel/teil1.tex}
-\input{papers/kugel/teil2.tex}
-\input{papers/kugel/teil3.tex}
+\input{papers/kugel/introduction}
+\input{papers/kugel/preliminaries}
+\input{papers/kugel/spherical-harmonics}
+\input{papers/kugel/applications}
+\input{papers/kugel/proofs}
\printbibliography[heading=subbibliography]
\end{refsection}
+\end{otherlanguage}
diff --git a/buch/papers/kugel/packages.tex b/buch/papers/kugel/packages.tex
index 61f91ad..ead7653 100644
--- a/buch/papers/kugel/packages.tex
+++ b/buch/papers/kugel/packages.tex
@@ -1,3 +1,4 @@
+% vim:ts=2 sw=2 et:
%
% packages.tex -- packages required by the paper kugel
%
@@ -7,4 +8,13 @@
% if your paper needs special packages, add package commands as in the
% following example
%\usepackage{packagename}
+\usepackage{cases}
+\newcommand{\kugeltodo}[1]{\textcolor{red!70!black}{\texttt{[TODO: #1]}}}
+\newcommand{\kugelplaceholderfig}[2]{ \begin{tikzpicture}%
+ \fill[lightgray!20] (0, 0) rectangle (#1, #2);%
+ \node[gray, anchor = center] at ({#1 / 2}, {#2 / 2}) {\Huge \ttfamily \bfseries TODO};
+ \end{tikzpicture}}
+
+\DeclareMathOperator{\sphlaplacian}{\nabla^2_{\mathit{S}}}
+\DeclareMathOperator{\surflaplacian}{\nabla^2_{\partial \mathit{S}}}
diff --git a/buch/papers/kugel/preliminaries.tex b/buch/papers/kugel/preliminaries.tex
new file mode 100644
index 0000000..e48abe4
--- /dev/null
+++ b/buch/papers/kugel/preliminaries.tex
@@ -0,0 +1,346 @@
+% vim:ts=2 sw=2 et spell tw=78:
+
+\section{Preliminaries}
+
+The purpose of this section is to dust off some concepts that will become
+important later on. This will enable us to be able to get a richer and more
+general view of the topic than just liming ourselves to a specific example.
+
+\subsection{Vectors and inner product spaces}
+
+We shall start with a few fundamentals of linear algebra. We will mostly work
+with complex numbers, but for the sake of generality we will do what most
+textbook do, and write \(\mathbb{K}\) instead of \(\mathbb{C}\) since the
+theory works the same when we replace \(\mathbb{K}\) with the real
+numbers \(\mathbb{R}\).
+
+\begin{definition}[Vector space]
+ \label{kugel:def:vector-space} \nocite{axler_linear_2014}
+ A \emph{vector space} over a field \(\mathbb{K}\) is a set \(V\) with an
+ addition on \(V\) and a multiplication on \(V\) such that the following
+ properties hold:
+ \begin{enumerate}[(a)]
+ \item (Commutativity) \(u + v = v + u\) for all \(u, v \in V\);
+ \item (Associativity) \((u + v) + w = u + (v + w)\) and \((ab)v = a(bv)\)
+ for all \(u, v, w \in V\) and \(a, b \in \mathbb{K}\);
+ \item (Additive identity) There exists an element \(0 \in V\) such that
+ \(v + 0 = v\) for all \(v \in V\);
+ \item (Additive inverse) For every \(v \in V\), there exists a \(w \in V\)
+ such that \(v + w = 0\);
+ \item (Multiplicative identity) \(1 v = v\) for all \(v \in V\);
+ \item (Distributive properties) \(a(u + v) = au + av\) and \((a + b)v = av +
+ bv\) for all \(a, b \in \mathbb{K}\) and all \(u,v \in V\).
+ \end{enumerate}
+\end{definition}
+
+\begin{definition}[Dot product]
+ \label{kugel:def:dot-product}
+ In the vector field \(\mathbb{K}^n\) the scalar or dot product between two
+ vectors \(u, v \in \mathbb{K}^n\) is
+ \(
+ u \cdot v
+ = u_1 \overline{v}_1 + u_2 \overline{v}_2 + \cdots + u_n \overline{v}_n
+ = \sum_{i=1}^n u_i \overline{v}_i.
+ \)
+\end{definition}
+
+\kugeltodo{Text here.}
+
+\begin{definition}[Span]
+\end{definition}
+
+\kugeltodo{Text here.}
+
+\begin{definition}[Linear independence]
+\end{definition}
+
+
+\kugeltodo{Text here.}
+
+\begin{definition}[Basis]
+\end{definition}
+
+\kugeltodo{Text here.}
+
+\begin{definition}[Inner product]
+ \label{kugel:def:inner-product} \nocite{axler_linear_2014}
+ The \emph{inner product} on \(V\) is a function that takes each ordered pair
+ \((u, v)\) of elements of \(V\) to a number \(\langle u, v \rangle \in
+ \mathbb{K}\) and has the following properties:
+ \begin{enumerate}[(a)]
+ \item (Positivity) \(\langle v, v \rangle \geq 0\) for all \(v \in V\);
+ \item (Definiteness) \(\langle v, v \rangle = 0\) iff \(v = 0\);
+ \item (Additivity) \(
+ \langle u + v, w \rangle =
+ \langle u, w \rangle + \langle v, w \rangle
+ \) for all \(u, v, w \in V\);
+ \item (Homogeneity) \(
+ \langle \lambda u, v \rangle =
+ \lambda \langle u, v \rangle
+ \) for all \(\lambda \in \mathbb{K}\) and all \(u, v \in V\);
+ \item (Conjugate symmetry)
+ \(\langle u, v \rangle = \overline{\langle v, u \rangle}\) for all
+ \(u, v \in V\).
+ \end{enumerate}
+\end{definition}
+
+This newly introduced inner product is thus a generalization of the scalar
+product that does not explicitly depend on rows or columns of vectors. This
+has the interesting consequence that anything that behaves according to the
+rules given in definition \ref{kugel:def:inner-product} \emph{is} an inner
+product. For example if we say that the vector space \(V = \mathbb{R}^n\),
+then the dot product defined in definition \ref{kugel:def:dot-product}
+\(
+ u \cdot v = u_1 \overline{v}_1 + u_2 \overline{v}_2 + \cdots + u_n \overline{v}_n
+\)
+is an inner product in \(V\), and the two are said to form an \emph{inner
+product space}.
+
+\begin{definition}[Inner product space]
+ \nocite{axler_linear_2014}
+ An inner product space is a vector space \(V\) equipped with an inner
+ product on \(V\).
+\end{definition}
+
+How about a more interesting example: the set of continuous complex valued
+functions on the interval \([0; 1]\) can behave like vectors. Functions can
+be added, subtracted, multiplied with scalars, are associative and there is
+even the identity element (zero function \(f(x) = 0\)), so we can create an
+inner product
+\[
+ \langle f, g \rangle = \int_0^1 f(x) \overline{g(x)} \, dx,
+\]
+which will indeed satisfy all of the rules for an inner product (in fact this
+is called the Hermitian inner product\nocite{allard_mathematics_2009}). If
+this last step sounds too good to be true, you are right, because it is not
+quite so simple. The problem that we have swept under the rug here is
+convergence, which any student who took an analysis class will know is a
+rather hairy question. We will not need to go too much into the details since
+formally discussing convergence is definitely beyond the scope of this text,
+however, for our purposes we will still need to dig a little deeper for a few
+more paragraph.
+
+\subsection{Convergence}
+
+In the last section we hinted that we can create ``infinite-dimensional''
+vector spaces using functions as vectors, and inner product spaces by
+integrating the product of two functions of said vector space. However, there
+is a problem with convergence which twofold: the obvious problem is that the
+integral of the inner product may not always converge, while the second is a
+bit more subtle and will be discussed later. The inner product that does
+not converge is a problem because we want a \emph{norm}.
+
+\begin{definition}[\(L^2\) Norm]
+ \nocite{axler_linear_2014}
+ The norm of a vector \(v\) of an inner product space is a number
+ denoted as \(\| v \|\) that is computed by \(\| v \| = \sqrt{\langle v, v
+ \rangle}\).
+\end{definition}
+
+In \(\mathbb{R}^n\) with the dot product (Euclidian space) the norm is the
+geometric length of a vector, while in a more general inner product space the
+norm can be thought of as a more abstract measure of ``length''. In any case
+it is rather important that the expression \(\sqrt{\langle v, v \rangle}\),
+which when using functions \(f: \mathbb{R} \to \mathbb{C}\) becomes
+\[
+ \sqrt{\langle f, f \rangle} =
+ \sqrt{\int_\mathbb{R} f(x) \overline{f(x)} \, dx} =
+ \sqrt{\int_\mathbb{R} |f(x)|^2 \, dx},
+\]
+always exists. So, to fix this problems we do what mathematicians do best:
+make up the solution. Since the integrand under the square root is always the
+square of the magnitude, we can just specify that the functions must be
+\emph{absolutely square integrable}. To be more compact it is common to just
+write \(f \in L^2\), where \(L^2\) denotes the set of absolutely square
+integrable functions.
+
+Now we can tackle the second (much more difficult) problem of convergence
+mentioned at the beginning. Using the technical jargon, we need that our inner
+product space is what is called a \emph{complete metric space}, which just
+means that we can measure distances. For the more motivated readers although
+not really necessary we can also give a more formal definition, the others can
+skip to the next section.
+
+\begin{definition}[Metric space]
+ \nocite{tao_analysis_2016}
+ A metric space \((X, d)\) is a space \(X\) of objects (called points),
+ together with a distance function or metric \(d: X \times X \to [0,
+ +\infty)\), which associates to each pair \(x, y\) of points in \(X\) a
+ non-negative real number \(d(x, y) \geq 0\). Furthermore, the metric must
+ satisfy the following four axioms:
+ \begin{enumerate}[(a)]
+ \item For any \(x\in X\), we have \(d(x, x) = 0\).
+ \item (Positivity) For any \emph{distinct} \(x, y \in X\), we have
+ \(d(x,y) > 0\).
+ \item (Symmetry) For any \(x,y \in X\), we have \(d(x, y) = d(y, x)\).
+ \item (Triangle inequality) For any \(x, y, z \in X\) we have
+ \(d(x, z) \leq d(x, y) + d(y, z)\).
+ \end{enumerate}
+\end{definition}
+
+As is seen in the definition metric spaces are a very abstract concept and
+rely on rather weak statements, which makes them very general. Now, the more
+intimidating part is the \emph{completeness} which is defined as follows.
+
+\begin{definition}[Complete metric space]
+ \label{kugel:def:complete-metric-space}
+ A metric space \((X, d)\) is said to be \emph{complete} iff every Cauchy
+ sequence in \((X, d)\) is convergent in \((X, d)\).
+\end{definition}
+
+To fully explain definition \ref{kugel:def:complete-metric-space} it would
+take a few more pages, which would get a bit too heavy. So instead we will
+give an informal explanation through an counterexample to get a feeling of
+what is actually happening. Cauchy sequences is a rather fancy name for a
+sequence for example of numbers that keep changing, but in a such a way that
+at some point the change keeps getting smaller (the infamous
+\(\varepsilon-\delta\) definition). For example consider the sequence of
+numbers
+\[
+ 1,
+ 1.4,
+ 1.41,
+ 1.414,
+ 1.4142,
+ 1.41421,
+ \ldots
+\]
+in the metric space \((\mathbb{Q}, d)\) with \(d(x, y) = |x - y|\). Each
+element of this sequence can be written with some fraction in \(\mathbb{Q}\),
+but in \(\mathbb{R}\) the sequence is converging towards the number
+\(\sqrt{2}\). However, \(\sqrt{2} \notin \mathbb{Q}\). Since we can find a
+sequence of fractions whose distance's limit is not in \(\mathbb{Q}\), the
+metric space \((\mathbb{Q}, d)\) is \emph{not} complete. Conversely,
+\((\mathbb{R}, d)\) is a complete metric space since \(\sqrt{2} \in
+\mathbb{R}\).
+
+Of course the analogy above also applies to vectors, i.e. if in an inner
+product space \(V\) over a field \(\mathbb{K}\) all sequences of vectors have
+a distance that is always in \(\mathbb{K}\), then \(V\) is also a complete
+metric space. In the jargon, this particular case is what is known as a
+Hilbert space, after the incredibly influential German mathematician David
+Hilbert.
+
+\begin{definition}[Hilbert space]
+ A Hilbert space is a vector space \(H\) with an inner product \(\langle f, g
+ \rangle\) and a norm \(\sqrt{\langle f, f \rangle}\) defined such that \(H\)
+ turns into a complete metric space.
+\end{definition}
+
+\subsection{Orthogonal basis and Fourier series}
+
+Now we finally have almost everything we need to get into the domain of
+Fourier theory from the perspective of linear algebra. However, we still need
+to briefly discuss the matter of orthogonality\footnote{See chapter
+\ref{buch:chapter:orthogonalitaet} for more on orthogonality.} and
+periodicity. Both should be very straightforward and already well known.
+
+\begin{definition}[Orthogonality and orthonormality]
+ \label{kugel:def:orthogonality}
+ In an inner product space \(V\) two vectors \(u, v \in V\) are said to be
+ \emph{orthogonal} if \(\langle u, v \rangle = 0\). Further, if both \(u\)
+ and \(v\) are of unit length, i.e. \(\| u \| = 1\) and \(\| v \| = 1\), then
+ they are said to be ortho\emph{normal}.
+\end{definition}
+
+\begin{definition}[1-periodic function and \(C(\mathbb{R}/\mathbb{Z}; \mathbb{C})\)]
+ A function is said to be 1-periodic if \(f(x + 1) = f(x)\). The set of
+ 1-periodic function from the real to the complex
+ numbers is denoted by \(C(\mathbb{R}/\mathbb{Z}; \mathbb{C})\).
+\end{definition}
+
+In the definition above the notation \(\mathbb{R}/\mathbb{Z}\) was borrowed
+from group theory, and is what is known as a quotient group; Not really
+relevant for our discussion but still a ``good to know''. More importantly, it
+is worth noting that we could have also defined more generally \(L\)-periodic
+functions with \(L\in\mathbb{R}\), however, this would introduce a few ugly
+\(L\)'s everywhere which are not really necessary (it will always be possible
+to extend the theorems to \(\mathbb{R} / L\mathbb{Z}\)). Thus, we will
+continue without the \(L\)'s, and to simplify the language unless specified
+otherwise ``periodic'' will mean 1-periodic. Having said that, we can
+officially begin with the Fourier theory.
+
+\begin{lemma}
+ The subset of absolutely square integrable functions in
+ \(C(\mathbb{R}/\mathbb{Z}; \mathbb{C})\) together with the Hermitian inner
+ product
+ \[
+ \langle f, g \rangle = \int_{[0; 1)} f(x) \overline{g(x)} \, dx
+ \]
+ form a Hilbert space.
+\end{lemma}
+\begin{proof}
+ It is not too difficult to show that the functions in \(C(\mathbb{R} /
+ \mathbb{Z}; \mathbb{C})\) are well behaved and form a vector space. Thus,
+ what remains is that the norm needs to form a complete metric space.
+ However, this follows from the fact that we defined the functions to be
+ absolutely square integrable\footnote{For the curious on why, it is because
+ \(L^2\) is what is known as a \emph{compact metric space}, and compact
+ metric spaces are always complete (see \cite{eck_metric_2022,
+ tao_analysis_2016}). To explain compactness and the relationship between
+ compactness and completeness is definitely beyond the goals of this text.}.
+\end{proof}
+
+This was probably not a very satisfactory proof since we brushed off a lot of
+details by referencing other theorems. However, the main takeaway should be
+that we have ``constructed'' this new Hilbert space of functions in a such a
+way that from now on we will not have to worry about the details of
+convergence.
+
+\begin{lemma}
+ \label{kugel:lemma:exp-1d}
+ The set of functions \(E_n(x) = e^{i2\pi nx}\) on the interval
+ \([0; 1)\) with \(n \in \mathbb{Z} \) are orthonormal.
+\end{lemma}
+\begin{proof}
+ We need to show that \(\langle E_m, E_n \rangle\) equals 1 when \(m = n\)
+ and zero otherwise. This is a straightforward computation: We start by
+ unpacking the notation to get
+ \[
+ \langle E_m, E_n \rangle
+ = \int_0^1 e^{i2\pi mx} e^{- i2\pi nx} \, dx
+ = \int_0^1 e^{i2\pi (m - n)x} \, dx,
+ \]
+ then inside the integrand we can see that when \(m = n\) we have \(e^0 = 1\) and
+ thus \( \int_0^1 dx = 1, \) while when \(m \neq n\) we can just say that we
+ have a new non-zero integer
+ \(k := m - n\) and
+ \[
+ \int_0^1 e^{i2\pi kx} \, dx
+ = \frac{e^{i2\pi k} - e^{0}}{i2\pi k}
+ = \frac{1 - 1}{i2\pi k}
+ = 0
+ \]
+ as desired. \qedhere
+\end{proof}
+
+\begin{definition}[Spectrum]
+\end{definition}
+
+\begin{theorem}[Fourier Theorem]
+ \[
+ \lim_{N \to \infty} \left \|
+ f(x) - \sum_{n = -N}^N \hat{f}(n) E_n(x)
+ \right \|_2 = 0
+ \]
+\end{theorem}
+
+\begin{lemma}
+ The set of functions \(E_{m, n}(\xi, \eta) = e^{i2\pi m\xi}e^{i2\pi n\eta}\)
+ on the square \([0; 1)^2\) with \(m, n \in \mathbb{Z} \) are orthonormal.
+\end{lemma}
+\begin{proof}
+ The proof is almost identical to lemma \ref{kugel:lemma:exp-1d}, with the
+ only difference that the inner product is given by
+ \[
+ \langle E_{m,n}, E_{m', n'} \rangle
+ = \iint_{[0;1)^2}
+ E_{m, n}(\xi, \eta) \overline{E_{m', n'} (\xi, \eta)}
+ \, d\xi d\eta
+ .\qedhere
+ \]
+\end{proof}
+
+\subsection{Laplacian operator}
+
+\subsection{Eigenvalue Problem}
diff --git a/buch/papers/kugel/proofs.tex b/buch/papers/kugel/proofs.tex
new file mode 100644
index 0000000..143caa8
--- /dev/null
+++ b/buch/papers/kugel/proofs.tex
@@ -0,0 +1,245 @@
+% vim:ts=2 sw=2 et spell tw=80:
+\section{Proofs}
+
+\subsection{Legendre Functions} \label{kugel:sec:proofs:legendre}
+
+\kugeltodo{Fix theorem numbers to match, review text.}
+
+\begin{lemma}
+ The polynomial function
+ \begin{align*}
+ y_n(x)&=\sum_{k=0}^{\lfloor \frac{n}{2} \rfloor} (-1)^k \frac{(2n-2k)!}{2^n k! (n-k)!(n-2k)!} x^{n-2k}\\
+ &= \frac{1}{n!2^n}\frac{d^n}{dx^n}(1-x^2)^n =: P_n(x),
+ \end{align*}
+ is a solution to the second order differential equation
+ \begin{equation}\label{kugel:eq:sol_leg}
+ (1-x^2)\frac{d^2y}{dx^2}-2x\frac{dy}{dx} + n(n+1)y=0, \quad \forall n>0.
+ \end{equation}
+\end{lemma}
+\begin{proof}
+ In order to find a solution to Eq.\eqref{eq:legendre}, the following Ansatz can be performed:
+ \begin{equation}\label{eq:ansatz}
+ y(x) = \sum_{k=0}^\infty a_k x^k.
+ \end{equation}
+ Given Eq.\eqref{eq:ansatz}, then
+ \begin{align*}
+ \frac{dy}{dx} &= \sum_{k=0}^\infty k a_k x^{k-1}, \\
+ \frac{d^2y}{dx^2} &= \sum_{k=0}^\infty k (k-1) a_k x^{k-2}.
+ \end{align*}
+ Eq.\eqref{eq:legendre} can be therefore written as
+ \begin{align}
+ &(1-x^2)\sum_{k=0}^\infty k (k-1) a_k x^{k-2} - 2x\sum_{k=0}^\infty k a_k x^{k-1} + n(n+1)\sum_{k=0}^\infty a_k x^k=0 \label{eq:ansatz_in_legendre} \\
+ &=\sum_{k=0}^\infty k (k-1) a_k x^{k-2} - \sum_{k=0}^\infty k (k-1) a_k x^{k} - 2x\sum_{k=0}^\infty k a_k x^{k-1} + n(n+1)\sum_{k=0}^\infty a_k x^k=0. \nonumber
+ \end{align}
+ If one consider the term
+ \begin{equation}\label{eq:term}
+ \sum_{k=0}^\infty k (k-1) a_k x^{k-2},
+ \end{equation}
+ the substitution $\tilde{k}=k-2$ yields Eq.\eqref{eq:term} to
+ \begin{equation*}
+ \sum_{\tilde{k}=-2}^\infty (\tilde{k}+2) (\tilde{k}+1) a_{\tilde{k}+2} x^{\tilde{k}}=\sum_{\tilde{k}=0}^\infty (\tilde{k}+2) (\tilde{k}+1) a_{\tilde{k}} x^{\tilde{k}}.
+ \end{equation*}
+ This means that Eq.\eqref{eq:ansatz_in_legendre} becomes
+ \begin{align}
+ &\sum_{k=0}^\infty (k+1)(k+2) a_{k+2} x^{k} - \sum_{k=0}^\infty k (k-1) a_k x^{k} - 2\sum_{k=0}^\infty k a_k x^k + n(n+1)\sum_{k=0}^\infty a_k x^k \nonumber \\
+ = &\sum_{k=0}^\infty \big[ (k+1)(k+2) a_{k+2} - k (k-1) a_k - 2 k a_k + n(n+1) a_k \big] x^k \stackrel{!}{=} 0. \label{eq:condition}
+ \end{align}
+ The condition in Eq.\eqref{eq:condition} is equivalent to
+ \begin{equation}\label{eq:condition_2}
+ (k+1)(k+2) a_{k+2} - k (k-1) a_k - 2 k a_k + n(n+1) a_k = 0.
+ \end{equation}
+ We can derive a recursion formula for $a_{k+2}$ from Eq.\eqref{eq:condition_2}, which can be expressed as
+ \begin{equation}\label{eq:recursion}
+ a_{k+2}= \frac{k (k-1) - 2 k + n(n+1)}{(k+1)(k+2)}a_k = \frac{(k-n)(k+n+1)}{(k+2)(k+1)}a_k.
+ \end{equation}
+ All coefficients can be calculated using the latter.
+
+ Following Eq.\eqref{eq:recursion}, if we want to compute $a_6$ we would have
+ \begin{align*}
+ a_{6}= -\frac{(n-4)(n+5)}{6\cdot 5}a_4 &= -\frac{(n-4)(5+n)}{6 \cdot 5} -\frac{(n-2)(n+3)}{4 \cdot 3} a_2 \\
+ &= -\frac{(n-4)(n+5)}{6 \cdot 5} -\frac{(n-2)(n+3)}{4 \cdot 3} -\frac{n(n+1)}{2 \cdot 1} a_0 \\
+ &= -\frac{(n+5)(n+3)(n+1)n(n-2)(n-4)}{6!} a_0.
+ \end{align*}
+ One can generalize this relation for the $i^\text{th}$ even coefficient as
+ \begin{equation*}
+ a_{2k} = (-1)^k \frac{(n+(2k-1))(n+(2k-1)-2)\hdots (n-(2k-2)+2)(n-(2k-2))}{(2k)!}a_0
+ \end{equation*}
+ where $i=2k$.
+
+ A similar expression can be written for the odd coefficients $a_{2k-1}$. In this case, the equation starts from $a_1$ and to find the pattern we can write the recursion for an odd coefficient, $a_7$ for example
+ \begin{align*}
+ a_{7}= -\frac{(n-5)(n+6)}{7\cdot 6}a_5 &= - \frac{(n-5)(n+6)}{7\cdot 6} -\frac{(n-3)(n+4)}{5 \cdot 4} a_3 \\
+ &= - \frac{(n-5)(n+6)}{7\cdot 6} -\frac{(n-3)(n+4)}{5 \cdot 4} -\frac{(n-1)(n+2)}{3 \cdot 2} a_1 \\
+ &= -\frac{(n+6)(n+4)(n+2)(n-1)(n-3)(n-5)}{7!} a_1.
+ \end{align*}
+ As before, we can generalize this equation for the $i^\text{th}$ odd coefficient
+ \begin{equation*}
+ a_{2k+1} = (-1)^k \frac{(n + 2k)(n+2k-2)\hdots(n-(2k-1)+2)(n-(2k-1))}{(2k+1)!}a_1
+ \end{equation*}
+ where $i=2k+1$.
+
+ Let be
+ \begin{align*}
+ y_\text{e}^K(x) &:= \sum_{k=0}^K(-1)^k \frac{(n+(2k-1))(n+(2k-1)-2)\hdots \color{red}(n-(2k-2)+2)(n-(2k-2))}{(2k)!} x^{2k}, \\
+ y_\text{o}^K(x) &:= \sum_{k=0}^K(-1)^k \frac{(n + 2k)(n+2k-2)\hdots \color{blue} (n-(2k-1)+2)(n-(2k-1))}{(2k+1)!} x^{2k+1}.
+ \end{align*}
+ The solution to the Eq.\eqref{eq:legendre} can be written as
+ \begin{equation}\label{eq:solution}
+ y(x) = \lim_{K \to \infty} \left[ a_0 y_\text{e}^K(x) + a_1 y_\text{o}^K(x) \right].
+ \end{equation}
+
+ The colored parts can be analyzed separately:
+ \begin{itemize}
+ \item[\textcolor{red}{\textbullet}] Suppose that $n=n_0$ is an even number. Then the red part, for a specific value of $k=k_0$, will follow the following relation:
+ \begin{equation*}
+ n_0-(2k_0-2)=0.
+ \end{equation*}
+ From that point on, given the recursive nature of Eq.\eqref{eq:recursion}, all the subsequent coefficients will also be 0, making the sum finite.
+ \begin{equation*}
+ a_{2k}=0 \iff y_{\text{o}}^{2k}(x)=y_{\text{o}}^{2k_0}(x), \quad \forall k>k_0
+ \end{equation*}
+ \item[\textcolor{blue}{\textbullet}] Suppose that $n=n_0$ is an odd number. Then the blue part, for a specific value of $k=k_0$, will follow the following relation
+ \begin{equation*}
+ n_0-(2k_0-1)=0.
+ \end{equation*}
+ From that point on, for the same reason as before, all the subsequent coefficients will also be 0, making the sum finite.
+ \begin{equation*}
+ a_{2k+1}=0 \iff y_{\text{o}}^{2k+1}(x)=y_{\text{o}}^{2k_0+1}(x), \quad \forall k>k_0
+ \end{equation*}
+ \end{itemize}
+
+ There is the possibility of expressing the solution in Eq.\eqref{eq:solution} in a more compact form, combining the two solutions $y_\text{o}^K(x)$ and $y_\text{e}^K(x)$. They are both a polynomial of maximum degree $n$, assuming $n \in \mathbb{N}$. In the case where $n$ is even, the polynomial solution
+ \begin{equation*}
+ \lim_{K\to \infty} y_\text{e}^K(x)
+ \end{equation*}
+ will be a finite sum. If instead $n$ is odd, will be
+ \begin{equation*}
+ \lim_{K\to \infty} y_\text{o}^K(x)
+ \end{equation*}
+ to be a finite sum.
+
+ Depending on the coefficient we start with, $a_1$ or $a_0$, we will obtain the odd or even polynomial respectively. Starting with the last coefficient $a_n$ and, recursively, calculating all the others in descending order, we can express the two parts $y_\text{o}^K(x)$ and $y_\text{e}^K(x)$ with a single sum. Hence, because we start with the last coefficient, the choice concerning $a_1$ and $a_0$ will be at the end of the sum, and not at the beginning. To compact Eq.\eqref{eq:solution}, Eq.\eqref{eq:recursion} can be reconsidered to calculate the coefficient $a_{k-2}$, using $a_k$
+ \begin{equation*}
+ a_{k-2} = -\frac{(k+2)(k+1)}{(k-n)(k+n+1)}a_k
+ \end{equation*}
+ Now the game is to find a pattern, as before. Remember that $n$ is a fixed parameter of Eq.\eqref{eq:legendre}.
+ \begin{align*}
+ a_{n-2} &= -\frac{n(n-1)}{2(2n-1)}a_n, \\
+ a_{n-4} &= -\frac{(n-2)(n-3)}{4(2n-3)}a_{n-2} \\
+ &= -\frac{(n-2)(n-3)}{4(2n-3)}-\frac{n(n-1)}{2(2n-1)}a_n.
+ \end{align*}
+ In general
+ \begin{equation}\label{eq:general_recursion}
+ a_{n-2k} = (-1)^k \frac{n(n-1)(n-2)(n-3) \hdots (n-2k+1)}{2\cdot4\hdots 2k(2n-1)(2n-3)\hdots(2n-2k+1)}a_n
+ \end{equation}
+ The whole solution can now be written as
+ \begin{align}
+ y(x) &= a_n x^n + a_{n-2} x^{n-2} + a_{n-4} x^{n-4} + a_{n-6} x^{n-6} + \hdots + \begin{cases}
+ a_1 x, \quad &\text{if } n \text{ odd} \\
+ a_0, \quad &\text{if } n \text{ even}
+ \end{cases} \nonumber \\
+ &= \sum_{k=0}^{\lfloor \frac{n}{2} \rfloor} a_{n-2k}x^{n-2k} \label{eq:solution_2}
+ \end{align}
+ By considering
+ \begin{align}
+ (2n-1)(2n-3)\hdots (2n-2k+1)&=\frac{2n(2n-1)(2n-2)(2n-3)\hdots(2n-2k+1)}
+ {2n(2n-2)(2n-4)(2n-6)\hdots(2n-2k+2)} \nonumber \\
+ &=\frac{\frac{(2n)!}{(2n-2k)!}}
+ {2^kn(n-1)(n-2)(n-3)\hdots(n-k+1)} \nonumber \\
+ &=\frac{\frac{(2n)!}{(2n-2k)!}}
+ {2^k\frac{n!}{(n-k)!}}=\frac{(n-k)!(2n)!}{n!(2n-2k)!2^k} \label{eq:1_sub_recursion}, \\
+ 2 \cdot 4 \hdots 2k &= 2^r 1\cdot2 \hdots r = 2^r r!\label{eq:2_sub_recursion}, \\
+ n(n-1)(n-2)(n-3) \hdots (n-2k+1) &= \frac{n!}{(n-2k)!}\label{eq:3_sub_recursion}.
+ \end{align}
+ Eq.\eqref{eq:solution_2} can be rewritten as
+ \begin{equation}\label{eq:solution_3}
+ y(x)=a_n \sum_{k=0}^{\lfloor \frac{n}{2} \rfloor} (-1)^k \frac{n!^2(2n-2k)!}{k!(n-2k)!(n-k)!(2n)!} x^{n-2k}.
+ \end{equation}
+ Eq.\eqref{eq:solution_3} is defined for any $a_n$. By letting $a_n$ be declared as
+ \begin{equation*}
+ a_{n} := \frac{(2n)!}{2^n n!^2},
+ \end{equation*}
+ the so called \emph{Legendre polynomial} emerges
+ \begin{equation}\label{eq:leg_poly}
+ P_n(x):=\sum_{k=0}^{\lfloor \frac{n}{2} \rfloor} (-1)^k \frac{(2n-2k)!}{2^n k! (n-k)!(n-2k)!} x^{n-2k}
+ \end{equation}
+\end{proof}
+
+
+\begin{lemma}
+ If $Z_n(z)$ is a solution of the Legendre equation \eqref{kugel:eqn:legendre},
+ then
+ \begin{equation*}
+ P^m_n(z) = (1 - z^2)^{m/2} \frac{d^m}{dz^m}Z_n(z)
+ \end{equation*}
+ solves the associated Legendre equation \eqref{kugel:eqn:associated-legendre}.
+\end{lemma}
+% \begin{proof} [TODO: modificare la $m$ (è già usata come costante di separazione) o forse è giusta (?)]
+\begin{proof}
+ To begin, we can start by differentiating $m$ times Eq.\eqref{kugel:eq:leg_eq} (which is staisfied by $y(x)$), obtaining
+ \begin{equation}\label{eq:lagrange_mderiv}
+ \frac{d^m}{dx^m}\left[ (1-x^2)\frac{d^2y}{dx^2} \right] -2 \frac{d^m}{dx^m}\left[ x\frac{dy}{dx} \right] + n(n+1)\frac{d^m}{dx^m}y=0.
+ \end{equation}
+ \emph{Leibniz's theorem} says, that if we want to differentiate $m$ times a multiplication of two functions, we can use the binomial coefficients to build up a sum. This allows us to be more compact, obtaining
+ \begin{equation}\label{eq:leibniz}
+ \frac{d^m}{dx^m}[u(x)v(x)] = \sum_{i=0}^m \binom{n}{i} \frac{d^{m-i}u}{dx^{m-1}} \frac{d^{i}v}{dx^i}.
+ \end{equation}
+ Using Eq.\eqref{eq:leibniz} in Eq.\eqref{eq:lagrange_mderiv}, we have
+ \begin{align}
+ (1-x^2)\frac{d^{m+2}y}{dx^{m+2}} &+ m \frac{d}{dx}(1-x^2)\frac{d^{m+1}y}{dx^{m+1}} + \frac{m(m-1)}{2}\frac{d^{2}}{dx^{2}}(1-x^2)\frac{d^{m}y}{dx^{m}} + n(n+1)\frac{d^m{}y}{dx^{m}} \nonumber \\
+ &-2\left(x\frac{d^{m+1}y}{dx^{m+1}} + m\frac{d}{dx}x\frac{d^{m}y}{dx^{m}} \right) \nonumber \\
+ &= (1-x^2)\frac{d^{m+2}y}{dx^{m+2}} -2x(m+1)\frac{d^{m+1}y}{dx^{m+1}}+(n(n+1)-m(m-1)-2m)\frac{d^{m}y}{dx^{m}}=0. \label{eq:aux_3}
+ \end{align}
+ To make the notation easier to follow, a new function can be defined
+ \begin{equation*}
+ \frac{d^{m}y}{dx^{m}} := y_m.
+ \end{equation*}
+ Eq.\eqref{eq:aux_3} now becomes
+ \begin{equation}\label{eq:1st_subs}
+ (1-x^2)\frac{d^{2}y_m}{dx^{2}} -2x(m+1)\frac{dy_m}{dx}+(n(n+1)-m(m+1))y_m=0
+ \end{equation}
+ A second function can be further defined as
+ \begin{equation*}
+ (1-x^2)^{\frac{m}{2}}\frac{d^{m}y}{dx^{m}} = (1-x^2)^{\frac{m}{2}}y_m := \hat{y}_m,
+ \end{equation*}
+ allowing to write Eq.\eqref{eq:1st_subs} as
+ \begin{equation}\label{eq:2st_subs}
+ (1-x^2)\frac{d^2}{dx^2}[\hat{y}_m(1-x^2)^{-\frac{m}{2}}] -2(m+1)x\frac{d}{dx}[\hat{y}_m(1-x^2)^{-\frac{m}{2}}] + (n(n+1)-m(m+1))\hat{y}_m(1-x^2)^{-\frac{m}{2}}=0.
+ \end{equation}
+ The goal now is to compute the two terms
+ \begin{align*}
+ \frac{d^2}{dx^2}[\hat{y}_m(1-x^2)^{-\frac{m}{2}}] &= \frac{d^2\hat{y}_m}{dx^2} (1-x^2)^{-\frac{m}{2}} + \frac{d\hat{y}_m}{dx}\frac{m}{2}(1-x^2)^{-\frac{m}{2}-1}2x \\
+ &+ m\left( \frac{d\hat{y}_m}{dx} x (1-x^2)^{-\frac{m}{2}-1} + \hat{y}_m (1-x^2)^{-\frac{m}{2}-1} - \hat{y}_m x (-\frac{m}{2}-1)(1-x^2)^{-\frac{m}{2}} 2x\right) \\
+ &= \frac{d^2\hat{y}_m}{dx^2} (1-x^2)^{-\frac{m}{2}} + \frac{d\hat{y}_m}{dx}mx (1-x^2)^{-\frac{m}{2}-1} + m\frac{d\hat{y}_m}{dx}x (1-x^2)^{-\frac{m}{2}-1}\\
+ &+ m\hat{y}_m (1-x^2)^{-\frac{m}{2}-1} + m\hat{y}_m x^2(m+2)(1-x^2)^{-\frac{m}{2}-2}
+ \end{align*}
+ and
+ \begin{align*}
+ \frac{d}{dx}[\hat{y}_m(1-x^2)^{-\frac{m}{2}}] &= \frac{d\hat{y}_m}{dx}(1-x^2)^{-\frac{m}{2}} + \hat{y}_m\frac{m}{2}(1-x^2)^{-\frac{m}{2}-1}2x \\
+ &= \frac{d\hat{y}_m}{dx}(1-x^2)^{-\frac{m}{2}} + \hat{y}_mm(1-x^2)^{-\frac{m}{2}-1}x,
+ \end{align*}
+ to use them in Eq.\eqref{eq:2st_subs}, obtaining
+ \begin{align*}
+ (1-x^2)\biggl[\frac{d^2\hat{y}_m}{dx^2} (1-x^2)^{-\frac{m}{2}} &+ \frac{d\hat{y}_m}{dx}mx (1-x^2)^{-\frac{m}{2}-1} + m\frac{d\hat{y}_m}{dx}x (1-x^2)^{-\frac{m}{2}-1} \\
+ &+ m\hat{y}_m (1-x^2)^{-\frac{m}{2}-1} + m\hat{y}_m x^2(m+2)(1-x^2)^{-\frac{m}{2}-2}\biggr] \\
+ &-2(m+1)x\left[ \frac{d\hat{y}_m}{dx}(1-x^2)^{-\frac{m}{2}} + \hat{y}_mm(1-x^2)^{-\frac{m}{2}-1}x \right] \\
+ &+ (n(n+1)-m(m+1))\hat{y}_m(1-x^2)^{-\frac{m}{2}}=0.\\
+ \end{align*}
+ We can now divide by $(1-x^2)^{-\frac{m}{2}}$, obtaining
+ \begin{align*}
+ (1-x^2)\biggl[\frac{d^2\hat{y}_m}{dx^2} &+ \frac{d\hat{y}_m}{dx}mx (1-x^2)^{-1} + m\frac{d\hat{y}_m}{dx}x (1-x^2)^{-1} + m\hat{y}_m (1-x^2)^{-1} + m\hat{y}_m x^2(m+2)(1-x^2)^{-2}\biggr] \\
+ &-2(m+1)x\left[ \frac{d\hat{y}_m}{dx} + \hat{y}_mm(1-x^2)^{-1}x \right] + (n(n+1)-m(m+1))\hat{y}_m\\
+ &= \frac{d^2\hat{y}_m}{dx^2} + \frac{d\hat{y}_m}{dx}mx + m\frac{d\hat{y}_m}{dx}x + m\hat{y}_m + m\hat{y}_m x^2(m+2)(1-x^2)^{-1} \\
+ &-2(m+1)x\left[ \frac{d\hat{y}_m}{dx} + \hat{y}_mm(1-x^2)^{-1}x \right] + (n(n+1)-m(m+1))\hat{y}_m\\
+ \end{align*}
+ and collecting some terms
+ \begin{equation*}
+ (1-x^2)\frac{d^2\hat{y}_m}{dx^2} - 2x\frac{d\hat{y}_m}{dx} + \left( -x^2 \frac{m^2}{1-x^2} + m+n(n+1)-m(m+1)\right)\hat{y}_m=0.
+ \end{equation*}
+ Showing that
+ \begin{align*}
+ -x^2 \frac{m^2}{1-x^2} + m+n(n+1)-m(m+1) &= n(n+1)- m^2 -x^2 \frac{m^2}{1-x^2} \\
+ &= n(n+1)- \frac{m}{1-x^2}
+ \end{align*}
+ implies $\hat{y}_m(x)$ being a solution of Eq.\eqref{kugel:eq:associated_leg_eq}
+\end{proof}
diff --git a/buch/papers/kugel/references.bib b/buch/papers/kugel/references.bib
index 013da60..e5d6452 100644
--- a/buch/papers/kugel/references.bib
+++ b/buch/papers/kugel/references.bib
@@ -1,35 +1,206 @@
-%
-% references.bib -- Bibliography file for the paper kugel
-%
-% (c) 2020 Autor, Hochschule Rapperswil
-%
-
-@online{kugel:bibtex,
- title = {BibTeX},
- url = {https://de.wikipedia.org/wiki/BibTeX},
- date = {2020-02-06},
- year = {2020},
- month = {2},
- day = {6}
-}
-
-@book{kugel:numerical-analysis,
- title = {Numerical Analysis},
- author = {David Kincaid and Ward Cheney},
- publisher = {American Mathematical Society},
- year = {2002},
- isbn = {978-8-8218-4788-6},
- inseries = {Pure and applied undegraduate texts},
- volume = {2}
-}
-
-@article{kugel:mendezmueller,
- author = { Tabea Méndez and Andreas Müller },
- title = { Noncommutative harmonic analysis and image registration },
- journal = { Appl. Comput. Harmon. Anal.},
- year = 2019,
- volume = 47,
- pages = {607--627},
- url = {https://doi.org/10.1016/j.acha.2017.11.004}
+
+@article{carvalhaes_surface_2015,
+ title = {The surface Laplacian technique in {EEG}: Theory and methods},
+ volume = {97},
+ issn = {01678760},
+ url = {https://linkinghub.elsevier.com/retrieve/pii/S0167876015001749},
+ doi = {10.1016/j.ijpsycho.2015.04.023},
+ shorttitle = {The surface Laplacian technique in {EEG}},
+ pages = {174--188},
+ number = {3},
+ journaltitle = {International Journal of Psychophysiology},
+ shortjournal = {International Journal of Psychophysiology},
+ author = {Carvalhaes, Claudio and de Barros, J. Acacio},
+ urldate = {2022-05-16},
+ date = {2015-09},
+ langid = {english},
+ file = {Submitted Version:/Users/npross/Zotero/storage/SN4YUNQC/Carvalhaes and de Barros - 2015 - The surface Laplacian technique in EEG Theory and.pdf:application/pdf},
+}
+
+@video{minutephysics_better_2021,
+ title = {A Better Way To Picture Atoms},
+ url = {https://www.youtube.com/watch?v=W2Xb2GFK2yc},
+ abstract = {Thanks to Google for sponsoring a portion of this video!
+Support {MinutePhysics} on Patreon: http://www.patreon.com/minutephysics
+
+This video is about using Bohmian trajectories to visualize the wavefunctions of hydrogen orbitals, rendered in 3D using custom python code in Blender.
+
+{REFERENCES}
+A Suggested Interpretation of the Quantum Theory in Terms of "Hidden" Variables. I
+David Bohm, Physical Review, Vol 85 No. 2, January 15, 1952
+
+Speakable and Unspeakable in Quantum Mechanics
+J. S. Bell
+
+Trajectory construction of Dirac evolution
+Peter Holland
+
+The de Broglie-Bohm Causal Interpretation of Quantum Mechanics and its Application to some Simple Systems by Caroline Colijn
+
+Bohmian Trajectories as the Foundation of Quantum Mechanics
+http://arxiv.org/abs/0912.2666v1
+
+The Pilot-Wave Perspective on Quantum Scattering and Tunneling
+http://arxiv.org/abs/1210.7265v2
+
+A Quantum Potential Description of One-Dimensional Time-Dependent Scattering From Square Barriers and Square Wells
+Dewdney, Foundations of Physics, {VoL} 12, No. 1, 1982
+
+Link to Patreon Supporters: http://www.minutephysics.com/supporters/
+
+{MinutePhysics} is on twitter - @minutephysics
+And facebook - http://facebook.com/minutephysics
+
+Minute Physics provides an energetic and entertaining view of old and new problems in physics -- all in a minute!
+
+Created by Henry Reich},
+ author = {{minutephysics}},
+ urldate = {2022-05-19},
+ date = {2021-05-19},
+}
+
+@article{ries_role_2013,
+ title = {Role of the lateral prefrontal cortex in speech monitoring},
+ volume = {7},
+ issn = {1662-5161},
+ url = {http://journal.frontiersin.org/article/10.3389/fnhum.2013.00703/abstract},
+ doi = {10.3389/fnhum.2013.00703},
+ journaltitle = {Frontiers in Human Neuroscience},
+ shortjournal = {Front. Hum. Neurosci.},
+ author = {Riès, Stephanie K. and Xie, Kira and Haaland, Kathleen Y. and Dronkers, Nina F. and Knight, Robert T.},
+ urldate = {2022-05-16},
+ date = {2013},
+ file = {Full Text:/Users/npross/Zotero/storage/W7KTJB8E/Riès et al. - 2013 - Role of the lateral prefrontal cortex in speech mo.pdf:application/pdf},
+}
+
+@online{saylor_academy_atomic_2012,
+ title = {Atomic Orbitals and Their Energies},
+ url = {http://saylordotorg.github.io/text_general-chemistry-principles-patterns-and-applications-v1.0/s10-05-atomic-orbitals-and-their-ener.html},
+ author = {{Saylor Academy}},
+ urldate = {2022-05-30},
+ date = {2012},
+ file = {Atomic Orbitals and Their Energies:/Users/npross/Zotero/storage/LJ8DM3YI/s10-05-atomic-orbitals-and-their-ener.html:text/html},
+}
+
+@inproceedings{schmitz_using_2012,
+ location = {Santa Clara, {CA}, {USA}},
+ title = {Using spherical harmonics for modeling antenna patterns},
+ isbn = {978-1-4577-1155-8 978-1-4577-1153-4 978-1-4577-1154-1},
+ url = {http://ieeexplore.ieee.org/document/6175298/},
+ doi = {10.1109/RWS.2012.6175298},
+ eventtitle = {2012 {IEEE} Radio and Wireless Symposium ({RWS})},
+ pages = {155--158},
+ booktitle = {2012 {IEEE} Radio and Wireless Symposium},
+ publisher = {{IEEE}},
+ author = {Schmitz, Arne and Karolski, Thomas and Kobbelt, Leif},
+ urldate = {2022-05-16},
+ date = {2012-01},
+}
+
+@online{allard_mathematics_2009,
+ title = {Mathematics 203-204 - Basic Analysis I-{II}},
+ url = {https://services.math.duke.edu/~wka/math204/},
+ author = {Allard, William K.},
+ urldate = {2022-07-25},
+ date = {2009},
+ file = {Mathematics 203-204 - Basic Analysis I-II:/Users/npross/Zotero/storage/LJISXBCM/math204.html:text/html},
+}
+
+@book{olver_introduction_2013,
+ location = {New York, {NY}},
+ title = {Introduction to partial differential equations},
+ isbn = {978-3-319-02098-3},
+ publisher = {Springer Science+Business Media, {LLC}},
+ author = {Olver, Peter J.},
+ date = {2013},
+}
+
+@book{miller_partial_2020,
+ location = {Mineola, New York},
+ title = {Partial differential equations in engineering problems},
+ isbn = {978-0-486-84329-2},
+ abstract = {"Requiring only an elementary knowledge of ordinary differential equations, this concise text begins by deriving common partial differential equations associated with vibration, heat flow, electricity, and elasticity. The treatment discusses and applies the techniques of Fourier analysis to these equations and extends the discussion to the Fourier integral. Final chapters discuss Legendre, Bessel, and Mathieu functions and the general structure of differential operators"--},
+ publisher = {Dover Publications, Inc},
+ author = {Miller, Kenneth S.},
+ date = {2020},
+ keywords = {Differential equations, Partial},
+}
+
+@book{asmar_complex_2018,
+ location = {Cham},
+ title = {Complex analysis with applications},
+ isbn = {978-3-319-94062-5},
+ series = {Undergraduate texts in mathematics},
+ pagetotal = {494},
+ publisher = {Springer},
+ author = {Asmar, Nakhlé H. and Grafakos, Loukas},
+ date = {2018},
+ doi = {10.1007/978-3-319-94063-2},
+ file = {Table of Contents PDF:/Users/npross/Zotero/storage/G2Q2RDFU/Asmar and Grafakos - 2018 - Complex analysis with applications.pdf:application/pdf},
+}
+
+@book{adkins_ordinary_2012,
+ location = {New York},
+ title = {Ordinary differential equations},
+ isbn = {978-1-4614-3617-1},
+ series = {Undergraduate texts in mathematics},
+ pagetotal = {799},
+ publisher = {Springer},
+ author = {Adkins, William A. and Davidson, Mark G.},
+ date = {2012},
+ keywords = {Differential equations},
+}
+
+@book{griffiths_introduction_2015,
+ title = {Introduction to electrodynamics},
+ isbn = {978-93-325-5044-5},
+ author = {Griffiths, David J},
+ date = {2015},
+ note = {{OCLC}: 965197645},
+}
+
+@book{tao_analysis_2016,
+ title = {Analysis 2},
+ isbn = {978-981-10-1804-6},
+ url = {https://doi.org/10.1007/978-981-10-1804-6},
+ author = {Tao, Terence},
+ urldate = {2022-07-25},
+ date = {2016},
+ note = {{OCLC}: 965325026},
+}
+
+@book{axler_linear_2015,
+ location = {Cham},
+ title = {Linear Algebra Done Right},
+ isbn = {978-3-319-11079-0 978-3-319-11080-6},
+ url = {https://link.springer.com/10.1007/978-3-319-11080-6},
+ series = {Undergraduate Texts in Mathematics},
+ publisher = {Springer International Publishing},
+ author = {Axler, Sheldon},
+ urldate = {2022-07-25},
+ date = {2015},
+ langid = {english},
+ doi = {10.1007/978-3-319-11080-6},
+ file = {Submitted Version:/Users/npross/Zotero/storage/3Y8MX74N/Axler - 2015 - Linear Algebra Done Right.pdf:application/pdf},
+}
+
+@online{eck_metric_2022,
+ title = {Metric Spaces: Completeness},
+ url = {https://math.hws.edu/eck/metric-spaces/completeness.html},
+ titleaddon = {Math 331: Foundations of Analysis},
+ author = {Eck, David J.},
+ urldate = {2022-08-01},
+ date = {2022},
+ file = {Metric Spaces\: Completeness:/Users/npross/Zotero/storage/5JYEE8NF/completeness.html:text/html},
}
+@book{bell_special_2004,
+ location = {Mineola, {NY}},
+ title = {Special functions for scientists and engineers},
+ isbn = {978-0-486-43521-3},
+ series = {Dover books on mathematics},
+ pagetotal = {247},
+ publisher = {Dover Publ},
+ author = {Bell, William Wallace},
+ date = {2004},
+} \ No newline at end of file
diff --git a/buch/papers/kugel/spherical-harmonics.tex b/buch/papers/kugel/spherical-harmonics.tex
new file mode 100644
index 0000000..2ded50b
--- /dev/null
+++ b/buch/papers/kugel/spherical-harmonics.tex
@@ -0,0 +1,410 @@
+% vim:ts=2 sw=2 et spell tw=80:
+
+\section{Construction of the Spherical Harmonics}
+
+\kugeltodo{Review text, or rewrite if preliminaries becomes an addendum}
+
+We finally arrived at the main section, which gives our chapter its name. The
+idea is to discuss spherical harmonics, their mathematical derivation and some
+of their properties and applications.
+
+The subsection \ref{} \kugeltodo{Fix references} will be devoted to the
+Eigenvalue problem of the Laplace operator. Through the latter we will derive
+the set of Eigenfunctions that obey the equation presented in \ref{}
+\kugeltodo{reference to eigenvalue equation}, which will be defined as
+\emph{Spherical Harmonics}. In fact, this subsection will present their
+mathematical derivation.
+
+In the subsection \ref{}, on the other hand, some interesting properties
+related to them will be discussed. Some of these will come back to help us
+understand in more detail why they are useful in various real-world
+applications, which will be presented in the section \ref{}.
+
+One specific property will be studied in more detail in the subsection \ref{},
+namely the recursive property. The last subsection is devoted to one of the
+most beautiful applications (In our humble opinion), namely the derivation of a
+Fourier-style series expansion but defined on the sphere instead of a plane.
+More importantly, this subsection will allow us to connect all the dots we have
+created with the previous sections, concluding that Fourier is just a specific
+case of the application of the concept of orthogonality. Our hope is that after
+reading this section you will appreciate the beauty and power of generalization
+that mathematics offers us.
+
+\subsection{Eigenvalue Problem}
+\label{kugel:sec:construction:eigenvalue}
+
+\begin{figure}
+ \centering
+ \includegraphics{papers/kugel/figures/tikz/spherical-coordinates}
+ \caption{
+ Spherical coordinate system. Space is described with the free variables $r
+ \in \mathbb{R}_0^+$, $\vartheta \in [0; \pi]$ and $\varphi \in [0; 2\pi)$.
+ \label{kugel:fig:spherical-coordinates}
+ }
+\end{figure}
+
+From Section \ref{buch:pde:section:kugel}, we know that the spherical Laplacian
+in the spherical coordinate system (shown in Figure
+\ref{kugel:fig:spherical-coordinates}) is is defined as
+\begin{equation*}
+ \sphlaplacian :=
+ \frac{1}{r^2} \frac{\partial}{\partial r} \left(
+ r^2 \frac{\partial}{\partial r}
+ \right)
+ + \frac{1}{r^2} \left[
+ \frac{1}{\sin\vartheta} \frac{\partial}{\partial \vartheta} \left(
+ \sin\vartheta \frac{\partial}{\partial\vartheta}
+ \right)
+ + \frac{1}{\sin^2 \vartheta} \frac{\partial^2}{\partial\varphi^2}
+ \right].
+\end{equation*}
+But we will not consider this algebraic monstrosity in its entirety. As the
+title suggests, we will only care about the \emph{surface} of the sphere. This
+is for many reasons, but mainly to simplify reduce the already broad scope of
+this text. Concretely, we will always work on the unit sphere, which just means
+that we set $r = 1$ and keep only $\vartheta$ and $\varphi$ as free variables.
+Now, since the variable $r$ became a constant, we can leave out all derivatives
+with respect to $r$ and substitute all $r$'s with 1's to obtain a new operator
+that deserves its own name.
+
+\begin{definition}[Surface spherical Laplacian]
+ \label{kugel:def:surface-laplacian}
+ The operator
+ \begin{equation*}
+ \surflaplacian :=
+ \frac{1}{\sin\vartheta} \frac{\partial}{\partial \vartheta} \left(
+ \sin\vartheta \frac{\partial}{\partial\vartheta}
+ \right)
+ + \frac{1}{\sin^2 \vartheta} \frac{\partial^2}{\partial\varphi^2},
+ \end{equation*}
+ is called the surface spherical Laplacian.
+\end{definition}
+
+In the definition, the subscript ``$\partial S$'' was used to emphasize the
+fact that we are on the spherical surface, which can be understood as being the
+boundary of the sphere. But what does it actually do? To get an intuition,
+first of all, notice the fact that $\surflaplacian$ have second derivatives,
+which means that this a measure of \emph{curvature}; But curvature of what? To
+get an even stronger intuition we will go into geometry, were curvature can be
+grasped very well visually. Consider figure \ref{kugel:fig:curvature} where the
+curvature is shown using colors. First we have the curvature of a curve in 1D,
+then the curvature of a surface (2D), and finally the curvature of a function on
+the surface of the unit sphere.
+
+\begin{figure}
+ \centering
+ \includegraphics[width=.3\linewidth]{papers/kugel/figures/tikz/curvature-1d}
+ \hskip 5mm
+ \includegraphics[width=.3\linewidth]{papers/kugel/figures/povray/curvature}
+ \hskip 5mm
+ \includegraphics[width=.3\linewidth]{papers/kugel/figures/povray/spherecurve}
+ \caption{
+ \kugeltodo{Fix alignment / size, add caption. Would be nice to match colors.}
+ \label{kugel:fig:curvature}
+ }
+\end{figure}
+
+Now that we have defined an operator, we can go and study its eigenfunctions,
+which means that we would like to find the functions $f(\vartheta, \varphi)$
+that satisfy the equation
+\begin{equation} \label{kuvel:eqn:eigen}
+ \surflaplacian f = -\lambda f.
+\end{equation}
+Perhaps it may not be obvious at first glance, but we are in fact dealing with a
+partial differential equation (PDE) \kugeltodo{Boundary conditions?}. If we
+unpack the notation of the operator $\nabla^2_{\partial S}$ according to
+definition
+\ref{kugel:def:surface-laplacian}, we get:
+\begin{equation} \label{kugel:eqn:eigen-pde}
+ \frac{1}{\sin\vartheta} \frac{\partial}{\partial \vartheta} \left(
+ \sin\vartheta \frac{\partial f}{\partial\vartheta}
+ \right)
+ + \frac{1}{\sin^2 \vartheta} \frac{\partial^2 f}{\partial\varphi^2}
+ + \lambda f = 0.
+\end{equation}
+Since all functions satisfying \eqref{kugel:eqn:eigen-pde} are the
+\emph{eigenfunctions} of $\surflaplacian$, our new goal is to solve this PDE.
+The task may seem very difficult but we can simplify it with a well-known
+technique: \emph{the separation Ansatz}. It consists in assuming that the
+function $f(\vartheta, \varphi)$ can be factorized in the following form:
+\begin{equation}
+ f(\vartheta, \varphi) = \Theta(\vartheta)\Phi(\varphi).
+\end{equation}
+In other words, we are saying that the effect of the two independent variables
+can be described using the multiplication of two functions that describe their
+effect separately. This separation process was already presented in section
+\ref{buch:pde:section:kugel}, but we will briefly rehearse it here for
+convenience. If we substitute this assumption in
+\eqref{kugel:eqn:eigen-pde}, we have:
+\begin{equation*}
+ \frac{1}{\sin\vartheta} \frac{\partial}{\partial \vartheta} \left(
+ \sin\vartheta \frac{\partial \Theta(\vartheta)}{\partial\vartheta}
+ \right) \Phi(\varphi)
+ + \frac{1}{\sin^2 \vartheta}
+ \frac{\partial^2 \Phi(\varphi)}{\partial\varphi^2}
+ \Theta(\vartheta)
+ + \lambda \Theta(\vartheta)\Phi(\varphi) = 0.
+\end{equation*}
+Dividing by $\Theta(\vartheta)\Phi(\varphi)$ and introducing an auxiliary
+variable $m^2$, the separation constant, yields:
+\begin{equation*}
+ \frac{1}{\Theta(\vartheta)}\sin \vartheta \frac{d}{d \vartheta} \left(
+ \sin \vartheta \frac{d \Theta}{d \vartheta}
+ \right)
+ + \lambda \sin^2 \vartheta
+ = -\frac{1}{\Phi(\varphi)} \frac{d^2\Phi(\varphi)}{d\varphi^2}
+ = m^2,
+\end{equation*}
+which is equivalent to the following system of 2 first order differential
+equations (ODEs):
+\begin{subequations}
+ \begin{gather}
+ \frac{d^2\Phi(\varphi)}{d\varphi^2} = -m^2 \Phi(\varphi),
+ \label{kugel:eqn:ode-phi} \\
+ \sin \vartheta \frac{d}{d \vartheta} \left(
+ \sin \vartheta \frac{d \Theta}{d \vartheta}
+ \right)
+ + \left( \lambda - \frac{m^2}{\sin^2 \vartheta} \right)
+ \Theta(\vartheta) = 0
+ \label{kugel:eqn:ode-theta}.
+ \end{gather}
+\end{subequations}
+The solution of \eqref{kugel:eqn:ode-phi} is easy to find: The complex
+exponential is obviously the function we are looking for. So we can directly
+write the solutions
+\begin{equation} \label{kugel:eqn:ode-phi-sol}
+ \Phi(\varphi) = e^{i m \varphi}, \quad m \in \mathbb{Z}.
+\end{equation}
+The restriction that the separation constant $m$ needs to be an integer arises
+from the fact that we require a $2\pi$-periodicity in $\varphi$ since the
+coordinate systems requires that $\Phi(\varphi + 2\pi) = \Phi(\varphi)$.
+Unfortunately, solving \eqref{kugel:eqn:ode-theta} is as straightforward,
+actually, it is quite difficult, and the process is so involved that it will
+require a dedicated section of its own.
+
+\subsection{Legendre Functions}
+
+\begin{figure}
+ \centering
+ \kugelplaceholderfig{.8\textwidth}{5cm}
+ \caption{
+ \kugeltodo{Why $z = \cos \vartheta$.}
+ }
+\end{figure}
+
+To solve \eqref{kugel:eqn:ode-theta} we start with the substitution $z = \cos
+\vartheta$ \kugeltodo{Explain geometric origin with picture}. The operator
+$\frac{d}{d \vartheta}$ becomes
+\begin{equation*}
+ \frac{d}{d \vartheta}
+ = \frac{dz}{d \vartheta}\frac{d}{dz}
+ = -\sin \vartheta \frac{d}{dz}
+ = -\sqrt{1-z^2} \frac{d}{dz},
+\end{equation*}
+since $\sin \vartheta = \sqrt{1 - \cos^2 \vartheta} = \sqrt{1 - z^2}$, and
+then \eqref{kugel:eqn:ode-theta} becomes
+\begin{align*}
+ \frac{-\sqrt{1-z^2}}{\sqrt{1-z^2}} \frac{d}{dz} \left[
+ \left(\sqrt{1-z^2}\right) \left(-\sqrt{1-z^2}\right) \frac{d \Theta}{dz}
+ \right]
+ + \left( \lambda - \frac{m^2}{1 - z^2} \right)\Theta(\vartheta) &= 0,
+ \\
+ \frac{d}{dz} \left[ (1-z^2) \frac{d \Theta}{dz} \right]
+ + \left( \lambda - \frac{m^2}{1 - z^2} \right)\Theta(\vartheta) &= 0,
+ \\
+ (1-z^2)\frac{d^2 \Theta}{dz} - 2z\frac{d \Theta}{dz}
+ + \left( \lambda - \frac{m^2}{1 - z^2} \right)\Theta(\vartheta) &= 0.
+\end{align*}
+By making two final cosmetic substitutions, namely $Z(z) = \Theta(\cos^{-1}z)$
+and $\lambda = n(n+1)$, we obtain what is known in the literature as the
+\emph{associated Legendre equation of order $m$}:
+\nocite{olver_introduction_2013}
+\begin{equation} \label{kugel:eqn:associated-legendre}
+ (1 - z^2)\frac{d^2 Z}{dz}
+ - 2z\frac{d Z}{dz}
+ + \left( n(n + 1) - \frac{m^2}{1 - z^2} \right) Z(z) = 0,
+ \quad
+ z \in [-1; 1], m \in \mathbb{Z}.
+\end{equation}
+
+Our new goal has therefore become to solve
+\eqref{kugel:eqn:associated-legendre}, since if we find a solution for $Z(z)$ we
+can perform the substitution backwards and get back to our eigenvalue problem.
+However, the associated Legendre equation is not any easier, so to attack the
+problem we will look for the solutions in the easier special case when $m = 0$.
+This reduces the problem because it removes the double pole, which is always
+tricky to deal with. In fact, the reduced problem when $m = 0$ is known as the
+\emph{Legendre equation}:
+\begin{equation} \label{kugel:eqn:legendre}
+ (1 - z^2)\frac{d^2 Z}{dz}
+ - 2z\frac{d Z}{dz}
+ + n(n + 1) Z(z) = 0,
+ \quad
+ z \in [-1; 1].
+\end{equation}
+
+The Legendre equation is a second order differential equation, and therefore it
+has 2 independent solutions, which are known as \emph{Legendre functions} of the
+first and second kind. For the scope of this text we will only derive a special
+case of the former that is known known as the \emph{Legendre polynomials}, since
+we only need a solution between $-1$ and $1$.
+
+\begin{lemma}[Legendre polynomials]
+ \label{kugel:lem:legendre-poly}
+ The polynomial function
+ \[
+ P_n(z) = \sum^{\lfloor n/2 \rfloor}_{k=0}
+ \frac{(-1)^k}{2^n s^k!} \frac{(2n - 2k)!}{(n - k)! (n-2k)!} z^{n - 2k}
+ \]
+ is the only finite solution of the Legendre equation
+ \eqref{kugel:eqn:legendre} when $n \in \mathbb{Z}$ and $z \in [-1; 1]$.
+\end{lemma}
+\begin{proof}
+ This results is derived in section \ref{kugel:sec:proofs:legendre}.
+\end{proof}
+
+Since the Legendre \emph{polynomials} are indeed polynomials, they can also be
+expressed using the hypergeometric functions described in section
+\ref{buch:rekursion:section:hypergeometrische-funktion}, so in fact
+\begin{equation}
+ P_n(z) = {}_2F_1 \left( \begin{matrix}
+ n + 1, & -n \\ \multicolumn{2}{c}{1}
+ \end{matrix} ; \frac{1 - z}{2} \right).
+\end{equation}
+Further, there are a few more interesting but not very relevant forms to write
+$P_n(z)$ such as \emph{Rodrigues' formula} and \emph{Laplace's integral
+representation} which are
+\begin{equation*}
+ P_n(z) = \frac{1}{2^n} \frac{d^n}{dz^n} (x^2 - 1)^n,
+ \qquad \text{and} \qquad
+ P_n(z) = \frac{1}{\pi} \int_0^\pi \left(
+ z + \cos\vartheta \sqrt{z^2 - 1}
+ \right) \, d\vartheta
+\end{equation*}
+respectively, both of which we will not prove (see chapter 3 of
+\cite{bell_special_2004} for a proof). Now that we have a solution for the
+Legendre equation, we can make use of the following lemma patch the solutions
+such that they also become solutions of the associated Legendre equation
+\eqref{kugel:eqn:associated-legendre}.
+
+\begin{lemma} \label{kugel:lem:extend-legendre}
+ If $Z_n(z)$ is a solution of the Legendre equation \eqref{kugel:eqn:legendre},
+ then
+ \begin{equation*}
+ Z^m_n(z) = (1 - z^2)^{m/2} \frac{d^m}{dz^m}Z_n(z)
+ \end{equation*}
+ solves the associated Legendre equation \eqref{kugel:eqn:associated-legendre}.
+ \nocite{bell_special_2004}
+\end{lemma}
+\begin{proof}
+ See section \ref{kugel:sec:proofs:legendre}.
+\end{proof}
+
+What is happening in lemma \ref{kugel:lem:extend-legendre}, is that we are
+essentially inserting a square root function in the solution in order to be able
+to reach the parts of the domain near the poles at $\pm 1$ of the associated
+Legendre equation, which is not possible only using power series
+\kugeltodo{Reference book theory on extended power series method.}. Now, since
+we have a solution in our domain, namely $P_n(z)$, we can insert it in the lemma
+obtain the \emph{associated Legendre functions}.
+
+\begin{definition}[Ferrers or associated Legendre functions]
+ \label{kugel:def:ferrers-functions}
+ The functions
+ \begin{equation}
+ P^m_n (z) = \frac{1}{n!2^n}(1-z^2)^{\frac{m}{2}}\frac{d^{m}}{dz^{m}} P_n(z)
+ = \frac{1}{n!2^n}(1-z^2)^{\frac{m}{2}}\frac{d^{m+n}}{dz^{m+n}}(1-z^2)^n
+ \end{equation}
+ are known as Ferrers or associated Legendre functions.
+\end{definition}
+
+\kugeltodo{Discuss $|m| \leq n$.}
+
+\if 0
+The constraint $|m|<n$, can be justified by considering Eq.\eqref{kugel:eq:associated_leg_func}, in which the derivative of degree $m+n$ is present. A derivative to be well defined must have an order that is greater than zero. Furthermore, it can be seen that this derivative is applied on a polynomial of degree $2n$. As is known from Calculus 1, if you derive a polynomial of degree $2n$ more than $2n$ times, you get zero, which is a trivial solution in which we are not interested.\newline
+We can thus summarize these two conditions by writing:
+\begin{equation*}
+ \begin{rcases}
+ m+n \leq 2n &\implies m \leq n \\
+ m+n \geq 0 &\implies m \geq -n
+ \end{rcases} |m| \leq n.
+\end{equation*}
+The set of functions in Eq.\eqref{kugel:eq:sph_harm_0} is named \emph{Spherical Harmonics}, which are the eigenfunctions of the Laplace operator on the \emph{spherical surface domain}, which is exactly what we were looking for at the beginning of this section.
+\fi
+
+\subsection{Spherical Harmonics}
+
+Finally, we can go back to solving our boundary value problem we started in
+section \ref{kugel:sec:construction:eigenvalue}. We had left off in the middle
+of the separation, were we had used the Ansatz $f(\vartheta, \varphi) =
+\Theta(\vartheta) \Phi(\varphi)$ to find that $\Phi(\varphi) = e^{im\varphi}$,
+and we were solving for $\Theta(\vartheta)$. As you may recall, previously we
+performed the substitution $z = \cos \vartheta$. Now we can finally to bring back the
+solution to the associated Legendre equation $P^m_n(z)$ into the $\vartheta$
+domain and combine it with $\Phi(\varphi)$ to get the full result:
+\begin{equation*}
+ f(\vartheta, \varphi)
+ = \Theta(\vartheta)\Phi(\varphi)
+ = P^m_n (\cos \vartheta) e^{im\varphi}.
+\end{equation*}
+This family of functions, which recall are the solutions of the eigenvalue
+problem of the surface spherical Laplacian, are the long anticipated
+\emph{complex spherical harmonics}, and they are usually denoted with
+$Y^m_n(\vartheta, \varphi)$.
+
+\begin{definition}[Spherical harmonics]
+ \label{kugel:def:spherical-harmonics}
+ The functions
+ \begin{equation*}
+ Y_{m,n}(\vartheta, \varphi) = P^m_n(\cos \vartheta) e^{im\varphi},
+ \end{equation*}
+ where $m, n \in \mathbb{Z}$ and $|m| < n$ are called spherical harmonics.
+\end{definition}
+
+\begin{figure}
+ \centering
+ \kugelplaceholderfig{\textwidth}{.8\paperheight}
+ \caption{
+ \kugeltodo{Big picture with the first few spherical harmonics.}
+ }
+\end{figure}
+
+\subsection{Normalization}
+
+\kugeltodo{Discuss various normalizations.}
+
+\if 0
+As explained in the chapter \ref{}, the concept of orthogonality is very important and at the practical level it is very useful, because it allows us to develop very powerful techniques at the mathematical level.\newline
+Throughout this book we have been confronted with the Sturm-Liouville theory (see chapter \ref{}). The latter, among other things, carries with it the concept of orthogonality. Indeed, if we consider the solutions of the Sturm-Liouville equation, which can be expressed in this form
+\begin{equation}\label{kugel:eq:sturm_liouville}
+ \mathcal{S}f := \frac{d}{dx}\left[p(x)\frac{df}{dx}\right]+q(x)f(x)
+\end{equation}
+possiamo dire che formano una base ortogonale.\newline
+Adesso possiamo dare un occhiata alle due equazioni che abbiamo ottenuto tramite la Separation Ansatz (Eqs.\eqref{kugel:eq:associated_leg_eq}\eqref{kugel:eq:ODE_1}), le quali possono essere riscritte come:
+\begin{align*}
+ \frac{d}{dx} \left[ (1-x^2) \cdot \frac{dP_{m,n}}{dx} \right] &+ \left(n(n+1)-\frac{m}{1-x^2} \right) \cdot P_{m,n}(x) = 0, \\
+ \frac{d}{d\varphi} \left[ 1 \cdot \frac{ d\Phi }{d\varphi} \right] &+ 1 \cdot \Phi(\varphi) = 0.
+\end{align*}
+Si può concludere in modo diretto che sono due casi dell'equazione di Sturm-Liouville. Questo significa che le loro soluzioni sono ortogonali sotto l'inner product con weight function $w(x)=1$, dunque:
+\begin{align}
+\int_{0}^{2\pi} \Phi_m(\varphi)\Phi_m'(\varphi) d\varphi &= \delta_{m'm}, \nonumber \\
+\int_{-1}^1 P_{m,m'}(x)P_{n,n'}(x) dx &= \delta_{m'm}\delta_{n'n}. \label{kugel:eq:orthogonality_associated_func}
+\end{align}
+Inoltre, possiamo provare l'ortogonalità di $\Theta(\vartheta)$ utilizzando \eqref{kugel:eq:orthogonality_associated_func}:
+\begin{align}
+ x
+\end{align}
+Ora, visto che la soluzione dell'eigenfunction problem è formata dalla moltiplicazione di $\Phi_m(\varphi)$ e $P_{m,n}(x)$
+\fi
+
+\subsection{Properties}
+
+\subsection{Recurrence Relations}
+
+\section{Series Expansions in $C(S^2)$}
+
+\subsection{Orthogonality of $P_n$, $P^m_n$ and $Y^m_n$}
+
+\subsection{Series Expansion}
+
+\subsection{Fourier on $S^2$}
diff --git a/buch/papers/kugel/teil0.tex b/buch/papers/kugel/teil0.tex
deleted file mode 100644
index f921a82..0000000
--- a/buch/papers/kugel/teil0.tex
+++ /dev/null
@@ -1,22 +0,0 @@
-%
-% einleitung.tex -- Beispiel-File für die Einleitung
-%
-% (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil
-%
-\section{Teil 0\label{kugel:section:teil0}}
-\rhead{Teil 0}
-Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
-nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam
-erat, sed diam voluptua \cite{kugel:bibtex}.
-At vero eos et accusam et justo duo dolores et ea rebum.
-Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum
-dolor sit amet.
-
-Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
-nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam
-erat, sed diam voluptua.
-At vero eos et accusam et justo duo dolores et ea rebum. Stet clita
-kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
-amet.
-
-
diff --git a/buch/papers/kugel/teil1.tex b/buch/papers/kugel/teil1.tex
deleted file mode 100644
index e56bb18..0000000
--- a/buch/papers/kugel/teil1.tex
+++ /dev/null
@@ -1,55 +0,0 @@
-%
-% teil1.tex -- Beispiel-File für das Paper
-%
-% (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil
-%
-\section{Teil 1
-\label{kugel:section:teil1}}
-\rhead{Problemstellung}
-Sed ut perspiciatis unde omnis iste natus error sit voluptatem
-accusantium doloremque laudantium, totam rem aperiam, eaque ipsa
-quae ab illo inventore veritatis et quasi architecto beatae vitae
-dicta sunt explicabo.
-Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit
-aut fugit, sed quia consequuntur magni dolores eos qui ratione
-voluptatem sequi nesciunt
-\begin{equation}
-\int_a^b x^2\, dx
-=
-\left[ \frac13 x^3 \right]_a^b
-=
-\frac{b^3-a^3}3.
-\label{kugel:equation1}
-\end{equation}
-Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet,
-consectetur, adipisci velit, sed quia non numquam eius modi tempora
-incidunt ut labore et dolore magnam aliquam quaerat voluptatem.
-
-Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis
-suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur?
-Quis autem vel eum iure reprehenderit qui in ea voluptate velit
-esse quam nihil molestiae consequatur, vel illum qui dolorem eum
-fugiat quo voluptas nulla pariatur?
-
-\subsection{De finibus bonorum et malorum
-\label{kugel:subsection:finibus}}
-At vero eos et accusamus et iusto odio dignissimos ducimus qui
-blanditiis praesentium voluptatum deleniti atque corrupti quos
-dolores et quas molestias excepturi sint occaecati cupiditate non
-provident, similique sunt in culpa qui officia deserunt mollitia
-animi, id est laborum et dolorum fuga \eqref{000tempmlate:equation1}.
-
-Et harum quidem rerum facilis est et expedita distinctio
-\ref{kugel:section:loesung}.
-Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil
-impedit quo minus id quod maxime placeat facere possimus, omnis
-voluptas assumenda est, omnis dolor repellendus
-\ref{kugel:section:folgerung}.
-Temporibus autem quibusdam et aut officiis debitis aut rerum
-necessitatibus saepe eveniet ut et voluptates repudiandae sint et
-molestiae non recusandae.
-Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis
-voluptatibus maiores alias consequatur aut perferendis doloribus
-asperiores repellat.
-
-
diff --git a/buch/papers/kugel/teil2.tex b/buch/papers/kugel/teil2.tex
deleted file mode 100644
index cb9e427..0000000
--- a/buch/papers/kugel/teil2.tex
+++ /dev/null
@@ -1,40 +0,0 @@
-%
-% teil2.tex -- Beispiel-File für teil2
-%
-% (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil
-%
-\section{Teil 2
-\label{kugel:section:teil2}}
-\rhead{Teil 2}
-Sed ut perspiciatis unde omnis iste natus error sit voluptatem
-accusantium doloremque laudantium, totam rem aperiam, eaque ipsa
-quae ab illo inventore veritatis et quasi architecto beatae vitae
-dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit
-aspernatur aut odit aut fugit, sed quia consequuntur magni dolores
-eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam
-est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci
-velit, sed quia non numquam eius modi tempora incidunt ut labore
-et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima
-veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam,
-nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure
-reprehenderit qui in ea voluptate velit esse quam nihil molestiae
-consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla
-pariatur?
-
-\subsection{De finibus bonorum et malorum
-\label{kugel:subsection:bonorum}}
-At vero eos et accusamus et iusto odio dignissimos ducimus qui
-blanditiis praesentium voluptatum deleniti atque corrupti quos
-dolores et quas molestias excepturi sint occaecati cupiditate non
-provident, similique sunt in culpa qui officia deserunt mollitia
-animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis
-est et expedita distinctio. Nam libero tempore, cum soluta nobis
-est eligendi optio cumque nihil impedit quo minus id quod maxime
-placeat facere possimus, omnis voluptas assumenda est, omnis dolor
-repellendus. Temporibus autem quibusdam et aut officiis debitis aut
-rerum necessitatibus saepe eveniet ut et voluptates repudiandae
-sint et molestiae non recusandae. Itaque earum rerum hic tenetur a
-sapiente delectus, ut aut reiciendis voluptatibus maiores alias
-consequatur aut perferendis doloribus asperiores repellat.
-
-
diff --git a/buch/papers/kugel/teil3.tex b/buch/papers/kugel/teil3.tex
deleted file mode 100644
index 734fff9..0000000
--- a/buch/papers/kugel/teil3.tex
+++ /dev/null
@@ -1,40 +0,0 @@
-%
-% teil3.tex -- Beispiel-File für Teil 3
-%
-% (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil
-%
-\section{Teil 3
-\label{kugel:section:teil3}}
-\rhead{Teil 3}
-Sed ut perspiciatis unde omnis iste natus error sit voluptatem
-accusantium doloremque laudantium, totam rem aperiam, eaque ipsa
-quae ab illo inventore veritatis et quasi architecto beatae vitae
-dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit
-aspernatur aut odit aut fugit, sed quia consequuntur magni dolores
-eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam
-est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci
-velit, sed quia non numquam eius modi tempora incidunt ut labore
-et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima
-veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam,
-nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure
-reprehenderit qui in ea voluptate velit esse quam nihil molestiae
-consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla
-pariatur?
-
-\subsection{De finibus bonorum et malorum
-\label{kugel:subsection:malorum}}
-At vero eos et accusamus et iusto odio dignissimos ducimus qui
-blanditiis praesentium voluptatum deleniti atque corrupti quos
-dolores et quas molestias excepturi sint occaecati cupiditate non
-provident, similique sunt in culpa qui officia deserunt mollitia
-animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis
-est et expedita distinctio. Nam libero tempore, cum soluta nobis
-est eligendi optio cumque nihil impedit quo minus id quod maxime
-placeat facere possimus, omnis voluptas assumenda est, omnis dolor
-repellendus. Temporibus autem quibusdam et aut officiis debitis aut
-rerum necessitatibus saepe eveniet ut et voluptates repudiandae
-sint et molestiae non recusandae. Itaque earum rerum hic tenetur a
-sapiente delectus, ut aut reiciendis voluptatibus maiores alias
-consequatur aut perferendis doloribus asperiores repellat.
-
-