notebooks/docs/examples_dilations.ipynb

169 lines
5.1 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"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
}