\documentclass[t]{beamer}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{lmodern}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{graphicx}
\usepackage{color}
\usepackage{xcolor}
\usepackage{url}
\usepackage{theorem}
\usepackage{textcomp}
\usepackage{listings}
\usepackage{hyperref}
%\usepackage{glossaries}
\usepackage{parskip}
\usepackage{amsmath, amsthm, amssymb}
\usepackage{stmaryrd}
\usepackage{graphicx}
\usepackage{subfig}
\usepackage{longtable}
\usepackage{pgfplots}
\usepackage{nicematrix}
\usepackage[table]{xcolor}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\usetikzlibrary{arrows.meta}
\usepackage{assets/texpackages/annotate-equations}
\graphicspath{ {./assets/} }
\usetheme{Berkeley}
\setbeamerfont{section in toc}{size=\fontsize{8}{10}\selectfont}
\setbeamerfont{subsection in toc}{size=\fontsize{7}{9}\selectfont}

\title[DSP et Sismologie]{Traitement de signaux pour la détection de séismes et leur multilatération}
\subtitle{Théorie, pratique et résultats}

\author[Dalibard]{Dalibard Louis}
\date{\today}

% Define custom colors
\definecolor{mmi1}{HTML}{FFFFFF}
\definecolor{mmi2}{HTML}{BFCCFF}
\definecolor{mmi3}{HTML}{A0E6FF}
\definecolor{mmi4}{HTML}{80FFFF}
\definecolor{mmi5}{HTML}{7AFF93}
\definecolor{mmi6}{HTML}{FFFF00}
\definecolor{mmi7}{HTML}{FFC800}
\definecolor{mmi8}{HTML}{FF9100}
\definecolor{mmi9}{HTML}{FF0000}
\definecolor{mmi10}{HTML}{C80000}
\definecolor{mmi11}{HTML}{A40000}
\definecolor{mmi12}{HTML}{800000}
\begin{document}
\begin{frame}
	\titlepage
\end{frame}
\AtBeginSection[] { \begin{frame}\frametitle{Table des contenus} \tableofcontents[currentsection]\end{frame} }

\section{Séismes}
\begin{frame}
	\frametitle{Introduction}
	\begin{center}
	\includegraphics[width=8cm, trim={0 0 0 0}, clip]{eq-ed-fault-labeled.png}
	\end{center}
\end{frame}
\begin{frame}
	\frametitle{Ondes P et S}
	\begin{figure}%
    \centering
    \subfloat[\centering Ondes P]{{\includegraphics[width=4cm, trim={0 0 0 0}, clip]{Onde_compression_impulsion_1d_30_petit.png}}}%
    \qquad
    \subfloat[\centering Ondes S]{{\includegraphics[width=4cm, trim={0 0 0 0}, clip]{Onde_cisaillement_impulsion_1d_30_petit.png}}}%
    \caption{Ondes P et S}%
    \label{fig:ondespets}%
\end{figure}
\end{frame}

\begin{frame}
	\frametitle{Ondes P et S}
	\begin{center}
	\includegraphics[width=7cm, trim={0 12.5mm 0cm 2cm}, clip]{2025-03-26T23:29:53,572838335+01:00.png}
	\captionof{figure}{6 km/s (ondes P) vs 4 km/s (ondes S)}
	\end{center}
\end{frame}

\section{Théorie}
\begin{frame}
	\frametitle{Principe}
	Différentes étapes:
	\begin{enumerate}
		\item Acquisition de données en temps réel (SeedLink)
		\item Reconnaissance d'un séisme et mesure automatique des temps
		\item Calcul de la position et de la magnitude
		\begin{enumerate}
         \item Modélisation de la propagation des ondes sismiques
         \item Méthode numérique d'optimisation de fonction à plusieurs variables pour la multilatération
         \item Calcul de la magnitude
       	\end{enumerate}
	\end{enumerate}
\end{frame}

\subsection{DSP}
\begin{frame}
\frametitle{Acquisition des données}
\renewcommand{\arraystretch}{1.2}

\tiny
\begin{longtable}{|l|l|}
    \hline
    \textbf{Name} & \textbf{Host} \\
    \hline
    AusPass & auspass.edu.au \\
    BGR & eida.bgr.de \\
    CISMID & www.cismid.uni.edu.pe \\
    ENS & ephesite.ens.fr \\
    \dots & \dots \\
    Red Sìsmica Baru & helis.redsismicabaru.com \\
    RESIF & rtserve.resif.fr \\
    SANET & 147.213.113.73 \\
    RSIS & rsis1.on.br \\
    SCSN-USC (South Carolina Seismic Network) & eeyore.seis.sc.edu:6382 \\
    Seisme IRD & rtserve.ird.nc \\
    Staneo & vibrato.staneo.fr \\
    SNAC NOA & snac.gein.noa.gr \\
    TexNet & rtserve.beg.utexas.edu \\
    Thai Meteorological Department & 119.46.126.38 \\
    UFRN (Universidade Federal do Rio Grande do Norte) & sislink.geofisica.ufrn.br \\
    Unical Universita Della Calabria & www.sismocal.org \\
    UNITS Università degli studi di Trieste & rtweb.units.it \\
    UNIV-AG Université des Antilles & seedsrv0.ovmp.martinique.univ-ag.fr \\
    Universidade de Évora & clv-cge.uevora.pt \\
    Universidad de Colima & 148.213.24.15 \\
    UPR & worm.uprm.edu \\
    USGS & cwbpub.cr.usgs.gov \\
    USP-IAG & seisrequest.iag.usp.br \\
    \hline
\end{longtable}
\end{frame}
\begin{frame}
\frametitle{Extraction des temps d'arrivée}
\begin{center}
	\includegraphics[width=10cm, trim={0 0 0 0}, clip]{R0ED0.EHZ-1743142835749.9944-cropped.png}\\
	\captionof{figure}{Exemple d'un enregistrement de sismographe}
\end{center}
\end{frame}
\begin{frame}
\frametitle{Convolution}
\begin{center}
	\begin{center}
\begin{tikzpicture}[scale=0.5]
    \begin{axis}[
        axis lines = middle,
        xlabel = {$x$},
        ylabel = {$y$},
        samples=300,
        domain=-6:6,
        legend pos=north east,
        width=2\textwidth,
        height=0.7\textheight
    ]
        % Define the functions
        \addplot[blue, thick] {sin(deg(x))} node[right] {\footnotesize $f(x) = \sin x$};
        \addplot[red, thick] {cos(deg(2*x))} node[right] {\footnotesize $g(x) = \cos 2x$};
        \addplot[green, thick] {sin(deg(x)) + cos(deg(2*x))} node[right] {\footnotesize $h(x) = f(x) + g(x)$};
        
        % Add legend
        \legend{$f(x) = \sin x$, $g(x) = \cos 2x$, $h(x) = f(x) + g(x)$}
    \end{axis}
\end{tikzpicture}
\end{center}
\begin{center}
\begin{tikzpicture}[scale=0.5]
    \begin{axis}[
        axis lines = middle,
        xlabel = {$x$},
        ylabel = {$y$},
        samples=300,
        domain=-6:6,
        legend pos=north east,
        width=2\textwidth,
        height=0.7\textheight
    ]
        % Define the functions
        \addplot[blue, thick] {sin(deg(x))} node[right] {\footnotesize $f(x) = \sin x$};
        \addplot[red, thick] {cos(deg(2*x))} node[right] {\footnotesize $g(x) = \cos 2x$};
        \addplot[green, thick] {sin(deg(x)) * cos(deg(2*x))} node[right] {\footnotesize $h(x) = f(x) \cdot g(x)$};
        
        % Add legend
        \legend{$f(x) = \sin x$, $g(x) = \cos 2x$, $h(x) = f(x) \cdot g(x)$}
    \end{axis}
\end{tikzpicture}
\end{center}
\begin{center}
\begin{tikzpicture}[scale=0.5]
    \begin{axis}[
        axis lines = middle,
        xlabel = {$x$},
        ylabel = {$y$},
        samples=300,
        domain=-6:6,
        legend pos=north east,
        width=2\textwidth,
        height=0.7\textheight
    ]
        % Define the functions
        \addplot[blue, thick] {sin(deg(x))} node[right] {\footnotesize $f(x) = \sin x$};
        \addplot[red, thick] {cos(deg(2*x))} node[right] {\footnotesize $g(x) = \cos 2x$};
        \addplot[green, thick] {0} node[right] {\footnotesize $h(x) = (f*g)(x)$};
        
        % Add legend
        \legend{$f(x) = \sin x$, $g(x) = \cos 2x$, $h(x) = (f*g)(x) = 0$}
    \end{axis}
\end{tikzpicture}
\end{center}
\end{center}
\end{frame}
\begin{frame}
\frametitle{Convolution}
Soit $f$ et $g$ deux fonctions intégrables sur $\mathbb{R}$.
Pour tout $t \in \mathbb{R}$,
\[ (f*g)(t)=\int_{-\infty}^{+\infty} f(x) \cdot g(t-x) dx \]

Soit $f$ et $g$ deux fonctions de $\mathbb{Z}$ dans $\mathbb{C}$.
Pour tout $n \in \mathbb{Z}$,
\[ (f*g)[n]=\sum_{m=-\infty}^{+\infty} f[m] \cdot g[n-m] \]

Pour des fonctions périodiques, on intègre sur une période.
Pour tout $t \in \mathbb{R}$,
\[ (f*g)(t)=\int_{0}^{T} f(x) \cdot g(t-x) dx \]
\end{frame}

\begin{frame}
\frametitle{Propriétés algébriques de la convolution}
\begin{itemize}
\item Commutatif

On remarquera que si \[ (f*g)(t)=\int_{-\infty}^{+\infty} f(x) \cdot g(t-x) dx \]

Et on fait le changement de variable $u=t-x$

On a \[ (f*g)(t)=\int_{+\infty}^{-\infty} f(t-u) \cdot g(u) -du\]
\[=\int_{-\infty}^{+\infty} f(t-u) \cdot g(u) du=(g*f)(t)\]
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Propriétés algébriques de la convolution}
\begin{itemize}
\item Distributif
\[ f*(g+h)= f*g+f*h \]
Par linéarité de l'intégrale.
\item Associatif
\[ (f*g)*h= f*(g*h) \]
C'est une conséquence du théorème de Fubini.
\end{itemize}

L'espace des fonctions intégrables muni de $*$ forme un demi-groupe commutatif (car pas d'élement neutre).
\end{frame}

