notebooks/docs/examples_dilations.ipynb

169 lines
5.1 KiB
Plaintext
Raw Permalink Normal View History

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Examples - non-dilatable $d$-parameter $C_{0}$-semigroups #\n",
"\n",
"This notebook provides supplementary material to the research paper <https://doi.org/10.48550/arXiv.2210.02353>.\n",
"\n",
"In §5.3 a construction is given which yields for any $d \\geq 2$\n",
"a $d$-parameter $C_{0}$-semigroup, $T$ satisfying:\n",
"\n",
"- $T$ is contractive (equivalently its marginals $T_{i}$ are for each $i$);\n",
"- the generator $A_{i}$ of $T_{i}$ has strictly negative spectral bound for each $i$;\n",
"\n",
"and such that $T$ is __not__ **completely dissipative**.\n",
"Thus by the classification Theorem (Thm 1.1), $T$ does not have a regular unitary dilation.\n",
"\n",
"This Notebook demonstrates this general result empirically."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import os;\n",
"import sys;\n",
"\n",
"# NOTE: need this to force jupyter to reload imports:\n",
"for key in filter(lambda key: key.startswith('src.'), list(sys.modules.keys())):\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.examples_dilations import *;\n",
"np.random.seed(7098123); # for repeatability"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# User input:\n",
"N = 6; # dimension of the Hilbert space; must be divisible by 2 for this construction.\n",
"d = 4;\n",
"# force k-th order dissipation operators to be strictly postive for k < k0\n",
"# force k-th order dissipation operators to be non-positive for k >= k0\n",
"# one can choose 2 <= k0 <= d\n",
"k0 = d;"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# create the generators `A_i` of the marginal semigroups `T_i`:`\n",
"alpha = 1/math.sqrt(k0 - 0.5);\n",
"A = [\n",
" generate_semigroup_generator(\n",
" shape = [N, N],\n",
" rational = True,\n",
" base = 100,\n",
" alpha = alpha,\n",
" )\n",
" for _ in range(d)\n",
"];\n",
"\n",
"data = [];\n",
"for i, A_i in enumerate(A):\n",
" omega_Re = spec_bounds((1/2)*(A_i + A_i.T.conj()));\n",
" omega = spec_bounds(A_i);\n",
" data.append((i+1, omega, True if (omega_Re <= 0) else False));\n",
"\n",
"repr = tabulate(\n",
" tabular_data = data,\n",
" headers = ['i', 'spec bound of A_i', 'A_i dissipative (<==> T_i contractive)?'],\n",
" showindex = False,\n",
" floatfmt = '.6f',\n",
" colalign = ['center', 'center', 'center'],\n",
" tablefmt = 'simple',\n",
");\n",
"print(f'\\nThe marginal semigroups T_i and their generators A_i:\\n\\n{repr}');"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# compute the dissipation operators `S_TK` for each `K ⊆ {1,2,...,d}``:\n",
"S, beta_T = dissipation_operators(shape=[N, N], A=A);\n",
"\n",
"repr = tabulate(\n",
" tabular_data = [\n",
" (K, b, True if b >= -MACHINE_EPS else False)\n",
" for K, S_TK, b in sorted(S, key=lambda x: (len(x[0]), x[0]) )\n",
" ],\n",
" headers = ['K', 'min σ(S_{T,K})', 'S_{T,K} >= 0?'],\n",
" showindex = False,\n",
" floatfmt = '.6f',\n",
" colalign = ['center', 'center', 'center'],\n",
" tablefmt = 'simple',\n",
");\n",
"print(f'\\nDissipation operators:\\n\\n{repr}');"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Display summary:\n",
"print('')\n",
"print(f'β_T = min_K min σ(S_{{T,K}}) = {beta_T:.6f}');\n",
"if beta_T == 0:\n",
" print('⟹ T is compeletely dissipative.');\n",
" print('⟹ (by Thm 1.1) T has a regular unitary dilation.');\n",
"elif beta_T > 0:\n",
" print('⟹ T is compeletely super dissipative.');\n",
" print('⟹ (by Thm 1.1) T has a regular unitary dilation.');\n",
"else:\n",
" print('⟹ T is not compeletely dissipative.');\n",
" print('⟹ (by Thm 1.1) T does not have a regular unitary dilation.');"
]
}
],
"metadata": {
"jupytext": {
"cell_metadata_filter": "-all"
},
"kernelspec": {
"display_name": "Python 3.10.6 64-bit",
"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.6"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"state": {},
"version_major": 2,
"version_minor": 0
}
}
},
"nbformat": 4,
"nbformat_minor": 4
}