{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# QuTiP Example: Stinespring Dilation of Quantum Channels" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[Christopher Granade](http://www.cgranade.com/)
\n", "University of Sydney\n", "$\\newcommand{\\ket}[1]{\\left|#1\\right\\rangle}$\n", "$\\newcommand{\\bra}[1]{\\left\\langle#1\\right|}$\n", "$\\newcommand{\\cnot}{{\\scriptstyle \\rm CNOT}}$\n", "$\\newcommand{\\TT}{\\operatorname{T}}$\n", "$\\newcommand{\\Tr}{\\operatorname{Tr}}$\n", "$\\newcommand{\\Uni}{\\operatorname{U}}$\n", "$\\newcommand{\\Chan}{\\operatorname{C}}$\n", "$\\newcommand{\\Hil}{\\mathcal{H}}$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Introduction" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this notebook, we will demonstrate the ``to_stinespring`` function, which converts a ``Qobj`` representing the quantum channel $\\Phi$ to a pair of partial isometries that describe the action of $\\Phi$.\n", "\n", "In introducing the Stinespring dilation, it is helpful to first adopt some notation. Let $\\Hil_X$, $\\Hil_Y$ and $\\Hil_Z$ be finite-dimensional Hilbert spaces. Let $\\Uni(\\Hil_X, \\Hil_Y)$ be the set of partial isometries from $\\Hil_X$ to $\\Hil_Y$, and $\\TT(\\Hil_X, \\Hil_Y)$ be the set of maps (that is, superoperators) from operators on $\\Hil_X$ to those acting on $\\Hil_Y$. Finally, let $\\Chan(\\Hil_X, \\Hil_Y) \\subset \\TT(\\Hil_X, \\Hil_Y)$ be the set of *channels*; that is, those maps which are completely positive and trace-preserving.\n", "\n", "For a quantum map $\\Phi \\in \\TT(\\Hil_X, \\Hil_Y)$, then, the Stinespring dilation of $\\Phi$ is a pair of partial isometries $A, B \\in \\Uni(\\Hil_X, \\Hil_Y \\otimes \\Hil_Z)$ for some space $\\Hil_Z$ such that\n", "\\begin{equation}\n", " \\Phi(X) = \\Tr_Z (A X B^\\dagger).\n", " \\label{eq:stinespring-action}\n", "\\end{equation}\n", "If $\\Phi$ is completely positive, then $A = B$. We do not insist on complete positivity, however, as it is common to consider the Stinespring dilation for the *difference* between two quantum channels, $\\Phi - \\Phi'$. By construction, such a map is not completely positive, nor is it trace-preserving." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Informally, the ancillary space $\\Hil_Z$ serves the same role as the Kraus index. If $\\Phi$ is a channel with Kraus operators $\\{K_i : i \\in \\{0, \\dots, k - 1\\}\\}$, then $A = B = \\sum_i K_i \\otimes \\ket{i}$, such that summation over $i$ is performed by the partial trace in \\eqref{eq:stinespring-action}.\n", "\n", "The Stinespring representation is useful for [evaluating norms](http://theoryofcomputing.org/articles/v005a011/) and for building system/environment models of a quantum channel." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Further Resources\n", "\n", "- Watrous. [CS 766: Theory of Quantum Information (lecture notes)](https://cs.uwaterloo.ca/~watrous/CS766/) (2013).\n", "- Wood, Biamonte and Cory. *Tensor networks and graphical calculus for open quantum systems*. [arXiv:1111.6950](https://scirate.com/arxiv/1111.6950) (2011).\n", "- Watrous. *Semidefinite Programs for Completely Bounded Norms*. [Theory of Computing **5** 217-238](http://theoryofcomputing.org/articles/v005a011/), [arXiv:0901.4709](https://scirate.com/arxiv/0901.4709) (2009)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Preamble" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Features" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We enable a few features such that this notebook runs in both Python 2 and 3." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from __future__ import division, print_function" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Imports" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import qutip as qt\n", "\n", "from qutip.ipynbtools import version_table" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plotting Support" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Settings" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "qt.settings.colorblind_safe = True" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Dilations of CPTP Maps" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We'll start by considering the case in which $\\Phi(X) = U X U^\\dagger$ for a random unitary operator $U \\in \\Uni(\\Hil_X, \\Hil_X)$." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "phi = qt.to_super(qt.rand_unitary_haar(4))" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(,\n", " )" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "qt.visualization.hinton(phi)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By construction, $\\Phi$ has one Kraus operator--- the random unitary itself. Because of numerical precision in finding eigenvalues of the Choi matrix, a decomposition will result in many operators with very small norms." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.44965724751e-08\n", "4.0\n", "2.17301265733e-08\n", "1.52222408748e-08\n", "1.5017315825e-08\n", "1.76642230882e-08\n", "1.37895174864e-08\n", "1.40385925527e-08\n", "1.07348372039e-08\n", "9.50757741411e-09\n", "6.71512203218e-09\n", "1.14139195174e-08\n", "1.01210695111e-08\n", "6.00690608844e-09\n", "3.38230626595e-09\n", "4.01926307771e-10\n" ] } ], "source": [ "for K in qt.to_kraus(phi):\n", " print(K.norm())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Because $\\Phi$ only has one Kraus operator, the Stinespring dilation will use a 1-dimensional ancillary space." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[4, 1], [4]]\n" ] } ], "source": [ "A, B = qt.to_stinespring(phi)\n", "print(A.dims)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we ask for a random channel of Choi rank 2 (that is, with 2 Kraus operators), then the corresponding space will be two-dimensional instead." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[4, 2], [4]]\n" ] } ], "source": [ "A, B = qt.to_stinespring(qt.rand_super_bcsz(4, rank=2))\n", "print(A.dims)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Moreover, since we have demanded that $A$ and $B$ are the Stinespring pair for a channel, we can easily verify that $A = B$." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "Quantum object: dims = [[4, 2], [4]], shape = (8, 4), type = other\\begin{equation*}\\left(\\begin{array}{*{11}c}0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0\\\\\\end{array}\\right)\\end{equation*}" ], "text/plain": [ "Quantum object: dims = [[4, 2], [4]], shape = (8, 4), type = other\n", "Qobj data =\n", "[[ 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0.]]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A - B" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Differences of Random Channels" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, let's consider two random qubit channels from the [BCSZ distribution]([``qutip.visualization.hinton``](http://qutip.org/docs/3.0.1/apidoc/functions.html#qutip.random_objects.rand_super_bcsz)." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ "phi1 = qt.rand_super_bcsz(2)\n", "phi2 = qt.rand_super_bcsz(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Looking at the Pauli-basis Hinton diagram for the difference between these channels gives some insight into how this map behaves." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(,\n", " )" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\ntRiMkiS1/H827sfz9234DwAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "qt.visualization.hinton(phi1 - phi2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In particular, note that $\\Delta\\Phi := \\Phi_1 - \\Phi_2$ annilates the traceful parts of its input, leaving an operator with negative eigenvalues. " ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Trace: -3.885780586188048e-16\n", "Eigenvalues:[-0.39781299 0.39781299]\n" ] }, { "data": { "text/latex": [ "Quantum object: dims = [[2], [2]], shape = (2, 2), type = oper, isherm = True\\begin{equation*}\\left(\\begin{array}{*{11}c}-0.334 & (-0.211+0.051j)\\\\(-0.211-0.051j) & 0.334\\\\\\end{array}\\right)\\end{equation*}" ], "text/plain": [ "Quantum object: dims = [[2], [2]], shape = (2, 2), type = oper, isherm = True\n", "Qobj data =\n", "[[-0.33363726+0.j -0.21068948+0.05051036j]\n", " [-0.21068948-0.05051036j 0.33363726+0.j ]]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d_phi = qt.to_super(phi1 - phi2)\n", "rho_in = qt.rand_dm(2)\n", "rho = qt.vector_to_operator(d_phi * qt.operator_to_vector(rho_in))\n", "print(\"Trace: {}\\nEigenvalues:{}\".format(rho.tr(), rho.eigenenergies()))\n", "rho" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Because $\\Delta \\Phi$ is not completely positive, we cannot obtain a Kraus decomposition where the left and right operators are the same:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "Ks = qt.to_kraus(d_phi)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "Quantum object: dims = [[2], [2]], shape = (2, 2), type = oper, isherm = True\\begin{equation*}\\left(\\begin{array}{*{11}c}-0.993 & (-0.141+0.001j)\\\\(-0.141-0.001j) & -0.327\\\\\\end{array}\\right)\\end{equation*}" ], "text/plain": [ "Quantum object: dims = [[2], [2]], shape = (2, 2), type = oper, isherm = True\n", "Qobj data =\n", "[[-0.99315946+0.j -0.14063145+0.00116084j]\n", " [-0.14063145-0.00116084j -0.32720643+0.j ]]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rho - sum(K * rho_in * K.dag() for K in Ks)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On the other hand, if we allow the left and right Kraus operators to be different, or consider a Stinespring dilation, we get the right answer:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "Quantum object: dims = [[2], [2]], shape = (2, 2), type = oper, isherm = True\\begin{equation*}\\left(\\begin{array}{*{11}c}0.0 & 0.0\\\\0.0 & 0.0\\\\\\end{array}\\right)\\end{equation*}" ], "text/plain": [ "Quantum object: dims = [[2], [2]], shape = (2, 2), type = oper, isherm = True\n", "Qobj data =\n", "[[ 0. 0.]\n", " [ 0. 0.]]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A, B = qt.to_stinespring(d_phi)\n", "rho - (A * rho_in * B.dag()).ptrace((0,))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Constructing System-Environment Models" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For a channel $\\Phi \\in \\Chan(\\Hil_X, \\Hil_X)$, once we have found the Stinespring dilation $A$, we then represent $\\Phi$ as a *unitary* on the full space, $U \\in \\Uni(\\Hil_X \\otimes \\Hil_Z)$, interpreting $\\Hil_Z$ as a preparation of an environment. Concretely, we want to find $U$ such that for a preparation $\\ket{\\psi}$ of the environment,\n", "\\begin{equation}\n", " \\Phi(X) = \\Tr_Z(U \\rho \\otimes \\ket{\\psi}\\bra{\\psi} U^\\dagger).\n", "\\end{equation}\n", "By convention, we'll choose a basis for $\\Hil_Z$ such that $\\ket{\\psi} = \\ket{0}$. Then, if we let $V = A \\otimes \\bra{0}$,\n", "\\begin{equation}\n", " \\Tr_Z(V \\rho \\otimes \\ket{0}\\bra{0} V^\\dagger) =\n", " \\Tr_Z(A \\rho \\otimes \\bra{0}\\ket{0}\\bra{0}\\ket{0} A) =\n", " \\Tr_Z(A \\rho A^\\dagger)\n", "\\end{equation}\n", "as desired." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "Quantum object: dims = [[3, 9], [3, 9]], shape = (27, 27), type = oper, isherm = False\\begin{equation*}\\left(\\begin{array}{*{11}c}-0.135 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\-0.208 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.171 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\-0.266 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.233 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\\\vdots & \\vdots & \\vdots & \\vdots & \\vdots & \\ddots & \\vdots & \\vdots & \\vdots & \\vdots & \\vdots\\\\(-0.057-0.048j) & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\(-0.098-0.087j) & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\(0.135+0.086j) & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\(0.035+0.025j) & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\(-0.060+0.028j) & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\\\end{array}\\right)\\end{equation*}" ], "text/plain": [ "Quantum object: dims = [[3, 9], [3, 9]], shape = (27, 27), type = oper, isherm = False\n", "Qobj data =\n", "[[-0.13489191+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.06306945+0.21478604j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.55528681-0.14941033j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [-0.20788410+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.05781703+0.18398047j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.10234492+0.07877836j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [ 0.17091511+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.16137142+0.23826558j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.12563050-0.19902323j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [-0.26625566+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.10065343+0.25602274j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.12324396-0.15175006j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [ 0.23348119+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.12564329+0.20703651j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.03828156-0.1253961j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [-0.13531210+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.15700793-0.09215325j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.14677156-0.07474015j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [ 0.10513760+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00442229-0.08464583j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.04651994-0.05576672j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [-0.07772972+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.01246213-0.01306289j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.03286948+0.00926989j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [ 0.04275339+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.00784522+0.02646141j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.01932549+0.04008755j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [ 0.23729489-0.31763531j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.07095245+0.24338916j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.15265472-0.18156748j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [ 0.00359451+0.32569467j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.10911217-0.35481215j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.11969155-0.30591942j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [-0.28874623-0.03964296j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.22409833-0.07784487j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.07798248-0.21958908j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [-0.17593421+0.07317909j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.10536593+0.07107698j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.08561438+0.07005932j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [ 0.08811031-0.07535421j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.24812566-0.12543192j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.16254615+0.12469738j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [ 0.04507114-0.20506344j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00846357+0.00378439j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.06245910-0.137808j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [-0.00154343+0.03159972j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.00922035-0.06693822j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.03781244-0.13433212j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [-0.01179238-0.02212491j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.05270996-0.05237786j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.03808276+0.04203297j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [-0.03031632-0.02100583j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.02750168+0.0347169j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.02976390+0.01429899j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [ 0.06373678+0.37255975j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.04786604+0.11548658j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.23307764+0.11413764j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [-0.26710165+0.07814791j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.15323341-0.03152684j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.21107485-0.06266335j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [ 0.02332038-0.11381595j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.09325548-0.34915823j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.12737418-0.03310584j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [ 0.11453897+0.01784442j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.07127097+0.26785016j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.08397931+0.04657339j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [-0.05735397-0.04759126j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.10707484+0.1178039j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.02395321+0.02432077j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [-0.09770808-0.08741437j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.02896806-0.02919885j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.11045944+0.04532371j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [ 0.13476915+0.08551988j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.03975917+0.06659844j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.00080447+0.10087113j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [ 0.03487820+0.02508843j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.01956077-0.07838574j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " -0.06243416+0.10049242j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [-0.06005658+0.02753638j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.05433663-0.01179864j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.01377637+0.06913863j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j\n", " 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A, B = qt.to_stinespring(qt.rand_super_bcsz(3))\n", "V = qt.tensor(A, qt.basis(A.dims[0][-1], 0).dag())\n", "# This adds an annoying left index, so let's drop it now.\n", "del V.dims[0][-1]\n", "V" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "Quantum object: dims = [[3], [3]], shape = (3, 3), type = oper, isherm = True\\begin{equation*}\\left(\\begin{array}{*{11}c}0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0\\\\\\end{array}\\right)\\end{equation*}" ], "text/plain": [ "Quantum object: dims = [[3], [3]], shape = (3, 3), type = oper, isherm = True\n", "Qobj data =\n", "[[ 0. 0. 0.]\n", " [ 0. 0. 0.]\n", " [ 0. 0. 0.]]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rho = qt.rand_dm_ginibre(3)\n", "(A * rho * A.dag()).ptrace((0,)) - (V * qt.tensor(rho, qt.ket2dm(qt.basis(A.dims[0][-1], 0))) * V.dag()).ptrace((0,))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It thus remains to extend $V$ to act non-trivially on the full space. This is done by noting that the singular values of $V$ are each one or zero, convienently partitioning $\\Hil_X \\otimes \\Hil_Z$ into the null space of $V$ and its complement." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "Quantum object: dims = [[3, 9], [3, 9]], shape = (27, 27), type = oper, isherm = True\\begin{equation*}\\left(\\begin{array}{*{11}c}1.000 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 1.000 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 1.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 1.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 1.000 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\\\vdots & \\vdots & \\vdots & \\vdots & \\vdots & \\ddots & \\vdots & \\vdots & \\vdots & \\vdots & \\vdots\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 1.000 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 1.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 1.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 1.000 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 1.000\\\\\\end{array}\\right)\\end{equation*}" ], "text/plain": [ "Quantum object: dims = [[3, 9], [3, 9]], shape = (27, 27), type = oper, isherm = True\n", "Qobj data =\n", "[[ 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 1. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 1. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 1. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 1. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 1. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 1.]]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Vu, Vs, Vv = np.linalg.svd(V.data.todense())\n", "U = qt.Qobj(Vu, dims=V.dims) * qt.Qobj(Vv, dims=V.dims)\n", "U * U.dag()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We finish by verifying that preparing an environment state, evolving under the system/environment unitary $U$, then partial tracing over the environment produces the same map as the original channel." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "Quantum object: dims = [[3], [3]], shape = (3, 3), type = oper, isherm = True\\begin{equation*}\\left(\\begin{array}{*{11}c}0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0\\\\\\end{array}\\right)\\end{equation*}" ], "text/plain": [ "Quantum object: dims = [[3], [3]], shape = (3, 3), type = oper, isherm = True\n", "Qobj data =\n", "[[ 0. 0. 0.]\n", " [ 0. 0. 0.]\n", " [ 0. 0. 0.]]" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(A * rho * A.dag()).ptrace((0,)) - (U * qt.tensor(rho, qt.ket2dm(qt.basis(A.dims[0][-1], 0))) * U.dag()).ptrace((0,))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Epilouge" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
SoftwareVersion
QuTiP4.3.0.dev0+6e5b1d43
Numpy1.13.1
SciPy0.19.1
matplotlib2.0.2
Cython0.25.2
Number of CPUs2
BLAS InfoINTEL MKL
IPython6.1.0
Python3.6.2 |Anaconda custom (x86_64)| (default, Jul 20 2017, 13:14:59) \n", "[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)]
OSposix [darwin]
Thu Jul 20 22:58:26 2017 MDT
" ], "text/plain": [ "" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "version_table()" ] } ], "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.6.2" } }, "nbformat": 4, "nbformat_minor": 1 }