\begin{frame}
\frametitle{Exemple avec des combinaisons de dés}
\begin{center}
\vspace*{0.75cm}
    \begin{tikzpicture}[scale=0.5]
        % Define Dice Faces
        \def\diceA{1,2,3,4,5,6} % Top Die (Static)
        \def\diceB{6,5,4,3,2,1} % Bottom Die (Sliding)

        % Define step spacing
        \def\stepSpace{3}

        % Loop through each step
        \foreach \step in {-5,-4,-3,-2} {
        		\pgfmathsetmacro{\sommedonnant}{int(7 + \step)}
            % Label step number
            \node[anchor=east] at (-0.5, -\step*3) {Somme donnant \sommedonnant:};

            % Top Row - Fixed Dice
            \foreach \x [count=\i] in \diceA {
                \node[draw, minimum size=0.5cm] at (\i, -\step*3) {\x};
            }

            % Bottom Row - Sliding Dice
            \foreach \x [count=\i] in \diceB {
            		\pgfmathsetmacro{\sumval}{int(\i + \step)}
            		\ifnum \sumval > 0 \ifnum \sumval < 7 \node[draw=red, minimum size=0.5cm] at (\i+\step, -\step*3-1) {\x};
            		\else
                \node[draw, minimum size=0.5cm] at (\i+\step, -\step*3-1) {\x};
                \fi
                \else
                \node[draw, minimum size=0.5cm] at (\i+\step, -\step*3-1) {\x};
                \fi
            }
        }
    \end{tikzpicture}
\end{center}
\end{frame}
\begin{frame}
\frametitle{Exemple avec des combinaisons de dés}
\begin{center}
\vspace*{0.75cm}
    \begin{tikzpicture}[scale=0.5]
        % Define Dice Faces
        \def\diceA{1,2,3,4,5,6} % Top Die (Static)
        \def\diceB{6,5,4,3,2,1} % Bottom Die (Sliding)

        % Define step spacing
        \def\stepSpace{3}

        % Loop through each step
        \foreach \step in {-1,0,1,2} {
        		\pgfmathsetmacro{\sommedonnant}{int(7 + \step)}
            % Label step number
            \node[anchor=east] at (-0.5, -\step*3) {Somme donnant \sommedonnant:};

            % Top Row - Fixed Dice
            \foreach \x [count=\i] in \diceA {
                \node[draw, minimum size=0.5cm] at (\i, -\step*3) {\x};
            }

            % Bottom Row - Sliding Dice
            \foreach \x [count=\i] in \diceB {
            		\pgfmathsetmacro{\sumval}{int(\i + \step)}
            		\ifnum \sumval > 0 \ifnum \sumval < 7 \node[draw=red, minimum size=0.5cm] at (\i+\step, -\step*3-1) {\x};
            		\else
                \node[draw, minimum size=0.5cm] at (\i+\step, -\step*3-1) {\x};
                \fi
                \else
                \node[draw, minimum size=0.5cm] at (\i+\step, -\step*3-1) {\x};
                \fi
            }
        }
    \end{tikzpicture}
\end{center}
\end{frame}
\begin{frame}
\frametitle{Exemple avec des combinaisons de dés}
\begin{center}
\vspace*{0.75cm}
    \begin{tikzpicture}[scale=0.5]
        % Define Dice Faces
        \def\diceA{1,2,3,4,5,6} % Top Die (Static)
        \def\diceB{6,5,4,3,2,1} % Bottom Die (Sliding)

        % Define step spacing
        \def\stepSpace{3}

        % Loop through each step
        \foreach \step in {3,4,5} {
        		\pgfmathsetmacro{\sommedonnant}{int(7 + \step)}
            % Label step number
            \node[anchor=east] at (-0.5, -\step*3) {Somme donnant \sommedonnant:};

            % Top Row - Fixed Dice
            \foreach \x [count=\i] in \diceA {
                \node[draw, minimum size=0.5cm] at (\i, -\step*3) {\x};
            }

            % Bottom Row - Sliding Dice
            \foreach \x [count=\i] in \diceB {
            		\pgfmathsetmacro{\sumval}{int(\i + \step)}
            		\ifnum \sumval > 0 \ifnum \sumval < 7 \node[draw=red, minimum size=0.5cm] at (\i+\step, -\step*3-1) {\x};
            		\else
                \node[draw, minimum size=0.5cm] at (\i+\step, -\step*3-1) {\x};
                \fi
                \else
                \node[draw, minimum size=0.5cm] at (\i+\step, -\step*3-1) {\x};
                \fi
            }
        }
    \end{tikzpicture}
\end{center}
\end{frame}
\begin{frame}
	\frametitle{Lien avec les convolutions}
	\begin{center}
\noindent\begin{minipage}{.5\textwidth}
\centering
  \begin{tikzpicture}[scale=0.4]
        \begin{axis}[
            xlabel={Somme},
            ylabel={Fréquence},
            ymin=0,
            ymax=7,
            xmin=1.5,
            xmax=12.5,
            xtick={2,3,4,5,6,7,8,9,10,11,12},
            ytick={1,2,3,4,5,6,7},
            area style,
            width=12cm,
            height=8cm,
            major grid style={line width=.2pt,draw=gray!50},
            grid=major,
            bar width=0.8,
            title={Distribution des sommes},
            nodes near coords,
        ]
        \addplot[fill=blue!40, draw=blue!80, opacity=0.8] coordinates {
            (2,1)
            (3,2)
            (4,3)
            (5,4)
            (6,5)
            (7,6)
            (8,5)
            (9,4)
            (10,3)
            (11,2)
            (12,1)
        };
        \end{axis}
\end{tikzpicture}
  \end{minipage}%
\begin{minipage}{.5\textwidth}
\centering
  \begin{tikzpicture}[scale=0.5]
        \begin{axis}[
            xlabel={$x$},
            ylabel={$f(x)$},
            xmin=-1,
            xmax=8,
            ymin=-0.2,
            ymax=1.4,
            xtick={-1,0,1,2,3,4,5,6,7,8},
            ytick={0,1},
            width=10cm,
            height=6cm,
            grid=major,
            title={Fonction nulle puis constante égale à $1$ puis nulle},
            samples=100,
            domain=-1:8,
            clip=false,
        ]
        % Plot the function
        \addplot[blue, thick, const plot] coordinates {
            (-1, 0)
            (0.999, 0)
            (1, 1)
            (6, 1)
            (6.001, 0)
            (8, 0)
        };
        
        % Add markers to explicitly show the endpoints
        \addplot[only marks, mark=*, mark options={fill=red}] coordinates {
            (1, 1)
            (6, 1)
        };
        
    \end{axis}
\end{tikzpicture}
 \end{minipage}
\end{center}
\begin{center}
\includegraphics[width=7cm, trim={0 0 0 0}, clip]{2025-04-01T23:42:09,818697014+02:00.png}
\captionof{figure}{numpy confirme ce résultat}
\end{center}
\end{frame}
\begin{frame}
	\frametitle{Intuition sur la convolution}
	\begin{center}
    \begin{tikzpicture}
        \begin{axis}[
            axis lines = middle,
            xlabel = {$x$},
            ylabel = {$y$},
            samples=300,
            domain=-6:6,
            legend pos=north east,
            width=1\textwidth,
            height=1.1\textheight
        ]
            \addplot[blue, thick] {cos(deg(2*x))};
            \addlegendentry{$\cos(2x)$}
            \addplot[red, thick] {sin(deg(x))};
            \addlegendentry{$\sin(x)$}
        \end{axis}
    \end{tikzpicture}
    \end{center}
\end{frame}
\begin{frame}
	\frametitle{Intuition sur la convolution}
	\begin{center}
    \begin{tikzpicture}
        \begin{axis}[
            axis lines = middle,
            xlabel = {$x$},
            ylabel = {$y$},
            samples=300,
            domain=-6:6,
            legend pos=north east,
            width=1\textwidth,
            height=1.1\textheight
        ]
            \addplot[blue, thick] {cos(deg(2*x))};
            \addlegendentry{$\cos(2x)$}
            \addplot[red, thick] {sin(deg(-x))};
            \addlegendentry{$\sin(-x)$}
        \end{axis}
    \end{tikzpicture}
    \end{center}
