Description

Oznaczenia

  • $n$ - liczba punktów w wierszu (kolumnie); wymiar siatki $n \times n$
  • $k$ - długość fali
  • $t$ - numer iteracji
  • $\omega$ - długość kroku
  • $sf$ - liczba źródeł płaskich
  • $sr$ - liczba źródeł radialnych

Siatka

Siatka składa się z punktów $p_{ij} = (x_{i}, y_{j})$, gdzie

(1)
\begin{align} x_{i}, y_{j} \in \{\, 0, \frac{1}{n-1}, \frac{2}{n-1}, \dots, \frac{n-2}{n-1}, 1 \,\} \qquad i, j = 1, \dots, n. \end{align}

W tych punktach mierzymy wartości fal.


Fale na siatce

W każdej iteracji $t = 0, 1, 2, \dots$ wyliczamy wartości poszczególnych fal w każdym punkcie siatki. Dodatkowo wprowadzamy zmienną $\omega$ odpowiadającą długości kroku.

Niech $p_{ij} = \left( x_{i} , y_{j} \right)$ będzie jednym z punktów siatki.

Fale płaskie

Wartości fal płaskich w punkcie $p_{ij}$ wyliczamy według wzoru:

(2)
\begin{align} \forall_{l=1, \dots, sf} \; flat^{(l)} (t, p_{ij}) = \cos \left( \omega t - k \left\langle \frac{v}{||v||} , p_{ij} \right\rangle \right) . \end{align}

Wektor $v$ jest wektorem kierunkowym prostej, wzdłuż której rozchodzi się fala płaska, zaś $\frac{1}{||v||}$ czynnikiem normalizacyjnym tego wektora. Operator $\left< \cdot , \cdot \right>$ oznacza iloczyn skalarny.

Zatem dla fali płaskiej rozchodzącej się poziomo tj. dla $v = [1, 0]^T$ mamy:

(3)
\begin{align} flat^{(l)} (t, p_{ij}) = \cos \left( \omega t - k x_{i} \right) . \end{align}
Fale radialne

Wartości fal radialnych w punkcie $p_{ij}$ liczymy następująco:

(4)
\begin{align} \forall_{l=1, \dots, sr} \; radial^{(l)} (t, p_{ij}) = \cos \left( \omega t - k r^{(l)} \right) , \end{align}

gdzie

(5)
\begin{align} r^{(l)} = \sqrt{ \left( x_{i} - x_{0}^{(l)} \right) ^2 + \left( y_{j} - y_{0}^{(l)} \right) ^2 } \end{align}

jest odległością punktu $p_{ij}$ od źródła fali znajdującego się w punkcie $(x_{0}, y_{0})$.


Końcowe dane

Po zsumowaniu i znormalizowaniu wartości wszystkich fal w każdym punkcie siatki otrzymujemy końcowe dane:

(6)
\begin{align} \forall_{p_{ij}} \; D(t, p_{ij}) = \frac{ \sum_{l=1}^{sf} flat^{(l)} (t, p_{ij}) + \sum_{l=1}^{sr} radial^{(l)} (t, p_{ij}) } { sf + sr } . \end{align}

Przez $D(t)$ oznaczamy macierz rozmiaru $n \times n$ zawierającą wartości wszystkich punktów siatki w chwili $t$.


Trajektorie

W przestrzeni $n^{2}$ wymiarowej umieszczamy dwa Gaussy w:

(7)
\begin{align} \mu_{1} = \left[ -1, \dots, -1 \right] ^{T} \qquad \mu_{2} = \left[ 1, \dots, 1 \right] ^{T} . \end{align}

Otrzymujemy:

(8)
\begin{align} G_{1} \left( t \right) = \exp { \left( - \frac { \left\| D(t) - \mu_{1} \right\| } { 2 \sigma_{1}^2 } \right) }, \end{align}
(9)
\begin{align} G_{2} \left( t \right) = \exp { \left( - \frac { \left\| D(t) - \mu_{2} \right\| } { 2 \sigma_{2}^2 } \right) }, \end{align}

przy czym $\sigma_{1}$ i $\sigma_{2}$ są dyspersjami Gaussów odpowiednio $G_{1}$ i $G_{2}$.

Obserwujemy trajektorie na wykresie $G_{1}$ vs $G_{2}$.


Ważenie punktów siatki

Końcowe Gaussy przy ważeniu za pomocą wewnętrznych Gaussów:

(10)
\begin{align} G_{1}(t) = \exp{ \left( - \frac{ \sqrt{ \sum_{i,j=1}^{n} \left( w_{1}(p_{ij}) D_{ij}(t) - \mu_{1ij} \right)^{2} } } { 2 \sigma_{1}^{2} } \right) } \qquad w_{1}(p_{ij}) = \exp{ \left( - \frac{ \left\| p_{ij} - C_{1} \right\| } { 2 \sigma_{C_{1}}^{2} } \right) } \end{align}
(11)
\begin{align} G_{2}(t) = \exp{ \left( - \frac{ \sqrt{ \sum_{i,j=1}^{n} \left( w_{2}(p_{ij}) D_{ij}(t) - \mu_{2ij} \right)^{2} } } { 2 \sigma_{2}^{2} } \right) } \qquad w_{2}(p_{ij}) = \exp{ \left( - \frac{ \left\| p_{ij} - C_{2} \right\| } { 2 \sigma_{C_{2}}^{2} } \right) } \end{align}

$w_{1}, w_{2}$ - funkcje ważące punkty siatki dla głównych Gaussów
$C_{1}, C_{2}$ - centra wewnętrznych Gaussów
$\sigma_{C_{1}}, \sigma_{C_{2}}$ - dyspersje wewnętrznych Gaussów
$\mu_{1}, \mu_{2}, \sigma_{1}, \sigma_{2}$ - jak we wcześniejszym opisie (centra i dyspersje głównych Gaussów)