diff options
Diffstat (limited to 'buch')
25 files changed, 1433 insertions, 281 deletions
diff --git a/buch/papers/kra/Makefile.inc b/buch/papers/kra/Makefile.inc index f453e6e..a521e4b 100644 --- a/buch/papers/kra/Makefile.inc +++ b/buch/papers/kra/Makefile.inc @@ -4,11 +4,10 @@ # (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule # dependencies-kra = \ - papers/kra/packages.tex \ + papers/kra/packages.tex \ papers/kra/main.tex \ - papers/kra/references.bib \ - papers/kra/teil0.tex \ - papers/kra/teil1.tex \ - papers/kra/teil2.tex \ - papers/kra/teil3.tex + papers/kra/references.bib \ + papers/kra/einleitung.tex \ + papers/kra/loesung.tex \ + papers/kra/anwendung.tex \ diff --git a/buch/papers/kra/anwendung.tex b/buch/papers/kra/anwendung.tex new file mode 100644 index 0000000..6383984 --- /dev/null +++ b/buch/papers/kra/anwendung.tex @@ -0,0 +1,215 @@ +\section{Anwendung \label{kra:section:anwendung}} +\rhead{Anwendung} +\newcommand{\dt}[0]{\frac{d}{dt}} + +Die Matrix-Riccati Differentialgleichung findet unter anderem Anwendung in der Regelungstechnik beim RQ- und RQG-Regler oder aber auch beim Kalmanfilter. +Im folgenden Abschnitt möchten wir uns an einem Beispiel anschauen wie wir mit Hilfe der Matrix-Riccati Differentialgleichung (\ref{kra:equation:matrixriccati}) ein Feder-Masse-System untersuchen können \cite{kra:riccati}. + +\subsection{Feder-Masse-System} +Die einfachste Form eines Feder-Masse-Systems ist dargestellt in Abbildung \ref{kra:fig:simple_mass_spring}. +Es besteht aus einer reibungsfrei gelagerten Masse $m$ ,welche an eine Feder mit der Federkonstante $k$ gekoppelt ist. +Die im System wirkenden Kräfte teilen sich auf in die auf dem hookeschen Gesetz basierenden Rückstellkraft $F_R = k \Delta_x$ und der auf dem Aktionsprinzip basierenden Kraft $F_a = am = \ddot{x} m$. +Das Kräftegleichgewicht fordert $F_R = F_a$ woraus folgt, dass + +\begin{equation*} + k \Delta_x = \ddot{x} m \Leftrightarrow \ddot{x} = \frac{k \Delta_x}{m} +\end{equation*} +Die Funktion die diese Differentialgleichung löst, ist die harmonische Schwingung +\begin{equation} + x(t) = A \cos(\omega_0 t + \Phi), \quad \omega_0 = \sqrt{\frac{k}{m}} +\end{equation} +\begin{figure} + % move image to standalone because the physics package is + % incompatible with underbrace + \includegraphics{papers/kra/images/simple.pdf} + %\input{papers/kra/images/simple_mass_spring.tex} + \caption{Einfaches Feder-Masse-System.} + \label{kra:fig:simple_mass_spring} +\end{figure} +\begin{figure} + \input{papers/kra/images/multi_mass_spring.tex} + \caption{Feder-Masse-System mit zwei Massen und drei Federn.} + \label{kra:fig:multi_mass_spring} +\end{figure} + +\subsection{Hamilton-Funktion} +Die Bewegung der Masse $m$ kann mit Hilfe der hamiltonschen Mechanik im Phasenraum untersucht werden. +Die hamiltonschen Gleichungen verwenden dafür die verallgemeinerten Ortskoordinaten +$q = (q_{1}, q_{2}, ..., q_{n})$ und die verallgemeinerten Impulskoordinaten $p = (p_{1}, p_{2}, ..., p_{n})$, wobei der Impuls definiert ist als $p_k = m_k \cdot v_k$. +Liegen keine zeitabhängigen Zwangsbedingungen vor, so entspricht die Hamitlon-Funktion der Gesamtenergie des Systems \cite{kra:hamilton}. +Im Falle des einfachen Feder-Masse-Systems, Abbildung \ref{kra:fig:simple_mass_spring}, setzt sich die Hamilton-Funktion aus kinetischer und potentieller Energie zusammen. +\begin{equation} + \label{kra:harmonischer_oszillator} + \begin{split} + \mathcal{H}(q, p) &= T(p) + V(q) = E \\ + &= \underbrace{\frac{p^2}{2m}}_{E_{kin}} + \underbrace{\frac{k q^2}{2}}_{E_{pot}} + \end{split} +\end{equation} +Die Hamiltonschen Bewegungsgleichungen liefern \cite{kra:kanonischegleichungen} +\begin{equation} + \label{kra:hamilton:bewegungsgleichung} + \dot{q_{k}} = \frac{\partial \mathcal{H}}{\partial p_k} + \qquad + \dot{p_{k}} = -\frac{\partial \mathcal{H}}{\partial q_k} +\end{equation} +daraus folgt +\[ + \dot{q} = \frac{p}{m} + \qquad + \dot{p} = -kq +\] +in Matrixschreibweise erhalten wir also +\[ + \begin{pmatrix} + \dot{q} \\ + \dot{p} + \end{pmatrix} + = + \begin{pmatrix} + 0 & \frac{1}{m} \\ + -k & 0 + \end{pmatrix} + \begin{pmatrix} + q \\ + p + \end{pmatrix} +\] +Für das erweiterte Federmassesystem, Abbildung \ref{kra:fig:multi_mass_spring}, können wir analog vorgehen. +Die kinetische Energie setzt sich nun aus den kinetischen Energien der einzelnen Massen $m_1$ und $m_2$ zusammen. +Die Potentielle Energie erhalten wir aus der Summe der kinetischen Energien der einzelnen Federn mit den Federkonstanten $k_1$, $k_c$ und $k_2$. +\begin{align*} + \begin{split} + T &= T_1 + T_2 \\ + &= \frac{p_1^2}{2m_1} + \frac{p_2^2}{2m_2} + \end{split} + \\ + \begin{split} + V &= V_1 + V_c + V_2 \\ + &= \frac{k_1 q_1^2}{2} + \frac{k_c (q_2 - q_1)^2}{2} + \frac{k_2 q_2^2}{2} + \end{split} +\end{align*} +Die Hamilton-Funktion ist also +\begin{align*} + \begin{split} + \mathcal{H} &= T + V \\ + &= \frac{p_1^2}{2m_1} + \frac{p_2^2}{2m_2} + \frac{k_1 q_1^2}{2} + \frac{k_c (q_2 - q_1)^2}{2} + \frac{k_2 q_2^2}{2} + \end{split} +\end{align*} +Die Bewegungsgleichungen \ref{kra:hamilton:bewegungsgleichung} liefern +\begin{align*} + \frac{\partial \mathcal{H}}{\partial p_k} & = \dot{q_k} + \Rightarrow + \left\{ + \begin{alignedat}{2} + \dot{q_1} &= \frac{2p_1}{2m_1} &&= \frac{p_1}{m_1}\\ + \dot{q_2} &= \frac{2p_2}{2m_2} &&= \frac{p_2}{m_2} + \end{alignedat} + \right. + \\ + -\frac{\partial \mathcal{H}}{\partial q_k} & = \dot{p_k} + \Rightarrow + \left\{ + \begin{alignedat}{2} + \dot{p_1} &= -(\frac{2k_1q_1}{2} - \frac{2k_c(q_2-q_1)}{2}) &&= -q_1(k_1+k_c) + q_2k_c \\ + \dot{p_1} &= -(\frac{2k_c(q_2-q_1)}{2} - \frac{2k_2q_2}{2}) &&= q_1k_c - (k_c + k_2) + \end{alignedat} + \right. +\end{align*} +In Matrixschreibweise erhalten wir +\begin{equation} + \label{kra:hamilton:multispringmass} + \begin{pmatrix} + \dot{q_1} \\ + \dot{q_2} \\ + \dot{p_1} \\ + \dot{p_2} \\ + \end{pmatrix} + = + \begin{pmatrix} + 0 & 0 & \frac{1}{2m_1} & 0 \\ + 0 & 0 & 0 & \frac{1}{2m_2} \\ + -(k_1 + k_c) & k_c & 0 & 0 \\ + k_c & -(k_c + k_2) & 0 & 0 \\ + \end{pmatrix} + \begin{pmatrix} + q_1 \\ + q_2 \\ + p_1 \\ + p_2 \\ + \end{pmatrix} + \Leftrightarrow + \dt + \begin{pmatrix} + Q \\ + P \\ + \end{pmatrix} + = + \underbrace{ + \begin{pmatrix} + 0 & M \\ + K & 0 + \end{pmatrix} + }_{G} + \begin{pmatrix} + Q \\ + P \\ + \end{pmatrix} +\end{equation} + +\subsection{Phasenraum} +Der Phasenraum erlaubt die eindeutige Beschreibung aller möglichen Bewegungszustände eines mechanischen Systems durch einen Punkt. +Die Phasenraumdarstellung eignet sich somit sehr gut für die systematische Untersuchung der Feder-Masse-Systeme. + +\subsubsection{Harmonischer Oszillator} +Die Hamiltonfunktion des harmonischen Oszillators \ref{kra:harmonischer_oszillator} führt auf eine Lösung der Form +\begin{equation*} + q(t) = A \cos(\omega_0 T + \Phi), \quad p(t) = -m \omega_0 A \sin(\omega_0 t + \Phi) +\end{equation*} +die Phasenraumtrajektorien bilden also Ellipsen mit Zentrum $q=0, p=0$ und Halbachsen $A$ und $m \omega A$. +Abbildung \ref{kra:fig:phasenraum} zeigt Phasenraumtrajektorien mit den Energien $E_{x \in \{A, B, C, D\}}$ und verschiedenen Werten von $\omega$. +\begin{figure} + \input{papers/kra/images/phase_space.tex} + \caption{Phasenraumdarstellung des einfachen Feder-Masse-Systems.} + \label{kra:fig:phasenraum} +\end{figure} + +\subsubsection{Erweitertes Feder-Masse-System} +Wir intressieren uns nun dafür wie der Phasenwinkel $U = PQ^{-1}$ von der Zeit abhängt, +wir suchen also die Grösse $\Theta = \dt U$. +Ersetzten wir in der Gleichung \ref{kra:hamilton:multispringmass} die Matrix $G$ mit $\tilde{G}$ so erhalten wir +\begin{equation} + \dt + \begin{pmatrix} + Q \\ + P + \end{pmatrix} + = + \underbrace{ + \begin{pmatrix} + A & B \\ + C & D + \end{pmatrix} + }_{\tilde{G}} + \begin{pmatrix} + Q \\ + P + \end{pmatrix} +\end{equation} +Mit einsetzten folgt +\begin{align*} + \dot{Q} = AQ + BP \\ + \dot{P} = CQ + DP +\end{align*} +\begin{equation} + \begin{split} + \dt U &= \dot{P} Q^{-1} + P \dt Q^{-1} \\ + &= (CQ + DP) Q^{-1} - P (Q^{-1} \dot{Q} Q^{-1}) \\ + &= C\underbrace{QQ^{-1}}_\text{I} + D\underbrace{PQ^{-1}}_\text{U} - P(Q^{-1} (AQ + BP) Q^{-1}) \\ + &= C + DU - \underbrace{PQ^{-1}}_\text{U}(A\underbrace{QQ^{-1}}_\text{I} + B\underbrace{PQ^{-1}}_\text{U}) \\ + &= C + DU - UA - UBU + \end{split} +\end{equation} +was uns auf die Matrix-Riccati Gleichung \ref{kra:equation:matrixriccati} führt. + +% @TODO Einfluss auf anfangsbedingungen, plots? +% @TODO Fazit ? diff --git a/buch/papers/kra/einleitung.tex b/buch/papers/kra/einleitung.tex new file mode 100644 index 0000000..cde2e66 --- /dev/null +++ b/buch/papers/kra/einleitung.tex @@ -0,0 +1,14 @@ +\section{Einleitung} \label{kra:section:einleitung} +\rhead{Einleitung} +Die riccatische Differentialgleichung ist eine nicht lineare gewöhnliche Differentialgleichung erster Ordnung der Form +\begin{equation} + \label{kra:equation:riccati} + y' = f(x)y + g(x)y^2 + h(x) +\end{equation} +Sie ist benannt nach dem italienischen Grafen Jacopo Francesco Riccati (1676–1754) der sich mit der Klassifizierung von Differentialgleichungen befasste. +Als Riccati Gleichung werden auch Matrixgleichungen der Form +\begin{equation} + \label{kra:equation:matrixriccati} + \dot{X}(t) = C + DX(t) - X(t)A -X(t)BX(t) +\end{equation} +bezeichnet, welche aufgrund ihres quadratischen Terms eine gewisse Ähnlichkeit aufweisen \cite{kra:ethz} \cite{kra:riccati}. diff --git a/buch/papers/kra/images/Makefile b/buch/papers/kra/images/Makefile new file mode 100644 index 0000000..ef226a9 --- /dev/null +++ b/buch/papers/kra/images/Makefile @@ -0,0 +1,9 @@ +# +# Makefile -- build standalone images +# +# (c) 2022 Prof Dr Andreas Müller +# +all: simple.pdf + +simple.pdf: simple.tex simple_mass_spring.tex + pdflatex simple.tex diff --git a/buch/papers/kra/images/multi_mass_spring.tex b/buch/papers/kra/images/multi_mass_spring.tex new file mode 100644 index 0000000..f255cc8 --- /dev/null +++ b/buch/papers/kra/images/multi_mass_spring.tex @@ -0,0 +1,54 @@ +% create tikz drawing of a multi mass multi spring system + +\tikzstyle{vmline}=[red, dashed,line width=0.4,dash pattern=on 1pt off 1pt] +\tikzstyle{ground}=[pattern=north east lines] +\tikzstyle{mass}=[line width=0.6,red!30!black,fill=red!40!black!10,rounded corners=1,top color=red!40!black!20,bottom color=red!40!black!10,shading angle=20] +\tikzstyle{spring}=[line width=0.8,blue!7!black!80,snake=coil,segment amplitude=5,line cap=round] + +\begin{tikzpicture}[scale=2] + \newcommand{\ticks}[3] + { + % x, y coordinates + \draw[thick] (#1, #2 - 0.1 / 2) --++ (0, 0.1) node[scale=0.8,below=0.2] {#3}; + } + \tikzmath{ + \hWall = 1.2; + \wWall = 0.3; + \lWall = 5; + \hMass = 0.6; + \wMass = 1.1; + \xMass1 = 1.0; + \xMass2 = 3.0; + \xAxisYpos = 0; + \originX1 = 0; + \originY1 = 0.5; + \springscale=7; + } + + % create axis + \draw[->,thick] (0,\xAxisYpos) --+ (\xMass2 + \wMass, 0) node[right]{$q$}; + % create ticks on x / q axis + \ticks{\xMass1}{\xAxisYpos}{$q_{1}$} + \ticks{\xMass2}{\xAxisYpos}{$q_{2}$} + + % create non-moving backgrounds + \draw[ground] (\originX1, \originY1) ++ (0, 0) --+(\lWall,0) --+(\lWall, \hWall) + --+ (\lWall - \wWall, \hWall) --+(\lWall - \wWall, \wWall) --+ (\wWall, \wWall) --+(\wWall, \hWall) --+(0, \hWall) -- cycle; + + % create masses + \draw[mass] (\originX1, \originY1) ++ (\xMass1, \wWall) rectangle ++ (\wMass,\hMass) node[midway] {$m_{1}$}; + \draw[mass] (\originX1, \originY1) ++ (\xMass2, \wWall) rectangle ++ (\wMass,\hMass) node[midway] {$m_{2}$}; + + % create springs + \draw[spring, segment length=(\xMass1 - \wWall) * \springscale] (\originX1, \originY1) ++ + (\wWall, \wWall + \hMass / 2) --++ (\xMass1 - \wWall, 0) node[midway,above=0.2] {$k_1$}; + \draw[spring, segment length=(\xMass1 - \wWall) * \springscale] (\originX1, \originY1) ++ + (\xMass1 + \wMass, \wWall + \hMass / 2) --++ (\xMass2 - \xMass1 - \wMass, 0) node[midway,above=0.2] {$k_c$}; + \draw[spring, segment length=(\xMass1 - \wWall) * \springscale] (\originX1, \originY1) ++ + (\xMass2 + \wMass, \wWall + \hMass / 2) --++ (\lWall - \xMass2 - \wMass - \wWall, 0) node[midway,above=0.2] {$k_2$}; + + % create vertical measurement line + \draw[vmline] (\xMass1, \xAxisYpos) --+(0, \originY1 + \wWall); + \draw[vmline] (\xMass2, \xAxisYpos) --+(0, \originY1 + \wWall); + +\end{tikzpicture} diff --git a/buch/papers/kra/images/phase_space.tex b/buch/papers/kra/images/phase_space.tex new file mode 100644 index 0000000..cd51ea4 --- /dev/null +++ b/buch/papers/kra/images/phase_space.tex @@ -0,0 +1,67 @@ +\colorlet{mypurple}{red!50!blue!90!black!80} + +% style to create arrows +\tikzset{ + traj/.style 2 args={thick, postaction={decorate},decoration={markings, + mark=at position #1 with {\arrow{<}}, + mark=at position #2 with {\arrow{<}}} + } +} + +\begin{tikzpicture}[scale=0.6] + % p(t=0) = 0, q(t=0) = A, max(p) = mwA + \tikzmath{ + \axh = 5.2; + \axw1 = 4.2; + \axw2 = 4.8; + \d1 = 0.9; + \a0 = 1; + \b0 = 2; + \a1 = \a0 + \d1; + \b1 = \b0 + \d1; + \a2 = \a1 + \d1; + \b2 = \b1 + \d1; + \a3 = \a2 + \d1; + \b3 = \b2 + \d1; + \d2 = 0.75; + \aa0 = 2; + \bb0 = 1; + \aa1 = \aa0 + \d2; + \bb1 = \bb0 + \d2; + \aa2 = \aa1 + \d2; + \bb2 = \bb1 + \d2; + \aa3 = \aa2 + \d2; + \bb3 = \bb2 + \d2; + } + + \draw[->,thick] (-\axw1,0) -- (\axw1,0) node[right] {$q$}; + \draw[->,thick] (0,-\axh) -- (0,\axh) node[above] {$p$}; + + \draw[traj={0.375}{0.875},darkgreen] ellipse (\a0 and \b0); + \draw[traj={0.375}{0.875},blue] ellipse (\a1 and \b1); + \draw[traj={0.375}{0.875},cyan] ellipse (\a2 and \b2); + \draw[traj={0.375}{0.875},mypurple] ellipse (\a3 and \b3); + + \node[right,darkgreen] at (45:{\a0} and {\b0}) {$E_A$}; + \node[right, blue] at (45:{\a1} and {\b1}) {$E_B$}; + \node[right, cyan] at (45:{\a2} and {\b2}) {$E_C$}; + \node[right, mypurple] at (45:{\a3} and {\b3}) {$E_D$}; + \node[above left] at (110:\b3 + 0.1) {grosses $\omega$}; + + \begin{scope}[xshift=12cm] + \draw[->,thick] (-\axw2,0) -- (\axw2,0) node[right] {$q$}; + \draw[->,thick] (0,-\axh) -- (0,\axh) node[above] {$p$}; + + \draw[traj={0.375}{0.875},darkgreen] ellipse (\aa0 and \bb0); + \draw[traj={0.375}{0.875},blue] ellipse (\aa1 and \bb1); + \draw[traj={0.375}{0.875},cyan] ellipse (\aa2 and \bb2); + \draw[traj={0.375}{0.875},mypurple] ellipse (\aa3 and \bb3); + + \node[above, darkgreen] at (45:{\aa0} and {\bb0}) {$E_A$}; + \node[above, blue] at (45:{\aa1} and {\bb1}) {$E_B$}; + \node[above, cyan] at (45:{\aa2} and {\bb2}) {$E_C$}; + \node[above, mypurple] at (45:{\aa3} and {\bb3}) {$E_D$}; + + \node[above left] at (110:\b3 + 0.1) {kleines $\omega$}; + \end{scope} +\end{tikzpicture}
\ No newline at end of file diff --git a/buch/papers/kra/images/simple.pdf b/buch/papers/kra/images/simple.pdf Binary files differnew file mode 100644 index 0000000..4351518 --- /dev/null +++ b/buch/papers/kra/images/simple.pdf diff --git a/buch/papers/kra/images/simple.tex b/buch/papers/kra/images/simple.tex new file mode 100644 index 0000000..3bdde27 --- /dev/null +++ b/buch/papers/kra/images/simple.tex @@ -0,0 +1,24 @@ +% +% tikztemplate.tex -- template for standalon tikz images +% +% (c) 2021 Prof Dr Andreas Müller, OST Ostschweizer Fachhochschule +% +\documentclass[tikz]{standalone} +\usepackage{amsmath} +\usepackage{times} +\usepackage{txfonts} +\usepackage{pgfplots} +\pgfplotsset{compat=1.16} +\usepackage[outline]{contour} +\usepackage{csvsimple} +\usepackage{physics} +\usetikzlibrary{arrows,intersections,math} +\usetikzlibrary{patterns} +\usetikzlibrary{snakes} +\usetikzlibrary{arrows.meta} +\usetikzlibrary{decorations} +\usetikzlibrary{decorations.markings} +\begin{document} +\input{simple_mass_spring.tex} +\end{document} + diff --git a/buch/papers/kra/images/simple_mass_spring.tex b/buch/papers/kra/images/simple_mass_spring.tex new file mode 100644 index 0000000..868362d --- /dev/null +++ b/buch/papers/kra/images/simple_mass_spring.tex @@ -0,0 +1,66 @@ +% create tikz drawing of a simple mass spring system + +\tikzstyle{hmline}=[{Latex[length=3.3,width=2.2]}-{Latex[length=3.3,width=2.2]},line width=0.3] +\tikzstyle{vmline}=[red, dashed,line width=0.4,dash pattern=on 1pt off 1pt] +\tikzstyle{ground}=[pattern=north east lines] +\tikzstyle{mass}=[line width=0.6,red!30!black,fill=red!40!black!10,rounded corners=1,top color=red!40!black!20,bottom color=red!40!black!10,shading angle=20] +\tikzstyle{spring}=[line width=0.8,blue!7!black!80,snake=coil,segment amplitude=5,line cap=round] + +\begin{tikzpicture}[scale=2,>=latex] + \newcommand{\ticks}[2] + { + % arguments: x, y coordinates + \draw[thick] (#1, #2 - 0.1 / 2) --++ (0, 0.1); + } + + \tikzmath{ + \hWall = 1.2; + \wWall = 0.3; + \lWall = 3.5; + \hMass = 0.6; + \wMass = 1.1; + \xMass1 = 1.2; + \xMass2 = 2.2; + \xAxisYpos = 0; + \originX1 = 0; + \originY1 = 0.5; + \originX2 = 0; + \originY2 = -2; + \springscale=7; + } + + % create x axis + \draw[->,thick] (0,\xAxisYpos) --+ (\lWall, 0) node[right]{$x$}; + + % create ticks on x axis + \ticks{\wWall}{\xAxisYpos} + \ticks{\xMass1}{\xAxisYpos} + \ticks{\xMass2}{\xAxisYpos} + + % create underground + \draw[ground] (\originX1, \originY1) ++ (0, 0) --+(\lWall,0) --+(\lWall, \wWall) --+(\wWall, \wWall) --+(\wWall, \hWall) --+(0, \hWall) -- cycle; + \draw[ground] (\originX2, \originY2) ++ (0, 0) --+(\lWall,0) --+(\lWall, \wWall) --+(\wWall, \wWall) --+(\wWall, \hWall) --+(0, \hWall) -- cycle; + + % create masses + \draw[mass] (\originX1, \originY1) ++ (\xMass1, \wWall) rectangle ++ (\wMass,\hMass) node[midway] {$m$}; + \draw[mass] (\originX2, \originY2) ++ (\xMass2, \wWall) rectangle ++ (\wMass,\hMass) node[midway] {$m$}; + + % create springs + \draw[spring, segment length=(\xMass1 - \wWall) * \springscale] (\originX1, \originY1) ++ + (\wWall, \wWall + \hMass / 2) --++ (\xMass1 - \wWall, 0) node[midway,above=3.5] {$k$}; + \draw[spring, segment length=(\xMass2 - \wWall) * \springscale] (\originX2, \originY2) ++ + (\wWall, \wWall + \hMass / 2) --++ (\xMass2 - \wWall, 0) node[midway,above=3.5] {$k$}; + + % create vertical measurement line + \draw[vmline] (\xMass1, \xAxisYpos) --+(0, \originY1 + \wWall); + \draw[vmline] (\xMass2, \xAxisYpos) --+(0, \originY2 + \hMass+\wWall); + \draw[vmline] (\wWall, \originY1+\wWall) --(\wWall, \originY2 + \hWall); + + % create horizontal measurement line + \draw[hmline] (\wWall, \xAxisYpos + 0.2) -- (\xMass1, \xAxisYpos + 0.2) node[midway,fill=white,inner sep=0] {$l_0$}; + \draw[hmline] (\xMass1, \xAxisYpos + 0.2) -- (\xMass2, \xAxisYpos + 0.2) node[midway,fill=white,inner sep=0] {$\Delta_{x}$}; + \draw[hmline] (\wWall, \xAxisYpos - 0.3) -- (\xMass2, \xAxisYpos - 0.3) node[midway,fill=white,inner sep=0] {$l_{1}$}; + + % create force arrow + \draw[->,blue, very thick,line cap=round] (\xMass2 + \wMass / 2, \originY2 + \wWall + \hMass + 0.15) node[above] {$\vb{F_{R}}$} --+ (-0.5, 0); +\end{tikzpicture} diff --git a/buch/papers/kra/loesung.tex b/buch/papers/kra/loesung.tex new file mode 100644 index 0000000..4e0da1c --- /dev/null +++ b/buch/papers/kra/loesung.tex @@ -0,0 +1,86 @@ +\section{Lösungsmethoden} \label{kra:section:loesung} +\rhead{Lösungsmethoden} + +\subsection{Riccatische Differentialgleichung} \label{kra:loesung:riccati} +Eine allgemeine analytische Lösung der Riccati Differentialgleichung ist nicht möglich. +Es gibt aber Spezialfälle, in denen sich die Gleichung vereinfachen lässt und so eine analytische Lösung gefunden werden kann. +Diese wollen wir im folgenden Abschnitt genauer anschauen. + +\subsubsection{Fall 1: Konstante Koeffizienten} +Sind die Koeffizienten $f(x), g(x), h(x)$ Konstanten, so lässt sich die DGL separieren und reduziert sich auf die Lösung des Integrals \ref{kra:equation:case1_int}. +\begin{equation} + y' = fy^2 + gy + h +\end{equation} +\begin{equation} + \frac{dy}{dx} = fy^2 + gy + h +\end{equation} +\begin{equation} \label{kra:equation:case1_int} + \int \frac{dy}{fy^2 + gy + h} = \int dx +\end{equation} + +\subsubsection{Fall 2: Bekannte spezielle Lösung} +Kennt man eine spezielle Lösung $y_p$ so kann die riccatische DGL mit Hilfe einer Substitution auf eine lineare Gleichung reduziert werden. +Wir wählen als Substitution +\begin{equation} \label{kra:equation:substitution} + z = \frac{1}{y - y_p} +\end{equation} +durch Umstellen von \ref{kra:equation:substitution} folgt +\begin{equation} + y = y_p + \frac{1}{z^2} \label{kra:equation:backsubstitution} +\end{equation} +\begin{equation} + y' = y_p' - \frac{1}{z^2}z' +\end{equation} +mit Einsetzten in die DGL \ref{kra:equation:riccati} folgt +\begin{equation} + y_p' - \frac{1}{z^2}z' = f(x)(y_p + \frac{1}{z}) + g(x)(y_p + \frac{1}{z})^2 + h(x) +\end{equation} +\begin{equation} + -z^{2}y_p' + z' = -z^2\underbrace{(y_{p}f(x) + g(x)y_p^2 + h(x))}_{y_p'} - z(f(x) + 2y_{p}g(x)) - g(x) +\end{equation} +was uns direkt auf eine lineare Differentialgleichung 1.Ordnung führt. +\begin{equation} + z' = -z(f(x) + 2y_{p}g(x)) - g(x) +\end{equation} +Diese kann nun mit den Methoden zur Lösung von linearen Differentialgleichungen 1.Ordnung gelöst werden. +Durch die Rücksubstitution \ref{kra:equation:backsubstitution} erhält man dann die Lösung von \ref{kra:equation:riccati}. + +\subsection{Matrix-Riccati Differentialgleichung} \label{kra:loesung:riccati} +% Lösung matrix riccati +Die Lösung der Matrix-Riccati Gleichung \ref{kra:equation:matrixriccati} erhalten wir nach \cite{kra:kalmanisae} folgendermassen +\begin{equation} + \label{kra:matrixriccati-solution} + \begin{pmatrix} + X(t) \\ + Y(t) + \end{pmatrix} + = + \Phi(t_0, t) + \begin{pmatrix} + I(t) \\ + U_0(t) + \end{pmatrix} + = + \begin{pmatrix} + \Phi_{11}(t_0, t) & \Phi_{12}(t_0, t) \\ + \Phi_{21}(t_0, t) & \Phi_{22}(t_0, t) + \end{pmatrix} + \begin{pmatrix} + I(t) \\ + U_0(t) + \end{pmatrix} +\end{equation} +\begin{equation} + U(t) = + \begin{pmatrix} + \Phi_{21}(t_0, t) + \Phi_{22}(t_0, t) + \end{pmatrix} + \begin{pmatrix} + \Phi_{11}(t_0, t) + \Phi_{12}(t_0, t) + \end{pmatrix} + ^{-1} +\end{equation} +wobei $\Phi(t, t_0)$ die sogenannte Zustandsübergangsmatrix ist. +\begin{equation} + \Phi(t_0, t) = e^{H(t - t_0)} +\end{equation} diff --git a/buch/papers/kra/main.tex b/buch/papers/kra/main.tex index fcee25b..a84ebaf 100644 --- a/buch/papers/kra/main.tex +++ b/buch/papers/kra/main.tex @@ -3,34 +3,12 @@ % % (c) 2020 Hochschule Rapperswil % -\chapter{Kalman, Riccati und Abel\label{chapter:kra}} -\lhead{Kalman, Riccati und Abel} +\chapter{Riccati Differentialgleichung\label{chapter:kra}} +\lhead{Riccati Differentialgleichung} \begin{refsection} - \chapterauthor{Samuel Niederer} - - Ein paar Hinweise für die korrekte Formatierung des Textes - \begin{itemize} - \item - Absätze werden gebildet, indem man eine Leerzeile einfügt. - Die Verwendung von \verb+\\+ ist nur in Tabellen und Arrays gestattet. - \item - Die explizite Platzierung von Bildern ist nicht erlaubt, entsprechende - Optionen werden gelöscht. - Verwenden Sie Labels und Verweise, um auf Bilder hinzuweisen. - \item - Beginnen Sie jeden Satz auf einer neuen Zeile. - Damit ermöglichen Sie dem Versionsverwaltungssysteme, Änderungen - in verschiedenen Sätzen von verschiedenen Autoren ohne Konflikt - anzuwenden. - \item - Bilden Sie auch für Formeln kurze Zeilen, einerseits der besseren - Übersicht wegen, aber auch um GIT die Arbeit zu erleichtern. - \end{itemize} - - \input{papers/kra/teil0.tex} - \input{papers/kra/teil1.tex} - \input{papers/kra/teil2.tex} - \input{papers/kra/teil3.tex} - - \printbibliography[heading=subbibliography] + \chapterauthor{Samuel Niederer} + \input{papers/kra/einleitung.tex} + \input{papers/kra/loesung.tex} + \input{papers/kra/anwendung.tex} + \printbibliography[heading=subbibliography] \end{refsection} diff --git a/buch/papers/kra/packages.tex b/buch/papers/kra/packages.tex index df34dcf..56c48d9 100644 --- a/buch/papers/kra/packages.tex +++ b/buch/papers/kra/packages.tex @@ -8,3 +8,11 @@ % following example %\usepackage{packagename} +%\usepackage{physics} +\usepackage[outline]{contour} +\pgfplotsset{compat=1.16} +\usetikzlibrary{patterns} +\usetikzlibrary{snakes} +\usetikzlibrary{arrows.meta} +\usetikzlibrary{decorations} +\usetikzlibrary{decorations.markings} diff --git a/buch/papers/kra/presentation/presentation.tex b/buch/papers/kra/presentation/presentation.tex new file mode 100644 index 0000000..eb6541b --- /dev/null +++ b/buch/papers/kra/presentation/presentation.tex @@ -0,0 +1,491 @@ +\documentclass[ngerman, aspectratio=169, xcolor={rgb}]{beamer} + +% style +\mode<presentation>{ + \usetheme{Frankfurt} +} +%packages +\usepackage[utf8]{inputenc}\DeclareUnicodeCharacter{2212}{-} +\usepackage[english]{babel} +\usepackage{graphicx} +\usepackage{array} + +\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}} +\usepackage{ragged2e} + +\usepackage{bm} % bold math +\usepackage{amsfonts} +\usepackage{amssymb} +\usepackage{mathtools} +\usepackage{amsmath} +\usepackage{multirow} % multi row in tables +\usepackage{booktabs} %toprule midrule bottomrue in tables +\usepackage{scrextend} +\usepackage{textgreek} +\usepackage[rgb]{xcolor} + +\usepackage[normalem]{ulem} % \sout + +\usepackage{ marvosym } % \Lightning + +\usepackage{multimedia} % embedded videos + +\usepackage{tikz} +\usepackage{pgf} +\usepackage{pgfplots} + +\usepackage{algorithmic} + +%citations +\usepackage[style=verbose,backend=biber]{biblatex} +\addbibresource{references.bib} + + +%math font +\usefonttheme[onlymath]{serif} + +%Beamer Template modifications +%\definecolor{mainColor}{HTML}{0065A3} % HSR blue +\definecolor{mainColor}{HTML}{D72864} % OST pink +\definecolor{invColor}{HTML}{28d79b} % OST pink +\definecolor{dgreen}{HTML}{38ad36} % Dark green + +%\definecolor{mainColor}{HTML}{000000} % HSR blue +\setbeamercolor{palette primary}{bg=white,fg=mainColor} +\setbeamercolor{palette secondary}{bg=orange,fg=mainColor} +\setbeamercolor{palette tertiary}{bg=yellow,fg=red} +\setbeamercolor{palette quaternary}{bg=mainColor,fg=white} %bg = Top bar, fg = active top bar topic +\setbeamercolor{structure}{fg=black} % itemize, enumerate, etc (bullet points) +\setbeamercolor{section in toc}{fg=black} % TOC sections +\setbeamertemplate{section in toc}[sections numbered] +\setbeamertemplate{subsection in toc}{% + \hspace{1.2em}{$\bullet$}~\inserttocsubsection\par} + +\setbeamertemplate{itemize items}[circle] +\setbeamertemplate{description item}[circle] +\setbeamertemplate{title page}[default][colsep=-4bp,rounded=true] +\beamertemplatenavigationsymbolsempty + +\setbeamercolor{footline}{fg=gray} +\setbeamertemplate{footline}{% + \hfill\usebeamertemplate***{navigation symbols} + \hspace{0.5cm} + \insertframenumber{}\hspace{0.2cm}\vspace{0.2cm} +} + +\usepackage{caption} +\captionsetup{labelformat=empty} + +%Title Page +\title{KRA} +\subtitle{Kalman Riccati Abel} +\author{Samuel Niederer} +% \institute{OST Ostschweizer Fachhochschule} +% \institute{\includegraphics[scale=0.3]{../img/ost_logo.png}} +\date{\today} + +\input{../packages.tex} + +\newcommand*{\QED}{\hfill\ensuremath{\blacksquare}}% + +\newcommand*{\HL}{\textcolor{mainColor}} +\newcommand*{\RD}{\textcolor{red}} +\newcommand*{\BL}{\textcolor{blue}} +\newcommand*{\GN}{\textcolor{dgreen}} +\newcommand{\dt}[0]{\frac{d}{dt}} + +\definecolor{darkgreen}{rgb}{0,0.6,0} + + +\makeatletter +\newcount\my@repeat@count +\newcommand{\myrepeat}[2]{% + \begingroup + \my@repeat@count=\z@ + \@whilenum\my@repeat@count<#1\do{#2\advance\my@repeat@count\@ne}% + \endgroup +} +\makeatother + +\usetikzlibrary{automata,arrows,positioning,calc,shapes.geometric, fadings} + +\begin{document} + +\begin{frame} + \titlepage +\end{frame} + +\begin{frame} + \frametitle{Content} + \tableofcontents +\end{frame} + +\section{Einführung} + +\begin{frame} + \begin{itemize} + \item<1|only@1> \textbf{K}alman + \item<1|only@1> \textbf{R}iccati + \item<1|only@1> \textbf{A}bel + + \item<2|only@2> \textcolor{red}{\sout{\textbf{K}alman}} + \item<2|only@2> \textbf{R}iccati + \item<2|only@2> \textbf{A}bel + + \item<3|only@3> \textcolor{red}{\sout{\textbf{K}alman}} \textcolor{green}{Federmassesytem} + \item<3|only@3> \textbf{R}iccati + \item<3|only@3> \textbf{A}bel + + \item<4|only@4> \textcolor{red}{\sout{\textbf{K}alman}} \textcolor{green}{Federmassesytem} + \item<4|only@4> \textbf{R}iccati + \item<4|only@4> \uwave{\textbf{A}bel} + \end{itemize} +\end{frame} + +\section{Riccati} + +\begin{frame} + \frametitle{Riccatische Differentialgleichung} + \begin{equation*} + % y'(x) = f(x)y^2(x) + g(x)y(x) + h(x) + x'(t) = f(t)x^2(t) + g(t)x(t) + h(t) + \end{equation*} + + \pause + + \begin{equation*} + \dot{X}(t) = - X(t)BX(t) - X(t)A + DX(t) + C + \end{equation*} + + % \pause + % Anwendungen + % \begin{itemize} + % \item Zeitkontinuierlicher Kalmanfilter + % \item Regelungstechnik LQ-Regler + % \item Federmassesyteme + % \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Auftreten der Gleichung} + \begin{columns} + \column{0.4 \textwidth} + \begin{equation*} + \dt + \begin{pmatrix} + X \\ + Y + \end{pmatrix} + = + \underbrace{ + \begin{pmatrix} + A & B \\ + C & D + \end{pmatrix} + }_{H} + \begin{pmatrix} + X \\ + Y + \end{pmatrix} + \end{equation*} + + \pause + + \column{0.4 \textwidth} + \begin{equation*} + U = YX^{-1} \qquad \dt U = ? + \end{equation*} + \end{columns} + + \pause + + \begin{align*} + \dt U & = \dot{Y} X^{-1} + Y \dt X^{-1} \\ + \uncover<4->{ & = (CX + DY) X^{-1} - Y (X^{-1} \dot{X} X^{-1})\\} + \uncover<5->{ & = C\underbrace{XX^{-1}}_\text{I} + D\underbrace{YX^{-1}}_\text{U} - Y(X^{-1} (AX + BY) X^{-1})\\} + \uncover<6->{ & = C + DU - \underbrace{YX^{-1}}_\text{U}(A\underbrace{XX^{-1}}_\text{I} + B\underbrace{YX^{-1}}_\text{U})\\} + \uncover<7->{ & = C + DU - UA - UBU} + \end{align*} +\end{frame} + +\begin{frame} + \frametitle{Lösen der Gleichung} + \begin{equation*} + \begin{pmatrix} + X(t) \\ + Y(t) + \end{pmatrix} + = + \Phi(t_0, t) + \begin{pmatrix} + I(t) \\ + U_0(t) + \end{pmatrix} + = + \begin{pmatrix} + \Phi_{11}(t_0, t) & \Phi_{12}(t_0, t) \\ + \Phi_{21}(t_0, t) & \Phi_{22}(t_0, t) + \end{pmatrix} + \begin{pmatrix} + I(t) \\ + U_0(t) + \end{pmatrix} + \end{equation*} + + \pause + + \begin{equation*} + U(t) = + \begin{pmatrix} + \Phi_{21}(t_0, t) + \Phi_{22}(t_0, t) U_0(t) + \end{pmatrix} + \begin{pmatrix} + \Phi_{11}(t_0, t) + \Phi_{12}(t_0, t) U_0(t) + \end{pmatrix} + ^{-1} + \end{equation*} + + \pause + + % wobei $\Phi(t, t_0)$ die sogennante Zustandsübergangsmatrix ist. + + \begin{equation*} + \Phi(t_0, t) = e^{H(t - t_0)} + \end{equation*} +\end{frame} + +\section{Federmassystem} +\begin{frame} + \frametitle{Federmassesystem} + \begin{columns} + \column{0.5 \textwidth} + \input{../images/simple_mass_spring.tex} + + \column{0.5 \textwidth} + \begin{align*} + \uncover<2->{F_R & = k \Delta_x \\} + \uncover<3->{F_a & = am = \ddot{x} m \\} + \uncover<4->{F_R & = F_a \Leftrightarrow k \Delta_x = \ddot{x} m\\} + \uncover<5->{\ddot{x} & = \frac{k \Delta_x}{m} \\} + \uncover<6->{x(t) & = A \cos(\omega_0 + \Phi), \quad \omega_0 = \sqrt{\frac{k}{m}}} + \end{align*} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Phasenraum} + \begin{columns} + \column{0.3 \textwidth} + \begin{tikzpicture}[scale=3] + \draw[->, thick] (0, 0) -- (1,0) node[right] {$q$}; + \draw[->, thick] (0.5, -0.5) -- (0.5,0.5) node[above]{$p$}; + \end{tikzpicture} + \column{0.7 \textwidth} + Impulskoordinaten $p = (p_{1}, p_{2}, ..., p_{n}), \quad p=mv$ \\ + Ortskoordinaten $q = (q_{1}, q_{2}, ..., q_{n})$ \\ + + + + \begin{align*} + \uncover<2->{\mathcal{H}(q, p) & = \underbrace{T(p)}_{E_{kin}} + \underbrace{V(q)}_{E_{pot}} = E_{tot} \\} + \uncover<3->{ & = \frac{p^2}{2m}+ \frac{k q^2}{2}} + \end{align*} + + + + \begin{equation*} + \uncover<4->{ + \dot{q_{k}} = \frac{\partial \mathcal{H}}{\partial p_k} + \qquad + \dot{p_{k}} = -\frac{\partial \mathcal{H}}{\partial q_k} + } + \end{equation*} + + \pause + + \begin{equation*} + \uncover<5->{ + \begin{pmatrix} + \dot{q} \\ + \dot{p} + \end{pmatrix} + = + \begin{pmatrix} + 0 & \frac{1}{m} \\ + -k & 0 + \end{pmatrix} + \begin{pmatrix} + q \\ + p + \end{pmatrix} + } + \end{equation*} + + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Phasenraum} + \input{../images/phase_space.tex} +\end{frame} + +\begin{frame} + \frametitle{Federmassesystem} + \begin{columns} + \column{0.6 \textwidth} + \scalebox{0.8}{\input{../images/multi_mass_spring.tex}} + \begin{align*} + \uncover<2->{\mathcal{H} & = T + V \\} + \uncover<7->{ & = \frac{p_1^2}{2m_1} + \frac{p_2^2}{2m_2} + \frac{k_1 q_1^2}{2} + \frac{k_c (q_2 - q_1)^2}{2} + \frac{k_2 q_2^2}{2}} + \end{align*} + + \column{0.4 \textwidth} + \begin{align*} + \uncover<3->{T & = T_1 + T_2} \\ + \uncover<5->{ & = \frac{p_1^2}{2m_1} + \frac{p_2^2}{2m_2} } \\ + \uncover<4->{V & = V_1 + V_c + V_2 } \\ + \uncover<6->{ & = \frac{k_1 q_1^2}{2} + \frac{k_c (q_2 - q_1)^2}{2} + \frac{k_2 q_2^2}{2}} + \end{align*} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{Federmassesystem} + \begin{equation*} + \begin{pmatrix} + \dot{q_1} \\ + \dot{q_2} \\ + \dot{p_1} \\ + \dot{p_2} \\ + \end{pmatrix} + = + \begin{pmatrix} + 0 & 0 & \frac{1}{2m_1} & 0 \\ + 0 & 0 & 0 & \frac{1}{2m_2} \\ + -(k_1 + k_c) & k_c & 0 & 0 \\ + k_c & -(k_c + k_2) & 0 & 0 \\ + \end{pmatrix} + \begin{pmatrix} + q_1 \\ + q_2 \\ + p_1 \\ + p_2 \\ + \end{pmatrix} + \Leftrightarrow + \dt + \begin{pmatrix} + Q \\ + P \\ + \end{pmatrix} + \underbrace{ + \begin{pmatrix} + 0 & M \\ + K & 0 + \end{pmatrix} + }_{H} + \begin{pmatrix} + Q \\ + P \\ + \end{pmatrix} + \end{equation*} + + \pause + + $U = PQ^{-1} \qquad \dt U = ?$ + + \pause + + \begin{align*} + \dt U & = C + DU - UA - UBU \\ + & = K - UMU + \end{align*} + +\end{frame} + +\begin{frame} + \frametitle{Einfluss der Anfangsbedingung:} + \begin{columns} + \column{0.4 \textwidth} + \begin{equation*} + \uncover<2->{q_0 = + \begin{pmatrix} + q_{10} \\ + q_{20} + \end{pmatrix} + = + \begin{pmatrix} + 3 \\ + 1 + \end{pmatrix} + } + \end{equation*} + \begin{equation*} + \uncover<3->{q_0 = + \begin{pmatrix} + q_{10} \\ + q_{20} + \end{pmatrix} + = + \begin{pmatrix} + 3 \\ + 3 + \end{pmatrix} + } + \end{equation*} + \begin{equation*} + \uncover<4->{q_0 = + \begin{pmatrix} + q_{10} \\ + q_{20} + \end{pmatrix} + = + \begin{pmatrix} + 2 \\ + -2 + \end{pmatrix} + } + \end{equation*} + \column{0.6 \textwidth} + \scalebox{0.8}{\input{../images/multi_mass_spring.tex}} + \end{columns} +\end{frame} + +\section{Schlussteil} +\begin{frame} + \frametitle{Zusammenfassung} + \begin{itemize} + \pause + \item{Riccatische Differentialgleichung} + \pause + \begin{itemize} + \item{Ausgansgleichung} + \pause + \item{Lösung} + \end{itemize} + \pause + \item{Harmonischer Ozillator} + \pause + \begin{itemize} + \item{Hamiltonfunktion} + \pause + \item{Phasenraum} + \end{itemize} + \pause + \item{Gekoppelter harmonischer Ozillator} + \pause + \begin{itemize} + \item{Riccatische Differentialgleichung} + \pause + \item{Einfluss der Anfangsbedingungen} + \end{itemize} + \pause + \item{\uwave{Abel}} + \begin{itemize} + \pause + \item{Nichtlineare Federkonstante} + \end{itemize} + + \end{itemize} +\end{frame} + +\end{document} diff --git a/buch/papers/kra/references.bib b/buch/papers/kra/references.bib index f13c3d8..a9a8ede 100644 --- a/buch/papers/kra/references.bib +++ b/buch/papers/kra/references.bib @@ -4,32 +4,42 @@ % (c) 2020 Autor, Hochschule Rapperswil % -@online{kra:bibtex, - title = {BibTeX}, - url = {https://de.wikipedia.org/wiki/BibTeX}, - date = {2020-02-06}, - year = {2020}, - month = {2}, - day = {6} +@misc{kra:riccati, +title = {Riccatische Differentialgleichung}, +url = {https://de.wikipedia.org/wiki/Riccatische_Differentialgleichung}, +date = {2022-05-26} } -@book{kra:numerical-analysis, - title = {Numerical Analysis}, - author = {David Kincaid and Ward Cheney}, - publisher = {American Mathematical Society}, - year = {2002}, - isbn = {978-8-8218-4788-6}, - inseries = {Pure and applied undegraduate texts}, - volume = {2} +@misc{kra:ethz, +author = {Ch. Roduner}, +title = {Die-Riccati-Gleichung}, +url = {https://www.imrtweb.ethz.ch/users/geering/Riccati.pdf}, +date = {2022-05-26} } -@article{kra:mendezmueller, - author = { Tabea Méndez and Andreas Müller }, - title = { Noncommutative harmonic analysis and image registration }, - journal = { Appl. Comput. Harmon. Anal.}, - year = 2019, - volume = 47, - pages = {607--627}, - url = {https://doi.org/10.1016/j.acha.2017.11.004} +@online{kra:hamilton, + title = {Hamilton-Funktion}, + url = {https://de.wikipedia.org/wiki/Hamilton-Funktion}, + date = {2022-05-26} } +@misc{kra:kanonischegleichungen, + title = {Kanonische Gleichungen}, + url = {https://de.wikipedia.org/wiki/Kanonische_Gleichungen}, + date = {2022-05-26} +} + +@misc{kra:newton, + title = {Newtonsche Gesetze}, + url = {https://de.wikipedia.org/wiki/Newtonsche_Gesetze}, + date = {2022-05-26} +} + +@misc{kra:kalmanisae, + author = {D.Alazard}, + title = {Introduction to Kalman filtering}, + url = {https://pagespro.isae-supaero.fr/IMG/pdf/introKalman_e_151211.pdf}, + date = {2022-05-26} +} + + diff --git a/buch/papers/kra/scripts/animation.py b/buch/papers/kra/scripts/animation.py new file mode 100644 index 0000000..5e805ae --- /dev/null +++ b/buch/papers/kra/scripts/animation.py @@ -0,0 +1,243 @@ +import numpy as np
+import matplotlib.pyplot as plt
+import matplotlib.patches
+import matplotlib.transforms
+import matplotlib.text
+from matplotlib.animation import FuncAnimation
+import imageio
+
+from simulation import Simulation
+
+
+class Mass:
+ def __init__(self, x_0, width, height, **kwargs):
+ self._x_0 = x_0
+ xy = (x_0, 0)
+ self._rect = matplotlib.patches.Rectangle(xy, width, height, **kwargs)
+
+ @property
+ def patch(self):
+ return self._rect
+
+ @property
+ def x(self):
+ return self._rect.get_x()
+
+ @property
+ def width(self):
+ return self._rect.get_width()
+
+ def move(self, x):
+ self._rect.set_x(self._x_0 + x)
+
+
+class Spring:
+ def __init__(self, n, height, ax, resolution=1000, **kwargs):
+ self._n = n
+ self._height = height
+ self._N = resolution
+ (self._line,) = ax.plot([], [], "-", **kwargs)
+
+ def set(self, x_0, x_1):
+ T = (x_1 - x_0) / self._n
+ x = np.linspace(x_0, x_1, self._N, endpoint=True)
+ t = np.linspace(0, x_1 - x_0, self._N)
+ y = (np.sin(2 * np.pi * t / T) + 1.5) * self._height / 2
+ self.line.set_data(x, y)
+
+ @property
+ def line(self):
+ return self._line
+
+
+class LinePlot:
+ def __init__(self, ax, **kwargs):
+ (self._line,) = ax.plot([], [], "-", **kwargs)
+ self._x = []
+ self._y = []
+
+ @property
+ def line(self):
+ return self._line
+
+ def update(self, x, y):
+ self._x.append(x)
+ self._y.append(y)
+ self._line.set_data(self._x, self._y)
+
+
+class ScatterPlot:
+ def __init__(self, ax, **kwargs):
+ self._color = kwargs.get("color", "tab:green")
+ self._line = ax.scatter([], [], **kwargs)
+ self._ax = ax
+ self._x = []
+ self._y = []
+
+ @property
+ def line(self):
+ return self._line
+
+ def update(self, x, y, **kwargs):
+ self._x.append(x)
+ self._y.append(y)
+ self._line.remove()
+ self._line = self._ax.scatter(self._x, self._y, color=self._color, **kwargs)
+
+
+class QuiverPlot:
+ def __init__(self, ax, **kwargs):
+ self.x = []
+ self.y = []
+ self.u = []
+ self.v = []
+ self.ax = ax
+ self.ln = self.ax.quiver([], [], [], [])
+
+ def update(self, x, y, u, v):
+ self.x.append(x)
+ self.y.append(y)
+ self.u.append(u)
+ self.v.append(v)
+ self.ln.remove()
+ self.ln = self.ax.quiver(self.x, self.y, self.u, self.v)
+
+ @property
+ def line(self):
+ return self.ln
+
+
+anim_folder = "anim_0"
+img_counter = 0
+
+sim = Simulation()
+params = {
+ "x_0": [2, -2],
+ "k_1": 1,
+ "k_c": 2,
+ "k_2": 1,
+ "m_1": 0.5,
+ "m_2": 0.5,
+}
+
+time = 2.1
+
+
+# create axis
+fig = plt.figure(figsize=(20, 15), constrained_layout=True)
+fig.suptitle(
+ " ,".join([f"${key} = {val}$" for (key, val) in params.items()]), fontsize=20
+)
+spec = fig.add_gridspec(3, 4)
+ax0 = fig.add_subplot(spec[-1, :])
+ax1 = fig.add_subplot(spec[:-1, :2])
+ax2 = fig.add_subplot(spec[:-1, 2:])
+
+ax0.set_yticks([])
+
+mass_height = 0.5
+spring_height = 0.6 * mass_height
+x_max = 21
+y_max = 2 * mass_height
+
+mass_1 = Mass(
+ 7,
+ 2,
+ mass_height,
+ color="tab:red",
+)
+mass_2 = Mass(14, 2, mass_height, color="tab:blue")
+masses = [mass_1, mass_2]
+patches = [mass.patch for mass in masses]
+
+spring_1 = Spring(4, spring_height, ax0, color="tab:red", linewidth=10)
+spring_2 = Spring(4, spring_height, ax0, color="tab:gray", linewidth=10)
+spring_3 = Spring(4, spring_height, ax0, color="tab:blue", linewidth=10)
+springs = [spring_1, spring_2, spring_3]
+
+linePlot_1 = LinePlot(ax1, color="tab:red", label="$m_1$", alpha=1)
+linePlot_2 = LinePlot(ax1, color="tab:blue", label="$m_2$", alpha=1)
+linePlots = [linePlot_1, linePlot_2]
+
+# quiverPlot = QuiverPlot(ax2)
+scatterPlot = ScatterPlot(ax2)
+
+lines = [spring.line for spring in springs]
+lines.extend([plot.line for plot in linePlots])
+# lines.append(quiverPlot.line)
+lines.append(scatterPlot.line)
+
+objects = lines + patches
+
+ax0.plot(
+ np.repeat(mass_1.x, 2),
+ [0, y_max],
+ "--",
+ color="tab:red",
+ label="Ruhezustand $m_1$",
+)
+ax0.plot(
+ np.repeat(mass_2.x, 2),
+ [0, y_max],
+ "--",
+ color="tab:blue",
+ label="Ruhezustand $m_2$",
+)
+
+
+def init():
+ ax0.set_xlim(0, x_max)
+ ax0.set_ylim(0, y_max)
+
+ ax1.set_xlim(0, time)
+ ax1.set_ylim(-4, 4)
+ ax1.set_xlabel("time", fontsize=20)
+ ax1.set_ylabel("$q$", fontsize=20)
+
+ ax2.set_xlim(-4, 4)
+ ax2.set_ylim(-4, 4)
+ ax2.set_xlabel("$q_1$", fontsize=20)
+ ax2.set_ylabel("$q_2$", fontsize=20)
+
+ for patch in patches:
+ ax0.add_patch(patch)
+
+ spring_1.set(0, mass_1.x)
+ spring_2.set(mass_1.x + mass_1.width, mass_2.x)
+ spring_2.set(mass_2.x + mass_2.width, x_max)
+
+ return objects
+
+
+def update(frame):
+ global img_counter
+ x_1, x_2 = sim(frame, **params)
+
+ mass_1.move(x_1)
+ mass_2.move(x_2)
+
+ spring_1.set(0, mass_1.x)
+ spring_2.set(mass_1.x + mass_1.width, mass_2.x)
+ spring_3.set(mass_2.x + mass_2.width, x_max)
+
+ linePlot_1.update(frame, x_1)
+ linePlot_2.update(frame, x_2)
+
+ scatterPlot.update(x_1, x_2, alpha=0.25)
+
+ img_counter += 1
+ return objects
+
+
+anim = FuncAnimation(
+ fig,
+ update,
+ frames=np.linspace(0, time, int(time * 30)),
+ init_func=init,
+ blit=False,
+)
+
+ax0.legend(fontsize=20)
+ax1.legend(fontsize=20)
+FFwriter = matplotlib.animation.FFMpegWriter(fps=30)
+anim.save("animation.mp4", writer=FFwriter)
diff --git a/buch/papers/kra/scripts/simulation.py b/buch/papers/kra/scripts/simulation.py new file mode 100644 index 0000000..8bccb6a --- /dev/null +++ b/buch/papers/kra/scripts/simulation.py @@ -0,0 +1,40 @@ +import sympy as sp
+
+
+class Simulation:
+ def __init__(self):
+ self.k_1, self.k_2, self.k_c = sp.symbols("k_1 k_2 k_c")
+ self.m_1, self.m_2 = sp.symbols("m_1 m_2")
+ self.t = sp.symbols("t")
+ K = sp.Matrix(
+ [[-(self.k_1 + self.k_c), self.k_c], [self.k_c, -(self.k_2 + self.k_c)]]
+ )
+ M = sp.Matrix([[1 / self.m_1, 0], [0, 1 / self.m_2]])
+ A = M * K
+
+ self.eigenvecs = []
+ self.eigenvals = []
+ for ev, mult, vecs in A.eigenvects():
+ self.eigenvecs.append(sp.Matrix(vecs))
+ self.eigenvals.extend([ev] * mult)
+
+ def __call__(self, t, x_0, k_1, k_c, k_2, m_1, m_2):
+ params = {
+ self.k_1: k_1,
+ self.k_c: k_c,
+ self.k_2: k_2,
+ self.m_1: m_1,
+ self.m_2: m_2,
+ }
+ x_0 = sp.Matrix(x_0)
+ eig_mat = sp.Matrix.hstack(*self.eigenvecs).subs(params)
+ g = eig_mat.inv() * x_0
+ L = sp.Matrix(
+ [
+ g[0] * sp.cos(self.eigenvals[0].subs(params) * self.t),
+ g[1] * sp.cos(self.eigenvals[1].subs(params) * self.t),
+ ]
+ )
+ x = eig_mat * L
+ f = sp.lambdify(self.t, x, "numpy")
+ return f(t).squeeze()
diff --git a/buch/papers/kra/teil0.tex b/buch/papers/kra/teil0.tex deleted file mode 100644 index d06a055..0000000 --- a/buch/papers/kra/teil0.tex +++ /dev/null @@ -1,22 +0,0 @@ -% -% einleitung.tex -- Beispiel-File für die Einleitung -% -% (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil -% -\section{Teil 0\label{kra:section:teil0}} -\rhead{Teil 0} -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam -erat, sed diam voluptua \cite{kra:bibtex}. -At vero eos et accusam et justo duo dolores et ea rebum. -Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum -dolor sit amet. - -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam -erat, sed diam voluptua. -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita -kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit -amet. - - diff --git a/buch/papers/kra/teil1.tex b/buch/papers/kra/teil1.tex deleted file mode 100644 index 0c0977d..0000000 --- a/buch/papers/kra/teil1.tex +++ /dev/null @@ -1,55 +0,0 @@ -% -% teil1.tex -- Beispiel-File für das Paper -% -% (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil -% -\section{Teil 1 -\label{kra:section:teil1}} -\rhead{Problemstellung} -Sed ut perspiciatis unde omnis iste natus error sit voluptatem -accusantium doloremque laudantium, totam rem aperiam, eaque ipsa -quae ab illo inventore veritatis et quasi architecto beatae vitae -dicta sunt explicabo. -Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit -aut fugit, sed quia consequuntur magni dolores eos qui ratione -voluptatem sequi nesciunt -\begin{equation} -\int_a^b x^2\, dx -= -\left[ \frac13 x^3 \right]_a^b -= -\frac{b^3-a^3}3. -\label{kra:equation1} -\end{equation} -Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, -consectetur, adipisci velit, sed quia non numquam eius modi tempora -incidunt ut labore et dolore magnam aliquam quaerat voluptatem. - -Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis -suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? -Quis autem vel eum iure reprehenderit qui in ea voluptate velit -esse quam nihil molestiae consequatur, vel illum qui dolorem eum -fugiat quo voluptas nulla pariatur? - -\subsection{De finibus bonorum et malorum -\label{kra:subsection:finibus}} -At vero eos et accusamus et iusto odio dignissimos ducimus qui -blanditiis praesentium voluptatum deleniti atque corrupti quos -dolores et quas molestias excepturi sint occaecati cupiditate non -provident, similique sunt in culpa qui officia deserunt mollitia -animi, id est laborum et dolorum fuga \eqref{000tempmlate:equation1}. - -Et harum quidem rerum facilis est et expedita distinctio -\ref{kra:section:loesung}. -Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil -impedit quo minus id quod maxime placeat facere possimus, omnis -voluptas assumenda est, omnis dolor repellendus -\ref{kra:section:folgerung}. -Temporibus autem quibusdam et aut officiis debitis aut rerum -necessitatibus saepe eveniet ut et voluptates repudiandae sint et -molestiae non recusandae. -Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis -voluptatibus maiores alias consequatur aut perferendis doloribus -asperiores repellat. - - diff --git a/buch/papers/kra/teil2.tex b/buch/papers/kra/teil2.tex deleted file mode 100644 index 249f078..0000000 --- a/buch/papers/kra/teil2.tex +++ /dev/null @@ -1,40 +0,0 @@ -% -% teil2.tex -- Beispiel-File für teil2 -% -% (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil -% -\section{Teil 2 -\label{kra:section:teil2}} -\rhead{Teil 2} -Sed ut perspiciatis unde omnis iste natus error sit voluptatem -accusantium doloremque laudantium, totam rem aperiam, eaque ipsa -quae ab illo inventore veritatis et quasi architecto beatae vitae -dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit -aspernatur aut odit aut fugit, sed quia consequuntur magni dolores -eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam -est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci -velit, sed quia non numquam eius modi tempora incidunt ut labore -et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima -veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, -nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure -reprehenderit qui in ea voluptate velit esse quam nihil molestiae -consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla -pariatur? - -\subsection{De finibus bonorum et malorum -\label{kra:subsection:bonorum}} -At vero eos et accusamus et iusto odio dignissimos ducimus qui -blanditiis praesentium voluptatum deleniti atque corrupti quos -dolores et quas molestias excepturi sint occaecati cupiditate non -provident, similique sunt in culpa qui officia deserunt mollitia -animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis -est et expedita distinctio. Nam libero tempore, cum soluta nobis -est eligendi optio cumque nihil impedit quo minus id quod maxime -placeat facere possimus, omnis voluptas assumenda est, omnis dolor -repellendus. Temporibus autem quibusdam et aut officiis debitis aut -rerum necessitatibus saepe eveniet ut et voluptates repudiandae -sint et molestiae non recusandae. Itaque earum rerum hic tenetur a -sapiente delectus, ut aut reiciendis voluptatibus maiores alias -consequatur aut perferendis doloribus asperiores repellat. - - diff --git a/buch/papers/kra/teil3.tex b/buch/papers/kra/teil3.tex deleted file mode 100644 index 2515c7d..0000000 --- a/buch/papers/kra/teil3.tex +++ /dev/null @@ -1,40 +0,0 @@ -% -% teil3.tex -- Beispiel-File für Teil 3 -% -% (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil -% -\section{Teil 3 -\label{kra:section:teil3}} -\rhead{Teil 3} -Sed ut perspiciatis unde omnis iste natus error sit voluptatem -accusantium doloremque laudantium, totam rem aperiam, eaque ipsa -quae ab illo inventore veritatis et quasi architecto beatae vitae -dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit -aspernatur aut odit aut fugit, sed quia consequuntur magni dolores -eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam -est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci -velit, sed quia non numquam eius modi tempora incidunt ut labore -et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima -veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, -nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure -reprehenderit qui in ea voluptate velit esse quam nihil molestiae -consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla -pariatur? - -\subsection{De finibus bonorum et malorum -\label{kra:subsection:malorum}} -At vero eos et accusamus et iusto odio dignissimos ducimus qui -blanditiis praesentium voluptatum deleniti atque corrupti quos -dolores et quas molestias excepturi sint occaecati cupiditate non -provident, similique sunt in culpa qui officia deserunt mollitia -animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis -est et expedita distinctio. Nam libero tempore, cum soluta nobis -est eligendi optio cumque nihil impedit quo minus id quod maxime -placeat facere possimus, omnis voluptas assumenda est, omnis dolor -repellendus. Temporibus autem quibusdam et aut officiis debitis aut -rerum necessitatibus saepe eveniet ut et voluptates repudiandae -sint et molestiae non recusandae. Itaque earum rerum hic tenetur a -sapiente delectus, ut aut reiciendis voluptatibus maiores alias -consequatur aut perferendis doloribus asperiores repellat. - - diff --git a/buch/papers/kreismembran/teil0.tex b/buch/papers/kreismembran/teil0.tex index 6f55358..c6dac06 100644 --- a/buch/papers/kreismembran/teil0.tex +++ b/buch/papers/kreismembran/teil0.tex @@ -5,18 +5,18 @@ % \section{Einleitung\label{kreismembran:section:teil0}} \rhead{Membran} -Eine Membran oder selten ein Schwingblatt ist laut Duden \cite{kreismembran:Duden:Membran} ein ``dünnes Blättchen aus Metall, Papier o. Ä., das durch seine Schwingungsfähigkeit geeignet ist, Schallwellen zu übertragen ...''. +Eine Membran oder selten ein Schwingblatt ist laut Duden \cite{kreismembran:Duden:Membran} ein ``dünnes Blättchen aus Metall, Papier o. Ä., das durch seine Schwingungsfähigkeit geeignet ist, Schallwellen zu übertragen \dots''. Ein dünnes Blättchen aus Metall zeig jedoch nicht die selben dynamischen Eigenschaften wie ein gespanntes Stück Papier. Beschreibt man das dynamische Verhalten, muss zwischen einer dünnen Platte und einer Membrane unterschieden werden \cite{kreismembran:membrane_vs_thin_plate}. Eine dünne Platte zum Beispiel aus Metall, wirkt selbst entgegen ihrer Deformation sobald sie gekrümmt wird. Eine Membran auf der anderen Seite besteht aus einem Material, welches sich ohne Kraftaufwand verbiegen lässt wie zum Beispiel Papier. -Bevor Papier als schwingende Membran betrachtet werden kann, wird jedoch noch eine Spannung $ T $ benötigt welche das Material daran hindert aus der Ruhelage gebracht zu werden. +Bevor Papier als schwingende Membran betrachtet werden kann, wird jedoch noch eine Spannung $ T $ benötigt, welche das Material daran hindert, aus der Ruhelage gebracht zu werden. Ein geläufiges Beispiel einer Kreismembran ist eine runde Trommel. Sie besteht herkömmlicherweise aus einem Leder (Fell), welches auf einen offenen Zylinder (Zargen) aufgespannt wird. Das Leder alleine erzeugt nach einem Aufschlag keine hörbaren Schwingungen. Sobald das Fell jedoch über den Zargen gespannt wird, kann das Fell auf verschiedensten Weisen weiter schwingen, was für den Klang der Trommel verantwortlich ist. -Wie genau diese Schwingungen untersucht werden können wird in der folgenden Arbeit diskutiert. +Wie genau diese Schwingungen untersucht werden können, wird in der folgenden Arbeit diskutiert. \subsection{Annahmen} \label{kreimembran:annahmen} @@ -36,8 +36,8 @@ Das untersuchte Modell erfüllt folgende Eigenschaften: \end{enumerate} -\subsection{Wellengleichung} Um die Wellengleichung einer Membran herzuleiten wird vorerst eine schwingende Saite betrachtet. -Es lohnt sich das Verhalten einer Saite zu beschreiben, da eine Saite das selbe Verhalten wie eine Membran aufweist mit dem Unterschied einer fehlenden Dimension. +\subsection{Wellengleichung} Um die Wellengleichung einer Membran herzuleiten, wird vorerst eine schwingende Saite betrachtet. +Es lohnt sich, das Verhalten einer Saite zu beschreiben, da eine Saite dasselbe Verhalten wie eine Membran aufweist, mit dem Unterschied einer fehlenden Dimension. Die Verbindung zwischen Membran und Saite ist intuitiv ersichtlich, stellt man sich einen Querschnitt einer Trommel vor. \begin{figure} @@ -48,9 +48,10 @@ Die Verbindung zwischen Membran und Saite ist intuitiv ersichtlich, stellt man s \end{center} \end{figure} -Abbildung \ref{kreismembran:im:Saite} ist ein infinitesimales Stück einer Saite mit Länge $ dx $ skizziert. -Wie für die Membran ist die Annahme iii) gültig, keine Bewegung in die Richtung $ \hat{x} $. -Um dies zu erfüllen muss der Punkt $ P_1 $ gleich stark in Richtung $ -\hat{x} $ gezogen werden wie der Punkt $ P_2 $ in Richtung $ \hat{x} $ gezogen wird. Ist $ T_1 $ die Kraft welche mit Winkel $ \alpha $ auf Punkt $ P_1 $ wirkt sowie $ T_2 $ und $ \beta$ das analoge für Punkt $ P_2 $ ist, so können die Kräfte +In Abbildung \ref{kreismembran:im:Saite} ist ein infinitesimales Stück einer Saite mit Länge $ dx $ skizziert. +Wie für die Membran ist die Annahme iii) gültig, es entsteht keine Bewegung entlang der $ x $-Achse. +Um dies zu erfüllen, muss der Punkt $ P_1 $ gleich stark entgegen der $ x $-Achse gezogen werden wie der Punkt $ P_2 $ in Richtung der $ x $-Achse gezogen wird. +Ist $ T_1 $ die Kraft, welche mit Winkel $ \alpha $ auf Punkt $ P_1 $ wirkt sowie $ T_2 $ und $ \beta$ das analoge für Punkt $ P_2 $ ist, so können die Kräfte \begin{equation}\label{kreismembran:eq:no_translation} T_1 \cos \alpha = T_2 \cos \beta = T \end{equation} @@ -81,9 +82,10 @@ Durch die Division mit $ dx $ entsteht \begin{equation*} \frac{1}{dx} \left[\frac{\partial u}{\partial x} \bigg|_{x_0 + dx} - \frac{\partial u}{\partial x} \bigg|_{x_0}\right] = \frac{\rho}{T}\frac{\partial^2 u}{\partial t^2}. \end{equation*} -Auf der linken Seite der Gleichung wird die Differenz der Steigungen durch die Intervalllänge geteilt, in anderen Worten die zweite Ableitung von $ u(x,t) $ nach $ x $ berechnet. +Auf der linken Seite der Gleichung wird die Differenz der Steigungen durch die Intervalllänge geteilt. +Wenn $ dx $ als unendlich kleines Stück betrachtet wird, ergibt sich als Grenzwert die zweite Ableitung von $ u(x,t) $ nach $ x $. Der Term $ \frac{\rho}{T} $ wird durch $ c^2 $ ersetzt, da der Bruch für eine gegebene Membran eine positive Konstante sein muss. -Somit resultiert die in der Literatur gebräuchliche Form +Damit resultiert die in der Literatur gebräuchliche Form \begin{equation} \label{kreismembran:Ausgang_DGL} \frac{1}{c^2}\frac{\partial^2u}{\partial t^2} = \Delta u. diff --git a/buch/papers/kreismembran/teil1.tex b/buch/papers/kreismembran/teil1.tex index f0d478f..f6ba7d1 100644 --- a/buch/papers/kreismembran/teil1.tex +++ b/buch/papers/kreismembran/teil1.tex @@ -23,7 +23,7 @@ Da es sich um eine Kreisscheibe handelt, werden Polarkoordinaten verwendet, so d \frac1r \frac{\partial}{\partial r} + - \frac{1}{r 2} + \frac{1}{r^2} \frac{\partial^2}{\partial\varphi^2} \label{buch:pde:kreis:laplace} \end{equation*} @@ -39,16 +39,16 @@ Daher ist die Membranabweichung im Punkt $(r,\varphi)$ $\in$ $\overline{\rm \Ome \end{align*} Um die Vergleichbarkeit der beiden nachfolgend vorgestellten Lösungsverfahren in Abschnitt \ref{kreismembran:vergleich} zu vereinfachen, werden keine Randbedingungen vorgegeben. -Um eine eindeutige Lösung bestimmen zu können, werden die folgenden Anfangsbedingungen festgelegt zur zeit $t = \text{0}$: +Um eine eindeutige Lösung bestimmen zu können, werden die folgenden Anfangsbedingungen festgelegt zur Zeit $t = \text{0}$: \begin{align*} u(r,\varphi, 0) &= f(r,\varphi)\\ u_t(r,\varphi, 0) &= g(r,\varphi). \end{align*} \subsection{Lösung\label{sub:lösung1}} -Nun wird das in Abschnitt \ref{sub:aufgabestellung} vorgestellte Problem mit Hilfe der varibalen Trennungsmethode gelöst. +Nun wird das in Abschnitt \ref{sub:aufgabestellung} vorgestellte Problem mit Hilfe der Separationsmethode gelöst. \subsubsection{Ansatz der Separation der Variablen\label{subsub:ansatz_separation}} -Bezug muss an dieser Stelle von einer Separation der Variablen ausgegangen werden: +Hierfür wird folgenden Ansatz gemacht: \begin{equation*} u(r,\varphi, t) = F(r)G(\varphi)T(t) \end{equation*} @@ -64,26 +64,26 @@ Dies bedeutet, dass die Konstante negativ sein muss, also schreibt man $-\kappa^ T''(t) + c^2\kappa^2T(t) &= 0\\ r^2\frac{F''(r)}{F(r)} + r \frac{F'(r)}{F(r)} +\kappa^2 r^2 &= - \frac{G''(\varphi)}{G(\varphi)}. \end{align*} -In der zweiten Gleichung hängt die linke Seite nur von $r$ ab, während die rechte Seite nur von $\varphi$ abhängt. Sie müssen also wiederum gleich einer reellen Zahl $\nu$ sein. Also das: +In der zweiten Gleichung hängt die linke Seite nur von $r$ ab, während die rechte Seite nur von $\varphi$ abhängt. Sie müssen also wiederum gleich einer reellen Zahl $\nu$ sein. Also: \begin{align*} - r^2F''(r) + rF'(r) + (\kappa^2 r^2 - \nu)F(r) &= 0 \\ - G''(\varphi) &= \nu G(\varphi). + r^2F''(r) + rF'(r) + (\kappa^2 r^2 - \nu)F(r) = 0 \quad \text{und} \quad + G''(\varphi) = \nu G(\varphi). \end{align*} \subsubsection{Lösung für $G(\varphi)$\label{subsub:lösung_G}} Da für die zweite Gleichung Lösungen von Schwingungen erwartet werden, für die $G''(\varphi)=-\omega^2 G(\varphi)$ gilt, schreibt man die gemeinsame Konstante als $\nu=-\omega^2$, was die Formeln später vereinfacht. Also: \begin{equation*} - G(\varphi) = C_n \cos(\varphi) + D_n \sin(\varphi) + G(\varphi) = C_n \cos(\nu\varphi) + D_n \sin(\nu\varphi) \label{eq:cos_sin_überlagerung} \end{equation*} \subsubsection{Lösung für $F(r)$\label{subsub:lösung_F}} -Die Gleichung für $F$ hat die Gestalt (verweis auf \ref{buch:differentialgleichungen:bessel-operator}) +Die Gleichung für $F$ hat die Gestalt (Verweis auf \label{buch:differentialgleichungen:bessel-operator} \begin{align} r^2F''(r) + rF'(r) + (\kappa^2 r^2 - n^2)F(r) = 0 \label{eq:2nd_degree_PDE} \end{align} -Wir bereits in Kapitel \ref{buch:differntialgleichungen:section:bessel} gezeigt, sind die Besselfunktionen +Wie bereits in Kapitel \ref{buch:differntialgleichungen:section:bessel} gezeigt, sind die Bessel-Funktionen \begin{equation*} J_{\nu}(x) = r^\nu \displaystyle\sum_{m=0}^{\infty} \frac{(-1)^m x^{2m}}{2^{2m+\nu}m! \Gamma (\nu + m+1)} \end{equation*} @@ -104,7 +104,7 @@ Durch Überlagerung aller Ergebnisse erhält man die Lösung \end{align} Dabei sind $m$ und $n$ ganze Zahlen, wobei $m$ für die Anzahl der Knotenkreise und $n$ -für die Anzahl der Knotenlinien steht. Es gibt bestimmte Bereiche auf der Membran, in denen es keine Bewegung oder Vibration gibt. Wenn der nicht schwingende Bereich ein Kreis ist, nennt man ihn einen Knotenkreis, und wenn er eine Linie ist, nennt man ihn ebenfalls eine Knotenlinie; siehe Abbildung \ref{buch:pde:kreis:fig:pauke}. $Jn(\kappa_{mn}r)$ ist die Besselfunktion $n$-ter Ordnung, wobei $\kappa mn$ die Wellenzahl und $r$ der Radius ist. $a_{mn}$ und $b_{mn}$ sind die zu bestimmenden Konstanten. +für die Anzahl der Knotenlinien steht. Es gibt bestimmte Bereiche auf der Membran, in denen es keine Bewegung oder Vibration gibt. Wenn der nicht schwingende Bereich ein Kreis ist, nennt man ihn einen Knotenkreis, und wenn er eine Linie ist, nennt man ihn ebenfalls eine Knotenlinie (siehe Abbildung \ref{buch:pde:kreis:fig:pauke}). $J_n(\kappa_{mn}r)$ ist die Besselfunktion $n$-ter Ordnung, wobei $\kappa mn$ die Wellenzahl und $r$ der Radius ist. $a_{mn}$ und $b_{mn}$ sind die zu bestimmenden Konstanten. \begin{figure} \centering diff --git a/buch/papers/kreismembran/teil2.tex b/buch/papers/kreismembran/teil2.tex index 4fb139c..ec27bd3 100644 --- a/buch/papers/kreismembran/teil2.tex +++ b/buch/papers/kreismembran/teil2.tex @@ -7,7 +7,7 @@ Hermann Hankel (1839--1873) war ein deutscher Mathematiker, der für seinen Beitrag zur mathematischen Analysis und insbesondere für die nach ihm benannte Transformation bekannt ist. Diese Transformation tritt bei der Untersuchung von Funktionen auf, die nur von der Entfernung des Ursprungs abhängen. -Er studierte auch Funktionen, jetzt Hankel- oder Bessel- Funktionen genannt, der dritten Art. +Er untersuchte auch Funktionen, jetzt Hankel- oder Bessel- Funktionen genannt, der dritten Art. Die Hankel-Transformation, die die Bessel-Funktion enthält, taucht natürlich bei achsensymmetrischen Problemen auf, die in zylindrischen Polarkoordinaten formuliert sind. In diesem Abschnitt werden die Theorie der Transformation und einige Eigenschaften der Grundoperationen erläutert. @@ -17,12 +17,12 @@ Wir führen die Definition der Hankel-Transformation \cite{lokenath_debnath_inte \mathscr{F}\{f(x,y)\} & = F(k,l)=\frac{1}{2\pi}\int_{-\infty}^{\infty}\int_{-\infty}^{\infty}e^{-i( \bm{\kappa}\cdot \mathbf{r})}f(x,y) \; dx \; dy,\label{equation:fourier_transform}\\ \mathscr{F}^{-1}\{F(x,y)\} & = f(x,y)=\frac{1}{2\pi}\int_{-\infty}^{\infty}\int_{-\infty}^{\infty}e^{i(\bm{\kappa}\cdot \mathbf{r})}F(k,l) \; dx \; dy \label{equation:inv_fourier_transform} \end{align} -wo $\mathbf{r}=(x,y)$ und $\bm{\kappa}=(k,l)$. Polarkoordinaten sind für diese Art von Problem am besten geeignet, mit $(x,y)=r(\cos\theta,\sin\theta)$ und $(k,l)=\kappa(\cos\phi,\sin\phi)$ findet man $\bm{\kappa}\cdot\mathbf{r}=\kappa r(\cos(\theta-\phi))$ und danach: +definiert ist, wobei $\mathbf{r}=(x,y)$ und $\bm{\kappa}=(k,l)$. Polarkoordinaten sind für diese Art von Problem am besten geeignet. Mit $(x,y)=r(\cos\theta,\sin\theta)$ und $(k,l)=\kappa(\cos\phi,\sin\phi)$ findet man $\bm{\kappa}\cdot\mathbf{r}=\kappa r(\cos(\theta-\phi))$ und danach: \begin{align} F(k,\phi)=\frac{1}{2\pi}\int_{0}^{\infty}r \; dr \int_{0}^{2\pi}e^{-ikr\cos(\theta-\phi)}f(r,\theta) \; d\phi. \label{equation:F_ohne_variable_wechsel} \end{align} -Dann wird angenommen dass, $f(r,\theta)=e^{in\theta}f(r)$, was keine strenge Einschränkung ist, weil die \textit{Fourier-Theorie} besagt, dass sich jede Funktion durch Überlagerung solcher Terme darstellen lässt. Es wird auch eine Änderung der Variabeln vorgenommen $\theta-\phi=\alpha-\frac{\pi}{2}$, um \eqref{equation:F_ohne_variable_wechsel} zu reduzieren: +Dann wird angenommen, dass $f(r,\theta)=e^{in\theta}f(r)$, was keine strenge Einschränkung ist, weil die \textit{Fourier-Theorie} besagt, dass sich jede Funktion durch Überlagerung solcher Terme darstellen lässt. Es wird auch eine Änderung der Variabeln vorgenommen $\theta-\phi=\alpha-\frac{\pi}{2}$, um \eqref{equation:F_ohne_variable_wechsel} zu reduzieren: \begin{align} F(k,\phi)=\frac{1}{2\pi}\int_{0}^{\infty}rf(r) \; dr \int_{\phi_{0}}^{2\pi+\phi_{0}}e^{in(\phi-\frac{\pi}{2})+i(n\alpha-kr\sin\alpha)} \; d\alpha, \label{equation:F_ohne_bessel} @@ -34,7 +34,7 @@ Unter Verwendung der Integraldarstellung J_n(\kappa r)=\frac{1}{2\pi}\int_{\phi_{0}}^{2\pi + \phi_{0}}e^{i(n\alpha-\kappa r \sin \alpha)} \; d\alpha \label{equation:bessel_n_ordnung} \end{equation*} - der Besselfunktion vom Ordnung $n$ \eqref{buch:fourier:eqn:bessel-integraldarstellung} wird \eqref{equation:F_ohne_bessel} zu: + der Bessel-Funktion vom Ordnung $n$ \eqref{buch:fourier:eqn:bessel-integraldarstellung} wird \eqref{equation:F_ohne_bessel} zu: \begin{align} F(k,\phi)&=e^{in(\phi-\frac{\pi}{2})}\int_{0}^{\infty}rJ_n(\kappa r) f(r) \; dr \nonumber \\ &=e^{in(\phi-\frac{\pi}{2})}\tilde{f}_n(\kappa), @@ -69,10 +69,10 @@ verwendet werden, um die Hankel-Transformation \eqref{equation:hankel} und ihre Insbesondere die Hankel-Transformation der nullten Ordnung ($n=0$) und der ersten Ordnung ($n=1$) sind häufig nützlich, um Lösungen für Probleme mit der Laplace Gleichung in einer achsensymmetrischen zylindrischen Geometrie zu finden. \subsection{Operatoreigenschaften der Hankel-Transformation \label{sub:op_properties_hankel}} -In diesem Kapitel werden die operativen Eigenschaften der Hankel-Transformation aufgeführt. Der Beweis für ihre Gültigkeit wird jedoch nicht analysiert. +In diesem Kapitel werden die operativen Eigenschaften der Hankel-Transformation aufgeführt. Die Beweise für ihre Gültigkeit werden jedoch nicht analysiert, diese sind im Buch \textit{Integral Tansforms and Their Applications} \cite{lokenath_debnath_integral_2015} zu finden. \begin{satz}{Skalierung:} - Wenn $\mathscr{H}_n\{f(r)\}=\tilde{f}_n(\kappa)$, dann: + Wenn $\mathscr{H}_n\{f(r)\}=\tilde{f}_n(\kappa)$, dann gilt: \begin{equation*} \mathscr{H}_n\{f(ar)\}=\frac{1}{a^{2}}\tilde{f}_n \left(\frac{\kappa}{a}\right), \quad a>0. @@ -80,7 +80,7 @@ In diesem Kapitel werden die operativen Eigenschaften der Hankel-Transformation \end{satz} \begin{satz}{Parsevalsche Relation:} -Wenn $\tilde{f}(\kappa)=\mathscr{H}_n\{f(r)\}$ und $\tilde{g}(\kappa)=\mathscr{H}_n\{g(r)\}$, dann: +Wenn $\tilde{f}(\kappa)=\mathscr{H}_n\{f(r)\}$ und $\tilde{g}(\kappa)=\mathscr{H}_n\{g(r)\}$, dann gilt: \begin{equation*} \int_{0}^{\infty}rf(r)g(r) \; dr = \int_{0}^{\infty}\kappa\tilde{f}(\kappa)\tilde{g}(\kappa) \; d\kappa. @@ -88,20 +88,20 @@ Wenn $\tilde{f}(\kappa)=\mathscr{H}_n\{f(r)\}$ und $\tilde{g}(\kappa)=\mathscr{H \end{satz} \begin{satz}{Hankel-Transformationen von Ableitungen:} -Wenn $\tilde{f}_n(\kappa)=\mathscr{H}_n\{f(r)\}$, dann: +Wenn $\tilde{f}_n(\kappa)=\mathscr{H}_n\{f(r)\}$, dann gilt: \begin{align*} &\mathscr{H}_n\{f'(r)\}=\frac{\kappa}{2n}\left[(n-1)\tilde{f}_{n+1}(\kappa)-(n+1)\tilde{f}_{n-1}(\kappa)\right], \quad n\geq1, \\ &\mathscr{H}_1\{f'(r)\}=-\kappa \tilde{f}_0(\kappa), \end{align*} -vorausgesetzt dass $[rf(r)]$ verschwindet wenn $r\to0$ und $r\to\infty$. +vorausgesetzt, dass $rf(r)$ verschwindet wenn $r\to0$ und $r\to\infty$. \end{satz} \begin{satz} -Wenn $\mathscr{H}_n\{f(r)\}=\tilde{f}_n(\kappa)$, dann: +Wenn $\mathscr{H}_n\{f(r)\}=\tilde{f}_n(\kappa)$, dann gilt: \begin{equation*} \mathscr{H}_n \left\{ \left( \nabla^2 - \frac{n^2}{r^2} f(r)\right)\right\}= \mathscr{H}_n\left\{\frac{1}{r}\frac{d}{dr}\left(r\frac{df}{dr}\right) - \frac{n^2}{r^2}f(r)\right\}=-\kappa^2\tilde{f}_{n}(\kappa), \end{equation*} -bereitgestellt dass $rf'(r)$ und $rf(r)$ verschwinden für $r\to0$ und $r\to\infty$. +bereitgestellt, dass $rf'(r)$ und $rf(r)$ verschwinden für $r\to0$ und $r\to\infty$. \end{satz} diff --git a/buch/papers/kreismembran/teil3.tex b/buch/papers/kreismembran/teil3.tex index 276f911..a9dcd95 100644 --- a/buch/papers/kreismembran/teil3.tex +++ b/buch/papers/kreismembran/teil3.tex @@ -6,25 +6,22 @@ \section{Lösungsmethode 2: Transformationsmethode \label{kreismembran:section:teil3}} \rhead{Lösungsmethode 2: Transformationsmethode} -Die Hankel-Transformation wird dann zur Lösung der Differentialgleichung verwendet. Es müssen jedoch einige Änderungen an dem Problem vorgenommen werden, damit es mit den Annahmen übereinstimmt, die für die Verwendung der Hankel-Transformation erforderlich sind. Das heisst, dass die Funktion $u$ nur von der Entfernung zum Ausgangspunkt abhängt. +Die Hankel-Transformation kann hier zur Lösung der Differentialgleichung verwendet werden. Es müssen jedoch einige Änderungen an dem Problem vorgenommen werden, damit es mit den Annahmen übereinstimmt, die für die Verwendung der Hankel-Transformation erforderlich sind. Das heisst, dass die Funktion $u$ nur von der Entfernung zum Ausgangspunkt abhängt. \subsubsection{Transformation und Reduktion auf eine algebraische Gleichung\label{subsub:transf_reduktion}} Führt man also das Konzept einer unendlichen und achsensymmetrischen Membran ein: -\begin{equation*} +\begin{align} \frac{\partial^2u}{\partial t^2} = c^2 \left(\frac{\partial^2 u}{\partial r^2} + \frac{1}{r} - \frac{\partial u}{\partial r} \right), \quad 0<r<\infty, \quad t>0 - \label{eq:PDE_inf_membane} -\end{equation*} - -\begin{align} - u(r,0)=f(r), \quad u_t(r,0) = g(r), \quad \text{für} \quad 0<r<\infty + \frac{\partial u}{\partial r} \right), \quad 0<r<\infty, \quad t>0 \label{eq:PDE_inf_membane} \\ + u(r,0)=f(r), \quad u_t(r,0) = g(r), \quad \text{für} \quad 0<r<\infty. \label{eq:PDE_inf_membane_RB} \end{align} + Mit Anwendung der Hankel-Transformation nullter Ordnung in Abhängigkeit von $r$ auf die Gleichungen \eqref{eq:PDE_inf_membane} und \eqref{eq:PDE_inf_membane_RB}: \begin{align} @@ -45,7 +42,7 @@ Die allgemeine Lösung für diese Gleichung lautet, wie in Abschnitt \eqref{eq:c \begin{equation*} \tilde{u}(\kappa,t)=\tilde{f}(\kappa)\cos(c\kappa t) + \frac{1}{c\kappa}\tilde{g}(\kappa)\sin(c\kappa t). \end{equation*} -Wendet man an nun die inverse Hankel-Transformation an, so erhält man die formale Lösung +Wendet man nun die inverse Hankel-Transformation an, so erhält man die formale Lösung \begin{align} u(r,t)=\int_{0}^{\infty}\kappa\tilde{f}(\kappa)\cos(c\kappa t) J_0(\kappa r) \; d\kappa +\frac{1}{c}\int_{0}^{\infty}\tilde{g}(\kappa)\sin(c\kappa t)J_0(\kappa r) \; d\kappa. @@ -53,7 +50,7 @@ Wendet man an nun die inverse Hankel-Transformation an, so erhält man die forma \end{align} \subsubsection{Erfüllung der Anfangsbedingungen\label{subsub:erfüllung_AB}} -Es wird in Folgenden davon ausgegangen, dass sich die Membran verformt und zum Zeitpunkt $t=0$ freigegeben wird +Es wird im Folgenden davon ausgegangen, dass sich die Membran verformt und zum Zeitpunkt $t=0$ freigegeben wird \begin{equation*} u(r,0)=f(r)=Aa(r^2 + a^2)^{-\frac{1}{2}}, \quad u_t(r,0)=g(r)=0 @@ -62,10 +59,17 @@ so dass $\tilde{g}(\kappa)\equiv 0$ und \begin{equation*} \tilde{f}(\kappa)=Aa\int_{0}^{\infty}r(a^2 + r^2)^{-\frac{1}{2}} J_0 (\kappa r) \; dr=\frac{Aa}{\kappa}e^{-a\kappa}. \end{equation*} + +Aus der Laplace-Transformation und unter Verwendung der Skalierungseigenschaft ergibt sich, dass + +\begin{align*} + \int_{0}^{\infty}e^{-px} J_0(\kappa x) \; dx = \frac{1}{\sqrt{\kappa^2 + p^2}}. +\end{align*} + Die formale Lösung \eqref{eq:formale_lösung} lautet also \begin{align*} u(r,t)&=Aa\int_{0}^{\infty}e^{-a\kappa} J_0(\kappa r)\cos(c\kappa t) \; dk=AaRe\int_{0}^{\infty}e^{-\kappa(a+ict)} J_0(\kappa r) \; dk\\ - &=AaRe\left\{r^2+\left(a+ict\right)^2\right\}^{-\frac{1}{2}} + &=AaRe\left\{r^2+\left(a+ict\right)^2\right\}^{-\frac{1}{2}}. \end{align*} Nimmt man jedoch die allgemeine Lösung durch Überlagerung, @@ -80,6 +84,6 @@ kann man die Lösungsmethoden 1 und 2 vergleichen. \label{kreismembran:vergleich}} Bei der Analyse der Gleichungen \eqref{eq:lösung_endliche_generelle} und \eqref{eq:lösung_unendliche_generelle} fällt sofort auf, dass die Gleichung \eqref{eq:lösung_unendliche_generelle} nicht mehr von $m$ und $n$ abhängt, sondern nur noch von $n$ \cite{nishanth_p_vibrations_2018}. Das macht Sinn, denn $n$ beschreibt die Anzahl der Knotenlinien, welche unter der Annahme einer rotationssymmetrischen Lösung nicht vorhanden sein können. Tatsächlich werden $a_{m0}$, $b_{m0}$ und $\kappa_{m0}$ in $a_m$, $b_m$ bzw. $\kappa_m$ umbenannt. Die beiden Termen $\cos(n\varphi)$ und $\sin(n\varphi)$ verschwinden ebenfalls, da für $n=0$ der $\cos(n\varphi)$ gleich 1 und der $\sin(n \varphi)$ gleich 0 ist. -Die Funktion hängt also nicht mehr von der Besselfunktionen $n$-ter Ordnung ab, sondern nur von der $0$-ter Ordnung. +Die Funktion hängt also nicht mehr von der Besselfunktionen $n$-ter Ordnung ab, sondern nur von der nullter Ordnung. diff --git a/buch/papers/kreismembran/teil4.tex b/buch/papers/kreismembran/teil4.tex index 74bb87d..01a6029 100644 --- a/buch/papers/kreismembran/teil4.tex +++ b/buch/papers/kreismembran/teil4.tex @@ -12,7 +12,7 @@ Jedes Element $ U_{ij} $ steh für die Auslenkung der Membran $ u(x,y,t) $ an d Zwischen benachbarten Elementen in der Matrix $ U $ liegt immer der Abstand $ dh $, eine Inkrementierung von $ i $ oder $ j $ entspricht somit einem Schritt in Richtung $ x $ oder $ y $ von Länge $ dh $ auf der Membran. Die zeitliche Dimension wird in Form des Array $ U[] $ aus $ z \times U $ Matrizen dargestellt, wobei $ z $ der Anzahl Zeitschritten entspricht. Das Element auf Zeile $ i $, Spalte $ j $ der $ w $-ten Matrix von $ U[] $ also $ U[w]_{ij} $ entspricht somit der Auslenkung $ u(i,j,w) $. -Da die DGL von Zweiter Ordnung ist, reicht eine Zustandsvariabel pro Membran-Element nicht aus. +Da die DGL von zweiter Ordnung ist, reicht eine Zustandsvariabel pro Membran-Element nicht aus. Es wird neben der Auslenkung auch die Geschwindigkeit jedes Membran-Elementes benötigt um den Zustand eindeutig zu beschreiben. Dazu existiert neben $ U[] $ ein analoger Array $ V[] $ welcher die Geschwindigkeiten aller Membran-Elementen repräsentiert. $ V[w]_{ij} $ entspricht also $ \dot{u}(i,j,w) $. @@ -67,39 +67,39 @@ Die Filtermaske kann dann auf jedes Element einzeln angewendet werden mit einer \subsection{Simulation: Kreisförmige Membran} Als Beispiel soll nun eine schwingende kreisförmige Membran simuliert werden. -\paragraph{Initialisierung} -Die Anzahl der simulierten Elementen soll $ m \times n $ was dementsprechend die Dimensionen von $ U $ und $ V $ vorgibt. +\subsubsection{Initialisierung} +Die Anzahl der simulierten Elemente soll $ m \times n $ sein, was die Dimensionen von $ U $ und $ V $ vorgibt. Als Anfangsbedingung wird eine Membran gewählt, welche bei $ t=0 $ mit einer Gauss-Kurve ausgelenkt wird. Die Membran soll sich zu Beginn nicht bewegen, also wird $ V[0] $ mit Nullen initialisiert. Die Auslenkung kann kompakt erreicht werden, wenn $ U[0] $ als Null-Matrix mit einer $ 1 $ in der Mitte initialisiert wird. Diese Matrix wird anschliessend mit einer Filtermaske in Form einer Gauss-Glocke gefaltet. -Die Faltung mit einer Gauss-Glocke ist in Programmen wie Matlab eine Standartfunktion, da dies einm Tiefpassfilter in der Bildverarbeitung entspricht. +Die Faltung mit einer Gauss-Glocke ist in Programmen wie Matlab eine Standartfunktion, da dies einem Tiefpassfilter in der Bildverarbeitung entspricht. -\paragraph{Rand} +\subsubsection{Rand} Bislang ist die definierte Matrix rechteckig. -Um eine kreisförmige Membran zu simulieren muss der Rand angepasst werden. +Um eine kreisförmige Membran zu simulieren, muss der Rand angepasst werden. Da in den meisten Programme keine Möglichkeit besteht, mit runden Matrizen zu rechnen, wird der Rand in der Berechnung des Folgezustandes implementiert. -Der Rand bedeutet, das Membran-Elemente auf dem Rand sich nicht Bewegen können. -Die Position sowie die Geschwindigkeit aller Elemente welche nicht auf der definierten Membran sind müssen zu beliebiger Zeit $0$ entsprechen. +Der Rand bedeutet, dass Membran-Elemente auf dem Rand sich nicht Bewegen können. +Die Position, sowie die Geschwindigkeit aller Elemente, welche nicht auf der definierten Membran sind, müssen zu beliebiger Zeit $0$ sein. Hierzu wird eine Maske $M$ erstellt. Diese Maske besteht aus einer binären Matrix von identischer Dimension wie $ U $ und $ V $. -Ist in der Matrix $M$ eine $1$ abgebildet so ist an jener stelle ein Element der Membran, ist es eine $0$ so befindet sich dieses Element auf dem Rand oder ausserhalb der Membran. +Ist in der Matrix $M$ eine $1$ abgebildet, so ist an jener Stelle ein Element der Membran, ist es eine $0$ so befindet sich dieses Element auf dem Rand oder ausserhalb der Membran. In dieser Anwendung ist $M$ eine Matrix mit einem Kreis voller $1$ umgeben von $0$ bis an den Rand der Matrix. -Die Maske wird angewendet indem das Resultat des nächsten Zustandes noch mit der Maske elementweise multipliziert wird. +Die Maske wird angewendet, indem das Resultat des nächsten Zustandes noch mit der Maske elementweise multipliziert wird. Der Folgezustand kann also mit den Gleichungen \begin{align} \label{kreismembran:eq:folge_U} - U[w+1] &= (U[w] + dt \cdot V[w])*M\\ + U[w+1] &= (U[w] + dt \cdot V[w])\odot M\\ \label{kreismembran:eq:folge_V} - V[w+1] &= (V[w] + dt \cdot \Delta_h u \cdot c^2)*M + V[w+1] &= (V[w] + dt \cdot \Delta_h u \cdot c^2)\odot M \end{align} berechnet werden. -\paragraph{Simulation} +\subsubsection{Simulation} Mit den gegebenen Gleichungen \ref{kreismembran:eq:folge_U} und \ref{kreismembran:eq:folge_V} das Verhalten der Membran mit einem Loop über das zu untersuchende Zeitintervall berechnet werden. In der Abbildung \ref{kreismembran:im:simres_rund} sind Simulationsresultate zu sehen. -Die Erste Figur zeigt die Ausgangslage gefolgt von den Auslenkungen nach jeweils $ 50 $ weiteren Iterationsschritten. +Die erste Figur zeigt die Ausgangslage gefolgt von den Auslenkungen nach jeweils $ 50 $ weiteren Iterationsschritten. Es ist zu erkennen, wie sich die Störung vom Zentrum an den Rand ausbreitet. -Erreicht die Störung den Rand wird sie reflektiert und nähert sich dem Zentrum. +Erreicht die Störung den Rand, wird sie reflektiert und nähert sich dem Zentrum. \begin{figure} \begin{center} @@ -117,19 +117,19 @@ Erreicht die Störung den Rand wird sie reflektiert und nähert sich dem Zentrum \end{figure} \subsection{Simulation: Unendliche Membran} -Um eine unendlich grosse Membran zu simulieren könnte der unpraktische weg gewählt werden die Matrix unendlich gross zu definieren, dies wird jedoch spätestens bei der numerischen Berechnung seine Probleme mit sich bringen. -Etwas geeigneter ist es die Matrix so gross wie möglich zu definieren wie es die Kapazitäten erlauben. +Um eine unendlich grosse Membran zu simulieren, könnte der unpraktische Weg gewählt werden, die Matrix unendlich gross zu definieren, dies wird jedoch spätestens bei der numerischen Berechnung seine Probleme mit sich bringen. +Etwas geeigneter ist es, die Matrix so gross wie möglich zu definieren, wie es die Kapazitäten erlauben. Wenn anschliessend nur das Verhalten im Zentrum, bei der Störung beobachtet wird, verhaltet sich die Membran wie eine unendliche. Dies aber nur bis die Störung am Rand reflektiert wird und wieder das innere zu beobachtende Zentrum beeinflusst. Soll erst gar keine Reflexion entstehen, muss ein Absorber modelliert werden welcher die Störung möglichst ohne Reflexion aufnimmt. -\paragraph{Absorber} +\subsubsection{Absorber} Sehr knapp formuliert entstehen Reflexionen, wenn eine Welle von einem Material in ein anderes Material mit unterschiedlichen Eigenschaften eindringen möchte. Je unterschiedlicher und abrupter der Übergang zwischen den Materialien umso ausgeprägter die Reflexion. In diesem Fall sind die Eigenschaften vorgegeben. Im Zentrum soll sich die Membran verhalten, wie von der DGL vorgegeben, am Rand jedoch muss sich jedes Membran-Element in der Ausgangslage befinden. Der Spielraum welcher dem Absorber übrig bleibt ist die Art der Überganges. -Bei der endlichen kreisförmigen Membran hat die Maske $M$ ein binärer Übergang von Membran zu Rand bezweckt. +Bei der endlichen kreisförmigen Membran hat die Maske $M$ einen binären Übergang von Membran zu Rand bezweckt. Anstelle dieses abrupten Wechsels wird nun eine Maske definiert, welche graduell von Membran $1$ zu Rand-Element $0$ wechselt. Die Elemente werden auf Basis ihres Abstand $r$ zum Zentrum definiert. Der Abstand entspricht @@ -156,11 +156,10 @@ In der Abbildung \ref{kreismembran:im:masks} ist der Unterschied der beiden Mask \label{kreismembran:im:masks} \end{center} \end{figure} -\paragraph{Simulation} +\subsubsection{Simulation} Bis auf die Absorber-Maske kann nun identisch zur endlichen Membran simuliert werden. Auch hier wurde eine Gauss-Glocke als Anfangsbedingung gewählt. Die Simulationsresultate von Abbildung \ref{kreismembran:im:simres_unendlich} - \begin{figure} \begin{center} @@ -183,7 +182,7 @@ Dieses Verhalten spricht für den Absorber-Ansatz, es soll jedoch erwähnt sein, Die DGL \ref{kreismembran:Ausgang_DGL} welche simuliert wird geht jedoch von der Annahme \ref{kreimembran:annahmen} iv) aus, dass die Membran keine Art von Dämpfung erfährt. \section{Schlusswort} -Auch wenn ein Physikalisches Verhalten bereits durch Annahmen und Annäherungen deutlich vereinfacht wird, bestehen auch dann noch eine Vielzahl von Lösungsansätzen. +Auch wenn ein physikalisches Verhalten bereits durch Annahmen und Annäherungen deutlich vereinfacht wird, bestehen auch dann noch eine Vielzahl von Lösungsansätzen. Lösungen einer unendlich grosse Membran scheinen fern der Realität zu sein, doch dies darf es im Sinne der Mathematik. Und wer weis, für eine Ameise auf einem Trampolin ist eine unendliche Membran vielleicht eine ganz gute Annäherung. |