\end{frame}
\begin{frame}
	\frametitle{Intuition sur la convolution}
	\begin{center}
        \begin{tikzpicture}
            \begin{axis}[
                axis lines = middle,
                xlabel = {$x$},
                ylabel = {$y$},
                samples=300,
                domain=-6:6,
                legend pos=north east,
                width=1\textwidth,
                height=1.1\textheight
            ]
                \addplot[blue, thick] {cos(deg(2*x))*sin(deg(-x))};
                \addlegendentry{$\cos(2x)\sin(-x)$}
        
                % Highlight positive areas in red
                \addplot [fill=red, opacity=0.3, domain=-2*pi:2*pi] 
                    {max(0, cos(deg(2*x))*sin(deg(-x)))} \closedcycle;
        
                % Highlight negative areas in blue
                \addplot [fill=blue, opacity=0.3, domain=-2*pi:2*pi] 
                    {min(0, cos(deg(2*x))*sin(deg(-x)))} \closedcycle;
        
            \end{axis}
        \end{tikzpicture}
        \end{center}
\end{frame}
\begin{frame}
	\frametitle{Moyennage}
\begin{center}
    \begin{tikzpicture}[scale=0.7]
        \begin{axis}[
            xlabel={$x$},
            ylabel={$y$},
            xmin=-0.5,
            xmax=23.5,
            ymin=-0.5,
            ymax=9,
            xtick={0,2,4,6,8,10,12,14,16,18,20,22},
            width=12cm,
            height=8cm,
            grid=major,
            title={Moyennage par convolution},
            legend pos=north west,
        ]
        % Plot the first dataset with connected lines
        \addplot[blue, thick] coordinates {
            (0,0) (1,0) (2,0) (3,0) (4,1) (5,2) (6,3) (7,4) (8,5) (9,6) (10,7) (11,8)
            (12,0) (13,4) (14,2) (15,3) (16,8) (17,1) (18,2) (19,4) (20,8) (21,0) (22,0) (23,0)
        };
        
        % Plot the second dataset with connected lines
        \addplot[red, thick] coordinates {
            (0,0) 
            (1,0.16666667) 
            (2,0.5) 
            (3,1) 
            (4,1.66666667) 
            (5,2.5) 
            (6,3.5) 
            (7,4.5) 
            (8,5.5) 
            (9,5) 
            (10,5) 
            (11,4.5) 
            (12,4) 
            (13,4.16666667) 
            (14,3) 
            (15,3.33333333) 
            (16,3.33333333) 
            (17,4.33333333) 
            (18,3.83333333) 
            (19,2.5) 
            (20,2.33333333) 
            (21,2) 
            (22,1.33333333) 
            (23,0)
        };
        
        \legend{$g$, $g*\frac{f}{6}$}
        
    \end{axis}
    \end{tikzpicture}
\end{center}
\end{frame}
\begin{frame}
	\frametitle{Transformée de Fourier discrète}
	$a=[a_0,a_1,...,a_{n-1}]$ et $b=[b_0,b_1,...,b_{k-1}]$
	
$(a*b)[p] = \sum\limits_{\substack{i\in\mathbb{Z} \\ 0\leq p-i\leq k\\ 0\leq i\leq n-1}} a_ib_{p-i}$

$P(X)=\sum_{i=0}^{n-1} a_i X^i$ et $Q(X)=\sum_{j=0}^{k-1} a_j X^j$

$(a*b)[p]$ est le coefficient du terme de degré $p$ dans le produit:

$PQ(X)=\sum_{j=0}^p(\sum\limits_{\substack{i\in\mathbb{Z} \\ 0\leq p-i\leq k-1\\ 0\leq i\leq n-1}} a_ib_{j-i})X^j$

On va évaluer en $\omega_n^k = e^{-\frac{2ki\pi}{n}}$ et utiliser la rigidité des polynômes.
\end{frame}
\begin{frame}
	\frametitle{Utilisation de la rigidité des polynômes}
On va évaluer en $\omega_n^k = e^{-\frac{2ki\pi}{n}}$, multiplier deux à deux les résultats et utiliser la rigidité des polynômes pour récuperer les coefficients finaux.

\end{frame}

\begin{frame}
	\frametitle{Radix-2 decimation-in-time (DIT) - Factorisation Cooley-Tukey}
Evaluer notre polynôme $P(x)=\sum_{i=0}^{n-1} a_i x^i$ en les $\omega_n^k$ revient à faire la multiplication matricielle suivante:
\small{
\[
R=\begin{bmatrix} f_0 \\ f_1 \\ \vdots \\ f_{n-1} \end{bmatrix}=\begin{bmatrix} P(\omega_n^0) \\ P(\omega_n^1) \\ \vdots \\ P(\omega_n^{n-1}) \end{bmatrix}\]
\[=
\begin{bmatrix} 
1 & 1 & 1 & \cdots & 1 \\ 
1 & \omega_n^1 & \omega_n^2 & \cdots & \omega_n^{n-1} \\ 
1 & \omega_n^2 & \omega_n^4 & \cdots & \omega_n^{2(n-1)} \\ 
\vdots & \vdots & \vdots & \ddots & \vdots \\ 
1 & \omega_n^{n-1} & \omega_n^{2(n-1)} & \cdots & \omega_n^{(n-1)(n-1)} 
\end{bmatrix}
\begin{bmatrix} a_0 \\ a_1 \\ \vdots \\ a_{n-1} \end{bmatrix}
\]}
\end{frame}

\begin{frame}
	\frametitle{Radix-2 decimation-in-time (DIT) - Factorisation Cooley-Tukey}
On se restreint au cas où $n=2^p$ ($p \in \mathbb{N}$)

On note la matrice de Vandermonde transposée, qui permet de calculer le DFT pour tous nos coefficients,
\small{
$F_{2^p}=\begin{bmatrix} 
1 & 1 & 1 & \cdots & 1 \\ 
1 & \omega_n^1 & \omega_n^2 & \cdots & \omega_n^{n-1} \\ 
1 & \omega_n^2 & \omega_n^4 & \cdots & \omega_n^{2(n-1)} \\ 
\vdots & \vdots & \vdots & \ddots & \vdots \\ 
1 & \omega_n^{n-1} & \omega_n^{2(n-1)} & \cdots & \omega_n^{(n-1)(n-1)} 
\end{bmatrix}$
}

On prend cette matrice diagonale,
\small{
$D_{2^{p-1}} =
\begin{bmatrix}
1 & 0 & 0 & \cdots & 0 \\
0 & \omega_{2^{p-1}} & 0 & \cdots & 0 \\
0 & 0 & \omega_{2^{p-1}}^2 & \cdots & 0 \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
0 & 0 & 0 & \cdots & \omega_{2^{p-1}}^{2^{p-1}-1}
\end{bmatrix}$
}

\end{frame}

