Compare commits
15 Commits
04fe01eb35
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 955a442c60 | |||
| 995f86831f | |||
| f742235573 | |||
| 050dde99f6 | |||
| b94b763cf1 | |||
| 672968bdfb | |||
| 7115e3ce7a | |||
| 76a6564a3e | |||
| 847e7744ff | |||
| 0384334ce0 | |||
| 1830ccb5c7 | |||
| 452d363235 | |||
| c0cfd59beb | |||
| 60f8f11c83 | |||
| cf5c8b213e |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -28,6 +28,10 @@
|
||||
!/templates
|
||||
!/templates/template*
|
||||
|
||||
!/notes/
|
||||
!/notes/week*.pdf
|
||||
!/notes/README.md
|
||||
|
||||
!/src
|
||||
!/src/**/
|
||||
!/src/**/*.py
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# Mathematik für Physiker I, WiSe 2022-23 #
|
||||
|
||||
Der Inhalt dieses Repository ist keineswegs verpflichtend, sondern dient dem Zweck, „Handnotizen“ anzubieten.
|
||||
Der Inhalt dieses Repository ist keineswegs verpflichtend,
|
||||
sondern dient dem Zweck, „Handnotizen“ anzubieten (siehe insbesondere den [./notes/](notes/) Ordner).
|
||||
Es besteht hier kein Anspruch auf Vollständigkeit.
|
||||
Es werden hier keine offiziellen Lösungen für die Übungsblätter gespeichert.
|
||||
|
||||
@@ -11,6 +12,7 @@ findet man ausschließlich auf der **Moodle**-Seite.
|
||||
|
||||
```text
|
||||
.
|
||||
├── ./notes # Handschrift aus ÜG
|
||||
├── ./notebooks # Python/Jupyter Notebooks
|
||||
│ ├── ...
|
||||
│ └── ... *.ipynb Dateien
|
||||
|
||||
11
justfile
11
justfile
@@ -121,6 +121,17 @@ dist:
|
||||
@just build
|
||||
@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
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
265
notebooks/week-10.ipynb
Normal file
265
notebooks/week-10.ipynb
Normal file
@@ -0,0 +1,265 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"attachments": {},
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Woche 10 #\n",
|
||||
"\n",
|
||||
"Diese Wochen beschäftigen wir uns mit Matrizen und Vektoren.\n",
|
||||
"In diesem Notebook rechnen wir ein paar (Teil)aufgaben aus dem ÜB."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"'''IMPORTS'''\n",
|
||||
"import os;\n",
|
||||
"import sys; \n",
|
||||
"\n",
|
||||
"# NOTE: need this to force jupyter to reload imports:\n",
|
||||
"for key in list(sys.modules.keys()):\n",
|
||||
" if key.startswith('src.'):\n",
|
||||
" del sys.modules[key];\n",
|
||||
"\n",
|
||||
"os.chdir(os.path.dirname(_dh[0]));\n",
|
||||
"sys.path.insert(0, os.getcwd());\n",
|
||||
"\n",
|
||||
"from src.thirdparty.maths import *;\n",
|
||||
"from src.thirdparty.misc import *;\n",
|
||||
"from src.thirdparty.render import *;\n",
|
||||
"from src.maths.diagrams import *;\n",
|
||||
"\n",
|
||||
"np.random.seed(8007253); # zur Wiederholbarkeit"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"'''BEISPIEL-SIGNAL'''\n",
|
||||
"n = 100;\n",
|
||||
"u = np.zeros((n,), dtype=complex);\n",
|
||||
"u[8] = -0.7\n",
|
||||
"u[58] = 1j * sqrt(2);\n",
|
||||
"\n",
|
||||
"display_signal(u, 'Beispiel eines Vektors in $\\mathbb{C}^{100}$ als Signal über $\\{0,1,2,\\ldots,99\\}$ dargestellt');"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"'''SEMINARAUFGABE 10.4 a)'''\n",
|
||||
"n = 3;\n",
|
||||
"t = linspace(0, n-1, n);\n",
|
||||
"i, j = np.meshgrid(t, t);\n",
|
||||
"theta = 2*pi * i * j / n;\n",
|
||||
"\n",
|
||||
"# definiere die Matrix F_n + die Vektoren u_nk\n",
|
||||
"F_n = (1/sqrt(n)) * exp(-1j * theta);\n",
|
||||
"u_n = [ (1/sqrt(n)) * exp(1j * theta[:, k]) for k in range(n) ];\n",
|
||||
"\n",
|
||||
"print(dedent(\n",
|
||||
" f'''\n",
|
||||
" Matrix:\n",
|
||||
"\n",
|
||||
" F_{n} = \\n{np.round(F_n, 3)}\n",
|
||||
" '''\n",
|
||||
"));\n",
|
||||
"print('');\n",
|
||||
"\n",
|
||||
"# NOTE: Programmiersprachen können nicht exakt berechnen.\n",
|
||||
"# Darum entstehen winzige Fehler, die sich durch Runden entfernen lassen.\n",
|
||||
"print('Matrix-Vektor-Produkte:');\n",
|
||||
"for k in range(n):\n",
|
||||
" result = F_n @ u_n[k];\n",
|
||||
" print(dedent(\n",
|
||||
" f'''\n",
|
||||
"\n",
|
||||
" u_{{n {k}}} = {np.round(u_n[k], 3)}\n",
|
||||
" F_n · u_{{n {k}}} = {np.round(result, 3)}\n",
|
||||
" '''\n",
|
||||
" ));"
|
||||
]
|
||||
},
|
||||
{
|
||||
"attachments": {},
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Seminaraufgabe 10.4 b) ##\n",
|
||||
"\n",
|
||||
"Für $i\\in\\{0,1,\\ldots,n-1\\}$ ist die $i$-te von $\\mathcal{F}_{n}\\,u_{n,k}$\n",
|
||||
"\n",
|
||||
"$$\n",
|
||||
" \\begin{array}{rcl}\n",
|
||||
" (\\mathcal{F}_{n}\\,u_{n,k})_{i}\n",
|
||||
" &= &\\displaystyle\\sum_{j=0}^{n-1}\n",
|
||||
" (\\mathcal{F}_{n})_{ij}\\,(u_{n,k})_{j}\\\\\n",
|
||||
" &= &\\displaystyle\\sum_{j=0}^{n-1}\n",
|
||||
" \\tfrac{1}{\\sqrt{n}}\n",
|
||||
" \\exp(-\\imath\\tfrac{2\\pi\\,ij}{n})\n",
|
||||
" \\cdot\n",
|
||||
" \\tfrac{1}{\\sqrt{n}}\n",
|
||||
" \\exp(\\imath\\tfrac{2\\pi\\,kj}{n})\\\\\n",
|
||||
" &= &\\frac{1}{n}\\displaystyle\\sum_{j=0}^{n-1}\n",
|
||||
" \\underbrace{\n",
|
||||
" \\exp(\\imath\\tfrac{2\\pi\\,(k-i)j}{n})\n",
|
||||
" }_{= r^{j}}\\\\\n",
|
||||
" \\end{array}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"wobei $r := \\exp(\\imath\\tfrac{2\\pi\\,(k-i)}{n})$.\n",
|
||||
"Wir haben, dass\n",
|
||||
" $r = 1$\n",
|
||||
" $\\Leftrightarrow$\n",
|
||||
" $\\tfrac{k-i}{n} \\in \\mathbb{Z}$\n",
|
||||
" $\\Leftrightarrow$\n",
|
||||
" $i = k$,\n",
|
||||
"da $0\\leq i,k \\leq n-1$.\n",
|
||||
"<br>\n",
|
||||
"Es gilt außerdem $r^{n} = \\exp(\\imath 2\\pi\\,(k-i)) = 1$.\n",
|
||||
"<br>\n",
|
||||
"Aus der o.s. Berechnung erhält man also\n",
|
||||
"\n",
|
||||
"$$\n",
|
||||
" \\begin{array}{rcl}\n",
|
||||
" (\\mathcal{F}_{n}\\,u_{n,k})_{i}\n",
|
||||
" &= &\\tfrac{1}{n}\\displaystyle\\sum_{j=0}^{n-1}r^{j}\\\\\n",
|
||||
" &= &\\tfrac{1}{n}\n",
|
||||
" \\left\\{\n",
|
||||
" \\begin{array}{lcl}\n",
|
||||
" \\displaystyle\\sum_{j=0}^{n-1}1 &: &i = k\\\\\n",
|
||||
" \\dfrac{1 - r^{n}}{1 - r} &: &\\text{sonst}\\\\\n",
|
||||
" \\end{array}\n",
|
||||
" \\right.\\\\\n",
|
||||
" &= &\\tfrac{1}{n}\n",
|
||||
" \\left\\{\n",
|
||||
" \\begin{array}{lcl}\n",
|
||||
" n &: &i = k\\\\\n",
|
||||
" \\dfrac{1 - 1}{1 - r} &: &\\text{sonst}\\\\\n",
|
||||
" \\end{array}\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",
|
||||
"Darum $\\mathcal{F}_{n}\\,u_{n,k}\n",
|
||||
" = \\left(\\begin{matrix}\n",
|
||||
" 0\\\\\n",
|
||||
" 0\\\\\n",
|
||||
" \\vdots\\\\\n",
|
||||
" 1\\\\\n",
|
||||
" \\vdots\\\\\n",
|
||||
" 0\\\\\n",
|
||||
" \\end{matrix}\\right)\n",
|
||||
" \\begin{matrix}\n",
|
||||
" \\\\\n",
|
||||
" \\\\\n",
|
||||
" \\\\\n",
|
||||
" \\leftarrow k\\\\\n",
|
||||
" \\\\\n",
|
||||
" \\\\\n",
|
||||
" \\end{matrix}\n",
|
||||
" = \\mathbf{e}_{k}$.\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"'''SEMINARAUFGABE 10.4 d)'''\n",
|
||||
"n = 4;\n",
|
||||
"t = linspace(0, n-1, n);\n",
|
||||
"i, j = np.meshgrid(t, t);\n",
|
||||
"theta = 2*pi * i * j / n;\n",
|
||||
"\n",
|
||||
"# definiere die Matrix F_n + die Vektoren u_nk\n",
|
||||
"F_n = (1/sqrt(n)) * exp(-1j * theta);\n",
|
||||
"u_n = [ (1/sqrt(n)) * exp(1j * theta[:, k]) for k in range(n) ];\n",
|
||||
"\n",
|
||||
"# Eingabe des Vektors:\n",
|
||||
"F_mal_u = np.asarray([100, -3, 0, -3]); # = F_n @ u\n",
|
||||
"\n",
|
||||
"'''\n",
|
||||
"NOTE: Folgende Koeffizienten wurden falsch erraten.\n",
|
||||
"TODO: Wie lauten die richtigen Werte? -> Aufgabe!\n",
|
||||
"'''\n",
|
||||
"c = [10,10,40,50];\n",
|
||||
"\n",
|
||||
"# Aufschreibung des Signals »bzgl. der harmonischen Basis«:\n",
|
||||
"# u = c[0]u_n[0] + c[1]u_n[1] + c[2]u_n[2] + c[3]u_n[3]\n",
|
||||
"u_guess = sum([ c[k] * u_n[k] for k in range(n) ]);\n",
|
||||
"\n",
|
||||
"# Anzeige der Lösung:\n",
|
||||
"display_signal(u_guess, 'Geschätztes Signal');\n",
|
||||
"\n",
|
||||
"# Verifizierung der Lösung:\n",
|
||||
"display_latex(\n",
|
||||
" f'''\n",
|
||||
" $$\n",
|
||||
" \\\\begin{{array}}{{rcl}}\n",
|
||||
" \\\\%\\\\text{{error}}\n",
|
||||
" &\\colonequals\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"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.10.8"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
9
notes/README.md
Normal file
9
notes/README.md
Normal file
@@ -0,0 +1,9 @@
|
||||
# Handnotizen #
|
||||
|
||||
Diese Notizen sollen _nicht_ als Musterlösungen verstanden werden.
|
||||
|
||||
Während der ÜG interagieren wir mit dem Stoff + den Aufgaben.
|
||||
Wir besprechen **Konzepte** und **Ansätze**.
|
||||
Diese Schrift ist also eine Abbildung dieser Diskussionen und Präsentationen.
|
||||
Teilweise werden sie nur für die Leute Sinn ergeben, die daran teilgenommen haben und eigene Notizen machen.
|
||||
Die Dokumente sind nicht vollständig, da einiges während der Stunden im Raum und an der Tafel erörtert wird.
|
||||
BIN
notes/week10.pdf
Normal file
BIN
notes/week10.pdf
Normal file
Binary file not shown.
BIN
notes/week11.pdf
Normal file
BIN
notes/week11.pdf
Normal file
Binary file not shown.
BIN
notes/week12.pdf
Normal file
BIN
notes/week12.pdf
Normal file
Binary file not shown.
BIN
notes/week13.pdf
Normal file
BIN
notes/week13.pdf
Normal file
Binary file not shown.
BIN
notes/week14.pdf
Normal file
BIN
notes/week14.pdf
Normal file
Binary file not shown.
BIN
notes/week15.pdf
Normal file
BIN
notes/week15.pdf
Normal file
Binary file not shown.
BIN
notes/week2.pdf
Normal file
BIN
notes/week2.pdf
Normal file
Binary file not shown.
BIN
notes/week3.pdf
Normal file
BIN
notes/week3.pdf
Normal file
Binary file not shown.
BIN
notes/week4.pdf
Normal file
BIN
notes/week4.pdf
Normal file
Binary file not shown.
BIN
notes/week5.pdf
Normal file
BIN
notes/week5.pdf
Normal file
Binary file not shown.
BIN
notes/week6.pdf
Normal file
BIN
notes/week6.pdf
Normal file
Binary file not shown.
BIN
notes/week7.pdf
Normal file
BIN
notes/week7.pdf
Normal file
Binary file not shown.
BIN
notes/week8.pdf
Normal file
BIN
notes/week8.pdf
Normal file
Binary file not shown.
BIN
notes/week9.pdf
Normal file
BIN
notes/week9.pdf
Normal file
Binary file not shown.
@@ -1,4 +1,4 @@
|
||||
pip>=22.3
|
||||
pip>=22.3.1
|
||||
wheel>=0.37.1
|
||||
|
||||
# jupyter
|
||||
@@ -16,7 +16,7 @@ codetiming>=1.3.0
|
||||
|
||||
# testing + dev
|
||||
coverage[toml]>=6.4
|
||||
pytest>=7.1.1
|
||||
pytest>=7.2.0
|
||||
pytest-asyncio>=0.18.3
|
||||
pytest-cov>=3.0.0
|
||||
pytest-lazy-fixture>=0.6.3
|
||||
@@ -33,7 +33,6 @@ lorem>=0.1.1
|
||||
safetywrap>=1.5.0
|
||||
typing>=3.7.4.3
|
||||
nptyping>=2.1.1
|
||||
typing-extensions>=3.10.0.2
|
||||
|
||||
# config
|
||||
python-dotenv>=0.20.0
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
from src.maths.diagrams.sets import *;
|
||||
from src.maths.diagrams.signal import *;
|
||||
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
# EXPORTS
|
||||
@@ -14,4 +15,5 @@ from src.maths.diagrams.sets import *;
|
||||
__all__ = [
|
||||
'Function',
|
||||
'Functions',
|
||||
'display_signal',
|
||||
];
|
||||
|
||||
48
src/maths/diagrams/signal.py
Normal file
48
src/maths/diagrams/signal.py
Normal file
@@ -0,0 +1,48 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
# IMPORTS
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
from __future__ import annotations;
|
||||
|
||||
from src.thirdparty.code import *;
|
||||
from src.thirdparty.types import *;
|
||||
from src.thirdparty.maths import *;
|
||||
from src.thirdparty.plots import *;
|
||||
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
# EXPORTS
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
__all__ = [
|
||||
'display_signal',
|
||||
];
|
||||
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
# CONSTANTS / VARIABLES
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
def display_signal(
|
||||
u: np.ndarray,
|
||||
title: str,
|
||||
max_labels = 10,
|
||||
):
|
||||
n = len(u);
|
||||
if n <= max_labels:
|
||||
x_axis = list(range(n));
|
||||
else:
|
||||
skip = int(n/max_labels);
|
||||
x_axis = [ k*skip for k in range(max_labels) ];
|
||||
|
||||
fig, axs = mplot.subplots(1, 1, constrained_layout=True);
|
||||
mplot.title(title);
|
||||
mplot.xlabel('»Zeit« [=Indizes]');
|
||||
mplot.ylabel('Werte [=Einträge]');
|
||||
axs.stem(linspace(0,n-1,n), np.real(u), label='reeller Teil', linefmt='red');
|
||||
axs.stem(linspace(0,n-1,n) + 0.05, np.imag(u), label='imaginärer Teil', linefmt='lime');
|
||||
mplot.legend();
|
||||
axs.set_xticks(x_axis, labels=[ str(index) for index in x_axis]);
|
||||
mplot.show();
|
||||
return;
|
||||
16
src/thirdparty/maths.py
vendored
16
src/thirdparty/maths.py
vendored
@@ -6,10 +6,17 @@
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
from fractions import Fraction;
|
||||
from numpy import cos;
|
||||
from numpy import exp;
|
||||
from numpy import linalg;
|
||||
from numpy import linspace;
|
||||
from numpy import pi;
|
||||
from numpy import sin;
|
||||
from numpy import sqrt;
|
||||
from typing import TypeVar;
|
||||
import math;
|
||||
import numpy as np;
|
||||
import random;
|
||||
from typing import TypeVar;
|
||||
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
# MODIFICATIONS
|
||||
@@ -39,8 +46,15 @@ def sample(
|
||||
|
||||
__all__ = [
|
||||
'Fraction',
|
||||
'cos',
|
||||
'exp',
|
||||
'linalg',
|
||||
'linspace',
|
||||
'math',
|
||||
'np',
|
||||
'pi',
|
||||
'random',
|
||||
'sample',
|
||||
'sin',
|
||||
'sqrt',
|
||||
];
|
||||
|
||||
43
src/thirdparty/render.py
vendored
43
src/thirdparty/render.py
vendored
@@ -6,24 +6,57 @@
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
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_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;
|
||||
# from array_to_latex import to_ltx as array_to_latex; # <- has issues
|
||||
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
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
__all__ = [
|
||||
'Latex',
|
||||
'array_to_latex',
|
||||
'display',
|
||||
'display_latex',
|
||||
'display_markdown',
|
||||
'display_png',
|
||||
'display',
|
||||
'Latex',
|
||||
'widgets',
|
||||
];
|
||||
|
||||
4
src/thirdparty/types.py
vendored
4
src/thirdparty/types.py
vendored
@@ -38,8 +38,8 @@ from typing import Generic;
|
||||
from typing import Optional;
|
||||
from typing import Type;
|
||||
from typing import TypeVar;
|
||||
from typing_extensions import Concatenate;
|
||||
from typing_extensions import ParamSpec;
|
||||
from typing import Concatenate;
|
||||
from typing import ParamSpec;
|
||||
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
# EXPORTS
|
||||
|
||||
Reference in New Issue
Block a user