diff --git a/lib/lib b/lib/lib new file mode 120000 index 0000000..817384a --- /dev/null +++ b/lib/lib @@ -0,0 +1 @@ +/home/andreas/workspace/work/hiwi/hiwi-update-presentations/lib \ No newline at end of file diff --git a/src/2025-01-07/presentation.tex b/src/2025-01-07/presentation.tex deleted file mode 100644 index be10e9d..0000000 --- a/src/2025-01-07/presentation.tex +++ /dev/null @@ -1,253 +0,0 @@ -\documentclass[10pt, aspectratio=169, usenames, dvipsnames]{beamer} - -\usepackage{tikz} -\usepackage{tikz-3dplot} -\usetikzlibrary{spy, external, intersections} -%\tikzexternalize[prefix=build/] - -\usepackage{pgfplots} -\pgfplotsset{compat=newest} -\usepgfplotslibrary{fillbetween} - - -\usepackage{listings} -\usepackage{subcaption} -\usepackage{bbm} - -\usepackage{xcolor} -\usepackage[outputdir=build/]{minted} -\usemintedstyle{gruvbox-light} - - -% -% -% Custom commands -% -% - - -\input{lib/latex-common/common.tex} -\pgfplotsset{colorscheme/rocket} - -\newcommand{\res}{src/2025-01-07/res} - - -% -% -% CEL Template -% -% - - -\newcommand{\templates}{lib/cel-template} - -\input{\templates/packages.tex} -\input{\templates/modifications.tex} -\input{\templates/makros_own.tex} - -% % Change the way the overview is displayed -% \AtBeginSection[] -% { -% \begin{frame}[t] -% \frametitle{Overview} -% \tableofcontents[sectionstyle=show/shaded, -% subsectionstyle=show/show/shaded, -% subsubsectionstyle=hide] -% \end{frame} -% } -% \AtBeginSubsubsection[]{} -% \AtBeginSubsection[]{} - - -% -% -% Set up document -% -% - - -\title{HiWi Notes: Minimization of the Code Constraint Polynomial using - Homotopy Continuation Methods} -\subtitle{\small 07.01.2025} -\author{\vspace{1.5mm} Andreas Tsouchlos} -\date{ } - -\institute{Karlsruhe Institute of Technology (KIT), - \\ Communications Engineering Lab (CEL) } - -\tikzstyle{every node}=[font=\small] -\captionsetup[sub]{font=small} - - -% -% -% Document body -% -% - - -\begin{document} - - -\begin{frame}[plain] - \maketitle -\end{frame} - -\newcommand{\largecitereference}[1] - {\textcolor{kit-green100}{ \large \textbf{{[#1]}} }} - -\begin{frame} - \frametitle{Basic Idea of Homotopy Continuation \largecitereference{CL15}} - - \begin{minipage}[c]{0.65\textwidth} - \begin{itemize} - \item Goal: Solve system of equations $F(\bm{x}) = \bm{0}, \hspace{2mm} F:\mathbb{R}^n \rightarrow \mathbb{R}^n$ - \item Problem: Depending on $F$, solving this directly may be difficult - \item Solution: Define \emph{homotopy function} $H(\bm{x}, t)$ with - \begin{gather*} - H(\bm{x}, 0) = G(\bm{x}), \hspace{5mm} H(\bm{x}, 1) = F(\bm{x}) - ,\end{gather*} - i.e., a deformation between two systems $G(\bm{x})$ and $F(\bm{x})$ - (where the zeros of $G$ can be easily obtained); E.g., - \begin{gather*} - H(\bm{x}, t) = (t-1)G(\bm{x}) + tF(\bm{x}) - .\end{gather*} - Then, compute $(\bm{x}_0, 0)$ such that $G(\bm{x}_0) = \bm{0}$ and trace path to $(\bm{x}_1, 1)$ with $F(\bm{x}_1) = \bm{0}$ - \end{itemize} - - \vspace{5mm} - - \addreferences - {CL15}{Chen, Tianran, and Tien-Yien Li.: \emph{Homotopy - continuation method for solving systems of nonlinear and - polynomial equations}. Communications in Information and - Systems 15.2 (2015): 119-307.} - \stopreferences - \end{minipage}% - \hfill - \begin{minipage}[c]{0.3\textwidth} - \begin{figure} - \centering - - \newcommand{\figlength}{0.8\textwidth} - - \vspace*{-2mm} - - \begin{tikzpicture} - \begin{axis}[ - xmin=-1,xmax=1, - ymin=-1,ymax=1, - width=\figlength, - height=\figlength, - ticks=none, - view={0}{90}, - title={$t=0$}, - title style={yshift=-1mm}, - % xlabel={$x_1$}, - % ylabel={$x_2$}, - ] - \addplot3[point meta=\thisrow{Hmag}, - point meta min=0, - point meta max=2.5, - quiver={u=\thisrow{H1}, - v=\thisrow{H2}, - scale arrows=.25, - every arrow/.append style={% - line width=.5 - +\pgfplotspointmetatransformed/1000, - -{Latex[length=0pt 5,width=0pt 3]} - }, - }, - quiver/colored = {mapped color}, - -stealth, - ] - table[col sep=comma, discard if not={t}{0.0}] - {\res/H.csv}; - - \addplot[mark=*] coordinates {(0,0)} node[above] - {$\bm{x}_0$}; - - \end{axis} - \end{tikzpicture} - \begin{tikzpicture} - \begin{axis}[ - xmin=-1,xmax=1, - ymin=-1,ymax=1, - width=\figlength, - height=\figlength, - ticks=none, - view={0}{90}, - title={$t=0.5$}, - title style={yshift=-1mm}, - % xlabel={$x_1$}, - % ylabel={$x_2$}, - ] - \addplot3[point meta=\thisrow{Hmag}, - point meta min=0, - point meta max=2.5, - quiver={u=\thisrow{H1}, - v=\thisrow{H2}, - scale arrows=.25, - every arrow/.append style={% - line width=.5 - +\pgfplotspointmetatransformed/1000, - -{Latex[length=0pt 5,width=0pt 3]} - }, - }, - quiver/colored = {mapped color}, - -stealth, - ] - table[col sep=comma, discard if not={t}{0.5}] - {\res/H.csv}; - - \draw[line width=1pt] (0,0) -- (0.25,-0.25); - \addplot[mark=*] coordinates {(0.25, -0.25)}; - \end{axis} - \end{tikzpicture} - - \vspace{2mm} - - \begin{tikzpicture} - \begin{axis}[ - xmin=-1,xmax=1, - ymin=-1,ymax=1, - width=\figlength, - height=\figlength, - ticks=none, - view={0}{90}, - title={$t=1$}, - title style={yshift=-1mm}, - % xlabel={$x_1$}, - % ylabel={$x_2$}, - ] - \addplot3[point meta=\thisrow{Hmag}, - point meta min=0, - point meta max=2.5, - quiver={u=\thisrow{H1}, - v=\thisrow{H2}, - scale arrows=.25, - every arrow/.append style={% - line width=.5 - +\pgfplotspointmetatransformed/1000, - -{Latex[length=0pt 5,width=0pt 3]} - }, - }, - quiver/colored = {mapped color}, - -stealth, - ] - table[col sep=comma, discard if not={t}{1.0}] - {\res/H.csv}; - - \draw[line width=1pt] (0,0) -- (0.5,-0.5); - \addplot[mark=*] coordinates {(0.5,-0.5)} node[below right] - {$\bm{x}_1$}; - \end{axis} - \end{tikzpicture} - - \caption{Visualization of ``snapshots'' of $H$ (e.g., $F, G$) as - vector fields} - \end{figure} - \end{minipage} -\end{frame} - -\end{document} diff --git a/src/2025-03-28/presentation.tex b/src/2025-03-28/presentation.tex new file mode 100644 index 0000000..d5762f2 --- /dev/null +++ b/src/2025-03-28/presentation.tex @@ -0,0 +1,552 @@ +\documentclass[10pt, aspectratio=169, usenames, dvipsnames]{beamer} + +\usepackage{tikz} +\usepackage{tikz-3dplot} +\usetikzlibrary{spy, external, intersections} +%\tikzexternalize[prefix=build/] + +\usepackage{pgfplots} +\pgfplotsset{compat=newest} +\usepgfplotslibrary{fillbetween} + + +\usepackage{listings} +\usepackage{subcaption} +\usepackage{bbm} + +\usepackage{xcolor} +%\usepackage[outputdir=build/]{minted} +\usepackage{minted} +\usemintedstyle{gruvbox-light} + +%\definecolor{gruvbox-bg}{HTML}{282828} +\definecolor{gruvbox-bg}{HTML}{f2e5bc} + + +% +% +% Custom commands +% +% + + +\input{lib/latex-common/common.tex} +\pgfplotsset{colorscheme/rocket} + +\newcommand{\res}{src/2025-03-28/res} + + +% +% +% CEL Template +% +% + + +\newcommand{\templates}{lib/cel-template} + +\input{\templates/packages.tex} +\input{\templates/modifications.tex} +\input{\templates/makros_own.tex} + +% % Change the way the overview is displayed +% \AtBeginSection[] +% { +% \begin{frame}[t] +% \frametitle{Overview} +% \tableofcontents[sectionstyle=show/shaded, +% subsectionstyle=show/show/shaded, +% subsubsectionstyle=hide] +% \end{frame} +% } +% \AtBeginSubsubsection[]{} +% \AtBeginSubsection[]{} + + +% +% +% Set up document +% +% + + +\title{HiWi Notes: Minimization of the Code Constraint Polynomial using + Homotopy Continuation Methods} +\subtitle{\small 07.01.2025} +\author{\vspace{1.5mm} Andreas Tsouchlos} +\date{ } + +\institute{Karlsruhe Institute of Technology (KIT), + \\ Communications Engineering Lab (CEL) } + +\tikzstyle{every node}=[font=\small] +\captionsetup[sub]{font=small} + + +% +% +% Document body +% +% + + +\begin{document} + + +\begin{frame}[plain] + \maketitle +\end{frame} + +\newcommand{\largecitereference}[1] + {\textcolor{kit-green100}{ \large \textbf{{[#1]}} }} + + +% +% - The decoding problem as the search for a solution of polynomial system +% - Homotopy continuation +% - The problem with overdefined systems and the Groebner basis +% - Implementation +% + + +% TODO: Check example homotopy +% TODO: Add the name of the homotopy construction (t-1)G + tF and note that it +% is not the only possibility +\begin{frame} + \frametitle{Basic Idea of Homotopy Continuation \largecitereference{CL15}} + + \begin{minipage}[c]{0.65\textwidth} + \begin{itemize} + \item Goal: Solve system of equations $F(\bm{x}) = \bm{0}, \hspace{2mm} F:\mathbb{R}^n \rightarrow \mathbb{R}^n$ + \item Problem: Depending on $F$, solving this directly may be difficult + \item Solution: Define \emph{homotopy function} $H(\bm{x}, t)$ with + \begin{gather*} + H(\bm{x}, 0) = G(\bm{x}), \hspace{5mm} H(\bm{x}, 1) = F(\bm{x}) + ,\end{gather*} + i.e., a deformation between two systems $G(\bm{x})$ and $F(\bm{x})$ + (where the zeros of $G$ can be easily obtained); E.g., + \begin{gather*} + H(\bm{x}, t) = (t-1)G(\bm{x}) + tF(\bm{x}) + .\end{gather*} + Then, compute $(\bm{x}_0, 0)$ such that $G(\bm{x}_0) = \bm{0}$ and trace path to $(\bm{x}_1, 1)$ with $F(\bm{x}_1) = \bm{0}$ + \end{itemize} + + \vspace{5mm} + + \addreferences + {CL15}{Chen, Tianran, and Tien-Yien Li.: \emph{Homotopy + continuation method for solving systems of nonlinear and + polynomial equations}. Communications in Information and + Systems 15.2 (2015): 119-307.} + \stopreferences + \end{minipage}% + \hfill + \begin{minipage}[c]{0.3\textwidth} + \begin{figure} + \centering + + \newcommand{\figlength}{0.8\textwidth} + + \vspace*{-2mm} + + \begin{tikzpicture} + \begin{axis}[ + xmin=-1,xmax=1, + ymin=-1,ymax=1, + width=\figlength, + height=\figlength, + ticks=none, + view={0}{90}, + title={$t=0$}, + title style={yshift=-1mm}, + % xlabel={$x_1$}, + % ylabel={$x_2$}, + ] + \addplot3[point meta=\thisrow{Hmag}, + point meta min=0, + point meta max=2.5, + quiver={u=\thisrow{H1}, + v=\thisrow{H2}, + scale arrows=.25, + every arrow/.append style={% + line width=.5 + +\pgfplotspointmetatransformed/1000, + -{Latex[length=0pt 5,width=0pt 3]} + }, + }, + quiver/colored = {mapped color}, + -stealth, + ] + table[col sep=comma, discard if not={t}{0.0}] + {\res/H.csv}; + + \addplot[mark=*] coordinates {(0,0)} node[above] + {$\bm{x}_0$}; + + \end{axis} + \end{tikzpicture} + \begin{tikzpicture} + \begin{axis}[ + xmin=-1,xmax=1, + ymin=-1,ymax=1, + width=\figlength, + height=\figlength, + ticks=none, + view={0}{90}, + title={$t=0.5$}, + title style={yshift=-1mm}, + % xlabel={$x_1$}, + % ylabel={$x_2$}, + ] + \addplot3[point meta=\thisrow{Hmag}, + point meta min=0, + point meta max=2.5, + quiver={u=\thisrow{H1}, + v=\thisrow{H2}, + scale arrows=.25, + every arrow/.append style={% + line width=.5 + +\pgfplotspointmetatransformed/1000, + -{Latex[length=0pt 5,width=0pt 3]} + }, + }, + quiver/colored = {mapped color}, + -stealth, + ] + table[col sep=comma, discard if not={t}{0.5}] + {\res/H.csv}; + + \draw[line width=1pt] (0,0) -- (0.25,-0.25); + \addplot[mark=*] coordinates {(0.25, -0.25)}; + \end{axis} + \end{tikzpicture} + + \vspace{2mm} + + \begin{tikzpicture} + \begin{axis}[ + xmin=-1,xmax=1, + ymin=-1,ymax=1, + width=\figlength, + height=\figlength, + ticks=none, + view={0}{90}, + title={$t=1$}, + title style={yshift=-1mm}, + % xlabel={$x_1$}, + % ylabel={$x_2$}, + ] + \addplot3[point meta=\thisrow{Hmag}, + point meta min=0, + point meta max=2.5, + quiver={u=\thisrow{H1}, + v=\thisrow{H2}, + scale arrows=.25, + every arrow/.append style={% + line width=.5 + +\pgfplotspointmetatransformed/1000, + -{Latex[length=0pt 5,width=0pt 3]} + }, + }, + quiver/colored = {mapped color}, + -stealth, + ] + table[col sep=comma, discard if not={t}{1.0}] + {\res/H.csv}; + + \draw[line width=1pt] (0,0) -- (0.5,-0.5); + \addplot[mark=*] coordinates {(0.5,-0.5)} node[below right] + {$\bm{x}_1$}; + \end{axis} + \end{tikzpicture} + + \caption{Visualization of ``snapshots'' of $H$ (e.g., $F, G$) as + vector fields} + \end{figure} + \end{minipage} +\end{frame} + + +\begin{frame} + \frametitle{Path Tracing} + + \vspace{-4mm} + + \begin{itemize} + \item Reminder: We are trying to trace the solution curve + $H(\bm{x}, t) = \bm{0}$ from $t = 0$ to $t = 1$ + \item We can express the solution curve as a system of differential equations \citereference{CL15}: + \begin{align*} + DH(\bm{y}(s))\cdot \dot{\bm{y}}(s) &= 0 \\ + \text{det}\left(\begin{array}{c} DH(\bm{y}(s)) \\ \dot{\bm{y}}(s)\end{array}\right) &= \sigma_0 \\ + \lVert \dot{\bm{y}}(s) \rVert &= 1 \\ + \bm{y}(0) &= (\bm{x}_0, 0) + ,% + \end{align*} + where $DH(\bm{y})$ is the Jacobian of $H(\bm{y})$ and + $\sigma_0 \in \left\{\pm 1\right\}$ defines the direction along + which we move on the curve. + \item For numerical stability, it is beneficial to solve this using a + predictor-corrector scheme, e.g., Euler's predictor and Newton's + corrector \citereference{CL15}: + \begin{align*} + \hat{\bm{y}} &= \bm{y}_0 + \Delta s \cdot \sigma \cdot {\bm{y}}(\bm{s})\\ + \bm{y} &= \mathcal{N}^k(\hat{\bm{y}}), \hspace{5mm} \mathcal{N}(\hat{\bm{y}}) := \hat{\bm{y}} - (DH(\hat{\bm{y}}))^{+} H(\hat{\bm{y}}) + .% + \end{align*} + \end{itemize} + + \addreferences + {CL15}{Chen, Tianran, and Tien-Yien Li.: \emph{Homotopy + continuation method for solving systems of nonlinear and + polynomial equations}. Communications in Information and + Systems 15.2 (2015): 119-307.} + \stopreferences +\end{frame} + + +\begin{frame} + \frametitle{Channel Decoding and Polynomial Equations} + + \vspace{-5mm} + + \begin{itemize} + \item To describe the decoding problem we can use the code constraint + polynomial \citereference{WT22} + \begin{align*} + %h(\bm{x}) = \underbrace{\sum_{i=1}^{n}\left(1-x_i^2\right)^2}_{\text{Bipolar constraint}} + \underbrace{\sum_{j=1}^{m}\left(1 - \left(\prod_{i\in A(j)}x_i\right)\right)^2}_{\text{Parity constraint}} + h(\bm{x}) = \sum_{i=1}^{n}\left(1-x_i^2\right)^2 + \sum_{j=1}^{m}\left(1 - \left(\prod_{i\in A(j)}x_i\right)\right)^2 + .% + \end{align*} + where $A(j) = \left\{i \in [1:n]: \bm{H}_{j,i} = 1\right\}, \hspace{3mm} j\in [1:m]$ + represents the set of variables involved in parity check $j$. + \item In a similar vein, we can define a polynomial system whose zeros + correspond to codewords as + \begin{align*} + F(\bm{x}) = \left[\begin{array}{c}1 - x_1^2 \\ \vdots\\ 1 - x_n^2 \\ 1 - \prod_{i \in A(1)}x_i \\ \vdots\\ 1 - \prod_{i \in A(m)}x_i\end{array}\right] \overset{!}{=} \bm{0} + .% + \end{align*} + \end{itemize} + + \addreferences + {WT22}{Tadashi Wadayama; Satoshi Takabe: Proximal Decoding for LDPC Codes. IEICE Transactions on Fundamentals of Electronics, Communi- + cations and Computer Sciences advpub (2022), 2022TAP0002.} + \stopreferences +\end{frame} + + +\begin{frame}[fragile] + \frametitle{Defining Homotopies for Channel Codes} + + \begin{itemize} + \item Problem: Homotopy continuation algorithms / existing frameworks + only really support square systems, i.e., \# equations = \# variables. The + system $F(\bm{x}) = \bm{0}$ we previously considered is overdefined + \item \textit{Gröbner bases} allow us to ``[...] transform F into + another set G of polynomials [...] such that F and G are equivalent'' + \citereference{B01}, i.e., they have the same zeros + \item Limited tests indicate that, for the systems we are interested in, + finding a Gröbner basis yields a square system + \item Example: + \end{itemize} + + \begin{minipage}{0.45\textwidth} + \begin{align*} + \overbrace{\bm{H}}^{\text{Parity chek matrix}} &= \left[ \begin{array}{cc} 1 & 1 \end{array}\right] \\ + F(\bm{x}) &= \left[ \begin{array}{c} + 1 - x_1^2 \\ + 1 - x_2^2\\ + 1 - x_1x_2 + \end{array}\right] + \end{align*} + \end{minipage}% + \begin{minipage}{0.1\textwidth} + \begin{tikzpicture} + \draw[-{Latex}] (0,0) -- (1,0); + \end{tikzpicture} + \end{minipage}% + \begin{minipage}{0.45\textwidth} + \begin{align*} + \tilde{F}(\bm{x}) &= \left[ \begin{array}{c} + x_1 - x_2 \\ + x_2^2 - 1 + \end{array}\right] \\ + G(\bm{x}) &= \left[\begin{array}{c} + x_1\\ + x_2 + \end{array}\right]\\ + H(\bm{x}, t) &= (t-1)G(\bm{x}) + tF(\bm{x}) + \end{align*} + \end{minipage} \\ + + \vspace{5mm} + + \addreferences + {B01}{Buchberger, Bruno. "Gröbner bases: A short introduction for systems + theorists." International Conference on Computer Aided Systems Theory. + Berlin, Heidelberg: Springer Berlin Heidelberg, 2001.} + \stopreferences +\end{frame} + + +\begin{frame}[fragile] + \frametitle{Path Tracker Implementation (Pseudo Code)} + + \vspace{-6mm} + + \begin{itemize} + \item Perform a predictor step followed by multiple corrector steps + \item If the corrector fails to converge, adjust the predictor step + size and try again \citereference{CL15} + \end{itemize} + + \vspace{1mm} + + \begin{minted}[ + bgcolor=gruvbox-bg, % Background color + fontsize=\small, % Adjust font size + framesep=5mm, % Frame separation + baselinestretch=1, % Line spacing + breaklines, % Allow line breaking + tabsize=4, % Tab width + ]{python} +func perform_prediction_step(y) {...} +func perform_correction_step(y, step_size) {...} +func perform_step(y0) { + for i in range(max_retries): + step_size = step_size / 2 + + y = perform_prediction_step(y0) + + for k in range(max_corrector_iterations): + y = perform_correction_step(y, step_size) + if (corrector converged) break + if (corrector converged) break + + return y +} + \end{minted} + + \vspace{1mm} + + \addreferences + {CL15}{Chen, Tianran, and Tien-Yien Li.: \emph{Homotopy + continuation method for solving systems of nonlinear and + polynomial equations}. Communications in Information and + Systems 15.2 (2015): 119-307.} + \stopreferences +\end{frame} + + +\begin{frame}[fragile] + \frametitle{Decoding Algorithm Implementation (Pseudo Code)} + + \begin{itemize} + \item If the algorithm doesn't converge, we still return the last + estimate in the hopes that this will limit the BER + \end{itemize} + + \begin{minted}[ + bgcolor=gruvbox-bg, % Background color + fontsize=\small, % Adjust font size + framesep=5mm, % Frame separation + baselinestretch=1, % Line spacing + breaklines, % Allow line breaking + tabsize=4, % Tab width + ]{python} +func decode(y) { + for i in range(max_iterations): + y = perform_step(y) + + x_hat = hard_decision(y) + if (H @ x_hat == 0) return x_hat + + return x_hat +} + \end{minted} +\end{frame} + + +\begin{frame} + \frametitle{Simulation results} + + \begin{figure}[H] + \centering + + \begin{subfigure}{0.5\textwidth} + \centering + + \begin{tikzpicture} + \begin{axis}[ + domain=-5:5, + width=\textwidth, + height=0.75\textwidth, + ] + \addplot+[mark=none, line width=1pt] + {x^2}; + \addplot+[mark=none, line width=1pt] + {x^3}; + \addplot+[mark=none, line width=1pt] + {x^4}; + \end{axis} + \end{tikzpicture} + \end{subfigure}% + \begin{subfigure}{0.5\textwidth} + \centering + + \begin{tikzpicture} + \begin{axis}[ + domain=-5:5, + width=\textwidth, + height=0.75\textwidth, + ] + \addplot+[mark=none, line width=1pt] + {x}; + \addplot+[mark=none, line width=1pt] + {2*x}; + \addplot+[mark=none, line width=1pt] + {3*x}; + \end{axis} + \end{tikzpicture} + \end{subfigure} + \end{figure} + + % \begin{figure}[H] + % \centering + % + % \begin{tikzpicture} + % \begin{axis}[ + % width=\textwidth, + % height=0.75\textwidth, + % ] + % \addplot+[mark=none, line width=1pt] + % table[col sep=comma, x=x, y=y] + % {}; + % \end{axis} + % \end{tikzpicture} + % \end{figure} +\end{frame} + + +\begin{frame} + \frametitle{Next steps} + + \begin{itemize} + \item Thorough investigation into parameter choice + \item Find more mathematical background / guarantees \begin{itemize} + \item How do we have to choose $\sigma_0$? + \item Guarantees for convergence? (i.e., what is the cause for + decoding failures?) + \item When do we actually get square systems using the Gröbner basis? + \end{itemize} + \item Other ideas: \begin{itemize} + \item Generate more candidates by moving further along the + solution curve (if this is possible) and then performing + choosing from this list + \end{itemize} + \end{itemize} +\end{frame} + + + +\end{document} diff --git a/src/2025-01-07/res/H.csv b/src/2025-03-28/res/H.csv similarity index 100% rename from src/2025-01-07/res/H.csv rename to src/2025-03-28/res/H.csv diff --git a/src/2025-03-28/res/check_regularity.py b/src/2025-03-28/res/check_regularity.py new file mode 100644 index 0000000..34ab697 --- /dev/null +++ b/src/2025-03-28/res/check_regularity.py @@ -0,0 +1,13 @@ +import sympy as sp + + +def main(): + x1,x2,x3 = sp.symbols("x_1 x_2 x_3") + + x = sp.Matrix([x1, x2, x3]) + F = sp.Matrix([1 - x1**2, 1 - x2**2, 1 - x3**2, 1 - x1*x2, 1 - x1*x3]) + print(F.jacobian(x)) + print(F.jacobian(x).rank()) + +if __name__=="__main__": + main() diff --git a/src/2025-01-07/res/gen_vec_fields.py b/src/2025-03-28/res/gen_vec_fields.py similarity index 100% rename from src/2025-01-07/res/gen_vec_fields.py rename to src/2025-03-28/res/gen_vec_fields.py