Compare commits
6 Commits
7115e3ce7a
..
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 955a442c60 | |||
| 995f86831f | |||
| f742235573 | |||
| 050dde99f6 | |||
| b94b763cf1 | |||
| 672968bdfb |
@@ -121,6 +121,17 @@ dist:
|
|||||||
@just build
|
@just build
|
||||||
@just build-documentation
|
@just build-documentation
|
||||||
|
|
||||||
|
# exports notebook to format: html, markdown, pdf, latex.
|
||||||
|
export name format="pdf" theme="light":
|
||||||
|
@{{PYTHON}} -m jupyter nbconvert \
|
||||||
|
--allow-chromium-download \
|
||||||
|
--HTMLExporter.theme={{theme}} \
|
||||||
|
--TemplateExporter.exclude_input=false \
|
||||||
|
--to {{format}} \
|
||||||
|
--output-dir notes \
|
||||||
|
--ouput "notebook-{{name}}.{{format}}" \
|
||||||
|
notebooks/{{name}}.ipynb
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# TARGETS: run
|
# TARGETS: run
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|||||||
+60
-31
@@ -49,7 +49,7 @@
|
|||||||
"u[8] = -0.7\n",
|
"u[8] = -0.7\n",
|
||||||
"u[58] = 1j * sqrt(2);\n",
|
"u[58] = 1j * sqrt(2);\n",
|
||||||
"\n",
|
"\n",
|
||||||
"display_signal(u, 'Beispiel eines Vektors als Signal dargestellt');"
|
"display_signal(u, 'Beispiel eines Vektors in $\\mathbb{C}^{100}$ als Signal über $\\{0,1,2,\\ldots,99\\}$ dargestellt');"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -101,26 +101,28 @@
|
|||||||
"Für $i\\in\\{0,1,\\ldots,n-1\\}$ ist die $i$-te von $\\mathcal{F}_{n}\\,u_{n,k}$\n",
|
"Für $i\\in\\{0,1,\\ldots,n-1\\}$ ist die $i$-te von $\\mathcal{F}_{n}\\,u_{n,k}$\n",
|
||||||
"\n",
|
"\n",
|
||||||
"$$\n",
|
"$$\n",
|
||||||
|
" \\begin{array}{rcl}\n",
|
||||||
" (\\mathcal{F}_{n}\\,u_{n,k})_{i}\n",
|
" (\\mathcal{F}_{n}\\,u_{n,k})_{i}\n",
|
||||||
" = \\sum_{j=0}^{n-1}\n",
|
" &= &\\displaystyle\\sum_{j=0}^{n-1}\n",
|
||||||
" (\\mathcal{F}_{n})_{ij}\\,(u_{n,k})_{j}\n",
|
" (\\mathcal{F}_{n})_{ij}\\,(u_{n,k})_{j}\\\\\n",
|
||||||
" = \\sum_{j=0}^{n-1}\n",
|
" &= &\\displaystyle\\sum_{j=0}^{n-1}\n",
|
||||||
" \\tfrac{1}{\\sqrt{n}}\n",
|
" \\tfrac{1}{\\sqrt{n}}\n",
|
||||||
" \\exp(-\\imath\\tfrac{2\\pi\\,ij}{n})\n",
|
" \\exp(-\\imath\\tfrac{2\\pi\\,ij}{n})\n",
|
||||||
" \\cdot\n",
|
" \\cdot\n",
|
||||||
" \\tfrac{1}{\\sqrt{n}}\n",
|
" \\tfrac{1}{\\sqrt{n}}\n",
|
||||||
" \\exp(\\imath\\tfrac{2\\pi\\,kj}{n})\n",
|
" \\exp(\\imath\\tfrac{2\\pi\\,kj}{n})\\\\\n",
|
||||||
" = \\frac{1}{n}\\sum_{j=0}^{n-1}\n",
|
" &= &\\frac{1}{n}\\displaystyle\\sum_{j=0}^{n-1}\n",
|
||||||
" \\underbrace{\n",
|
" \\underbrace{\n",
|
||||||
" \\exp(\\imath\\tfrac{2\\pi\\,(k-i)j}{n})\n",
|
" \\exp(\\imath\\tfrac{2\\pi\\,(k-i)j}{n})\n",
|
||||||
" }_{= r^{j}}\n",
|
" }_{= r^{j}}\\\\\n",
|
||||||
|
" \\end{array}\n",
|
||||||
"$$\n",
|
"$$\n",
|
||||||
"\n",
|
"\n",
|
||||||
"wobei $r \\colonequals \\exp(\\imath\\tfrac{2\\pi\\,(k-i)}{n})$.\n",
|
"wobei $r := \\exp(\\imath\\tfrac{2\\pi\\,(k-i)}{n})$.\n",
|
||||||
"Wir haben, dass\n",
|
"Wir haben, dass\n",
|
||||||
" $r = 1$\n",
|
" $r = 1$\n",
|
||||||
" $\\Leftrightarrow$\n",
|
" $\\Leftrightarrow$\n",
|
||||||
" $\\tfrac{k-i}{n} \\in \\Z$\n",
|
" $\\tfrac{k-i}{n} \\in \\mathbb{Z}$\n",
|
||||||
" $\\Leftrightarrow$\n",
|
" $\\Leftrightarrow$\n",
|
||||||
" $i = k$,\n",
|
" $i = k$,\n",
|
||||||
"da $0\\leq i,k \\leq n-1$.\n",
|
"da $0\\leq i,k \\leq n-1$.\n",
|
||||||
@@ -130,23 +132,34 @@
|
|||||||
"Aus der o.s. Berechnung erhält man also\n",
|
"Aus der o.s. Berechnung erhält man also\n",
|
||||||
"\n",
|
"\n",
|
||||||
"$$\n",
|
"$$\n",
|
||||||
|
" \\begin{array}{rcl}\n",
|
||||||
" (\\mathcal{F}_{n}\\,u_{n,k})_{i}\n",
|
" (\\mathcal{F}_{n}\\,u_{n,k})_{i}\n",
|
||||||
" = \\tfrac{1}{n}\\displaystyle\\sum_{j=0}^{n-1}r^{j}\n",
|
" &= &\\tfrac{1}{n}\\displaystyle\\sum_{j=0}^{n-1}r^{j}\\\\\n",
|
||||||
" = \\tfrac{1}{n}\n",
|
" &= &\\tfrac{1}{n}\n",
|
||||||
" \\begin{cases}\n",
|
" \\left\\{\n",
|
||||||
|
" \\begin{array}{lcl}\n",
|
||||||
" \\displaystyle\\sum_{j=0}^{n-1}1 &: &i = k\\\\\n",
|
" \\displaystyle\\sum_{j=0}^{n-1}1 &: &i = k\\\\\n",
|
||||||
" \\frac{1 - r^{n}}{1 - r} &: &\\text{sonst}\\\\\n",
|
" \\dfrac{1 - r^{n}}{1 - r} &: &\\text{sonst}\\\\\n",
|
||||||
" \\end{cases}\n",
|
" \\end{array}\n",
|
||||||
" = \\tfrac{1}{n}\n",
|
" \\right.\\\\\n",
|
||||||
" \\begin{cases}\n",
|
" &= &\\tfrac{1}{n}\n",
|
||||||
|
" \\left\\{\n",
|
||||||
|
" \\begin{array}{lcl}\n",
|
||||||
" n &: &i = k\\\\\n",
|
" n &: &i = k\\\\\n",
|
||||||
" \\frac{1 - 1}{1 - r} &: &\\text{sonst}\\\\\n",
|
" \\dfrac{1 - 1}{1 - r} &: &\\text{sonst}\\\\\n",
|
||||||
" \\end{cases}\n",
|
" \\end{array}\n",
|
||||||
" = \\delta_{ik}.\n",
|
" \\right.\\\\\n",
|
||||||
|
" &= &\\left\\{\n",
|
||||||
|
" \\begin{array}{lcl}\n",
|
||||||
|
" 1 &: &i = k\\\\\n",
|
||||||
|
" 0 &: &\\text{sonst}\\\\\n",
|
||||||
|
" \\end{array}\n",
|
||||||
|
" \\right.\\\\\n",
|
||||||
|
" &= &\\delta_{ik}.\\\\\n",
|
||||||
|
" \\end{array}\n",
|
||||||
"$$\n",
|
"$$\n",
|
||||||
"\n",
|
"\n",
|
||||||
"Darum $\n",
|
"Darum $\\mathcal{F}_{n}\\,u_{n,k}\n",
|
||||||
" \\mathcal{F}_{n}\\,u_{n,k}\n",
|
|
||||||
" = \\left(\\begin{matrix}\n",
|
" = \\left(\\begin{matrix}\n",
|
||||||
" 0\\\\\n",
|
" 0\\\\\n",
|
||||||
" 0\\\\\n",
|
" 0\\\\\n",
|
||||||
@@ -163,8 +176,7 @@
|
|||||||
" \\\\\n",
|
" \\\\\n",
|
||||||
" \\\\\n",
|
" \\\\\n",
|
||||||
" \\end{matrix}\n",
|
" \\end{matrix}\n",
|
||||||
" = \\mathbf{e}_{k}\n",
|
" = \\mathbf{e}_{k}$.\n"
|
||||||
"$.\n"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -199,16 +211,33 @@
|
|||||||
"# Anzeige der Lösung:\n",
|
"# Anzeige der Lösung:\n",
|
||||||
"display_signal(u_guess, 'Geschätztes Signal');\n",
|
"display_signal(u_guess, 'Geschätztes Signal');\n",
|
||||||
"\n",
|
"\n",
|
||||||
"# Verifikation von Lösung:\n",
|
"# Verifizierung der Lösung:\n",
|
||||||
"print(dedent(\n",
|
"display_latex(\n",
|
||||||
" f'''\n",
|
" f'''\n",
|
||||||
" %error := ‖u_guess – u‖ / ‖u‖\n",
|
" $$\n",
|
||||||
" = ‖F_n · (u_guess – u)‖ / ‖F_n · u‖\n",
|
" \\\\begin{{array}}{{rcl}}\n",
|
||||||
" ... wieso?? [Stichwort: unitär]\n",
|
" \\\\%\\\\text{{error}}\n",
|
||||||
" = ‖F_n · u_guess – F_n · u‖ / ‖F_n · u‖\n",
|
" &\\colonequals\n",
|
||||||
" = {linalg.norm(F_n @ u_guess - F_mal_u)/linalg.norm(F_mal_u):.2%}\n",
|
" &\\\\dfrac{{\\\\|u_{{\\\\text{{guess}}}} - u\\\\|}}{{\\\\|u\\\\|}}\\\\\\\\\n",
|
||||||
|
" &=\n",
|
||||||
|
" &\\\\dfrac{{\n",
|
||||||
|
" \\\\|\\\\mathcal{{F}}_{{n}}\\\\,(u_{{\\\\text{{guess}}}} - u)\\\\|\n",
|
||||||
|
" }}{{\n",
|
||||||
|
" \\\\|\\\\mathcal{{F}}_{{n}}\\\\,u\\\\|\n",
|
||||||
|
" }}\n",
|
||||||
|
" \\\\quad\\\\text{{\\\\ldots wieso?? [Stichwort: unitär!]}}\\\\\\\\\n",
|
||||||
|
" &= &\\\\dfrac{{\n",
|
||||||
|
" \\\\|\\\\mathcal{{F}}_{{n}}\\\\,u_{{\\\\text{{guess}}}} - \\\\mathcal{{F}}_{{n}}\\\\,u\\\\|\n",
|
||||||
|
" }}{{\n",
|
||||||
|
" \\\\|\\\\mathcal{{F}}_{{n}}\\\\,u\\\\|\n",
|
||||||
|
" }}\\\\\\\\\n",
|
||||||
|
" &= &{linalg.norm(F_n @ u_guess - F_mal_u)/linalg.norm(F_mal_u):.2%}\n",
|
||||||
|
" \\\\%\n",
|
||||||
|
" \\\\\\\\\n",
|
||||||
|
" \\\\end{{array}}\n",
|
||||||
|
" $$\n",
|
||||||
" '''\n",
|
" '''\n",
|
||||||
"));\n"
|
");\n"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Vendored
+36
-3
@@ -6,14 +6,47 @@
|
|||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
from IPython.display import Latex;
|
from IPython.display import Latex;
|
||||||
from IPython.display import display_latex;
|
|
||||||
from IPython.display import display_png;
|
|
||||||
from IPython.display import display_markdown;
|
|
||||||
from IPython.display import display;
|
from IPython.display import display;
|
||||||
|
from IPython.display import display_png;
|
||||||
|
from IPython.display import display as display_text_ipython;
|
||||||
|
from IPython.display import display_latex as display_latex_ipython;
|
||||||
|
from IPython.display import display_markdown as display_md_ipython;
|
||||||
import ipywidgets as widgets;
|
import ipywidgets as widgets;
|
||||||
# from array_to_latex import to_ltx as array_to_latex; # <- has issues
|
# from array_to_latex import to_ltx as array_to_latex; # <- has issues
|
||||||
from qiskit.visualization import array_to_latex;
|
from qiskit.visualization import array_to_latex;
|
||||||
|
|
||||||
|
from functools import wraps;
|
||||||
|
from typing import Callable;
|
||||||
|
from typing import TypeVar;
|
||||||
|
|
||||||
|
from src.thirdparty.misc import dedent;
|
||||||
|
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
# MODIFICATIONS
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
T1 = TypeVar('T1');
|
||||||
|
T2 = TypeVar('T2');
|
||||||
|
|
||||||
|
def display_with_dedent(pre_process: Callable[[str], T1] = lambda x: x):
|
||||||
|
'''
|
||||||
|
Returns a decorator that modifies string -> string methods
|
||||||
|
'''
|
||||||
|
def dec(method: Callable[[T1], T2]) -> Callable[[str], T2]:
|
||||||
|
'''
|
||||||
|
Performs method but dedents first.
|
||||||
|
'''
|
||||||
|
@wraps(method)
|
||||||
|
def wrapped_method(text: str) -> T2:
|
||||||
|
return method(pre_process(dedent(text)));
|
||||||
|
return wrapped_method;
|
||||||
|
|
||||||
|
return dec;
|
||||||
|
|
||||||
|
display_latex = display_with_dedent(Latex)(display_latex_ipython);
|
||||||
|
display_text = display_with_dedent()(display_text_ipython);
|
||||||
|
display_markdown = display_with_dedent()(display_md_ipython);
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
# EXPORTS
|
# EXPORTS
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|||||||
Reference in New Issue
Block a user