Explorar o código

more pseudocode

Martin Thoma %!s(int64=12) %!d(string=hai) anos
pai
achega
241e9ec502

+ 38 - 0
source-code/Pseudocode/Cholesky-Zerlegung/Cholesky-Zerlegung.tex

@@ -0,0 +1,38 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+
+\usepackage[utf8]{inputenc} % this is needed for umlauts
+\usepackage[ngerman]{babel} % this is needed for umlauts
+\usepackage[T1]{fontenc}    % this is needed for correct output of umlauts in pdf
+\usepackage{amssymb,amsmath,amsfonts} % nice math rendering
+\usepackage{braket} % needed for \Set
+\usepackage{algorithm,algpseudocode}
+
+\begin{document}
+\begin{preview}
+    Sei $n \in \mathbb{N}_{\geq 1}$, $A \in \mathbb{R}^{n \times n}$ und 
+    positiv definit sowie symmetrisch.
+
+    Dann existiert eine Zerlegung $A = L \cdot L^T$, wobei $L$ eine
+    untere Dreiecksmatrix ist. Diese wird von folgendem Algorithmus 
+    berechnet:
+
+    \begin{algorithm}[H]
+        \begin{algorithmic}
+            \Function{Cholesky}{$A \in \mathbb{R}^{n \times n}$}
+                \State $L = \Set{0} \in \mathbb{R}^{n \times n}$ \Comment{Initialisiere $L$}
+                \For{($k=1$; $\;k \leq n$; $\;k$++)}
+                    \State $L_{k,k} = \sqrt{A_{k,k} - \sum_{i=1}^{k-1} L_{k,i}^2}$
+                    \For{($i=k+1$; $\;i \leq n$; $\;i$++)}
+                        \State $L_{i,k} = \frac{A_{i,k} - \sum_{j=1}^{k-1} L_{i,j} \cdot L_{k,j}}{L_{k,k}}$
+                    \EndFor
+                \EndFor
+                \State \Return $L$
+            \EndFunction
+        \end{algorithmic}
+    \caption{Cholesky-Zerlegung}
+    \label{alg:seq1}
+    \end{algorithm}
+\end{preview}
+\end{document}

+ 35 - 0
source-code/Pseudocode/Cholesky-Zerlegung/Makefile

@@ -0,0 +1,35 @@
+SOURCE = Cholesky-Zerlegung
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux *.data *.gnuplot
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	make
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg
+	rsvg-convert -a -w $(WIDTH) -f svg $(SOURCE).svg -o $(SOURCE)2.svg
+	inkscape $(SOURCE)2.svg --export-plain-svg=$(SOURCE).svg
+	rm $(SOURCE)2.svg

+ 64 - 0
source-code/Pseudocode/Gaussian-elimination/Gaussian-elimination.tex

@@ -0,0 +1,64 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+
+\usepackage[utf8]{inputenc} % this is needed for umlauts
+\usepackage[ngerman]{babel} % this is needed for umlauts
+\usepackage[T1]{fontenc}    % this is needed for correct output of umlauts in pdf
+\usepackage{amssymb,amsmath,amsfonts} % nice math rendering
+\usepackage{braket} % needed for \Set
+\usepackage{algorithm,algpseudocode}
+
+\begin{document}
+\begin{preview}
+    \begin{algorithm}[H]
+        \begin{algorithmic}
+            \Function{Gauss}{$A \in \mathbb{R}^{n \times {n+1}}$}
+                \For{($i=1$; $\;i \leq n$; $\;i$++)}
+                    \State // Search for maximum in this column
+                    \State $maxEl = |A_{i,i}|$
+                    \State $maxRow = i$
+                    \For{($k=i+1$; $\;k \leq n$; $\;k$++)}
+                        \If{$|A_{k,i}| > maxEl$}
+                            \State $maxEl = A_{k,i}$
+                            \State $maxRow = k$
+                        \EndIf
+                    \EndFor
+                    \\
+                    \State // Swap maximum row with current row
+                    \For{($k=i$; $\;k \leq n$; $\;k$++)}
+                        \State $tmp = A_{maxRow,k}$
+                        \State $A_{maxRow,k} = A_{i,k}$
+                        \State $A_{i,k} = tmp$
+                    \EndFor
+                    \\
+                    \State // Make all rows below this one 0 in current column
+                    \For{($k=i+1$; $\;k \leq n$; $\;k$++)}
+                        \State $c = -\frac{A_{k,i}}{A_{i,i}}$
+                        \For{($j=i$; $\;j \leq n$; $\;j$++)}
+                            \If{$i == j$}
+                                \State $A_{k,j} = 0$
+                            \Else
+                                \State $A_{k,j} += c \cdot A_{i,j}$
+                            \EndIf
+                        \EndFor
+                    \EndFor
+                \EndFor
+                \\
+                \State // Solve equation for an upper triangular matrix
+                \State $x = \Set{0} \in \mathbb{R^n}$
+                \For{($i=n$; $\;i \geq 1$; $\;i$-\--)}
+                    \State $x_i = \frac{A_{i,n+1}}{A_{i,i}}$
+                    \For{($k=i-1$; $\;k \geq 1$; $\;k$-\--)}
+                        \State $A_{k,n+1} -= A_{k,i} \cdot x_{i}$
+                    \EndFor
+                \EndFor
+                \\
+                \State \Return $x$
+            \EndFunction
+        \end{algorithmic}
+    \caption{Gaussian elimination}
+    \label{alg:seq1}
+    \end{algorithm}
+\end{preview}
+\end{document}

+ 35 - 0
source-code/Pseudocode/Gaussian-elimination/Makefile

@@ -0,0 +1,35 @@
+SOURCE = Gaussian-elimination
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux *.data *.gnuplot
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	make
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg
+	rsvg-convert -a -w $(WIDTH) -f svg $(SOURCE).svg -o $(SOURCE)2.svg
+	inkscape $(SOURCE)2.svg --export-plain-svg=$(SOURCE).svg
+	rm $(SOURCE)2.svg