From b31c40a22e885205373ff1a3284935d544c99889 Mon Sep 17 00:00:00 2001 From: canuel Date: Tue, 16 Aug 2022 14:32:49 +0200 Subject: started the chapter about spherical harmonics (more specific about the derivation of them) --- buch/papers/kugel/packages.tex | 2 +- buch/papers/kugel/spherical-harmonics.tex | 387 +++++++++++++++++++++++++++++- 2 files changed, 387 insertions(+), 2 deletions(-) (limited to 'buch/papers/kugel') diff --git a/buch/papers/kugel/packages.tex b/buch/papers/kugel/packages.tex index 61f91ad..1c4f3e0 100644 --- a/buch/papers/kugel/packages.tex +++ b/buch/papers/kugel/packages.tex @@ -7,4 +7,4 @@ % if your paper needs special packages, add package commands as in the % following example %\usepackage{packagename} - +\usepackage{cases} diff --git a/buch/papers/kugel/spherical-harmonics.tex b/buch/papers/kugel/spherical-harmonics.tex index 6b23ce5..c76e757 100644 --- a/buch/papers/kugel/spherical-harmonics.tex +++ b/buch/papers/kugel/spherical-harmonics.tex @@ -1,9 +1,394 @@ % vim:ts=2 sw=2 et spell: \section{Spherical Harmonics} +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.\newline +The subsection \ref{} 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{}[TODO: reference to eigenvalue equation], which will be defined as \emph{Spherical Harmonics}. In fact, this subsection will present their mathematical derivation.\newline +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{}.\newline +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.\newline +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.\newline +Our hope is that after reading this section you will appreciate the beauty and power of generalization that mathematics offers us. -\subsection{Eigenvalue Problem in Spherical Coordinates} +\subsection{Eigenvalue Problem on the Spherical surface} +\subsubsection{Unormalized Spherical Harmonics} +From the chapter \ref{}, we know that the spherical Laplacian is defined as. \begin{equation*} + \nabla^2_S := \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 do not want to consider this algebraic monster entirely, since this includes the whole set $\mathbb{R}^3$; rather, we want to focus only on the spherical surface (as the title suggests). We can then further concretise our calculations by selecting any number for the variable $r$, so that we have a sphere and, more importantly, a spherical surface on which we can ``play''.\newline +Surely you have already heard of the unit circle, a geometric entity used extensively in many mathematical contexts. The most famous and basic among them is surely trigonometry.\newline +Extending this concept into three dimensions, we will talk about the unit sphere. This is a very famous sphere, as is the unit circle. So since we need a sphere why not use the most famous one? Thus imposing $r=1$.\newline +Now, since the variable $r$ became a constant, we can leave out all derivatives with respect to $r$, setting them to zero. Then substituting the value of $r$ for 1, we will obtain the operator we will refer to as \emph{Spherical Surface Operator}: +\begin{equation*} + \nabla^2_{\partial S} := \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*} +As can be seen, for this definition, the subscript ``$\partial S$'' was used to emphasize the fact that we are on the spherical surface, which can be understood as a boundary of the sphere.\newline +Now that we have defined an operator, we can go on to calculate its eigenfunctions. As mentioned earlier, we can translate this problem at first abstract into a much more concrete problem, which has to do with the field of \emph{Partial Differential Equaitons} (PDEs). The functions we want to find are simply functions that respect the following expression: +\begin{equation}\label{kugel:eq:sph_srfc_laplace} + \nabla^2_{\partial S} f = \lambda f +\end{equation} +Which is traditionally written as follows: +\begin{equation*} + \nabla^2_{\partial S} f = -\lambda f +\end{equation*} +Perhaps the fact that we are dealing with a PDE may not be obvious at first glance, but if we extend the operator $\nabla^2_{\partial S}$ according to Eq.(\ref{kugel:eq:sph_srfc_laplace}), we will get: +\begin{equation}\label{kugel:eq:PDE_sph} + \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} +making it emerge.\newline +All functions satisfying Eq.(\ref{kugel:eq:PDE_sph}), are called eigenfunctions. Our new goal is therefore to solve this PDE. The task seems very difficult but we can simplify it with a well-known technique, namely the \emph{separation Ansatz}. The latter consists in assuming that the function $f(\vartheta, \varphi)$ we are looking for can be factorized in the following form +\begin{equation}\label{kugel:eq:sep_ansatz_0} + f(\vartheta, \varphi) = \Theta(\vartheta)\Phi(\varphi). +\end{equation} +In short, 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. If we include this assumption in Eq.(\ref{kugel:eq:PDE_sph}), 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. \label{kugel:eq:sep_ansatz_1} +\end{equation} +Dividing Eq.(\ref{kugel:eq:sep_ansatz_1}) by $\Theta(\vartheta)\Phi(\varphi)$ and inserting an auxiliary variable $m$, which we will call the separating constant, we will have: +\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, +\end{equation*} +which is equivalent to the following system of two \emph{Ordinary Differential Equations} (ODEs) +\begin{align} + \frac{d^2\Phi(\varphi)}{d\varphi^2} &= -m \Phi(\varphi) \label{kugel:eq:ODE_1} \\ + \sin \vartheta \frac{d}{d \vartheta} \left( \sin \vartheta \frac{d \Theta}{d \vartheta} \right) + \left( \lambda - \frac{m}{\sin^2 \vartheta} \right)\Theta(\vartheta) &= 0 \label{kugel:eq:ODE_2} +\end{align} +The solution of Eq.(\ref{kugel:eq:ODE_1}) is quite trivial. The complex exponential is obviously the function we are looking for, so we can write +\begin{equation*} + \Phi_m(\varphi) = e^{j m \varphi}, \quad m \in \mathbb{Z}. +\end{equation*} +The restriction for the separation constant $m$ arises from the fact that we require the following periodic constraint $\Phi_m(\varphi + 2\pi) = \Phi_m(\varphi)$.\newline +As for Eq.(\ref{kugel:eq:ODE_2}), the resolution will not be so straightforward. We can begin by considering the substitution $x = \cos \vartheta$. The operator $\frac{d}{d \vartheta}$ will be: +\begin{align*} + \frac{d}{d \vartheta} = \frac{dx}{d \vartheta}\frac{d}{dx} &= -\sin \vartheta \frac{d}{dx} \\ + &= -\sqrt{1-x^2} \frac{d}{dx}. +\end{align*} +Eq.(\ref{kugel:eq:ODE_2}) will then become. +\begin{align*} + \frac{-\sqrt{1-x^2}}{\sqrt{1-x^2}} \frac{d}{dx} \left( \left(\sqrt{1-x^2}\right) \left(-\sqrt{1-x^2}\right) \frac{d \Theta}{dx} \right) + \left( \lambda - \frac{m}{\sin^2 \vartheta} \right)\Theta(\vartheta) &= 0 \\ + \frac{d}{dx} \left( (1-x^2) \frac{d \Theta}{dx} \right) + \left( \lambda - \frac{m}{\sin^2 \vartheta} \right)\Theta(\vartheta) &= 0 \\ + (1-x^2)\frac{d^2 \Theta}{dx} - 2x\frac{d \Theta}{dx} + \left( \lambda - \frac{m}{\sin^2 \vartheta} \right)\Theta(\vartheta) &= 0 \\ + (1-x^2)\frac{d^2 \Theta}{dx} - 2x\frac{d \Theta}{dx} + \left( \lambda - \frac{m}{1-x^2} \right)\Theta(\vartheta) &= 0 +\end{align*} +By making two final cosmetic substitutions, namely $\Theta(\vartheta)=\Theta(\cos^{-1}x):=y(x)$ and $\lambda=n(n+1)$, we will be able to define the \emph{Associated Legendre Equation} in its standard and most familiar form +\begin{definition}{Associated Legendre Equation} + \begin{equation}\label{kugel:eq:associated_leg_eq} + (1-x^2)\frac{d^2 y}{dx} - 2x\frac{d y}{dx} + \left( n(n+1) - \frac{m}{1-x^2} \right)y(x) = 0. + \end{equation} +\end{definition} +Our new goal then became solving Eq.(\ref{kugel:eq:asssociated_leg_eq}). After that we can fit the solution into Eq.(\ref{kugel:eq:sep_ansatz_0}), obtaining $f(\vartheta, \varphi)$, the solution of the eigenvalue problem. \newline +We simplified the problem somewhat but the task still remains very difficult. We can rely on a lemma to continue but first we need to define an additional equation, namely the \emph{Legendre Equation} +\begin{definition}{Legendre equation}\newline + Setting $m=0$ in Eq.(\ref{kugel:eq:asssociated_leg_eq}), we get + \begin{equation}\label{kugel:eq:leg_eq} + (1-x^2)\frac{d^2 y}{dx} - 2x\frac{d y}{dx} + n(n+1)y(x) = 0, + \end{equation} + also known as \emph{Legendre Equation}. +\end{definition} +Now we can continue with the lemma +\begin{lemma}\label{kugel:lemma_1} + If $y_n(x)$ is a solution of Eq.(\ref{kugel:eq:leg_eq}), then the function + \begin{equation*} + y_{m,n}(x) = (1-x^2)^{\frac{m}{2}}\frac{d^m}{dx^m}y_n(x) + \end{equation*} + satisfies Eq.(\ref{kugel:eq:associated_leg_eq}) +\end{lemma} +\begin{proof} [TODO: modificare la $m$ (è già usata come costante di separazione) o forse è giusta (?)] + 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} +In simpler words, if we find a solution to Eq.\eqref{kugel:eq:leg_eq}, we can extend the latter according to the Lemma \ref{kugel:lemma_1} obtaining the solution of Eq.\eqref{kugel:eq:associated_leg_eq}.\newline +We can say that we are going in the right direction, as the problem to be solved is decreasing in difficulty. We moved from having to find a solution to Eq.\eqref{kugel:eq:associated_leg_eq} to finding a solution to Eq.\eqref{kugel:eq:leg_eq}, which is much more approachable as a problem. Luckily for us, the lemma we will present below will help us extensively, which is something of an euphemism, since it will give us the solution directly. +\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} +As can be seen, the solution is a $n$-dependent power series, traditionally denoted as $P_n(x)$. This set of polynomials are called \emph{Legendre Polynomials}, because precisely they are polynomials satisfying the Legendre equation.\newline +Now that we have a solution to Eq.\eqref{kugel:eq:leg_eq}, we can then extend Eq.\eqref{kugel:eq:sol_leg}, as stated in Lemma \ref{kugel:lemma_1}. We will then have +\begin{align*} +y_{m,n}(x) &= (1-x^2)^{\frac{m}{2}}\frac{d^m}{dx^m}P_n(x) \\ +&= \frac{1}{n!2^n}(1-x^2)^{\frac{m}{2}}\frac{d^{m+n}}{dx^{m+n}}(1-x^2)^n +\end{align*} +This set of functions are defined as \emph{Associated Legendre functions}, because similarly to before, they solve the Associated Legendre equation, defined in Eq.\eqref{kugel:eq:eq_leg}. +\begin{definition}{Associated Legendre Functions} +\begin{equation}\label{kugel:eq:associated_leg_func} +P_{m,n}(x) := \frac{1}{n!2^n}(1-x^2)^{\frac{m}{2}}\frac{d^{m+n}}{dx^{m+n}}(1-x^2)^n +\end{equation} +\end{definition} +As you may recall, previously we performed the substitution $x=\cos \vartheta$. Now we need to return to the old domain, which can be done straightforwardly: +\begin{equation*} + \Theta(\vartheta) = P_{m,n}(\cos \vartheta), +\end{equation*} +obtaining the much sought function $\Theta(\vartheta)$. \newline +So we finally reached the end of this tortuous path. Now we just need to put together all the information we have to construct $f(\vartheta, \varphi)$ in the following way: +\begin{equation}\label{kugel:eq:sph_harm_0} + f(\vartheta, \varphi) = \Theta(\vartheta)\Phi(\varphi) = P_{m,n}(\cos \vartheta)e^{jm\varphi}, \quad |m|\leq n. +\end{equation} +The constraint $|m| Date: Tue, 16 Aug 2022 17:16:27 +0200 Subject: kugel: Reorganize figures directory, add tikz spherical coordinates and flux --- buch/papers/kugel/figures/flux.pdf | Bin 0 -> 345665 bytes buch/papers/kugel/figures/povray/Makefile | 30 +++ buch/papers/kugel/figures/povray/curvature.maxima | 6 + buch/papers/kugel/figures/povray/curvature.pov | 139 ++++++++++ buch/papers/kugel/figures/povray/curvgraph.m | 140 ++++++++++ buch/papers/kugel/figures/povray/spherecurve.cpp | 292 +++++++++++++++++++++ buch/papers/kugel/figures/povray/spherecurve.m | 160 +++++++++++ .../papers/kugel/figures/povray/spherecurve.maxima | 13 + buch/papers/kugel/figures/povray/spherecurve.pov | 73 ++++++ .../kugel/figures/tikz/spherical-coordinates.pdf | Bin 0 -> 5824 bytes .../kugel/figures/tikz/spherical-coordinates.tex | 99 +++++++ buch/papers/kugel/images/Makefile | 30 --- buch/papers/kugel/images/curvature.maxima | 6 - buch/papers/kugel/images/curvature.pov | 139 ---------- buch/papers/kugel/images/curvgraph.m | 140 ---------- buch/papers/kugel/images/spherecurve.cpp | 292 --------------------- buch/papers/kugel/images/spherecurve.m | 160 ----------- buch/papers/kugel/images/spherecurve.maxima | 13 - buch/papers/kugel/images/spherecurve.pov | 73 ------ 19 files changed, 952 insertions(+), 853 deletions(-) create mode 100644 buch/papers/kugel/figures/flux.pdf create mode 100644 buch/papers/kugel/figures/povray/Makefile create mode 100644 buch/papers/kugel/figures/povray/curvature.maxima create mode 100644 buch/papers/kugel/figures/povray/curvature.pov create mode 100644 buch/papers/kugel/figures/povray/curvgraph.m create mode 100644 buch/papers/kugel/figures/povray/spherecurve.cpp create mode 100644 buch/papers/kugel/figures/povray/spherecurve.m create mode 100644 buch/papers/kugel/figures/povray/spherecurve.maxima create mode 100644 buch/papers/kugel/figures/povray/spherecurve.pov create mode 100644 buch/papers/kugel/figures/tikz/spherical-coordinates.pdf create mode 100644 buch/papers/kugel/figures/tikz/spherical-coordinates.tex delete mode 100644 buch/papers/kugel/images/Makefile delete mode 100644 buch/papers/kugel/images/curvature.maxima delete mode 100644 buch/papers/kugel/images/curvature.pov delete mode 100644 buch/papers/kugel/images/curvgraph.m delete mode 100644 buch/papers/kugel/images/spherecurve.cpp delete mode 100644 buch/papers/kugel/images/spherecurve.m delete mode 100644 buch/papers/kugel/images/spherecurve.maxima delete mode 100644 buch/papers/kugel/images/spherecurve.pov (limited to 'buch/papers/kugel') diff --git a/buch/papers/kugel/figures/flux.pdf b/buch/papers/kugel/figures/flux.pdf new file mode 100644 index 0000000..6a87288 Binary files /dev/null and b/buch/papers/kugel/figures/flux.pdf 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.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.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 to with thickness with +// color +// +#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) + +#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 +#include +#include +#include +#include + +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.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.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 to with thickness with +// color +// +#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/spherical-coordinates.pdf b/buch/papers/kugel/figures/tikz/spherical-coordinates.pdf new file mode 100644 index 0000000..28f242e Binary files /dev/null and b/buch/papers/kugel/figures/tikz/spherical-coordinates.pdf 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/images/Makefile b/buch/papers/kugel/images/Makefile deleted file mode 100644 index 4226dab..0000000 --- a/buch/papers/kugel/images/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -# -# 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/images/curvature.maxima b/buch/papers/kugel/images/curvature.maxima deleted file mode 100644 index 6313642..0000000 --- a/buch/papers/kugel/images/curvature.maxima +++ /dev/null @@ -1,6 +0,0 @@ - -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/images/curvature.pov b/buch/papers/kugel/images/curvature.pov deleted file mode 100644 index 3b15d77..0000000 --- a/buch/papers/kugel/images/curvature.pov +++ /dev/null @@ -1,139 +0,0 @@ -// -// 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 to with thickness with -// color -// -#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) - -#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/images/curvgraph.m b/buch/papers/kugel/images/curvgraph.m deleted file mode 100644 index 75effd6..0000000 --- a/buch/papers/kugel/images/curvgraph.m +++ /dev/null @@ -1,140 +0,0 @@ -# -# 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/images/spherecurve.cpp b/buch/papers/kugel/images/spherecurve.cpp deleted file mode 100644 index 8ddf5e5..0000000 --- a/buch/papers/kugel/images/spherecurve.cpp +++ /dev/null @@ -1,292 +0,0 @@ -/* - * spherecurve.cpp - * - * (c) 2022 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule - */ -#include -#include -#include -#include -#include - -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/images/spherecurve.m b/buch/papers/kugel/images/spherecurve.m deleted file mode 100644 index 99d5c9a..0000000 --- a/buch/papers/kugel/images/spherecurve.m +++ /dev/null @@ -1,160 +0,0 @@ -# -# 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/images/spherecurve.maxima b/buch/papers/kugel/images/spherecurve.maxima deleted file mode 100644 index 1e9077c..0000000 --- a/buch/papers/kugel/images/spherecurve.maxima +++ /dev/null @@ -1,13 +0,0 @@ -/* - * 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/images/spherecurve.pov b/buch/papers/kugel/images/spherecurve.pov deleted file mode 100644 index b1bf4b8..0000000 --- a/buch/papers/kugel/images/spherecurve.pov +++ /dev/null @@ -1,73 +0,0 @@ -// -// 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 to with thickness with -// color -// -#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" - -- cgit v1.2.1 From 4a9a4ca761db0007138a778a87c652505570b071 Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Tue, 16 Aug 2022 23:39:32 +0200 Subject: kugel: Update figures makefile --- buch/papers/kugel/Makefile | 3 ++- .../kugel/figures/tikz/spherical-coordinates.pdf | Bin 5824 -> 40319 bytes 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'buch/papers/kugel') 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/figures/tikz/spherical-coordinates.pdf b/buch/papers/kugel/figures/tikz/spherical-coordinates.pdf index 28f242e..1bff016 100644 Binary files a/buch/papers/kugel/figures/tikz/spherical-coordinates.pdf and b/buch/papers/kugel/figures/tikz/spherical-coordinates.pdf differ -- cgit v1.2.1 From c4cf68ac67f7fbadaacae64597ae713a6879f944 Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Tue, 16 Aug 2022 23:39:59 +0200 Subject: kugel: Comment out preliminaries, review manu's work until legendre --- buch/papers/kugel/main.tex | 2 +- buch/papers/kugel/packages.tex | 5 + buch/papers/kugel/spherical-harmonics.tex | 229 +++++++++++++++++++++++------- 3 files changed, 180 insertions(+), 56 deletions(-) (limited to 'buch/papers/kugel') diff --git a/buch/papers/kugel/main.tex b/buch/papers/kugel/main.tex index 98d9cb2..a281cae 100644 --- a/buch/papers/kugel/main.tex +++ b/buch/papers/kugel/main.tex @@ -11,7 +11,7 @@ \chapterauthor{Manuel Cattaneo, Naoki Pross} \input{papers/kugel/introduction} -\input{papers/kugel/preliminaries} +% \input{papers/kugel/preliminaries} \input{papers/kugel/spherical-harmonics} \input{papers/kugel/applications} diff --git a/buch/papers/kugel/packages.tex b/buch/papers/kugel/packages.tex index 1c4f3e0..b0e1f61 100644 --- a/buch/papers/kugel/packages.tex +++ b/buch/papers/kugel/packages.tex @@ -8,3 +8,8 @@ % following example %\usepackage{packagename} \usepackage{cases} + +\newcommand{\kugeltodo}[1]{\textcolor{red!70!black}{\texttt{[TODO: #1]}}} + +\DeclareMathOperator{\sphlaplacian}{\nabla^2_{\mathit{S}}} +\DeclareMathOperator{\surflaplacian}{\nabla^2_{\partial \mathit{S}}} diff --git a/buch/papers/kugel/spherical-harmonics.tex b/buch/papers/kugel/spherical-harmonics.tex index c76e757..70657c9 100644 --- a/buch/papers/kugel/spherical-harmonics.tex +++ b/buch/papers/kugel/spherical-harmonics.tex @@ -1,70 +1,189 @@ -% vim:ts=2 sw=2 et spell: +% vim:ts=2 sw=2 et spell tw=80: \section{Spherical Harmonics} -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.\newline -The subsection \ref{} 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{}[TODO: reference to eigenvalue equation], which will be defined as \emph{Spherical Harmonics}. In fact, this subsection will present their mathematical derivation.\newline -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{}.\newline -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.\newline -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.\newline -Our hope is that after reading this section you will appreciate the beauty and power of generalization that mathematics offers us. -\subsection{Eigenvalue Problem on the Spherical surface} -\subsubsection{Unormalized Spherical Harmonics} -From the chapter \ref{}, we know that the spherical Laplacian is defined as. \begin{equation*} - \nabla^2_S := \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 do not want to consider this algebraic monster entirely, since this includes the whole set $\mathbb{R}^3$; rather, we want to focus only on the spherical surface (as the title suggests). We can then further concretise our calculations by selecting any number for the variable $r$, so that we have a sphere and, more importantly, a spherical surface on which we can ``play''.\newline -Surely you have already heard of the unit circle, a geometric entity used extensively in many mathematical contexts. The most famous and basic among them is surely trigonometry.\newline -Extending this concept into three dimensions, we will talk about the unit sphere. This is a very famous sphere, as is the unit circle. So since we need a sphere why not use the most famous one? Thus imposing $r=1$.\newline -Now, since the variable $r$ became a constant, we can leave out all derivatives with respect to $r$, setting them to zero. Then substituting the value of $r$ for 1, we will obtain the operator we will refer to as \emph{Spherical Surface Operator}: +\if 0 +\kugeltodo{Rewrite this section if the preliminaries become 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. +\fi + +\subsection{Eigenvalue Problem} + +\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*} - \nabla^2_{\partial S} := \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}. + \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*} -As can be seen, for this definition, the subscript ``$\partial S$'' was used to emphasize the fact that we are on the spherical surface, which can be understood as a boundary of the sphere.\newline -Now that we have defined an operator, we can go on to calculate its eigenfunctions. As mentioned earlier, we can translate this problem at first abstract into a much more concrete problem, which has to do with the field of \emph{Partial Differential Equaitons} (PDEs). The functions we want to find are simply functions that respect the following expression: -\begin{equation}\label{kugel:eq:sph_srfc_laplace} - \nabla^2_{\partial S} f = \lambda f +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} -Which is traditionally written as follows: -\begin{equation*} - \nabla^2_{\partial S} f = -\lambda f -\end{equation*} -Perhaps the fact that we are dealing with a PDE may not be obvious at first glance, but if we extend the operator $\nabla^2_{\partial S}$ according to Eq.(\ref{kugel:eq:sph_srfc_laplace}), we will get: -\begin{equation}\label{kugel:eq:PDE_sph} - \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, +Perhaps it may not be obvious at first glance, but we are in fact dealing with a +partial differential equation (PDE). 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} -making it emerge.\newline -All functions satisfying Eq.(\ref{kugel:eq:PDE_sph}), are called eigenfunctions. Our new goal is therefore to solve this PDE. The task seems very difficult but we can simplify it with a well-known technique, namely the \emph{separation Ansatz}. The latter consists in assuming that the function $f(\vartheta, \varphi)$ we are looking for can be factorized in the following form -\begin{equation}\label{kugel:eq:sep_ansatz_0} +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} \label{kugel:eqn:sep-ansatz:0} f(\vartheta, \varphi) = \Theta(\vartheta)\Phi(\varphi). \end{equation} -In short, 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. If we include this assumption in Eq.(\ref{kugel:eq:PDE_sph}), 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. \label{kugel:eq:sep_ansatz_1} +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} \label{kugel:eqn:sep-ansatz:1} + \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 Eq.(\ref{kugel:eq:sep_ansatz_1}) by $\Theta(\vartheta)\Phi(\varphi)$ and inserting an auxiliary variable $m$, which we will call the separating constant, we will have: -\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, -\end{equation*} -which is equivalent to the following system of two \emph{Ordinary Differential Equations} (ODEs) -\begin{align} - \frac{d^2\Phi(\varphi)}{d\varphi^2} &= -m \Phi(\varphi) \label{kugel:eq:ODE_1} \\ - \sin \vartheta \frac{d}{d \vartheta} \left( \sin \vartheta \frac{d \Theta}{d \vartheta} \right) + \left( \lambda - \frac{m}{\sin^2 \vartheta} \right)\Theta(\vartheta) &= 0 \label{kugel:eq:ODE_2} -\end{align} -The solution of Eq.(\ref{kugel:eq:ODE_1}) is quite trivial. The complex exponential is obviously the function we are looking for, so we can write +Dividing by $\Theta(\vartheta)\Phi(\varphi)$ and introducing an auxiliary +variable $m$, the separation constant, yields: \begin{equation*} - \Phi_m(\varphi) = e^{j m \varphi}, \quad m \in \mathbb{Z}. + \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, \end{equation*} -The restriction for the separation constant $m$ arises from the fact that we require the following periodic constraint $\Phi_m(\varphi + 2\pi) = \Phi_m(\varphi)$.\newline -As for Eq.(\ref{kugel:eq:ODE_2}), the resolution will not be so straightforward. We can begin by considering the substitution $x = \cos \vartheta$. The operator $\frac{d}{d \vartheta}$ will be: +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 \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}{\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 +$\Phi(\varphi + 2\pi) = \Phi(\varphi)$. Unfortunately, solving +\eqref{kugel:eqn:ode-theta} is not so 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} + +To solve \eqref{kugel:eqn:ode-theta} +We can begin by considering the substitution $x = \cos \vartheta$. The operator $\frac{d}{d \vartheta}$ will be: \begin{align*} \frac{d}{d \vartheta} = \frac{dx}{d \vartheta}\frac{d}{dx} &= -\sin \vartheta \frac{d}{dx} \\ &= -\sqrt{1-x^2} \frac{d}{dx}. -- cgit v1.2.1 From c06cb44760c3258ab6d5d30451283371b4881346 Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Wed, 17 Aug 2022 14:40:44 +0200 Subject: kugel: Add reference --- buch/papers/kugel/references.bib | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'buch/papers/kugel') diff --git a/buch/papers/kugel/references.bib b/buch/papers/kugel/references.bib index b74c5cd..e5d6452 100644 --- a/buch/papers/kugel/references.bib +++ b/buch/papers/kugel/references.bib @@ -192,4 +192,15 @@ Created by Henry Reich}, 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 -- cgit v1.2.1 From 88cc0ae20e53d67b671f0713a7921c18736bdf3e Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Wed, 17 Aug 2022 16:12:40 +0200 Subject: kugel: fix figures makefile, add curvature-1d --- buch/papers/kugel/figures/tikz/Makefile | 12 + buch/papers/kugel/figures/tikz/curvature-1d.dat | 500 ++++++++++++++++++++++++ buch/papers/kugel/figures/tikz/curvature-1d.pdf | Bin 0 -> 15387 bytes buch/papers/kugel/figures/tikz/curvature-1d.py | 32 ++ buch/papers/kugel/figures/tikz/curvature-1d.tex | 21 + 5 files changed, 565 insertions(+) create mode 100644 buch/papers/kugel/figures/tikz/Makefile create mode 100644 buch/papers/kugel/figures/tikz/curvature-1d.dat create mode 100644 buch/papers/kugel/figures/tikz/curvature-1d.pdf create mode 100644 buch/papers/kugel/figures/tikz/curvature-1d.py create mode 100644 buch/papers/kugel/figures/tikz/curvature-1d.tex (limited to 'buch/papers/kugel') 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 Binary files /dev/null and b/buch/papers/kugel/figures/tikz/curvature-1d.pdf 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} -- cgit v1.2.1 From 7e51ae842c61ba338aec179d71fab2d041ebe8c5 Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Wed, 17 Aug 2022 16:29:41 +0200 Subject: kugel: Review manu's text, improve legendre functions --- buch/papers/kugel/main.tex | 1 + buch/papers/kugel/proofs.tex | 245 +++++++++++++++++ buch/papers/kugel/spherical-harmonics.tex | 424 ++++++++++-------------------- 3 files changed, 385 insertions(+), 285 deletions(-) create mode 100644 buch/papers/kugel/proofs.tex (limited to 'buch/papers/kugel') diff --git a/buch/papers/kugel/main.tex b/buch/papers/kugel/main.tex index a281cae..ad19178 100644 --- a/buch/papers/kugel/main.tex +++ b/buch/papers/kugel/main.tex @@ -14,6 +14,7 @@ % \input{papers/kugel/preliminaries} \input{papers/kugel/spherical-harmonics} \input{papers/kugel/applications} +\input{papers/kugel/proofs} \printbibliography[heading=subbibliography] \end{refsection} 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/spherical-harmonics.tex b/buch/papers/kugel/spherical-harmonics.tex index 70657c9..5645941 100644 --- a/buch/papers/kugel/spherical-harmonics.tex +++ b/buch/papers/kugel/spherical-harmonics.tex @@ -1,6 +1,6 @@ % vim:ts=2 sw=2 et spell tw=80: -\section{Spherical Harmonics} +\section{Construction of the Spherical Harmonics} \if 0 \kugeltodo{Rewrite this section if the preliminaries become an addendum} @@ -111,7 +111,7 @@ that satisfy the equation \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). If we unpack the notation of the operator +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} @@ -126,7 +126,7 @@ Since all functions satisfying \eqref{kugel:eqn:eigen-pde} are the 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} \label{kugel:eqn:sep-ansatz:0} +\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 @@ -135,34 +135,34 @@ 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} \label{kugel:eqn:sep-ansatz:1} +\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} +\end{equation*} Dividing by $\Theta(\vartheta)\Phi(\varphi)$ and introducing an auxiliary -variable $m$, the separation constant, yields: +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, + = 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 \Phi(\varphi), + \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}{\sin^2 \vartheta} \right) + + \left( \lambda - \frac{m^2}{\sin^2 \vartheta} \right) \Theta(\vartheta) = 0 \label{kugel:eqn:ode-theta}. \end{gather} @@ -174,291 +174,141 @@ write the solutions \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 -$\Phi(\varphi + 2\pi) = \Phi(\varphi)$. Unfortunately, solving -\eqref{kugel:eqn:ode-theta} is not so straightforward. Actually it is quite -difficult, and the process is so involved that it will require a dedicated -section of its own. +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} -To solve \eqref{kugel:eqn:ode-theta} -We can begin by considering the substitution $x = \cos \vartheta$. The operator $\frac{d}{d \vartheta}$ will be: -\begin{align*} - \frac{d}{d \vartheta} = \frac{dx}{d \vartheta}\frac{d}{dx} &= -\sin \vartheta \frac{d}{dx} \\ - &= -\sqrt{1-x^2} \frac{d}{dx}. -\end{align*} -Eq.(\ref{kugel:eq:ODE_2}) will then become. +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-x^2}}{\sqrt{1-x^2}} \frac{d}{dx} \left( \left(\sqrt{1-x^2}\right) \left(-\sqrt{1-x^2}\right) \frac{d \Theta}{dx} \right) + \left( \lambda - \frac{m}{\sin^2 \vartheta} \right)\Theta(\vartheta) &= 0 \\ - \frac{d}{dx} \left( (1-x^2) \frac{d \Theta}{dx} \right) + \left( \lambda - \frac{m}{\sin^2 \vartheta} \right)\Theta(\vartheta) &= 0 \\ - (1-x^2)\frac{d^2 \Theta}{dx} - 2x\frac{d \Theta}{dx} + \left( \lambda - \frac{m}{\sin^2 \vartheta} \right)\Theta(\vartheta) &= 0 \\ - (1-x^2)\frac{d^2 \Theta}{dx} - 2x\frac{d \Theta}{dx} + \left( \lambda - \frac{m}{1-x^2} \right)\Theta(\vartheta) &= 0 + \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 $\Theta(\vartheta)=\Theta(\cos^{-1}x):=y(x)$ and $\lambda=n(n+1)$, we will be able to define the \emph{Associated Legendre Equation} in its standard and most familiar form -\begin{definition}{Associated Legendre Equation} - \begin{equation}\label{kugel:eq:associated_leg_eq} - (1-x^2)\frac{d^2 y}{dx} - 2x\frac{d y}{dx} + \left( n(n+1) - \frac{m}{1-x^2} \right)y(x) = 0. - \end{equation} -\end{definition} -Our new goal then became solving Eq.(\ref{kugel:eq:asssociated_leg_eq}). After that we can fit the solution into Eq.(\ref{kugel:eq:sep_ansatz_0}), obtaining $f(\vartheta, \varphi)$, the solution of the eigenvalue problem. \newline -We simplified the problem somewhat but the task still remains very difficult. We can rely on a lemma to continue but first we need to define an additional equation, namely the \emph{Legendre Equation} -\begin{definition}{Legendre equation}\newline - Setting $m=0$ in Eq.(\ref{kugel:eq:asssociated_leg_eq}), we get - \begin{equation}\label{kugel:eq:leg_eq} - (1-x^2)\frac{d^2 y}{dx} - 2x\frac{d y}{dx} + n(n+1)y(x) = 0, - \end{equation} - also known as \emph{Legendre Equation}. -\end{definition} -Now we can continue with the lemma -\begin{lemma}\label{kugel:lemma_1} - If $y_n(x)$ is a solution of Eq.(\ref{kugel:eq:leg_eq}), then the function - \begin{equation*} - y_{m,n}(x) = (1-x^2)^{\frac{m}{2}}\frac{d^m}{dx^m}y_n(x) - \end{equation*} - satisfies Eq.(\ref{kugel:eq:associated_leg_eq}) +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} [TODO: modificare la $m$ (è già usata come costante di separazione) o forse è giusta (?)] - 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} +\begin{proof} + This results is derived in section \ref{kugel:sec:proofs:legendre}. \end{proof} -In simpler words, if we find a solution to Eq.\eqref{kugel:eq:leg_eq}, we can extend the latter according to the Lemma \ref{kugel:lemma_1} obtaining the solution of Eq.\eqref{kugel:eq:associated_leg_eq}.\newline -We can say that we are going in the right direction, as the problem to be solved is decreasing in difficulty. We moved from having to find a solution to Eq.\eqref{kugel:eq:associated_leg_eq} to finding a solution to Eq.\eqref{kugel:eq:leg_eq}, which is much more approachable as a problem. Luckily for us, the lemma we will present below will help us extensively, which is something of an euphemism, since it will give us the solution directly. -\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} + +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} - 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} + See section \ref{kugel:sec:proofs:legendre}. \end{proof} -As can be seen, the solution is a $n$-dependent power series, traditionally denoted as $P_n(x)$. This set of polynomials are called \emph{Legendre Polynomials}, because precisely they are polynomials satisfying the Legendre equation.\newline -Now that we have a solution to Eq.\eqref{kugel:eq:leg_eq}, we can then extend Eq.\eqref{kugel:eq:sol_leg}, as stated in Lemma \ref{kugel:lemma_1}. We will then have -\begin{align*} -y_{m,n}(x) &= (1-x^2)^{\frac{m}{2}}\frac{d^m}{dx^m}P_n(x) \\ -&= \frac{1}{n!2^n}(1-x^2)^{\frac{m}{2}}\frac{d^{m+n}}{dx^{m+n}}(1-x^2)^n -\end{align*} -This set of functions are defined as \emph{Associated Legendre functions}, because similarly to before, they solve the Associated Legendre equation, defined in Eq.\eqref{kugel:eq:eq_leg}. -\begin{definition}{Associated Legendre Functions} -\begin{equation}\label{kugel:eq:associated_leg_func} -P_{m,n}(x) := \frac{1}{n!2^n}(1-x^2)^{\frac{m}{2}}\frac{d^{m+n}}{dx^{m+n}}(1-x^2)^n -\end{equation} + +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] + The functions + \begin{equation}\label{kugel:eq:associated_leg_func} + 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} + +\subsection{Spherical Harmonics} + As you may recall, previously we performed the substitution $x=\cos \vartheta$. Now we need to return to the old domain, which can be done straightforwardly: \begin{equation*} \Theta(\vartheta) = P_{m,n}(\cos \vartheta), @@ -512,6 +362,10 @@ Ora, visto che la soluzione dell'eigenfunction problem è formata dalla moltipli \subsection{Recurrence Relations} -\section{Series Expansions in \(C(S^2)\)} +\section{Series Expansions in $C(S^2)$} -\nocite{olver_introduction_2013} +\subsection{Orthogonality of $P_n$, $P^m_n$ and $Y^m_n$} + +\subsection{Series Expansion} + +\subsection{Fourier on $S^2$} -- cgit v1.2.1 From d0c30778c51d0940b93b488183f50ec8aa5fa0f0 Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Wed, 17 Aug 2022 16:30:46 +0200 Subject: kugel: Add povray images --- buch/papers/kugel/figures/povray/curvature.jpg | Bin 0 -> 265649 bytes buch/papers/kugel/figures/povray/curvature.png | Bin 0 -> 590402 bytes buch/papers/kugel/figures/povray/spherecurve.jpg | Bin 0 -> 171287 bytes buch/papers/kugel/figures/povray/spherecurve.png | Bin 0 -> 423490 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 buch/papers/kugel/figures/povray/curvature.jpg create mode 100644 buch/papers/kugel/figures/povray/curvature.png create mode 100644 buch/papers/kugel/figures/povray/spherecurve.jpg create mode 100644 buch/papers/kugel/figures/povray/spherecurve.png (limited to 'buch/papers/kugel') 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 Binary files /dev/null and b/buch/papers/kugel/figures/povray/curvature.jpg differ 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 Binary files /dev/null and b/buch/papers/kugel/figures/povray/curvature.png differ 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 Binary files /dev/null and b/buch/papers/kugel/figures/povray/spherecurve.jpg differ 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 Binary files /dev/null and b/buch/papers/kugel/figures/povray/spherecurve.png differ -- cgit v1.2.1 From 494636b6d00b0697bda4c5840a3666b0867f22e8 Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Wed, 17 Aug 2022 17:18:13 +0200 Subject: kugel: Minor changes --- buch/papers/kugel/main.tex | 2 +- buch/papers/kugel/packages.tex | 5 ++ buch/papers/kugel/preliminaries.tex | 8 +-- buch/papers/kugel/spherical-harmonics.tex | 87 ++++++++++++++++++++++--------- 4 files changed, 73 insertions(+), 29 deletions(-) (limited to 'buch/papers/kugel') diff --git a/buch/papers/kugel/main.tex b/buch/papers/kugel/main.tex index ad19178..d063f87 100644 --- a/buch/papers/kugel/main.tex +++ b/buch/papers/kugel/main.tex @@ -11,7 +11,7 @@ \chapterauthor{Manuel Cattaneo, Naoki Pross} \input{papers/kugel/introduction} -% \input{papers/kugel/preliminaries} +\input{papers/kugel/preliminaries} \input{papers/kugel/spherical-harmonics} \input{papers/kugel/applications} \input{papers/kugel/proofs} diff --git a/buch/papers/kugel/packages.tex b/buch/papers/kugel/packages.tex index b0e1f61..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 % @@ -10,6 +11,10 @@ \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 index 03cd421..e48abe4 100644 --- a/buch/papers/kugel/preliminaries.tex +++ b/buch/papers/kugel/preliminaries.tex @@ -44,23 +44,23 @@ numbers \(\mathbb{R}\). \) \end{definition} -\texttt{TODO: Text here.} +\kugeltodo{Text here.} \begin{definition}[Span] \end{definition} -\texttt{TODO: Text here.} +\kugeltodo{Text here.} \begin{definition}[Linear independence] \end{definition} -\texttt{TODO: Text here.} +\kugeltodo{Text here.} \begin{definition}[Basis] \end{definition} -\texttt{TODO: Text here.} +\kugeltodo{Text here.} \begin{definition}[Inner product] \label{kugel:def:inner-product} \nocite{axler_linear_2014} diff --git a/buch/papers/kugel/spherical-harmonics.tex b/buch/papers/kugel/spherical-harmonics.tex index 5645941..2ded50b 100644 --- a/buch/papers/kugel/spherical-harmonics.tex +++ b/buch/papers/kugel/spherical-harmonics.tex @@ -2,8 +2,8 @@ \section{Construction of the Spherical Harmonics} -\if 0 -\kugeltodo{Rewrite this section if the preliminaries become an addendum} +\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. @@ -29,9 +29,9 @@ 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. -\fi \subsection{Eigenvalue Problem} +\label{kugel:sec:construction:eigenvalue} \begin{figure} \centering @@ -111,8 +111,9 @@ that satisfy the equation \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 +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( @@ -139,7 +140,8 @@ convenience. If we substitute this assumption in \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} + + \frac{1}{\sin^2 \vartheta} + \frac{\partial^2 \Phi(\varphi)}{\partial\varphi^2} \Theta(\vartheta) + \lambda \Theta(\vartheta)\Phi(\varphi) = 0. \end{equation*} @@ -182,6 +184,14 @@ 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 @@ -298,26 +308,19 @@ Legendre equation, which is not possible only using power series 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] +\begin{definition}[Ferrers or associated Legendre functions] + \label{kugel:def:ferrers-functions} The functions - \begin{equation}\label{kugel:eq:associated_leg_func} + \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} -\subsection{Spherical Harmonics} +\kugeltodo{Discuss $|m| \leq n$.} -As you may recall, previously we performed the substitution $x=\cos \vartheta$. Now we need to return to the old domain, which can be done straightforwardly: -\begin{equation*} - \Theta(\vartheta) = P_{m,n}(\cos \vartheta), -\end{equation*} -obtaining the much sought function $\Theta(\vartheta)$. \newline -So we finally reached the end of this tortuous path. Now we just need to put together all the information we have to construct $f(\vartheta, \varphi)$ in the following way: -\begin{equation}\label{kugel:eq:sph_harm_0} - f(\vartheta, \varphi) = \Theta(\vartheta)\Phi(\varphi) = P_{m,n}(\cos \vartheta)e^{jm\varphi}, \quad |m|\leq n. -\end{equation} +\if 0 The constraint $|m| Date: Thu, 18 Aug 2022 14:46:51 +0200 Subject: kugel: Orthogonality --- buch/papers/kugel/spherical-harmonics.tex | 203 ++++++++++++++++++++++++++++-- 1 file changed, 194 insertions(+), 9 deletions(-) (limited to 'buch/papers/kugel') diff --git a/buch/papers/kugel/spherical-harmonics.tex b/buch/papers/kugel/spherical-harmonics.tex index 2ded50b..2a00754 100644 --- a/buch/papers/kugel/spherical-harmonics.tex +++ b/buch/papers/kugel/spherical-harmonics.tex @@ -178,7 +178,7 @@ write the solutions 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, +Unfortunately, solving \eqref{kugel:eqn:ode-theta} is not as straightforward, actually, it is quite difficult, and the process is so involved that it will require a dedicated section of its own. @@ -250,7 +250,7 @@ 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} + \label{kugel:thm:legendre-poly} The polynomial function \[ P_n(z) = \sum^{\lfloor n/2 \rfloor}_{k=0} @@ -287,7 +287,7 @@ 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} +\begin{lemma} \label{kugel:thm:extend-legendre} If $Z_n(z)$ is a solution of the Legendre equation \eqref{kugel:eqn:legendre}, then \begin{equation*} @@ -300,7 +300,7 @@ such that they also become solutions of the associated Legendre equation See section \ref{kugel:sec:proofs:legendre}. \end{proof} -What is happening in lemma \ref{kugel:lem:extend-legendre}, is that we are +What is happening in lemma \ref{kugel:thm: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 @@ -356,9 +356,10 @@ $Y^m_n(\vartheta, \varphi)$. \label{kugel:def:spherical-harmonics} The functions \begin{equation*} - Y_{m,n}(\vartheta, \varphi) = P^m_n(\cos \vartheta) e^{im\varphi}, + 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. + where $m, n \in \mathbb{Z}$ and $|m| < n$ are called (unnormalized) spherical + harmonics. \end{definition} \begin{figure} @@ -366,9 +367,195 @@ $Y^m_n(\vartheta, \varphi)$. \kugelplaceholderfig{\textwidth}{.8\paperheight} \caption{ \kugeltodo{Big picture with the first few spherical harmonics.} + \label{kugel:fig:spherical-harmonics} } \end{figure} +\kugeltodo{Describe how they look like with fig. +\ref{kugel:fig:spherical-harmonics}} + +\subsection{Orthogonality of $P_n$, $P^m_n$ and $Y^m_n$} + +We shall now discuss an important property of the spherical harmonics: they form +an orthogonal system. And since the spherical harmonics contain the Ferrers or +associated Legendre functions, we need to discuss their orthogonality first. +But the Ferrers functions themselves depend on the Legendre polynomials, so that +will be our starting point. + +\begin{lemma} For the Legendre polynomials $P_n(z)$ and $P_k(z)$ it holds that + \label{kugel:thm:legendre-poly-ortho} + \begin{equation*} + \int_{-1}^1 P_n(z) P_k(z) \, dz + = \frac{2}{2n + 1} \delta_{nk} + = \begin{cases} + \frac{2}{2n + 1} & \text{if } n = k, \\ + 0 & \text{otherwise}. + \end{cases} + \end{equation*} +\end{lemma} +\begin{proof} + To start, consider the fact that that the Legendre equation + \eqref{kugel:eqn:legendre}, of which two distinct Legendre polynomials + $P_n(z)$ and $P_k(z)$ are a solution ($n \neq k$), can be rewritten in the + following form: + \begin{equation} + \frac{d}{dz} \left[ + \left( 1 - z^2 \right) \frac{dZ}{dz} + \right] + n(n+1) Z(z) = 0. + \end{equation} + So we rewrite the Legendre equations for $P_n(z)$ and $P_k(z)$: + \begin{align*} + \frac{d}{dz} \left[ + \left( 1 - z^2 \right) \frac{dP_n}{dz} + \right] + n(n+1) P_n(z) &= 0, + & + \frac{d}{dz} \left[ + \left( 1 - z^2 \right) \frac{dP_k}{dz} + \right] + k(k+1) P_k(z) &= 0, + \end{align*} + then we multiply the former by $P_k(z)$ and the latter by $P_n(z)$ and + subtract the two to get + \begin{equation*} + \frac{d}{dz} \left[ + \left( 1 - z^2 \right) \frac{dP_n}{dz} + \right] P_k(z) + n(n+1) P_n(z) P_k(z) + - + \frac{d}{dz} \left[ + \left( 1 - z^2 \right) \frac{dP_k}{dz} + \right] P_n(z) - k(k+1) P_k(z) P_n(z) = 0. + \end{equation*} + By grouping terms, making order and integrating with respect to $z$ from $-1$ + to 1 we obtain + \begin{gather} + \int_{-1}^1 \left\{ + \frac{d}{dz} \left[ + \left( 1 - z^2 \right) \frac{dP_n}{dz} + \right] P_k(z) + - + \frac{d}{dz} \left[ + \left( 1 - z^2 \right) \frac{dP_k}{dz} + \right] P_n(z) - k(k+1) P_k(z) P_n(z) + \right\} \,dz \nonumber \\ + + \left[ n(n+1) - k(k+1) \right] \int_{-1}^1 P_k(z) P_n(z) \, dz = 0. + \label{kugel:thm:legendre-poly-ortho:proof:1} + \end{gather} + Since by the product rule + \begin{equation*} + \frac{d}{dz} \left[ (1 - z^2) \frac{dP_k}{dz} P_n(z) \right] + = + \frac{d}{dz} \left[ (1 - z^2) \frac{dP_n}{dz} \right] P_k(z) + + (1 - z^2) \frac{dP_n}{dz} \frac{dP_k}{dz}, + \end{equation*} + we can simplify the first term in + \eqref{kugel:thm:legendre-poly-ortho:proof:1} to get + \begin{gather*} + \int_{-1}^1 \left\{ + \frac{d}{dz} \left[ (1 - z^2) \frac{dP_k}{dz} P_n(z) \right] + - \cancel{(1 - z^2) \frac{dP_n}{dz} \frac{dP_k}{dz}} + - \frac{d}{dz} \left[ (1 - z^2) \frac{dP_n}{dz} P_k(z) \right] + + \cancel{(1 - z^2) \frac{dP_k}{dz} \frac{dP_n}{dz}} + \right\} \, dz \\ + = \int_{-1}^1 \frac{d}{dz} \left\{ (1 - z^2) \left[ + \frac{dP_k}{dz} P_n(z) - \frac{dP_n}{dz} P_k(z) + \right] \right\} \, dz + = (1 - z^2) \left[ + \frac{dP_k}{dz} P_n(z) - \frac{dP_n}{dz} P_k(z) + \right] \Bigg|_{-1}^1, + \end{gather*} + which always equals 0 because the product contains $1 - z^2$ and the bounds + are at $\pm 1$. Thus, of \eqref{kugel:thm:legendre-poly-ortho:proof:1} only + the second term remains and the equation becomes + \begin{equation*} + \left[ n(n+1) - k(k+1) \right] \int_{-1}^1 P_k(z) P_n(z) \, dz = 0. + \end{equation*} + By dividing by the constant in front of the integral we have our first result. + Now we need to show that when $n = k$ the integral equals $2 / (2n + 1)$. + % \begin{equation*} + % \end{equation*} + \kugeltodo{Finish proof. Can we do it without the generating function of + $P_n$?} +\end{proof} + +In a similarly algebraically tedious fashion, we can also continue to check for +orthogonality for the Ferrers functions $P^m_n(z)$, since they are related to +$P_n(z)$ by a $m$-th derivative, and obtain the following result. + +\begin{lemma} For the associated Legendre functions + \label{kugel:thm:associated-legendre-ortho} + \begin{equation*} + \int_{-1}^1 P^m_n(z) P^{m'}_{n'}(z) \, dz + = \frac{2(m + n)!}{(2n + 1)(n - m)!} \delta_{nn'} + = \begin{cases} + \frac{2(m + n)!}{(2n + 1)(n - m)!} & \text{if } n = n', \\ + 0 & \text{otherwise}. + \end{cases} + \end{equation*} +\end{lemma} +\begin{proof} + \kugeltodo{Is it worth showing? IMHO no, it is mostly the same as Lemma + \ref{kugel:thm:legendre-poly-ortho} with the difference that the $m$-th + derivative is a pain to deal with.} +\end{proof} + +An interesting fact to observe in lemma +\ref{kugel:thm:associated-legendre-ortho} is that the orthogonality is only +affected in the lower index, while varying $m$ only changes the constant in +front of the Kronecker delta. By having the orthogonality relations of the +Legendre functions we can finally show that spherical harmonics are also +orthogonal. + +\begin{lemma} For the spherical harmonics + \kugeltodo{Fix horizontal spacing, inner product definition is missing.} + \label{kugel:thm:spherical-harmonics-ortho} + \begin{equation*} + \langle Y^m_n, Y^{m'}_{n'} \rangle + = \int_{-\pi}^\pi \int_0^{2\pi} + Y^m_n(\vartheta, \varphi) \overline{Y^{m'}_{n'}(\vartheta, \varphi)} + \sin \vartheta \, d\varphi \, d\vartheta + = \frac{-4\pi}{2n + 1} \frac{(m + n)!}{(n - m)!} \delta_{nn'} + = \begin{cases} + \frac{-4\pi}{2n + 1} \frac{(m + n)!}{(n - m)!} & \text{if } n = n', \\ + 0 & \text{otherwise}. + \end{cases} + \end{equation*} +\end{lemma} +\begin{proof} + We will begin by doing a bit of algebraic maipulaiton: + \begin{align*} + \int_{-\pi}^\pi \int_0^{2\pi} + Y^m_n(\vartheta, \varphi) \overline{Y^{m'}_{n'}(\vartheta, \varphi)} + \sin \vartheta \, d\varphi \, d\vartheta + &= \int_{-\pi}^\pi \int_0^{2\pi} + e^{im\varphi} P^m_n(\cos \vartheta) + e^{-im'\varphi} P^{m'}_{n'}(\cos \vartheta) + \, d\varphi \sin \vartheta \, d\vartheta + \\ + &= \int_{-\pi}^\pi + P^m_n(\cos \vartheta) P^{m'}_{n'}(\cos \vartheta) + \int_0^{2\pi} e^{i(m - m')\varphi} + \, d\varphi \sin \vartheta \, d\vartheta + . + \end{align*} + First, notice that the associated Legendre polynomials are assumed to be real, + and are thus unaffected by the complex conjugation. Then, we can see that when + $m = m'$ the inner integral simplifies to $\int_0^{2\pi} 1 \, d\varphi$ which + equals $2\pi$, so in this case the expression becomes + \begin{equation*} + 2\pi \int_{-\pi}^\pi + P^m_n(\cos \vartheta) P^{m'}_{n'}(\cos \vartheta) + \sin \vartheta \, d\vartheta + = -2\pi \int_{-1}^1 P^m_n(z) P^{m'}_{n'}(z) \, dz + = \frac{-4\pi(m + n)!}{(2n + 1)(n - m)!} \delta_{nn'}, + \end{equation*} + where in the second step we performed the substitution $z = \cos\vartheta$; + $d\vartheta = \frac{d\vartheta}{dz} dz= - dz / \sin \vartheta$, and then we + used lemma \ref{kugel:thm:associated-legendre-ortho}. Now we just need look at + the case when $m \neq m'$. Fortunately this is easy: the inner integral is + $\int_0^{2\pi} e^{i(m - m')\varphi} d\varphi$, or in other words we are + integrating a complex exponetial over the entire period, which always results + in zero. Thus, we do not need to do anything and the proof is complete. +\end{proof} + \subsection{Normalization} \kugeltodo{Discuss various normalizations.} @@ -403,8 +590,6 @@ Ora, visto che la soluzione dell'eigenfunction problem è formata dalla moltipli \section{Series Expansions in $C(S^2)$} -\subsection{Orthogonality of $P_n$, $P^m_n$ and $Y^m_n$} - -\subsection{Series Expansion} +\subsection{Spherical Harmonics Series} \subsection{Fourier on $S^2$} -- cgit v1.2.1 From c3261041f9bcf77a90ee0aa3e2dc73bf71edb923 Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Thu, 18 Aug 2022 17:23:40 +0200 Subject: kugel: Corrections in orthogonality --- buch/papers/kugel/spherical-harmonics.tex | 65 +++++++++++++++++++++++-------- 1 file changed, 49 insertions(+), 16 deletions(-) (limited to 'buch/papers/kugel') diff --git a/buch/papers/kugel/spherical-harmonics.tex b/buch/papers/kugel/spherical-harmonics.tex index 2a00754..4f393d4 100644 --- a/buch/papers/kugel/spherical-harmonics.tex +++ b/buch/papers/kugel/spherical-harmonics.tex @@ -220,7 +220,7 @@ 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} + (1 - z^2)\frac{d^2 Z}{dz^2} - 2z\frac{d Z}{dz} + \left( n(n + 1) - \frac{m^2}{1 - z^2} \right) Z(z) = 0, \quad @@ -236,7 +236,7 @@ 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} + (1 - z^2)\frac{d^2 Z}{dz^2} - 2z\frac{d Z}{dz} + n(n + 1) Z(z) = 0, \quad @@ -275,7 +275,7 @@ 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, + P_n(z) = \frac{1}{2^n n!} \frac{d^n}{dz^n} (z^2 - 1)^n, \qquad \text{and} \qquad P_n(z) = \frac{1}{\pi} \int_0^\pi \left( z + \cos\vartheta \sqrt{z^2 - 1} @@ -312,8 +312,8 @@ obtain the \emph{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 + P^m_n (z) = (1-z^2)^{\frac{m}{2}}\frac{d^{m}}{dz^{m}} P_n(z) + = \frac{1}{2^n 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} @@ -486,7 +486,8 @@ $P_n(z)$ by a $m$-th derivative, and obtain the following result. \int_{-1}^1 P^m_n(z) P^{m'}_{n'}(z) \, dz = \frac{2(m + n)!}{(2n + 1)(n - m)!} \delta_{nn'} = \begin{cases} - \frac{2(m + n)!}{(2n + 1)(n - m)!} & \text{if } n = n', \\ + \frac{2(m + n)!}{(2n + 1)(n - m)!} + & \text{if } n = n' \text{ and } m = m', \\ 0 & \text{otherwise}. \end{cases} \end{equation*} @@ -497,16 +498,26 @@ $P_n(z)$ by a $m$-th derivative, and obtain the following result. derivative is a pain to deal with.} \end{proof} -An interesting fact to observe in lemma -\ref{kugel:thm:associated-legendre-ortho} is that the orthogonality is only -affected in the lower index, while varying $m$ only changes the constant in -front of the Kronecker delta. By having the orthogonality relations of the -Legendre functions we can finally show that spherical harmonics are also -orthogonal. +By having the orthogonality relations of the Legendre functions we can finally +show that spherical harmonics are also orthogonal under the following inner +product: -\begin{lemma} For the spherical harmonics - \kugeltodo{Fix horizontal spacing, inner product definition is missing.} +\begin{definition}[Inner product in $S^2$] + For 2 complex valued functions $f(\vartheta, \varphi)$ and $g(\vartheta, + \varphi)$ on the surface of the sphere the inner product is defined to be + \begin{equation*} + \langle f, g \rangle + = \int_{-\pi}^\pi \int_0^{2\pi} + f(\vartheta, \varphi) \overline{g(\vartheta, \varphi)} + \sin \vartheta \, d\varphi \, d\vartheta. + \end{equation*} +\end{definition} + + +\begin{theorem} For the (unnormalized) spherical harmonics \label{kugel:thm:spherical-harmonics-ortho} + \kugeltodo{Why do I get a minus in front of $4\pi$??? It should not be there + right?} \begin{equation*} \langle Y^m_n, Y^{m'}_{n'} \rangle = \int_{-\pi}^\pi \int_0^{2\pi} @@ -518,7 +529,7 @@ orthogonal. 0 & \text{otherwise}. \end{cases} \end{equation*} -\end{lemma} +\end{theorem} \begin{proof} We will begin by doing a bit of algebraic maipulaiton: \begin{align*} @@ -558,7 +569,29 @@ orthogonal. \subsection{Normalization} -\kugeltodo{Discuss various normalizations.} +At this point we have shown that the spherical harmonics form an orthogonal +system, but in many applications we usually also want a normalization of some +kind. For example the most obvious desirable property could be for the spherical +harmonics to be ortho\emph{normal}, by which we mean that $\langle Y^m_n, +Y^{m'}_{n'} \rangle = \delta_{nn'}$. To obtain orthonormality, we simply add a +normalization factor in front of the previous definition +\ref{kugel:def:spherical-harmonics} as follows. + +\begin{definition}[Orthonormal spherical harmonics] + \label{kugel:def:spherical-harmonics-orthonormal} + The functions + \begin{equation*} + Y^m_n(\vartheta, \varphi) + = \sqrt{\frac{2n + 1}{4\pi} \frac{(n-m)!}{(m+n)!}} + P^m_n(\cos \vartheta) e^{im\varphi} + \end{equation*} + where $m, n \in \mathbb{Z}$ and $|m| < n$ are the orthonormal spherical + harmonics. +\end{definition} + +Orthornomality is very useful indeed, but it is not the only common +normalization that is found in the literature. In physics, quantum mechanics to +be more specific, it is common to use the so called Schmidt semi-normalization. \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 -- cgit v1.2.1 From 6cc8d6c445305aa571f439d1945f53aac486ca72 Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Fri, 19 Aug 2022 01:50:32 +0200 Subject: kugel: More corrections --- buch/papers/kugel/spherical-harmonics.tex | 45 ++++++++++++++++--------------- 1 file changed, 24 insertions(+), 21 deletions(-) (limited to 'buch/papers/kugel') diff --git a/buch/papers/kugel/spherical-harmonics.tex b/buch/papers/kugel/spherical-harmonics.tex index 4f393d4..9d055e0 100644 --- a/buch/papers/kugel/spherical-harmonics.tex +++ b/buch/papers/kugel/spherical-harmonics.tex @@ -394,7 +394,7 @@ will be our starting point. \end{equation*} \end{lemma} \begin{proof} - To start, consider the fact that that the Legendre equation + To start, consider the fact that the Legendre equation \eqref{kugel:eqn:legendre}, of which two distinct Legendre polynomials $P_n(z)$ and $P_k(z)$ are a solution ($n \neq k$), can be rewritten in the following form: @@ -483,19 +483,19 @@ $P_n(z)$ by a $m$-th derivative, and obtain the following result. \begin{lemma} For the associated Legendre functions \label{kugel:thm:associated-legendre-ortho} \begin{equation*} - \int_{-1}^1 P^m_n(z) P^{m'}_{n'}(z) \, dz + \int_{-1}^1 P^m_n(z) P^{m}_{n'}(z) \, dz = \frac{2(m + n)!}{(2n + 1)(n - m)!} \delta_{nn'} = \begin{cases} \frac{2(m + n)!}{(2n + 1)(n - m)!} - & \text{if } n = n' \text{ and } m = m', \\ + & \text{if } n = n', \\ 0 & \text{otherwise}. \end{cases} \end{equation*} \end{lemma} \begin{proof} - \kugeltodo{Is it worth showing? IMHO no, it is mostly the same as Lemma - \ref{kugel:thm:legendre-poly-ortho} with the difference that the $m$-th - derivative is a pain to deal with.} + \kugeltodo{Is this correct? And Is it worth showing? IMHO no, it is mostly the + same as Lemma \ref{kugel:thm:legendre-poly-ortho} with the difference that the + $m$-th derivative is a pain to deal with.} \end{proof} By having the orthogonality relations of the Legendre functions we can finally @@ -507,7 +507,7 @@ product: \varphi)$ on the surface of the sphere the inner product is defined to be \begin{equation*} \langle f, g \rangle - = \int_{-\pi}^\pi \int_0^{2\pi} + = \int_{0}^\pi \int_0^{2\pi} f(\vartheta, \varphi) \overline{g(\vartheta, \varphi)} \sin \vartheta \, d\varphi \, d\vartheta. \end{equation*} @@ -520,12 +520,12 @@ product: right?} \begin{equation*} \langle Y^m_n, Y^{m'}_{n'} \rangle - = \int_{-\pi}^\pi \int_0^{2\pi} + = \int_{0}^\pi \int_0^{2\pi} Y^m_n(\vartheta, \varphi) \overline{Y^{m'}_{n'}(\vartheta, \varphi)} \sin \vartheta \, d\varphi \, d\vartheta - = \frac{-4\pi}{2n + 1} \frac{(m + n)!}{(n - m)!} \delta_{nn'} + = \frac{4\pi}{2n + 1} \frac{(m + n)!}{(n - m)!} \delta_{nn'} \delta_{mm'} = \begin{cases} - \frac{-4\pi}{2n + 1} \frac{(m + n)!}{(n - m)!} & \text{if } n = n', \\ + \frac{4\pi}{2n + 1} \frac{(m + n)!}{(n - m)!} & \text{if } n = n', \\ 0 & \text{otherwise}. \end{cases} \end{equation*} @@ -533,15 +533,15 @@ product: \begin{proof} We will begin by doing a bit of algebraic maipulaiton: \begin{align*} - \int_{-\pi}^\pi \int_0^{2\pi} + \int_{0}^\pi \int_0^{2\pi} Y^m_n(\vartheta, \varphi) \overline{Y^{m'}_{n'}(\vartheta, \varphi)} \sin \vartheta \, d\varphi \, d\vartheta - &= \int_{-\pi}^\pi \int_0^{2\pi} + &= \int_{0}^\pi \int_0^{2\pi} e^{im\varphi} P^m_n(\cos \vartheta) e^{-im'\varphi} P^{m'}_{n'}(\cos \vartheta) \, d\varphi \sin \vartheta \, d\vartheta \\ - &= \int_{-\pi}^\pi + &= \int_{0}^\pi P^m_n(\cos \vartheta) P^{m'}_{n'}(\cos \vartheta) \int_0^{2\pi} e^{i(m - m')\varphi} \, d\varphi \sin \vartheta \, d\vartheta @@ -552,19 +552,22 @@ product: $m = m'$ the inner integral simplifies to $\int_0^{2\pi} 1 \, d\varphi$ which equals $2\pi$, so in this case the expression becomes \begin{equation*} - 2\pi \int_{-\pi}^\pi + 2\pi \int_{0}^\pi P^m_n(\cos \vartheta) P^{m'}_{n'}(\cos \vartheta) \sin \vartheta \, d\vartheta - = -2\pi \int_{-1}^1 P^m_n(z) P^{m'}_{n'}(z) \, dz - = \frac{-4\pi(m + n)!}{(2n + 1)(n - m)!} \delta_{nn'}, + = -2\pi \int_{1}^{-1} P^m_n(z) P^{m'}_{n'}(z) \, dz + = \frac{4\pi(m + n)!}{(2n + 1)(n - m)!} \delta_{nn'}, \end{equation*} where in the second step we performed the substitution $z = \cos\vartheta$; $d\vartheta = \frac{d\vartheta}{dz} dz= - dz / \sin \vartheta$, and then we - used lemma \ref{kugel:thm:associated-legendre-ortho}. Now we just need look at - the case when $m \neq m'$. Fortunately this is easy: the inner integral is - $\int_0^{2\pi} e^{i(m - m')\varphi} d\varphi$, or in other words we are - integrating a complex exponetial over the entire period, which always results - in zero. Thus, we do not need to do anything and the proof is complete. + used lemma \ref{kugel:thm:associated-legendre-ortho}. We are allowed to use + the lemma because $m = m'$. + + Now we just need look at the case when $m \neq m'$. Fortunately this is easy: + the inner integral is $\int_0^{2\pi} e^{i(m - m')\varphi} d\varphi$, or in + other words we are integrating a complex exponetial over the entire period, + which always results in zero. Thus, we do not need to do anything and the + proof is complete. \end{proof} \subsection{Normalization} -- cgit v1.2.1 From 4e29e512c4f4f0f1244cbe38c804e46bafda225d Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Fri, 19 Aug 2022 21:57:24 +0200 Subject: kugel: Corrections and normalizations --- buch/papers/kugel/spherical-harmonics.tex | 104 ++++++++++++++++++------------ 1 file changed, 63 insertions(+), 41 deletions(-) (limited to 'buch/papers/kugel') diff --git a/buch/papers/kugel/spherical-harmonics.tex b/buch/papers/kugel/spherical-harmonics.tex index 9d055e0..72f7402 100644 --- a/buch/papers/kugel/spherical-harmonics.tex +++ b/buch/papers/kugel/spherical-harmonics.tex @@ -493,9 +493,12 @@ $P_n(z)$ by a $m$-th derivative, and obtain the following result. \end{equation*} \end{lemma} \begin{proof} - \kugeltodo{Is this correct? And Is it worth showing? IMHO no, it is mostly the - same as Lemma \ref{kugel:thm:legendre-poly-ortho} with the difference that the - $m$-th derivative is a pain to deal with.} + To show that the expression equals zero when $n \neq n'$ we can perform + exactly the same steps as in the proof of lemma + \ref{kugel:thm:legendre-poly-ortho}, so we will not repeat them here and prove + instead only the case when $n = n'$. + \kugeltodo{Finish proof, or not? I have to look and decide if it is + interesting enough.} \end{proof} By having the orthogonality relations of the Legendre functions we can finally @@ -516,19 +519,19 @@ product: \begin{theorem} For the (unnormalized) spherical harmonics \label{kugel:thm:spherical-harmonics-ortho} - \kugeltodo{Why do I get a minus in front of $4\pi$??? It should not be there - right?} - \begin{equation*} + \begin{align*} \langle Y^m_n, Y^{m'}_{n'} \rangle - = \int_{0}^\pi \int_0^{2\pi} + &= \int_{0}^\pi \int_0^{2\pi} Y^m_n(\vartheta, \varphi) \overline{Y^{m'}_{n'}(\vartheta, \varphi)} \sin \vartheta \, d\varphi \, d\vartheta - = \frac{4\pi}{2n + 1} \frac{(m + n)!}{(n - m)!} \delta_{nn'} \delta_{mm'} + \\ + &= \frac{4\pi}{2n + 1} \frac{(m + n)!}{(n - m)!} \delta_{nn'} \delta_{mm'} = \begin{cases} - \frac{4\pi}{2n + 1} \frac{(m + n)!}{(n - m)!} & \text{if } n = n', \\ + \frac{4\pi}{2n + 1} \frac{(m + n)!}{(n - m)!} + & \text{if } n = n' \text{ and } m = m', \\ 0 & \text{otherwise}. \end{cases} - \end{equation*} + \end{align*} \end{theorem} \begin{proof} We will begin by doing a bit of algebraic maipulaiton: @@ -563,38 +566,15 @@ product: used lemma \ref{kugel:thm:associated-legendre-ortho}. We are allowed to use the lemma because $m = m'$. - Now we just need look at the case when $m \neq m'$. Fortunately this is easy: - the inner integral is $\int_0^{2\pi} e^{i(m - m')\varphi} d\varphi$, or in - other words we are integrating a complex exponetial over the entire period, - which always results in zero. Thus, we do not need to do anything and the - proof is complete. + Now we just need look at the case when $m \neq m'$. Fortunately this is + easier: the inner integral is $\int_0^{2\pi} e^{i(m - m')\varphi} d\varphi$, + or in other words we are integrating a complex exponetial over the entire + period, which always results in zero. Thus, we do not need to do anything and + the proof is complete. \end{proof} -\subsection{Normalization} - -At this point we have shown that the spherical harmonics form an orthogonal -system, but in many applications we usually also want a normalization of some -kind. For example the most obvious desirable property could be for the spherical -harmonics to be ortho\emph{normal}, by which we mean that $\langle Y^m_n, -Y^{m'}_{n'} \rangle = \delta_{nn'}$. To obtain orthonormality, we simply add a -normalization factor in front of the previous definition -\ref{kugel:def:spherical-harmonics} as follows. - -\begin{definition}[Orthonormal spherical harmonics] - \label{kugel:def:spherical-harmonics-orthonormal} - The functions - \begin{equation*} - Y^m_n(\vartheta, \varphi) - = \sqrt{\frac{2n + 1}{4\pi} \frac{(n-m)!}{(m+n)!}} - P^m_n(\cos \vartheta) e^{im\varphi} - \end{equation*} - where $m, n \in \mathbb{Z}$ and $|m| < n$ are the orthonormal spherical - harmonics. -\end{definition} - -Orthornomality is very useful indeed, but it is not the only common -normalization that is found in the literature. In physics, quantum mechanics to -be more specific, it is common to use the so called Schmidt semi-normalization. +\kugeltodo{Briefly mention that we could have skipped the tedious proofs by +showing that the (associated) Legendre equation is a Sturm Liouville problem.} \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 @@ -620,7 +600,49 @@ Inoltre, possiamo provare l'ortogonalità di $\Theta(\vartheta)$ utilizzando \eq Ora, visto che la soluzione dell'eigenfunction problem è formata dalla moltiplicazione di $\Phi_m(\varphi)$ e $P_{m,n}(x)$ \fi -\subsection{Properties} + +\subsection{Normalization and the Phase Factor} + +At this point we have shown that the spherical harmonics form an orthogonal +system, but in many applications we usually also want a normalization of some +kind. For example the most obvious desirable property could be for the spherical +harmonics to be ortho\emph{normal}, by which we mean that $\langle Y^m_n, +Y^{m'}_{n'} \rangle = \delta_{nn'}$. To obtain orthonormality, we simply add an +ugly normalization factor in front of the previous definition +\ref{kugel:def:spherical-harmonics} as follows. + +\begin{definition}[Orthonormal spherical harmonics] + \label{kugel:def:spherical-harmonics-orthonormal} + The functions + \begin{equation*} + Y^m_n(\vartheta, \varphi) + = \sqrt{\frac{2n + 1}{4\pi} \frac{(n-m)!}{(m+n)!}} + P^m_n(\cos \vartheta) e^{im\varphi} + \end{equation*} + where $m, n \in \mathbb{Z}$ and $|m| < n$ are the orthonormal spherical + harmonics. +\end{definition} + +Orthornomality is very useful, but it is not the only common normalization that +is found in the literature. In physics, geomagnetism to be more specific, it is +common to use the so called Schmidt semi-normalization (or sometimes also called +quasi-normalization). + +\begin{definition}[Schmidt semi-normalized spherical harmonics] + \label{kugel:def:spherical-harmonics-schmidt} + The Schmidt semi-normalized spherical harmonics are + \begin{equation*} + Y^m_n(\vartheta, \varphi) + = \sqrt{2 \frac{(n - m)!}{(n + m)!}} + P^m_n(\cos \vartheta) e^{im\varphi} + \end{equation*} + where $m, n \in \mathbb{Z}$ and $|m| < n$. +\end{definition} + +However, for our purposes we will mostly only need the orthonormal spherical +harmonics. So from now on, unless specified otherwise, when we say spherical +harmonics or write $Y^m_n$, we mean the orthonormal spherical harmonics of +definition \ref{kugel:def:spherical-harmonics-orthonormal}. \subsection{Recurrence Relations} -- cgit v1.2.1 From d2ae59bb9d2affc07bcb541d37a8f88fd009c167 Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Sat, 20 Aug 2022 19:49:13 +0200 Subject: kugel: mention Condon-Shortley phase factor --- buch/papers/kugel/spherical-harmonics.tex | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'buch/papers/kugel') diff --git a/buch/papers/kugel/spherical-harmonics.tex b/buch/papers/kugel/spherical-harmonics.tex index 72f7402..5d394a9 100644 --- a/buch/papers/kugel/spherical-harmonics.tex +++ b/buch/papers/kugel/spherical-harmonics.tex @@ -639,8 +639,17 @@ quasi-normalization). where $m, n \in \mathbb{Z}$ and $|m| < n$. \end{definition} -However, for our purposes we will mostly only need the orthonormal spherical -harmonics. So from now on, unless specified otherwise, when we say spherical +Additionally, there is another quirk in the literature that should be mentioned. +In some other branches of physics such as seismology there is a so called +Condon-Shortley phase factor $(-1)^m$ in front of the square root in the +definition of the normalized spherical harmonics. It is yet another +normalization that is added for reasons that are not very relevant to our +discussion, but we are mentioning its existence since many numerical packages +(such as \texttt{SHTOOLS} \kugeltodo{Reference}) offer an option to add or +remove it from the computation. + +Though, for our purposes we will mostly only need the orthonormal spherical +harmonics, so from now on, unless specified otherwise when we say spherical harmonics or write $Y^m_n$, we mean the orthonormal spherical harmonics of definition \ref{kugel:def:spherical-harmonics-orthonormal}. -- cgit v1.2.1 From f05ad8165a516c7932a8137a51b247484c38403b Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Sat, 20 Aug 2022 23:25:12 +0200 Subject: kugel: Orthogonality using Sturm-Liouville --- buch/papers/kugel/spherical-harmonics.tex | 92 +++++++++++++++++++++++++++---- 1 file changed, 82 insertions(+), 10 deletions(-) (limited to 'buch/papers/kugel') diff --git a/buch/papers/kugel/spherical-harmonics.tex b/buch/papers/kugel/spherical-harmonics.tex index 5d394a9..5a17b99 100644 --- a/buch/papers/kugel/spherical-harmonics.tex +++ b/buch/papers/kugel/spherical-harmonics.tex @@ -506,6 +506,7 @@ show that spherical harmonics are also orthogonal under the following inner product: \begin{definition}[Inner product in $S^2$] + \label{kugel:def:inner-product-s2} For 2 complex valued functions $f(\vartheta, \varphi)$ and $g(\vartheta, \varphi)$ on the surface of the sphere the inner product is defined to be \begin{equation*} @@ -573,8 +574,51 @@ product: the proof is complete. \end{proof} -\kugeltodo{Briefly mention that we could have skipped the tedious proofs by -showing that the (associated) Legendre equation is a Sturm Liouville problem.} +These proofs for the various orthogonality relations were quite long and +algebraically tedious, mainly because they are ``low level'', by which we mean +that they (arguably) do not rely on very abstract theory. However, if we allow +ourselves to use the more abstract Sturm Liouville theory discussed in chapters +\ref{buch:integrale:subsection:sturm-liouville-problem} and \kugeltodo{reference +to chapter 17 of haddouche and Löffler} the proofs can become ridiculously +short. Let's do for example lemma \ref{kugel:thm:associated-legendre-ortho}. + +\begin{proof}[ + Shorter proof of lemma \ref{kugel:thm:associated-legendre-ortho} + ] + The associated Legendre polynomials, of which we would like to prove an + orthogonality relation, are the solution to the associated Legendre equation, + which we can write as $LZ(z) = 0$, where + \begin{equation*} + L = \frac{d}{dz} (1 - z^2) \frac{d}{dz} + + n(n+1) - \frac{m^2}{1 - z^2}. + \end{equation*} + Notice that $L$ is in fact a Sturm-Liouville operator of the form + \begin{equation*} + L = \frac{1}{w(z)} \left[ + \frac{d}{dz} p(z) \frac{d}{dz} - \lambda + q(z) + \right], + \end{equation*} + if we let $w(z) = 1$, $p(z) = (1 - z^2 )$, $q(z) = -m^2 / (1 - z^2)$, and + $\lambda = -n(n+1)$. By the theory of Sturm-Liouville operators, we know that + the each solution of the problem $LZ(z) = 0$, namely $P^m_n(z)$, is orthogonal + to every other solution that has a different $\lambda$. In our case $\lambda$ + varies with $n$, so $P^m_n(z)$ with different $n$'s are orthogonal to each + other. +\end{proof} + +But that was still rather informative and had a bit of explanation, which is +terrible. Real snobs, such as Wikipedia contributors, some authors and sometimes +regrettably even ourselves, would write instead: + +\begin{proof}[ + Pretentiously short proof of lemma \ref{kugel:thm:associated-legendre-ortho} + ] + The associated Legendre polynomials are solutions of the associated Legendre + equation which is a Sturm-Liouville problem and are thus orthogonal to each + other. The factor in front Kronecker delta is left as an exercise to the + reader. +\end{proof} + \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 @@ -640,13 +684,13 @@ quasi-normalization). \end{definition} Additionally, there is another quirk in the literature that should be mentioned. -In some other branches of physics such as seismology there is a so called -Condon-Shortley phase factor $(-1)^m$ in front of the square root in the -definition of the normalized spherical harmonics. It is yet another -normalization that is added for reasons that are not very relevant to our -discussion, but we are mentioning its existence since many numerical packages -(such as \texttt{SHTOOLS} \kugeltodo{Reference}) offer an option to add or -remove it from the computation. +In some other branches of physics such as seismology and quantum mechanics there +is a so called Condon-Shortley phase factor $(-1)^m$ in front of the square root +in the definition of the normalized spherical harmonics. It is yet another +normalization that is added for physical reasons that are not very relevant to +our discussion, but mention its existence this potential source of confusion +since many numerical packages (such as \texttt{SHTOOLS} \kugeltodo{Reference}) +offer an option to add or remove it from the computation. Though, for our purposes we will mostly only need the orthonormal spherical harmonics, so from now on, unless specified otherwise when we say spherical @@ -655,8 +699,36 @@ definition \ref{kugel:def:spherical-harmonics-orthonormal}. \subsection{Recurrence Relations} -\section{Series Expansions in $C(S^2)$} +\section{Series Expansions in $L^2(S^2)$} + +We have now reached a point were we have all of the tools that are necessary to +build something truly amazing: a general series expansion formula for functions +on the surface of the sphere. Using the jargon: we will now see that the +spherical harmonics together with the inner product of definition +\ref{kugel:def:inner-product-s2} +\begin{equation*} + \langle f, g \rangle + = \int_{0}^\pi \int_0^{2\pi} + f(\vartheta, \varphi) \overline{g(\vartheta, \varphi)} + \sin \vartheta \, d\varphi \, d\vartheta +\end{equation*} +form a Hilbert space over the space of complex valued $L^2$ functions $S^2 \to +\mathbb{C}$. We will see later that this fact is very consequential and is +extremely useful for many types of applications. If the jargon was too much, no +need to worry, we will now go back to normal words and explain it again in more +detail. \subsection{Spherical Harmonics Series} +To talk about a \emph{series expansion} we first need a series, so we shall +build one using the spherical harmonics. + +\begin{definition}[Spherical harmonic series] + \begin{equation*} + \hat{f}(\vartheta, \varphi) + = \sum_{n \in \mathbb{Z}} \sum_{m \in \mathbb{Z}} + c_{m,n} Y^m_n(\vartheta, \varphi) + \end{equation*} +\end{definition} + \subsection{Fourier on $S^2$} -- cgit v1.2.1 From 63dee97e79f65a967f7d6b34bb8141ccaa226e20 Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Sat, 20 Aug 2022 23:40:29 +0200 Subject: kugel: Minor corrections --- buch/papers/kugel/spherical-harmonics.tex | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'buch/papers/kugel') diff --git a/buch/papers/kugel/spherical-harmonics.tex b/buch/papers/kugel/spherical-harmonics.tex index 5a17b99..54c8fa9 100644 --- a/buch/papers/kugel/spherical-harmonics.tex +++ b/buch/papers/kugel/spherical-harmonics.tex @@ -607,11 +607,11 @@ short. Let's do for example lemma \ref{kugel:thm:associated-legendre-ortho}. \end{proof} But that was still rather informative and had a bit of explanation, which is -terrible. Real snobs, such as Wikipedia contributors, some authors and sometimes -regrettably even ourselves, would write instead: +terrible. Real snobs, such as Wikipedia contributors, some authors and +regrettably sometimes even ourselves, would write instead: \begin{proof}[ - Pretentiously short proof of lemma \ref{kugel:thm:associated-legendre-ortho} + Infuriatingly short proof of lemma \ref{kugel:thm:associated-legendre-ortho} ] The associated Legendre polynomials are solutions of the associated Legendre equation which is a Sturm-Liouville problem and are thus orthogonal to each @@ -688,9 +688,9 @@ In some other branches of physics such as seismology and quantum mechanics there is a so called Condon-Shortley phase factor $(-1)^m$ in front of the square root in the definition of the normalized spherical harmonics. It is yet another normalization that is added for physical reasons that are not very relevant to -our discussion, but mention its existence this potential source of confusion -since many numerical packages (such as \texttt{SHTOOLS} \kugeltodo{Reference}) -offer an option to add or remove it from the computation. +our discussion, but we mention this potential source of confusion since many +numerical packages (such as \texttt{SHTOOLS} \kugeltodo{Reference}) offer an +option to add or remove it from the computation. Though, for our purposes we will mostly only need the orthonormal spherical harmonics, so from now on, unless specified otherwise when we say spherical -- cgit v1.2.1 From 288eb54f5089c48177434757b083309e05e30bf2 Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Sun, 21 Aug 2022 11:48:48 +0200 Subject: kugel: More on Sturm-Liouville --- buch/papers/kugel/spherical-harmonics.tex | 42 ++++++++++++------------------- 1 file changed, 16 insertions(+), 26 deletions(-) (limited to 'buch/papers/kugel') diff --git a/buch/papers/kugel/spherical-harmonics.tex b/buch/papers/kugel/spherical-harmonics.tex index 54c8fa9..bff91ef 100644 --- a/buch/papers/kugel/spherical-harmonics.tex +++ b/buch/papers/kugel/spherical-harmonics.tex @@ -107,7 +107,7 @@ the surface of the unit sphere. 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} +\begin{equation} \label{kugel: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 @@ -619,31 +619,21 @@ regrettably sometimes even ourselves, would write instead: reader. \end{proof} - -\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 - +Lemma \ref{kugel:thm:legendre-poly-ortho} has a very similar +proof, while the theorem \ref{kugel:thm:spherical-harmonics-ortho} for the +spherical harmonics is proved by the following argument. The spherical harmonics +are the solutions to the eigenvalue problem $\surflaplacian f = -\lambda f$, +which as discussed in the previous section is solved using separation. So to +prove their orthogonality using the Sturm-Liouville theory we argue that +\begin{equation*} + \surflaplacian = L_\vartheta L_\varphi \iff + \surflaplacian f(\vartheta, \varphi) + = L_\vartheta \Theta(\vartheta) L_\varphi \Phi(\varphi), +\end{equation*} +then we show that both $L_\vartheta$ and $L_\varphi$ are both Sturm-Liouville +operators (we just did the former in the shorter proof above). Since both are +Sturm-Liouville operators their combination, the surface spherical Laplacian, is +also a Sturm-Liouville operator, which then implies orthogonality. \subsection{Normalization and the Phase Factor} -- cgit v1.2.1