2022-10-08 09:51:40 +02:00
|
|
|
|
{
|
|
|
|
|
"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",
|
2022-10-08 10:49:31 +02:00
|
|
|
|
"execution_count": null,
|
2022-10-08 09:51:40 +02:00
|
|
|
|
"metadata": {},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"import os;\n",
|
|
|
|
|
"import sys;\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# NOTE: need this to force jupyter to reload imports:\n",
|
2022-10-12 12:20:58 +02:00
|
|
|
|
"for key in filter(lambda key: key.startswith('src.'), list(sys.modules.keys())):\n",
|
|
|
|
|
" del sys.modules[key];\n",
|
2022-10-08 09:51:40 +02:00
|
|
|
|
"\n",
|
|
|
|
|
"os.chdir(os.path.dirname(_dh[0]));\n",
|
|
|
|
|
"sys.path.insert(0, os.getcwd());\n",
|
|
|
|
|
"\n",
|
2022-10-08 10:25:42 +02:00
|
|
|
|
"from src.examples_dilations import *;\n",
|
|
|
|
|
"np.random.seed(7098123); # for repeatability"
|
2022-10-08 09:51:40 +02:00
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2022-10-08 10:49:31 +02:00
|
|
|
|
"execution_count": null,
|
2022-10-08 09:51:40 +02:00
|
|
|
|
"metadata": {},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"# User input:\n",
|
2022-10-12 12:20:58 +02:00
|
|
|
|
"N = 6; # dimension of the Hilbert space; must be divisible by 2 for this construction.\n",
|
2022-10-08 09:51:40 +02:00
|
|
|
|
"d = 4;\n",
|
2022-10-12 12:20:58 +02:00
|
|
|
|
"# 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;"
|
2022-10-08 09:51:40 +02:00
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2022-10-08 10:49:31 +02:00
|
|
|
|
"execution_count": null,
|
2022-10-08 09:51:40 +02:00
|
|
|
|
"metadata": {},
|
2022-10-08 10:49:31 +02:00
|
|
|
|
"outputs": [],
|
2022-10-08 09:51:40 +02:00
|
|
|
|
"source": [
|
|
|
|
|
"# create the generators `A_i` of the marginal semigroups `T_i`:`\n",
|
2022-10-12 12:20:58 +02:00
|
|
|
|
"alpha = 1/math.sqrt(k0 - 0.5);\n",
|
2022-10-08 09:51:40 +02:00
|
|
|
|
"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",
|
2022-10-08 10:25:42 +02:00
|
|
|
|
" data.append((i+1, omega, True if (omega_Re <= 0) else False));\n",
|
2022-10-08 09:51:40 +02:00
|
|
|
|
"\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",
|
2022-10-08 10:49:31 +02:00
|
|
|
|
"execution_count": null,
|
2022-10-08 09:51:40 +02:00
|
|
|
|
"metadata": {},
|
2022-10-08 10:49:31 +02:00
|
|
|
|
"outputs": [],
|
2022-10-08 09:51:40 +02:00
|
|
|
|
"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",
|
2022-10-08 10:25:42 +02:00
|
|
|
|
" tabular_data = [\n",
|
|
|
|
|
" (K, b, True if b >= -MACHINE_EPS else False)\n",
|
2022-10-08 10:49:31 +02:00
|
|
|
|
" for K, S_TK, b in sorted(S, key=lambda x: (len(x[0]), x[0]) )\n",
|
2022-10-08 10:25:42 +02:00
|
|
|
|
" ],\n",
|
2022-10-08 09:51:40 +02:00
|
|
|
|
" 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",
|
2022-10-08 10:49:31 +02:00
|
|
|
|
"execution_count": null,
|
2022-10-08 09:51:40 +02:00
|
|
|
|
"metadata": {},
|
2022-10-08 10:49:31 +02:00
|
|
|
|
"outputs": [],
|
2022-10-08 09:51:40 +02:00
|
|
|
|
"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
|
|
|
|
|
}
|