\begin{frame}
\frametitle{Radix-2 decimation-in-time (DIT) - Factorisation Cooley-Tukey}
\tiny{
\begin{equation*}
R=F_{2^p}\begin{bmatrix} a_0 \\ a_1 \\ \vdots \\ a_{n-1} \end{bmatrix}=
\begin{pNiceArray}{cc|cc}
  \eqnmarkbox[blue]{mcoeffdiag1}{I_{2^{p-1}}} && \eqnmarkbox[blue]{mcoeffdiag2}{D_{2^{p-1}}} \\
  \hline
  \eqnmarkbox[blue]{mcoeffdiag3}{I_{2^{p-1}}} && \eqnmarkbox[blue]{mcoeffdiag4}{-D_{2^{p-1}}}
\end{pNiceArray}
\begin{pNiceArray}{cc|cc}
  \eqnmarkbox[cyan]{mrecurrence1}{F_{2^{p-1}}} && \mathbf{0} \\
  \hline
  \mathbf{0} && \eqnmarkbox[cyan]{mrecurrence2}{F_{2^{p-1}}}
\end{pNiceArray}
\begin{bmatrix} 
  \eqnmarkbox[green]{mcoeffpairs1}{a_0} \\ 
  \eqnmarkbox[green]{mcoeffpairs2}{a_2} \\ 
  \vdots \\ 
  \eqnmarkbox[green]{mcoeffpairs3}{a_{2^{p-1}-2}}  \\ 
  \eqnmarkbox[green]{mcoeffpairs4}{a_{2^{p-1}}} \\ 
  \eqnmarkbox[magenta]{mcoeffimpairs1}{a_{1}} \\ 
  \eqnmarkbox[magenta]{mcoeffimpairs2}{a_{3}} \\ 
  \vdots \\ 
  \eqnmarkbox[magenta]{mcoeffimpairs3}{a_{n-3}} \\ 
  \eqnmarkbox[magenta]{mcoeffimpairs4}{a_{n-1}} 
\end{bmatrix}
\end{equation*}
}
\annotatetwo[yshift=1em]{above}{mcoeffdiag1}{mcoeffdiag2}{Blocs diagonaux, de l'ordre de $\mathcal{O}(n)$ opérations}
\annotate[yshift=1em]{above,left}{mcoeffpairs1}{Coefficients d'indice pair}
\annotate[yshift=0em]{below,left}{mcoeffimpairs4}{Coefficients d'indice impair}
\annotate[yshift=0em]{below,left}{mrecurrence2}{Récurrence}
\end{frame}

\begin{frame}
\frametitle{Radix-2 decimation-in-time (DIT) - Factorisation Cooley-Tukey}
On évalue la compléxité de l'algorithme.\\
On note $u_p$ sa complexité en fonction de $p$ et $C_n$ sa complexité en fonction de $n$.

\vspace*{0.3cm}
\begin{equation*}
u_{p+1}=\eqnmarkbox[magenta]{cdiagmult}{A \cdot 2^{p+1}}+\eqnmarkbox[red]{crec}{2u_{p}}
\end{equation*}
\annotate[yshift=0.5em]{above,left}{cdiagmult}{Compléxité du produit sur la diagonale}
\annotate[yshift=0em]{below,left}{crec}{Traitement des coefficients par récurrence}

On factorise par la solution homogène,
$\frac{u_{p+1}}{2^{p+1}}=A+\frac{u_{p}}{2^p}$

$\frac{u_{p}}{2^{p}}=u_{0}+A\cdot p$

$u_{p}=u_{0}\cdot2^{p}+A\cdot p \cdot 2^{p}$

Or $p=\log_2{n}$

Donc $C_n = u_{\log_2{n}} = u_{0} \cdot n+A \cdot \log_2{n} \cdot n = \mathcal{O}(n \log n)$
\end{frame}

\begin{frame}
\frametitle{IFFT}
On peut montrer que:
$F_{2^p}^{-1}=\frac{1}{2^p}\begin{bmatrix} 
1 & 1 & 1 & \cdots & 1 \\ 
1 & \overline{\omega_n}^1 & \overline{\omega_n}^2 & \cdots & \overline{\omega_n}^{n-1} \\ 
1 & \overline{\omega_n}^2 & \overline{\omega_n}^4 & \cdots & \overline{\omega_n}^{2(n-1)} \\ 
\vdots & \vdots & \vdots & \ddots & \vdots \\ 
1 & \overline{\omega_n}^{n-1} & \overline{\omega_n}^{2(n-1)} & \cdots & \overline{\omega_n}^{(n-1)(n-1)} 
\end{bmatrix}$

Et on a:

$A=\begin{bmatrix} a_0 \\ a_1 \\ \vdots \\ a_{n-1} \end{bmatrix}=F_{2^p}^{-1}R=F_{2^p}^{-1}\begin{bmatrix} f_0 \\ f_1 \\ \vdots \\ f_{n-1} \end{bmatrix}$


\end{frame}
\begin{frame}
\frametitle{IFFT}
Le conjugué passe au produit et à la somme, donc aussi pour les matrices (prendre le conjugué d'une matrice c'est prendre le conjugué des termes de la matrice).

$A=\overline{\overline{A}}=\overline{\overline{F_{2^p}^{-1}R}}=\overline{\overline{F_{2^p}^{-1}}\overline{R}}=\frac{1}{2^p}\overline{F_{2^p}\overline{R}}$

On peut donc utiliser la même technique, en prenant le conjugué avant d'appliquer un FFT et en le prenant après puis en renormalisant.
\end{frame}

\begin{frame}
\frametitle{Passage du domaine temporel au domaine fréquentiel}
Le fait de multiplier par ces coefficients spécifiques, revient à décomposer en ondes sinusoidales de différentes fréquences et phases notre signal.
\end{frame}

\begin{frame}
\frametitle{Corrélation croisée}
Si on définit $\tilde{f}(t)=f(-t)$

La corrélation croisée de  \(f\) et \(g\) est  \( (g * \tilde{f})(t) = \int_{-\infty}^{\infty} \overline{f(x-t)} g(x) \, dx \) 

\begin{center}
    \begin{tikzpicture}[scale=0.5]
        \begin{axis}[
            axis lines = middle,
            xlabel = {$x$},
            ylabel = {$y$},
            samples=100,
            domain=-6:6,
            legend pos=north east,
            width=2\textwidth,
            height=0.6\textheight
        ]
            \addplot[blue, thick] {cos(deg(x))};
            \addlegendentry{$g(x)=\cos(x)$}
            \addplot[red, thick] {sin(deg(x))};
            \addlegendentry{$f(x)=\sin(x)$}
        \end{axis}
    \end{tikzpicture}
    \end{center}
    
    \begin{center}
    \begin{tikzpicture}[scale=0.5]
        \begin{axis}[
            axis lines = middle,
            xlabel = {$x$},
            ylabel = {$y$},
            samples=100,
            domain=-6:6,
            legend pos=north east,
            width=2\textwidth,
            height=0.6\textheight
        ]
            \addplot[blue, thick] {pi*sin(deg(x))};
            \addlegendentry{$(g * \tilde{f})(t) = \pi \sin(t)$}
        \end{axis}
    \end{tikzpicture}
    \end{center}

\end{frame}


\subsection{Modélisation de la propagation des ondes sismiques}
\begin{frame}
	\frametitle{Calcul du temps de propagation selon iasp91}
	\begin{figure}%
    \centering
    \subfloat[\centering TauPy]{{\includegraphics[width=3cm, trim={0 0 0 0}, clip]{2025-03-26T23:10:40,393866488+01:00-side.png}}}%
    \qquad
    \subfloat[\centering]{{\includegraphics[width=4cm, trim={0 0 0 0}, clip]{IASP91.png}}}%
    \caption{iasp91}%
    \label{fig:iasp91}%
\end{figure}
\end{frame}
\begin{frame}
	\frametitle{Tabulation et interpolation}
\begin{center}
	\includegraphics[width=10cm, trim={12cm 4cm 12cm 8cm}, clip]{2025-03-24T00:28:53,070002973+01:00.png}\\
	\captionof{figure}{Visualization des deux tables précalculées}
\end{center}
\end{frame}
\subsection{Multilatération}
\begin{frame}
\frametitle{Fonction d'erreur}
\vspace*{1em}
\tiny{
\begin{equation*}
    \text{E}(\eqnmarkbox[blue]{p1}{depth},\eqnmarkbox[blue]{p2}{lat},\eqnmarkbox[blue]{p3}{lon},\eqnmarkbox[blue]{p4}{epoch},\eqnmarkbox[green]{p5}{obs})=\end{equation*}\vspace*{5em}
    \begin{equation*}\sum_i \left(\frac{\eqnmarkbox[green]{p6}{(obs_iS-epoch)}-\eqnmarkbox[blue]{p7}{\text{S}(depth, \eqnmark[red]{p8}{\text{greatCircleAngle}(lat,lon,lat_i,lon_i))}}}{\eqnmarkbox[green]{p9}{obs_iS-epoch}}\right)^{\eqnmarkbox[magenta]{p11}{2}}+
    \end{equation*}\vspace*{3em}
    \begin{equation*}
    \eqnmarkbox[pink]{p10}{\left(\frac{(obs_iP-epoch)-\text{P}(depth, \text{greatCircleAngle}(lat,lon,lat_i,lon_i))}{obs_iP-epoch}\right)^2}
\end{equation*}}
\annotate[yshift=0em]{below}{p1}{\tiny{Profondeur estimée}}
\annotatetwo[yshift=1.2em]{above}{p2}{p3}{\tiny{Latitude et longitude estimée}}
\annotate[yshift=0.5em]{above}{p4}{\tiny{Date de début du séisme estimée}}
\annotate[yshift=-0.4em]{below}{p5}{\tiny{Tableau des observations}}
\annotate[yshift=2.5em]{above}{p6}{\tiny{Temps de propagation avec la date de début du séisme estimée}}
\annotate[yshift=3.5em]{above,left}{p7}{\tiny{Temps de propagation calculé par le modèle}}
\annotate[yshift=1em]{above,left}{p8}{\tiny{Calcul de l'angle entre le seismographe et la position estimée du séisme}}
\annotate[yshift=0em]{below,left}{p9}{\tiny{Renormalisation}}
\annotate[yshift=-6em]{below,left}{p11}{\tiny{On fait la moyenne quadratique pour avoir l'écart}}
\annotate[yshift=0em]{below,left}{p10}{\tiny{Idem mais pour l'onde P}}
\end{frame}
\begin{frame}
\frametitle{Implémentation de la fonction d'erreur}
\begin{center}
	\includegraphics[width=10cm, trim={0 0 0 0}, clip]{2025-03-31T10:14:11,496825900+02:00.png}\\
	\captionof{figure}{Implémentation de la fonction d'erreur}
\end{center}
\end{frame}
\begin{frame}
\frametitle{Méthode de Nelder-Mead}
\centering
\includegraphics[width=10cm, trim={0 0 0 0}, clip]{neldermead/An-iteration-of-the-Nelder-Mead-method-over-two-dimensional-space-showing-point-p-min.png}
  \captionof{figure}{Une itération de Nelder-Mead sur un espace de dimension 2}
\end{frame}
\begin{frame}
\frametitle{Méthode de Nelder-Mead}
\centering
\includegraphics[width=6cm, trim={0 0 0 0}, clip]{neldermead/Nelder-Mead_Himmelblau-0001.png}
  \captionof{figure}{Nelder-Mead sur la fonction de Himmelblau}
\end{frame}
\begin{frame}
\frametitle{Méthode de Nelder-Mead}
\centering
\includegraphics[width=6cm, trim={0 0 0 0}, clip]{neldermead/Nelder-Mead_Himmelblau-0002.png}
  \captionof{figure}{Nelder-Mead sur la fonction de Himmelblau}
\end{frame}
\begin{frame}
\frametitle{Méthode de Nelder-Mead}
\centering
\includegraphics[width=6cm, trim={0 0 0 0}, clip]{neldermead/Nelder-Mead_Himmelblau-0003.png}
  \captionof{figure}{Nelder-Mead sur la fonction de Himmelblau}
\end{frame}
\begin{frame}
\frametitle{Méthode de Nelder-Mead}
\centering
\includegraphics[width=6cm, trim={0 0 0 0}, clip]{neldermead/Nelder-Mead_Himmelblau-0004.png}
  \captionof{figure}{Nelder-Mead sur la fonction de Himmelblau}
\end{frame}
\begin{frame}
\frametitle{Méthode de Nelder-Mead}
\centering
\includegraphics[width=6cm, trim={0 0 0 0}, clip]{neldermead/Nelder-Mead_Himmelblau-0005.png}
  \captionof{figure}{Nelder-Mead sur la fonction de Himmelblau}
\end{frame}
\begin{frame}
\frametitle{Méthode de Nelder-Mead}
\centering
\includegraphics[width=6cm, trim={0 0 0 0}, clip]{neldermead/Nelder-Mead_Himmelblau-0006.png}
  \captionof{figure}{Nelder-Mead sur la fonction de Himmelblau}
\end{frame}
\begin{frame}
\frametitle{Méthode de Nelder-Mead}
\centering
\includegraphics[width=6cm, trim={0 0 0 0}, clip]{neldermead/Nelder-Mead_Himmelblau-0007.png}
  \captionof{figure}{Nelder-Mead sur la fonction de Himmelblau}
\end{frame}
\begin{frame}
\frametitle{Méthode de Nelder-Mead}
\centering
\includegraphics[width=6cm, trim={0 0 0 0}, clip]{neldermead/Nelder-Mead_Himmelblau-0008.png}
  \captionof{figure}{Nelder-Mead sur la fonction de Himmelblau}
\end{frame}
\begin{frame}
\frametitle{Méthode de Nelder-Mead}
\centering
\includegraphics[width=6cm, trim={0 0 0 0}, clip]{neldermead/Nelder-Mead_Himmelblau-0009.png}
  \captionof{figure}{Nelder-Mead sur la fonction de Himmelblau}
\end{frame}
\begin{frame}
\frametitle{Méthode de Nelder-Mead}
\centering
\includegraphics[width=6cm, trim={0 0 0 0}, clip]{neldermead/Nelder-Mead_Himmelblau-0010.png}
  \captionof{figure}{Nelder-Mead sur la fonction de Himmelblau}
\end{frame}
\begin{frame}
\frametitle{Méthode de Nelder-Mead}
\centering
\includegraphics[width=6cm, trim={0 0 0 0}, clip]{neldermead/Nelder-Mead_Himmelblau-0011.png}
  \captionof{figure}{Nelder-Mead sur la fonction de Himmelblau}
\end{frame}
\begin{frame}
\frametitle{Méthode de Nelder-Mead}
\centering
\includegraphics[width=6cm, trim={0 0 0 0}, clip]{neldermead/Nelder-Mead_Himmelblau-0012.png}
  \captionof{figure}{Nelder-Mead sur la fonction de Himmelblau}
\end{frame}
\begin{frame}
\frametitle{Méthode de Nelder-Mead}
\centering
\includegraphics[width=6cm, trim={0 0 0 0}, clip]{neldermead/Nelder-Mead_Himmelblau-0013.png}
  \captionof{figure}{Nelder-Mead sur la fonction de Himmelblau}
\end{frame}
\begin{frame}
\frametitle{Méthode de Nelder-Mead}
\centering
\includegraphics[width=6cm, trim={0 0 0 0}, clip]{neldermead/Nelder-Mead_Himmelblau-0014.png}
  \captionof{figure}{Nelder-Mead sur la fonction de Himmelblau}
\end{frame}
\begin{frame}
\frametitle{Méthode de Nelder-Mead}
\centering
\includegraphics[width=6cm, trim={0 0 0 0}, clip]{neldermead/Nelder-Mead_Himmelblau-0015.png}
  \captionof{figure}{Nelder-Mead sur la fonction de Himmelblau}
\end{frame}
\begin{frame}
\frametitle{Méthode de Nelder-Mead}
\centering
\includegraphics[width=6cm, trim={0 0 0 0}, clip]{neldermead/Nelder-Mead_Himmelblau-0016.png}
  \captionof{figure}{Nelder-Mead sur la fonction de Himmelblau}
\end{frame}
\begin{frame}
\frametitle{Méthode de Nelder-Mead}
\centering
\includegraphics[width=6cm, trim={0 0 0 0}, clip]{neldermead/Nelder-Mead_Himmelblau-0017.png}
  \captionof{figure}{Nelder-Mead sur la fonction de Himmelblau}
\end{frame}
\begin{frame}
\frametitle{Méthode de Nelder-Mead}
\centering
\includegraphics[width=6cm, trim={0 0 0 0}, clip]{neldermead/Nelder-Mead_Himmelblau-0018.png}
  \captionof{figure}{Nelder-Mead sur la fonction de Himmelblau}
\end{frame}
\begin{frame}
\frametitle{Méthode de Nelder-Mead}
\centering
\includegraphics[width=6cm, trim={0 0 0 0}, clip]{neldermead/Nelder-Mead_Himmelblau-0019.png}
  \captionof{figure}{Nelder-Mead sur la fonction de Himmelblau}
\end{frame}
\begin{frame}
\frametitle{Méthode de Nelder-Mead}
\centering
\includegraphics[width=6cm, trim={0 0 0 0}, clip]{neldermead/Nelder-Mead_Himmelblau-0020.png}
  \captionof{figure}{Nelder-Mead sur la fonction de Himmelblau}
\end{frame}
\subsection{Magnitude sismique}
\begin{frame}
\frametitle{Formule de calcul de magnitude sur l'échelle Richter}
\[
M_\mathrm{L} = \log_{10} \left[ \frac{A}{A_\mathrm{0}(\delta)} \right]
\]

\noindent
où $A$ correspond à l'amplitude maximale mesurée (en m) par le sismographe et $A_\mathrm{0}(\delta)$ un coefficient de correction qui dépend de la distance ($\delta$) à l'epicentre et dont le calcul diffère selon les modèles employés (généralement on utilise une table de correrlation empirique).


On utilisera la formule empirique de Tsuboi (Université de Tokyo): 
\[
M_{\mathrm{L}} = \log_{10} A + 1.73 \log_{10} \Delta - 0.83
\]

\noindent
où \( A \) est l'amplitude maximale en micromètres et \( \Delta \) est la distance en kilomètres.
\end{frame}
\begin{frame}
\frametitle{Tableau}
\tiny
\begin{center}
\begin{tabular}{|>{\columncolor{white}}l|l|l|p{5cm}|}
\hline
\rowcolor{gray!30}
\textbf{Magnitude} & \textbf{Description} & \textbf{MMI Typique} & \textbf{Effets Moyens du Séisme} \\
\hline
\cellcolor{mmi1}1.0 - 1.9 & Micro & I & Micro-séismes, non ressentis. Enregistrés par les sismographes. \\
\hline
\cellcolor{mmi1}2.0 - 2.9 & Mineur & I & Légèrement ressenti par certaines personnes. Aucun dommage aux bâtiments. \\
\hline
\cellcolor{mmi3}3.0 - 3.9 & Léger & II à III & Souvent ressenti, mais cause rarement des dégâts. Secousses perceptibles d’objets à l’intérieur. \\
\hline
\cellcolor{mmi5}4.0 - 4.9 & Faible & IV à V & Secousses intérieures notables et bruits de cliquetis. Légèrement ressenti à l’extérieur. Dégâts minimes possibles. \\
\hline
\cellcolor{mmi6}5.0 - 5.9 & Modéré & VI à VII & Peut endommager les bâtiments mal construits ; ressenti par tous. Peu ou pas de dégâts aux bâtiments solides. \\
\hline
\cellcolor{mmi7}6.0 - 6.9 & Fort & VII à IX & Dégâts modérés aux structures solides ; dégâts sévères aux structures faibles. Ressenti sur de grandes régions. \\
\hline
\cellcolor{mmi8}7.0 - 7.9 & Majeur & VIII ou plus & Dégâts majeurs et effondrements possibles. Dommages concentrés dans un rayon de 250 km. \\
\hline
\cellcolor{mmi9}8.0 - 8.9 & Très fort & VIII+ & Destructions majeures à totales. Dommages sur des zones très vastes. Ressenti à très grande distance de l’épicentre. \\
\hline
\cellcolor{mmi10}9.0 - 9.9 & Extrême & XII & Destruction quasi-totale, dégâts graves ou effondrement de tous les bâtiments. Modification du relief. \\
\hline
\end{tabular}
\end{center}
\end{frame}

\section{Toutes les pièces mises ensembles}

\subsection{Fonctionnement}

\begin{frame}
\frametitle{Architecture générale du système}

\small
\begin{enumerate}
    \item Connexion à tous les sismographes et acquisition des données en temps réel
    \item Corrélation croisée continue avec des signaux de référence d'ondes P et S
    \item Détection d'un événement si plusieurs stations proches détectent un pic de corrélation
    \item Construction d'une liste des stations participantes et des temps d'arrivée
    \item Estimation de la position et du temps du séisme par Nelder-Mead
    \item Calcul de la magnitude à partir de l'amplitude mesurée et des distances calculées
    \item Transmission des résultats en temps réel
\end{enumerate}

Le système peut également alimenter un système d'alerte des populations.
\end{frame}

\begin{frame}
\frametitle{Calibration et prétraitement}

\small

Une phase de calibration est effectuée pour chaque détecteur afin de prendre en compte :
\begin{itemize}
    \item la sensibilité propre du capteur ;
    \item le bruit de fond ;
    \item les signaux continus présents en permanence ;
\end{itemize}

\begin{center}
\includegraphics[width=7cm, trim={0 0 0 0}, clip]{screenshots/Screenshotfrom2026-05-1500-21-53.png}
\captionof{figure}{Données précalculées et stockées pour chaque station}
\end{center}

\end{frame}

\begin{frame}
\frametitle{Stations sismiques utilisées}

\begin{center}
\includegraphics[width=8cm, trim={0 0 0 10cm}, clip]{stations.png}
\captionof{figure}{Carte des stations utilisées}
\end{center}

\end{frame}

\begin{frame}
\frametitle{Initialisation des stations}

\begin{center}
\includegraphics[width=8cm, trim={0 0 0 0}, clip]{screenshots/Screenshotfrom2026-05-1423-40-06.png}
\captionof{figure}{Phase de registration des stations}
\end{center}

\end{frame}

\begin{frame}
\frametitle{Détection des ondes}

\begin{center}
\includegraphics[height=0.35cm, trim={0 0 0 0}, clip]{screenshots/Screenshotfrom2026-05-1423-21-09-1.png}
\includegraphics[height=0.35cm, trim={0 0 0 0}, clip]{screenshots/Screenshotfrom2026-05-1423-21-09-2.png}
\includegraphics[height=0.35cm, trim={0 0 0 0}, clip]{screenshots/Screenshotfrom2026-05-1423-21-09-3.png}
\captionof{figure}{Arrivée d'une onde}
\end{center}

\end{frame}

\begin{frame}
\frametitle{Calibration terminée}

\begin{center}
\includegraphics[width=10cm, trim={0 0 0 0}, clip]{screenshots/Screenshotfrom2026-05-1500-08-06.png}
\captionof{figure}{Fin de la phase de calibration}
\end{center}

\end{frame}

\begin{frame}
\frametitle{Détection d'un séisme}

\begin{center}
\includegraphics[height=0.35cm, trim={0 0 0 0}, clip]{screenshots/Screenshotfrom2026-05-1501-18-07-1.png}
\includegraphics[height=0.35cm, trim={0 0 0 0}, clip]{screenshots/Screenshotfrom2026-05-1501-18-07-2.png}
\includegraphics[height=0.35cm, trim={0 0 0 0}, clip]{screenshots/Screenshotfrom2026-05-1501-18-07-3.png}
\includegraphics[height=0.35cm, trim={0 0 0 0}, clip]{screenshots/Screenshotfrom2026-05-1501-18-07-4.png}
\captionof{figure}{Détection d'un séisme de magnitude 3}
\end{center}

\end{frame}

\begin{frame}
\frametitle{Interface web temps réel}

{\fontsize{7}{8}\selectfont
Une interface web permet également de visualiser en temps réel :
\begin{itemize}
    \setlength{\itemsep}{2pt}
    \setlength{\topsep}{2pt}
    \setlength{\parsep}{0pt}
    \setlength{\parskip}{0pt}
    \item les traces des sismographes ;
    \item les détections d'ondes ;
    \item les stations actives ;
    \item les séismes détectés.
\end{itemize}

\begin{center}
\includegraphics[width=4cm, trim={0 0 0 0}, clip]{screenshots/Screenshotfrom2026-05-1500-14-28.png}
\captionof{figure}{Interface web}
\end{center}
}

\end{frame}

\subsection{Résultats}

\begin{frame}
\frametitle{Comparaison avec les résultats de l'USGS}
{\fontsize{7}{8}\selectfont
Voici un exemple de séisme détecté par le système.

Les positions estimées sont cohérentes avec celles fournies par l'USGS ainsi que les magnitudes estimées.

\begin{figure}
    \centering
    \begin{minipage}{0.49\textwidth}
        \centering
        \includegraphics[width=3.5cm, trim={0 0 0 0}, clip]{debugMaps/rs2025fwmrzv.png}
        \caption{Estimation du système (M5.9)}
    \end{minipage}
    \hfill
    \begin{minipage}{0.49\textwidth}
        \centering
        \includegraphics[width=4cm, trim={0 0 0 0}, clip]{2025-03-25T21:07:44,659295790+01:00-cropped.png}
        \caption{Estimation USGS (M6.2)}
    \end{minipage}
\end{figure}
}
\end{frame}

\section{Précision et erreur}

\subsection{Cas linéarisé à quatre détecteurs}

\begin{frame}
\frametitle{Cadre simplifié}
{\fontsize{7}{8}\selectfont
Dans certains cas, les détecteurs sont suffisamment éloignés pour permettre une linéarisation des équations de propagation.

On considère :
\begin{itemize}
	\setlength{\itemsep}{2pt}
    \setlength{\topsep}{2pt}
    \setlength{\parsep}{0pt}
    \setlength{\parskip}{0pt}
    \item quatre émetteurs ;
    \item une propagation rectiligne ;
    \item un milieu homogène, isotrope et transparent ;
\end{itemize}

Les inconnues sont :
\[
(x,y,z,t)
\]

avec :
\begin{itemize}  
	\setlength{\itemsep}{2pt}
    \setlength{\topsep}{2pt}
    \setlength{\parsep}{0pt}
    \setlength{\parskip}{0pt}
    \item $(x,y,z)$ la position mesurée;
    \item $t$ la date d'émission du ping par les satellites (de façon synchrone).
\end{itemize}

On fixe la position du récepteur à l'origine et on désigne la position des quatre satellites par les vecteurs $\vec{a}, \vec{b}, \vec{c}$ et $\vec{d}$.

Soit $\vec{M} = (x, y, z)^\top$.

}
\end{frame}

\begin{frame}
\frametitle{Géométrie du problème}
\begin{figure}[h]
\centering
\tdplotsetmaincoords{80}{140} % angle de vue (élévation, azimuth)
\begin{tikzpicture}[tdplot_main_coords, scale=1.7]

    % Origine (récepteur)
    \filldraw[black] (0,0,0) circle (1.5pt) node[below] {$\vec{M'}=0$};

    % Axes optionnels
    \draw[->] (0,0,0) -- (1.5,0,0) node[left] {$x$};
    \draw[->] (0,0,0) -- (0,1.5,0) node[right] {$y$};
    \draw[->] (0,0,0) -- (0,0,1.5) node[above] {$z$};

    % Satellite a
    \coordinate (A) at (2,1,2);
    \filldraw[blue] (A) circle (1.5pt);
    \draw[-{Stealth}, blue] (0,0,0) -- (A) node[right] {$\vec{a}$};
    \draw[-{Stealth}, red, thick] (0,0,0) -- (0.666667,0.333333,0.666667) node[midway,right] {$\vec{u}_a$};

    % Satellite b
    \coordinate (B) at (-1,2,2);
    \filldraw[blue] (B) circle (1.5pt);
    \draw[-{Stealth}, blue] (0,0,0) -- (B) node[right] {$\vec{b}$};
    \draw[-{Stealth}, red, thick] (0,0,0) -- (-0.333333,0.666667,0.666667) node[midway,left] {$\vec{u}_b$};

    % Satellite c
    \coordinate (C) at (1,-2,2);
    \filldraw[blue] (C) circle (1.5pt);
    \draw[-{Stealth}, blue] (0,0,0) -- (C) node[right] {$\vec{c}$};
    \draw[-{Stealth}, red, thick] (0,0,0) -- (0.333333,-0.666667,0.666667) node[midway,right] {$\vec{u}_c$};

    % Satellite d
    \coordinate (D) at (-1,-1,3);
    \filldraw[blue] (D) circle (1.5pt);
    \draw[-{Stealth}, blue] (0,0,0) -- (D) node[right] {$\vec{d}$};
    \draw[-{Stealth}, red, thick] (0,0,0) -- (-0.3015113445,-0.3015113445,0.9045340337) node[midway,right] {$\vec{u}_d$};

\end{tikzpicture}
\caption{Géométrie GPS : satellites et vecteurs unitaires $\vec{u}_i$ associés}
\end{figure}

\end{frame}

\begin{frame}
\frametitle{Linéarisation}
{\fontsize{7}{8}\selectfont
Les équations qui rendent compte du retard de propagation sont :
\begin{align*}
\|M - \vec{a}\|^2 &= v^2(\tau_a - t)^2 \\
\|M - \vec{b}\|^2 &= v^2(\tau_b - t)^2 \\
\|M - \vec{c}\|^2 &= v^2(\tau_c - t)^2 \\
\|M - \vec{d}\|^2 &= v^2(\tau_d - t)^2
\end{align*}

On écrit $\vec{M} = \vec{M'} + \vec{\delta M}$, $t = t' + \delta t$, $\tau_a = \tau_a' + \delta\tau_a$, $\tau_b = \tau_b' + \delta\tau_b$, $\tau_c = \tau_c' + \delta\tau_c$, $\tau_d = \tau_d' + \delta\tau_d$.

$\vec{M'}$ est la vraie position, donc $\vec{M'} = 0$ vu notre choix de coordonnées, et $t' = 0$ également ; $\tau_a'$, $\tau_b'$, $\tau_c'$ et $\tau_d'$ sont les temps de propagation entre les satellites et l'origine.

Après développement limité à l'ordre 1 :
\begin{align*}
\langle \vec{\delta M}, \vec{u}_a \rangle + v(\delta\tau_a - \delta t) &= 0 \\
\langle \vec{\delta M}, \vec{u}_b \rangle + v(\delta\tau_b - \delta t) &= 0 \\
\langle \vec{\delta M}, \vec{u}_c \rangle + v(\delta\tau_c - \delta t) &= 0 \\
\langle \vec{\delta M}, \vec{u}_d \rangle + v(\delta\tau_d - \delta t) &= 0
\end{align*}
}

\end{frame}

\begin{frame}
\frametitle{Linéarisation}

{\fontsize{9}{10}\selectfont
On obtient alors un système linéaire :
\[
AX = Y
\]

Avec 
\[
A = \frac{1}{v}
\begin{pmatrix}
u_{ax} & u_{ay} & u_{az} & -v \\
u_{bx} & u_{by} & u_{bz} & -v \\
u_{cx} & u_{cy} & u_{cz} & -v \\
u_{dx} & u_{dy} & u_{dz} & -v
\end{pmatrix},
\quad
X = \begin{pmatrix} \delta x \\ \delta y \\ \delta z \\ \delta t \end{pmatrix},
\quad
Y = \begin{pmatrix} \delta\tau_a \\ \delta\tau_b \\ \delta\tau_c \\ \delta\tau_d \end{pmatrix}
\]
}

\end{frame}

\begin{frame}
\frametitle{Calcul de l'incertitude}
{\fontsize{9}{10}\selectfont

Si on choisit $Y$ comme variable aléatoire où chaque coordonnée est indépendante, centrée et de $\mathbb{E}[(\delta\tau_i)^2] = \sigma_i^2$

On définit la variable aléatoire
\[
X = A^{-1}Y
\]
Alors :
\[
\|X\|^2 = Y^\top (AA^\top)^{-1} Y
\]
$(AA^\top)^{-1}$ étant symétrique positive et inversible (matrice de Gram associée à $A^\top$, i.e.\ aux vecteurs $\vec{u}_i$ complétés d'un $-1$), on peut donc la diagonaliser dans une BON par le théorème spectral.
\[
Q = (\vec{v}_1 \mid \vec{v}_2 \mid \vec{v}_3 \mid \vec{v}_4)
\]
où $\vec{v}_1$, $\vec{v}_2$, $\vec{v}_3$ et $\vec{v}_4$ sont orthonormés.
\begin{align*}
\|X\|^2 = X^\top X &= Y^\top {A^{-1}}^\top A^{-1} Y \\
&= Y^\top Q^\top \operatorname{diag}(\lambda_1, \lambda_2, \lambda_3, \lambda_4)\, Q\, Y \\
&= \sum_{i=1}^{4} \lambda_i \langle \vec{v}_i, Y \rangle^2
\end{align*}
}
\end{frame}

\begin{frame}
\frametitle{Calcul de l'incertitude}
{\fontsize{9}{10}\selectfont
En supposant :
\begin{itemize}
	\setlength{\itemsep}{3pt}
    \setlength{\topsep}{3pt}
    \setlength{\parsep}{0pt}
    \setlength{\parskip}{0pt}
    \item des erreurs indépendantes ;
    \item une variance identique $\sigma_\tau^2$ ;
\end{itemize}

on obtient par calcul:

\[
\mathbb{E}(\|X\|^2)
=
\operatorname{tr}\left((AA^\top)^{-1}\right)\sigma_\tau^2
\]

Lorsque les vecteurs $\vec{u}_i$ deviennent proches, certaines valeurs propres de $(AA^\top)$ deviennent petites et donc les valeurs propres correspondantes de $(AA^\top)^-1$ explosent ce qui provoque une explosion de l'erreur.

Il s'agit de la dilution de précision géométrique.
}
\end{frame}

\begin{frame}
\frametitle{Visualisation géométrique de l'erreur}
\begin{figure}[h]
\centering
\tdplotsetmaincoords{70}{135}
\begin{tikzpicture}[tdplot_main_coords, scale=1.5]

	% j'ai décidé de tourner par la matrice
	%[  0.8636654,  0.4567464, -0.2132249;
  %-0.4446277,  0.8895858,  0.1046102;
  % 0.2374622,  0.0044575,  0.9713866 ]

    % Ellipsoide Q(Y)=C projeté en 3D (delta_tau_d fixé)
    % On visualise dans l'espace (delta_tau_a, delta_tau_b, delta_tau_c)

    % Axes
    \draw[-{Stealth}, gray] (0,0,0) -- (4,0,0) node[left] {$\delta\tau_a$};
    \draw[-{Stealth}, gray] (0,0,0) -- (0,4,0) node[right] {$\delta\tau_b$};
    \draw[-{Stealth}, gray] (0,0,0) -- (0,0,2) node[above] {$\delta\tau_c$};

    % Ellipsoide (demi-axes 1/sqrt(lambda_i), ici lambda_1<lambda_2<lambda_3)
    % demi-axes : a1=2.0, a2=1.2, a3=0.7 pour illustrer lambda_1 petit
    \def\a{2.4} % grand axe -> petite vp -> grande erreur
    \def\b{1.9}
    \def\c{1.0} % petit axe -> grande vp -> petite erreur

    % Meridiens
    \foreach \ph in {0,30,...,150}{
        \draw[blue!30, thin] plot[domain=0:360, samples=60]
            ({0.8636654*\a*cos(\x)*cos(\ph)+0.4567464*\b*cos(\x)*sin(\ph)-0.2132249*\c*sin(\x)},
             {-0.4446277*\a*cos(\x)*cos(\ph)+0.8895858*\b*cos(\x)*sin(\ph)+0.1046102*\c*sin(\x)},
             {0.2374622*\a*cos(\x)*cos(\ph)+0.0044575*\b*cos(\x)*sin(\ph)+0.9713866*\c*sin(\x)});
    }

    % Paralleles
    \foreach \th in {-60,-30,...,60}{
        \draw[blue!50, thin] plot[domain=0:360, samples=60]
            ({0.8636654*\a*cos(\th)*cos(\x)+0.4567464*\b*cos(\th)*sin(\x)-0.2132249*\c*sin(\th)},
             {-0.4446277*\a*cos(\th)*cos(\x)+0.8895858*\b*cos(\th)*sin(\x)+0.1046102*\c*sin(\th)},
             {0.2374622*\a*cos(\th)*cos(\x)+0.0044575*\b*cos(\th)*sin(\x)+0.9713866*\c*sin(\th)});
    }

    % Cercles de l'ellipsoide sur les plans principaux
    \draw[blue, thick] plot[domain=0:360, samples=60]
        ({0.8636654*\a*cos(\x)+0.4567464*\b*sin(\x)}, {-0.4446277*\a*cos(\x)+0.8895858*\b*sin(\x)}, {0.2374622*\a*cos(\x)+0.0044575*\b*sin(\x)});
    % ({\a*cos(\x)}, {\b*sin(\x)}, 0);

    \draw[blue, thick] plot[domain=0:360, samples=60]
        ({0.8636654*\a*cos(\x)-0.2132249*\c*sin(\x)}, {-0.4446277*\a*cos(\x)+0.1046102*\c*sin(\x)}, {0.2374622*\a*cos(\x)+0.9713866*\c*sin(\x)});
	% ({\a*cos(\x)}, 0, {\c*sin(\x)});

    \draw[blue, thick] plot[domain=0:360, samples=60]
        ({0.4567464*\b*cos(\x)-0.2132249*\c*sin(\x)},{0.8895858*\b*cos(\x)+0.1046102*\c*sin(\x)},{0.0044575*\b*cos(\x)+0.9713866*\c*sin(\x)});
	% (0, {\b*cos(\x)}, {\c*sin(\x)});
    % Vecteurs propres v_i (directions des axes de l'ellipsoide)
    \draw[-{Stealth}, red, very thick] (0,0,0) -- ({0.8636654*\a}, {-0.4446277*\a}, {0.2374622*\a}) node[left] {$\sqrt{\frac{C}{\lambda_1}}\vec{v}_1$};
    \draw[-{Stealth}, orange, very thick] (0,0,0) -- ({0.4567464*\b},{0.8895858*\b} , {0.0044575*\b}) node[right] {$\sqrt{\frac{C}{\lambda_2}}\vec{v}_2$};
    \draw[-{Stealth}, green!60!black, very thick] (0,0,0) -- ({-0.2132249*\c},{0.1046102*\c},{0.9713866*\c}) node[above] {$\sqrt{\frac{C}{\lambda_3}}\vec{v}_3$};

    % Origine
    \filldraw[black] (0,0,0) circle (1.5pt) node[below left] {$0$};

    % Légende
    \node at (0,-2.5,1) {($\delta\tau_d = 0$ fixé)};

\end{tikzpicture}
\caption{Ellipsoïde $Q(Y) = Y^\top(AA^\top)^{-1}Y = C$ projeté dans l'espace $(\delta\tau_a, \delta\tau_b, \delta\tau_c)$. 
Les grands axes correspondent aux petites valeurs propres de $AA^\top$ : 
une faible norme de $Y$ dans ces directions suffit à atteindre la surface, 
signifiant une grande sensibilité à l'erreur.}
\end{figure}

\end{frame}

\subsection{Méthode de Monte-Carlo pour les cas plus complexes}

\begin{frame}
\frametitle{Méthode de Monte-Carlo}

{\fontsize{9}{10}\selectfont
Pour les cas plus complexes où la position est déterminée par recherche de minimum ou encore que les distances sont suffisamment faibles pour ne pas pouvoir linéariser les équations, les calculs deviennent rapidement difficiles.

On utilise alors une méthode de Monte-Carlo :
\begin{itemize}
	\setlength{\itemsep}{3pt}
    \setlength{\topsep}{3pt}
    \setlength{\parsep}{0pt}
    \setlength{\parskip}{0pt}
    \item génération aléatoire d'erreurs de mesure ;
    \item calcul de la position ;
    \item estimation statistique de l'erreur finale.
\end{itemize}

Les estimations du programme ont été testé avec :
\begin{itemize}
	\setlength{\itemsep}{3pt}
    \setlength{\topsep}{3pt}
    \setlength{\parsep}{0pt}
    \setlength{\parskip}{0pt}
    \item quatre microphones synchronisés ;
    \item un claquement de main ;
    \item une propagation sonore dans une petite salle (hypothèse de linéarité non vérifiée).
\end{itemize}
}
\end{frame}

\begin{frame}
\frametitle{Configuration défavorable}

\begin{figure}
    \centering
    \begin{minipage}{0.49\textwidth}
        \centering
        \includegraphics[width=\linewidth, trim={0 0 0 0}, clip]{montecarlo/1.png}
        \caption{Rouge: détecteurs, Vert: position mesurée, Bleu: référence}
    \end{minipage}
    \hfill
    \begin{minipage}{0.49\textwidth}
        \centering
        \includegraphics[width=\linewidth, trim={0 0 0 0}, clip]{montecarlo/2.png}
        \caption{Erreur calculée par Monte-Carlo}
    \end{minipage}
\end{figure}
Configuration presque plane :
forte dilution de précision géométrique.

\end{frame}

\begin{frame}
\frametitle{Configuration plus favorable}

\begin{figure}
    \centering
    \begin{minipage}{0.49\textwidth}
        \centering
        \includegraphics[width=\linewidth, trim={0 0 0 0}, clip]{montecarlo/3.png}
        \caption{Rouge: détecteurs, Vert: position mesurée, Bleu: référence}
    \end{minipage}
    \hfill
    \begin{minipage}{0.49\textwidth}
        \centering
        \includegraphics[width=\linewidth, trim={0 0 0 0}, clip]{montecarlo/4.png}
        \caption{Erreur calculée par Monte-Carlo}
    \end{minipage}
\end{figure}
Les vecteurs sont moins colinéaires :
la précision obtenue est meilleure.

\end{frame}

\section{Bonus}

\begin{frame}
\frametitle{Oscilloscope développé}

\small

Ces expérimentations en traitement du signal ont également conduit au développement d'un oscilloscope logiciel avec auto-corrélation (détection de période) et corrélation avec onde sinusoïdale (détection de phase) afin de stabiliser la phase du signal d'entrée.


\vspace*{0.3cm}

Projet :
\url{https://github.com/make-42/xyosc}

\end{frame}

\begin{frame}
\frametitle{Mode canal unique avec auto-correlation}

\begin{center}
\includegraphics[width=6cm, trim={0 0 0 0}, clip]{screenshots/Screenshotfrom2026-05-1500-42-57.png}
\captionof{figure}{Mode canal unique avec auto-corrélation}
\end{center}

\end{frame}

\begin{frame}
\frametitle{Mode XY}

\begin{center}
\includegraphics[width=6cm, trim={0 0 0 0}, clip]{screenshots/Screenshotfrom2026-05-1500-41-26.png}
\captionof{figure}{Mode XY}
\end{center}

\end{frame}

\begin{frame}
\frametitle{Spectrogramme}

\begin{center}
\includegraphics[width=6cm, trim={0 0 0 0}, clip]{screenshots/Screenshotfrom2026-05-1512-44-34.png}
\captionof{figure}{Mode spectrogramme avec détection de note}
\end{center}

\end{frame}

\section{Bibliographie}
\begin{frame}
\frametitle{Bibliographie (1/2)}
\tiny
\begin{thebibliography}{9}
\bibitem{fft_matrix_factorizations}
Charles Van Loan,
\textit{The FFT Via Matrix Factorizations},
Lecture notes, 2010.\\
\url{https://www.cs.cornell.edu/~bindel/class/cs5220-s10/slides/FFT.pdf}

\bibitem{eq_sources}
R.J. Mitchell,
\textit{Earthquake Sources},
Lecture notes, Western Washington University.\\
\url{https://www.geol.wwu.edu/rjmitch/L4_EQsources.pdf}

\bibitem{seismic_waves}
University of Hawaii,
\textit{Compare, Contrast, and Connect: Seismic Waves and Determining Earth's Structure}.\\
\url{https://manoa.hawaii.edu/exploringourfluidearth/physical/ocean-floor/layers-earth/compare-contrast-connect-seismic-waves-and-determining-earth-s-structure}

\bibitem{gfz-1-d-earth-models}
Peter Bormann,
\textit{Global 1-D Earth models (IASP91 tables)},
GFZ German Research Centre for Geosciences.\\
\url{https://gfzpublic.gfz-potsdam.de/rest/items/item_4031/component/file_4032/content}

\bibitem{earthquake_data_centers}
Yacine Boussoufa,
\textit{Earthquake Data Centers},
GitHub repository.\\
\url{https://github.com/YacineBoussoufa/EarthquakeDataCenters}

\bibitem{cfcs_lecture}
School of Informatics, University of Edinburgh,
\textit{Computational Foundations of Cognitive Science: Lecture 15 (Convolutions and Kernels)}.\\
\url{https://www.inf.ed.ac.uk/teaching/courses/cfcs1/lectures/cfcs_l15.pdf}
\end{thebibliography}
\end{frame}

\begin{frame}
\frametitle{Bibliographie (2/2)}
\tiny
\begin{thebibliography}{9}
\bibitem{penn_state_anova}
Penn State Eberly College of Science,
\textit{STAT 510: Lesson 8.2 - Cross Correlation Functions and Lagged Regressions},
Online course material.\\
\url{https://online.stat.psu.edu/stat510/lesson/8/8.2}

\bibitem{nelder_mead}
Jason Cantarella,
\textit{Nelder-Mead Method},
Lecture notes.\\
\url{https://jasoncantarella.com/downloads/NelderMeadProof.pdf}

\bibitem{broadband_magnitude}
Tatsuhiko Hara,
\textit{Determination of Broadband Moment Magnitude},
IISEE/BRI.\\
\url{https://iisee.kenken.go.jp/lna/download.php?f=2011082925678c01.pdf&n=T0-100-2007_Mwp-2-new.pdf&cid=T0-100-2007}

\bibitem{obspy}
Moritz Beyreuther, Robert Barsch, Lion Krischer, Tobias Megies, Yannik Behr and Joachim Wassermann,\\
\textit{ObsPy: A Python Toolbox for Seismology},\\
Seismological Research Letters, vol. 81, no. 3, pp. 530--533, 2010.\\
doi:10.1785/gssrl.81.3.530

\bibitem{fourieranalysis}
Elias M. Stein \& Rami Shakarchi. \textit{Fourier Analysis: An Introduction.}\\
2003. (ISBN 978-0-691-11384-5)

\bibitem{convolution_video}
3Blue1Brown,
\textit{But what is a convolution?},
YouTube video, 2022.\\
\url{https://www.youtube.com/watch?v=KuXjwB4LzSA}

\bibitem{fft_algorithm_video}
Michael Pound,
\textit{The Fast Fourier Transform Algorithm},
YouTube video, 2023.\\
\url{https://www.youtube.com/watch?v=toj_IoCQE-4}

\end{thebibliography}
\end{frame}

\end{document}
