{ "metadata": { "name": "development-liouvillian-construction" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# QuTiP development notebook for testing liouvillian construction\n", "\n", "Copyright (C) 2011 and later, Paul D. Nation & Robert J. Johansson" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%pylab inline" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "from qutip import *\n", "import time" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "def system_ops2(N):\n", " N1 = N\n", " N2 = N + 1\n", " a1 = tensor(rand_dm(N1, density=0.75), identity(N2))\n", " a2 = tensor(identity(N1), rand_dm(N2, density=0.75))\n", " H = a1.dag() * a1 + a2.dag() * a2\n", " c_ops = [sqrt(0.01) * a1, sqrt(0.025) * a2]\n", " \n", " return H, c_ops" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "def system_ops(N):\n", " N1 = N\n", " N2 = N + 1\n", " N3 = N + 2\n", " a1 = tensor(rand_dm(N1, density=0.75), identity(N2), identity(N3))\n", " a2 = tensor(identity(N1), rand_dm(N2, density=0.75), identity(N3))\n", " a3 = tensor(identity(N1), identity(N2), rand_dm(N3, density=0.75))\n", " H = a1.dag() * a1 + a2.dag() * a2 + a3.dag() * a3\n", " c_ops = [sqrt(0.01) * a1, sqrt(0.025) * a2, sqrt(0.05) * a3]\n", " \n", " return H, c_ops" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "H, c_ops = system_ops(3)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "L1 = liouvillian(H, c_ops)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "L1" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "\\begin{equation}\\text{Quantum object: dims = [[[3, 4, 5], [3, 4, 5]], [[3, 4, 5], [3, 4, 5]]], shape = [3600, 3600], type = oper, isHerm = False}\\\\[1em]\\begin{pmatrix}-0.00256494099689 & (-0.00307415314864-0.076080799489j) & (0.033366093512-0.0528309427102j) & (-0.0183708833457-0.0205756760023j) & (-0.00298280679784-0.0383390031161j) & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\(0.00254464103746-0.0758148452381j) & (-0.00284982536638-0.00392547434544j) & (0.00306075496276-0.0682200814748j) & (-0.021925618026-0.0498224321009j) & (0.00816725018561-0.0359836649834j) & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\(-0.0335618884238-0.0535207987983j) & (-0.00308318703801-0.0675039760736j) & (-0.00293737657568+0.0620860250016j) & (-0.0145142057428-0.0247217855076j) & (-0.0043980322777-0.0191890586456j) & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\(0.0174252222192-0.0206108256213j) & (0.0229221808928-0.0498631170457j) & (0.0148379106412-0.0243359017603j) & (-0.00371603521964+0.0987181802235j) & (0.013748778866-0.0125933410448j) & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\(0.00318001184024-0.0381833481246j) & (-0.00834056050947-0.0360124453046j) & (0.00407535300662-0.0192301831298j) & (-0.0134902859676-0.0131358387474j) & (-0.00300305511706+0.1002020077j) & \\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 & (-0.00283214206424-0.1002020077j) & (-0.00406593321521-0.0759574524111j) & (0.0326185894166-0.0535481147571j) & (-0.0183963772296-0.0203147465414j) & (-0.00362325817036-0.0382450034502j)\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & (0.00155286097089-0.075938192316j) & (-0.00300367311903-0.104127482046j) & (0.00203777869023-0.0680493642967j) & (-0.0229844163148-0.049494504321j) & (0.00767358994043-0.0361176499589j)\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & (-0.0343093925193-0.0528036267514j) & (-0.00410616331054-0.0676746932517j) & (-0.00203637880258-0.0381159826987j) & (-0.0149846653195-0.0243819678752j) & (-0.00459160097588-0.0191372492238j)\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & (0.0173997283353-0.0208717550822j) & (0.021863382604-0.0501910448256j) & (0.0143674510645-0.0246757193927j) & (-0.00178652069194-0.00148382747683j) & (0.0134751119728-0.0129646575603j)\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & (0.00253956046772-0.0382773477904j) & (-0.00883422075465-0.0358784603291j) & (0.00388178430845-0.0192819925516j) & (-0.0137639528608-0.0127645222319j) & -0.00148379365523\\\\\\end{pmatrix}\\end{equation}" ], "output_type": "pyout", "prompt_number": 7, "text": [ "Quantum object: dims = [[[3, 4, 5], [3, 4, 5]], [[3, 4, 5], [3, 4, 5]]], shape = [3600, 3600], type = oper, isherm = False\n", "Qobj data =\n", "[[-0.00256494+0.j -0.00307415-0.0760808j 0.03336609-0.05283094j\n", " ..., 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [ 0.00254464-0.07581485j -0.00284983-0.00392547j 0.00306075-0.06822008j\n", " ..., 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [-0.03356189-0.0535208j -0.00308319-0.06750398j -0.00293738+0.06208603j\n", " ..., 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " ..., \n", " [ 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ...,\n", " -0.00203638-0.03811598j -0.01498467-0.02438197j -0.00459160-0.01913725j]\n", " [ 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ...,\n", " 0.01436745-0.02467572j -0.00178652-0.00148383j 0.01347511-0.01296466j]\n", " [ 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ...,\n", " 0.00388178-0.01928199j -0.01376395-0.01276452j -0.00148379+0.j ]]" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "L2 = liouvillian_fast(H, c_ops)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "L2" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "\\begin{equation}\\text{Quantum object: dims = [[[3, 4, 5], [3, 4, 5]], [[3, 4, 5], [3, 4, 5]]], shape = [3600, 3600], type = oper, isHerm = True}\\\\[1em]\\begin{pmatrix}-0.00256494099689 & (-0.00307415314864-0.076080799489j) & (0.033366093512-0.0528309427102j) & (-0.0183708833457-0.0205756760023j) & (-0.00298280679784-0.0383390031161j) & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\(0.00254464103746-0.0758148452381j) & (-0.00284982536638-0.00392547434544j) & (0.00306075496276-0.0682200814748j) & (-0.021925618026-0.0498224321009j) & (0.00816725018561-0.0359836649834j) & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\(-0.0335618884238-0.0535207987983j) & (-0.00308318703801-0.0675039760736j) & (-0.00293737657568+0.0620860250016j) & (-0.0145142057428-0.0247217855076j) & (-0.0043980322777-0.0191890586456j) & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\(0.0174252222192-0.0206108256213j) & (0.0229221808928-0.0498631170457j) & (0.0148379106412-0.0243359017603j) & (-0.00371603521964+0.0987181802235j) & (0.013748778866-0.0125933410448j) & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\(0.00318001184024-0.0381833481246j) & (-0.00834056050947-0.0360124453046j) & (0.00407535300662-0.0192301831298j) & (-0.0134902859676-0.0131358387474j) & (-0.00300305511706+0.1002020077j) & \\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 & (-0.00283214206424-0.1002020077j) & (-0.00406593321521-0.0759574524111j) & (0.0326185894166-0.0535481147571j) & (-0.0183963772296-0.0203147465414j) & (-0.00362325817036-0.0382450034502j)\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & (0.00155286097089-0.075938192316j) & (-0.00300367311903-0.104127482046j) & (0.00203777869023-0.0680493642967j) & (-0.0229844163148-0.049494504321j) & (0.00767358994043-0.0361176499589j)\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & (-0.0343093925193-0.0528036267514j) & (-0.00410616331054-0.0676746932517j) & (-0.00203637880258-0.0381159826987j) & (-0.0149846653195-0.0243819678752j) & (-0.00459160097588-0.0191372492238j)\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & (0.0173997283353-0.0208717550822j) & (0.021863382604-0.0501910448256j) & (0.0143674510645-0.0246757193927j) & (-0.00178652069194-0.00148382747683j) & (0.0134751119728-0.0129646575603j)\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & (0.00253956046772-0.0382773477904j) & (-0.00883422075465-0.0358784603291j) & (0.00388178430845-0.0192819925516j) & (-0.0137639528608-0.0127645222319j) & -0.00148379365523\\\\\\end{pmatrix}\\end{equation}" ], "output_type": "pyout", "prompt_number": 9, "text": [ "Quantum object: dims = [[[3, 4, 5], [3, 4, 5]], [[3, 4, 5], [3, 4, 5]]], shape = [3600, 3600], type = oper, isherm = True\n", "Qobj data =\n", "[[-0.00256494+0.j -0.00307415-0.0760808j 0.03336609-0.05283094j\n", " ..., 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [ 0.00254464-0.07581485j -0.00284983-0.00392547j 0.00306075-0.06822008j\n", " ..., 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " [-0.03356189-0.0535208j -0.00308319-0.06750398j -0.00293738+0.06208603j\n", " ..., 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ]\n", " ..., \n", " [ 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ...,\n", " -0.00203638-0.03811598j -0.01498467-0.02438197j -0.00459160-0.01913725j]\n", " [ 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ...,\n", " 0.01436745-0.02467572j -0.00178652-0.00148383j 0.01347511-0.01296466j]\n", " [ 0.00000000+0.j 0.00000000+0.j 0.00000000+0.j ...,\n", " 0.00388178-0.01928199j -0.01376395-0.01276452j -0.00148379+0.j ]]" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "timeit liouvillian(H, c_ops)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1 loops, best of 3: 496 ms per loop\n" ] } ], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "timeit liouvillian_fast(H, c_ops)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "10 loops, best of 3: 41.5 ms per loop\n" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Full inspection of small system" ] }, { "cell_type": "code", "collapsed": false, "input": [ "N1 = 2\n", "N2 = 2\n", "\n", "a1 = tensor(rand_dm(N1, density=1.0), identity(N2))\n", "a2 = tensor(identity(N1), rand_dm(N2, density=1.0))\n", "\n", "H = a1.dag() * a1 + a2.dag() * a2\n", "\n", "c_ops = [sqrt(1.0) * a1, sqrt(2.0) * a2]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "N1 = 2\n", "\n", "a1 = rand_dm(N1, density=1.0)\n", "\n", "H = a1.dag() * a1\n", "\n", "c_ops = [sqrt(1.0) * a1]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "L1 = liouvillian(H, c_ops)\n", "\n", "L1" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "\\begin{equation}\\text{Quantum object: dims = [[[2], [2]], [[2], [2]]], shape = [4, 4], type = oper, isHerm = False}\\\\[1em]\\begin{pmatrix}-0.144765690223 & (0.344985612913-0.161228510818j) & (0.344985612913+0.161228510818j) & 0.144765690223\\\\(-0.357041058975-0.132406147982j) & (-0.148136870154-0.0821118740651j) & (-0.101655033798-0.103069681134j) & (0.357041058975+0.132406147982j)\\\\(-0.357041058975+0.132406147982j) & (-0.101655033798+0.103069681134j) & (-0.148136870154+0.0821118740651j) & (0.357041058975-0.132406147982j)\\\\0.144765690223 & (-0.344985612913+0.161228510818j) & (-0.344985612913-0.161228510818j) & -0.144765690223\\\\\\end{pmatrix}\\end{equation}" ], "output_type": "pyout", "prompt_number": 14, "text": [ "Quantum object: dims = [[[2], [2]], [[2], [2]]], shape = [4, 4], type = oper, isherm = False\n", "Qobj data =\n", "[[-0.14476569+0.j 0.34498561-0.16122851j 0.34498561+0.16122851j\n", " 0.14476569+0.j ]\n", " [-0.35704106-0.13240615j -0.14813687-0.08211187j -0.10165503-0.10306968j\n", " 0.35704106+0.13240615j]\n", " [-0.35704106+0.13240615j -0.10165503+0.10306968j -0.14813687+0.08211187j\n", " 0.35704106-0.13240615j]\n", " [ 0.14476569+0.j -0.34498561+0.16122851j -0.34498561-0.16122851j\n", " -0.14476569+0.j ]]" ] } ], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "L2 = liouvillian_fast(H, c_ops)\n", "\n", "L2" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "\\begin{equation}\\text{Quantum object: dims = [[[2], [2]], [[2], [2]]], shape = [4, 4], type = oper, isHerm = True}\\\\[1em]\\begin{pmatrix}-0.144765690223 & (0.344985612913-0.161228510818j) & (0.344985612913+0.161228510818j) & 0.144765690223\\\\(-0.357041058975-0.132406147982j) & (-0.148136870154-0.0821118740651j) & (-0.101655033798-0.103069681134j) & (0.357041058975+0.132406147982j)\\\\(-0.357041058975+0.132406147982j) & (-0.101655033798+0.103069681134j) & (-0.148136870154+0.0821118740651j) & (0.357041058975-0.132406147982j)\\\\0.144765690223 & (-0.344985612913+0.161228510818j) & (-0.344985612913-0.161228510818j) & -0.144765690223\\\\\\end{pmatrix}\\end{equation}" ], "output_type": "pyout", "prompt_number": 15, "text": [ "Quantum object: dims = [[[2], [2]], [[2], [2]]], shape = [4, 4], type = oper, isherm = True\n", "Qobj data =\n", "[[-0.14476569+0.j 0.34498561-0.16122851j 0.34498561+0.16122851j\n", " 0.14476569+0.j ]\n", " [-0.35704106-0.13240615j -0.14813687-0.08211187j -0.10165503-0.10306968j\n", " 0.35704106+0.13240615j]\n", " [-0.35704106+0.13240615j -0.10165503+0.10306968j -0.14813687+0.08211187j\n", " 0.35704106-0.13240615j]\n", " [ 0.14476569+0.j -0.34498561+0.16122851j -0.34498561-0.16122851j\n", " -0.14476569+0.j ]]" ] } ], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "L1-L2" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "\\begin{equation}\\text{Quantum object: dims = [[[2], [2]], [[2], [2]]], shape = [4, 4], type = oper, isHerm = False}\\\\[1em]\\begin{pmatrix}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{pmatrix}\\end{equation}" ], "output_type": "pyout", "prompt_number": 16, "text": [ "Quantum object: dims = [[[2], [2]], [[2], [2]]], shape = [4, 4], type = oper, isherm = False\n", "Qobj data =\n", "[[ 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0.]]" ] } ], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Benchmark vs system size" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def benchmark_liouvillian(N_vec):\n", " \n", " res1 = zeros(shape(N_vec))\n", " res2 = zeros(shape(N_vec))\n", " \n", " for idx, N in enumerate(N_vec):\n", " H, c_ops = system_ops(N)\n", " \n", " t0 = time.time()\n", " L = liouvillian(H, c_ops)\n", " t1 = time.time()\n", " res1[idx] = t1-t0\n", "\n", " t0 = time.time()\n", " L = liouvillian_fast(H, c_ops)\n", " t1 = time.time()\n", " res2[idx] = t1-t0\n", " \n", " return res1, res2" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "N_vec = array([2,3,4,5,6,7,8])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 18 }, { "cell_type": "code", "collapsed": false, "input": [ "t0 = time.time()\n", "res1, res2 = benchmark_liouvillian(N_vec)\n", "t1 = time.time()\n", "\n", "t1-t0" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 19, "text": [ "651.1269519329071" ] } ], "prompt_number": 19 }, { "cell_type": "code", "collapsed": false, "input": [ "fig, axes = subplots(1, 2, figsize=(14, 6))\n", "\n", "axes[0].plot(N_vec, res1, lw=2, label='liouvillian')\n", "axes[0].plot(N_vec, res2, lw=2, label='liouvillian_fast')\n", "axes[0].legend(loc=0)\n", "\n", "axes[1].plot(N_vec, res1 / res2, lw=2, label='speedup')\n", "axes[1].legend(loc=0)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 20, "text": [ "" ] }, { "output_type": "display_data", "png": "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\n" } ], "prompt_number": 20 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Test different combinations of preconstructed liouvillians" ] }, { "cell_type": "code", "collapsed": false, "input": [ "H, c_ops = system_ops2(3)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 21 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Standard" ] }, { "cell_type": "code", "collapsed": false, "input": [ "liouvillian(H, c_ops) - liouvillian_fast(H, c_ops)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "\\begin{equation}\\text{Quantum object: dims = [[[3, 4], [3, 4]], [[3, 4], [3, 4]]], shape = [144, 144], type = oper, isHerm = False}\\\\[1em]\\begin{pmatrix}0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 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.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\\\end{pmatrix}\\end{equation}" ], "output_type": "pyout", "prompt_number": 22, "text": [ "Quantum object: dims = [[[3, 4], [3, 4]], [[3, 4], [3, 4]]], shape = [144, 144], type = oper, isherm = False\n", "Qobj data =\n", "[[ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " ..., \n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]]" ] } ], "prompt_number": 22 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Without collapse operators" ] }, { "cell_type": "code", "collapsed": false, "input": [ "liouvillian(H, []) - liouvillian_fast(H, [])" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "\\begin{equation}\\text{Quantum object: dims = [[[3, 4], [3, 4]], [[3, 4], [3, 4]]], shape = [144, 144], type = oper, isHerm = False}\\\\[1em]\\begin{pmatrix}0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 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.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\\\end{pmatrix}\\end{equation}" ], "output_type": "pyout", "prompt_number": 23, "text": [ "Quantum object: dims = [[[3, 4], [3, 4]], [[3, 4], [3, 4]]], shape = [144, 144], type = oper, isherm = False\n", "Qobj data =\n", "[[ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " ..., \n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]]" ] } ], "prompt_number": 23 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Without hamiltonian" ] }, { "cell_type": "code", "collapsed": false, "input": [ "liouvillian(None, c_ops) - liouvillian_fast(None, c_ops)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "\\begin{equation}\\text{Quantum object: dims = [[[3, 4], [3, 4]], [[3, 4], [3, 4]]], shape = [144, 144], type = super, isHerm = False}\\\\[1em]\\begin{pmatrix}0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 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.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\\\end{pmatrix}\\end{equation}" ], "output_type": "pyout", "prompt_number": 24, "text": [ "Quantum object: dims = [[[3, 4], [3, 4]], [[3, 4], [3, 4]]], shape = [144, 144], type = super, isherm = False\n", "Qobj data =\n", "[[ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " ..., \n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]]" ] } ], "prompt_number": 24 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### With preconstructed liouvillian instead of collapse operators" ] }, { "cell_type": "code", "collapsed": false, "input": [ "L_c_ops = liouvillian(None, c_ops)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 25 }, { "cell_type": "code", "collapsed": false, "input": [ "liouvillian(H, [L_c_ops]) - liouvillian_fast(H, [L_c_ops])" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "\\begin{equation}\\text{Quantum object: dims = [[[3, 4], [3, 4]], [[3, 4], [3, 4]]], shape = [144, 144], type = oper, isHerm = False}\\\\[1em]\\begin{pmatrix}0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 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.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\\\end{pmatrix}\\end{equation}" ], "output_type": "pyout", "prompt_number": 26, "text": [ "Quantum object: dims = [[[3, 4], [3, 4]], [[3, 4], [3, 4]]], shape = [144, 144], type = oper, isherm = False\n", "Qobj data =\n", "[[ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " ..., \n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]]" ] } ], "prompt_number": 26 }, { "cell_type": "code", "collapsed": false, "input": [ "liouvillian(None, [L_c_ops]) - liouvillian_fast(None, [L_c_ops])" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "\\begin{equation}\\text{Quantum object: dims = [[[3, 4], [3, 4]], [[3, 4], [3, 4]]], shape = [144, 144], type = super, isHerm = False}\\\\[1em]\\begin{pmatrix}0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 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.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\\\end{pmatrix}\\end{equation}" ], "output_type": "pyout", "prompt_number": 27, "text": [ "Quantum object: dims = [[[3, 4], [3, 4]], [[3, 4], [3, 4]]], shape = [144, 144], type = super, isherm = False\n", "Qobj data =\n", "[[ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " ..., \n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]]" ] } ], "prompt_number": 27 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### With preconstructed liouvillian instead of hamiltonian" ] }, { "cell_type": "code", "collapsed": false, "input": [ "L_H = liouvillian_fast(H, [])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 28 }, { "cell_type": "code", "collapsed": false, "input": [ "liouvillian(H, []) - liouvillian_fast(L_H, [])" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "\\begin{equation}\\text{Quantum object: dims = [[[3, 4], [3, 4]], [[3, 4], [3, 4]]], shape = [144, 144], type = oper, isHerm = False}\\\\[1em]\\begin{pmatrix}0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 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.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\\\end{pmatrix}\\end{equation}" ], "output_type": "pyout", "prompt_number": 29, "text": [ "Quantum object: dims = [[[3, 4], [3, 4]], [[3, 4], [3, 4]]], shape = [144, 144], type = oper, isherm = False\n", "Qobj data =\n", "[[ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " ..., \n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]]" ] } ], "prompt_number": 29 }, { "cell_type": "code", "collapsed": false, "input": [ "liouvillian(H, c_ops) - liouvillian_fast(L_H, c_ops)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "\\begin{equation}\\text{Quantum object: dims = [[[3, 4], [3, 4]], [[3, 4], [3, 4]]], shape = [144, 144], type = oper, isHerm = False}\\\\[1em]\\begin{pmatrix}0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 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.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\\\end{pmatrix}\\end{equation}" ], "output_type": "pyout", "prompt_number": 30, "text": [ "Quantum object: dims = [[[3, 4], [3, 4]], [[3, 4], [3, 4]]], shape = [144, 144], type = oper, isherm = False\n", "Qobj data =\n", "[[ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " ..., \n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]]" ] } ], "prompt_number": 30 }, { "cell_type": "code", "collapsed": false, "input": [ "liouvillian(H, c_ops) - liouvillian_fast(L_H, [L_c_ops])" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "\\begin{equation}\\text{Quantum object: dims = [[[3, 4], [3, 4]], [[3, 4], [3, 4]]], shape = [144, 144], type = oper, isHerm = False}\\\\[1em]\\begin{pmatrix}0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 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.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\0.0 & 0.0 & 0.0 & 0.0 & 0.0 & \\cdots & 0.0 & 0.0 & 0.0 & 0.0 & 0.0\\\\\\end{pmatrix}\\end{equation}" ], "output_type": "pyout", "prompt_number": 31, "text": [ "Quantum object: dims = [[[3, 4], [3, 4]], [[3, 4], [3, 4]]], shape = [144, 144], type = oper, isherm = False\n", "Qobj data =\n", "[[ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " ..., \n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 0. 0. 0.]]" ] } ], "prompt_number": 31 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Software versions" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from qutip.ipynbtools import version_table; version_table()" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
SoftwareVersion
Cython0.16
SciPy0.10.1
QuTiP2.3.0.dev-25303b6
Python2.7.3 (default, Sep 26 2012, 21:51:14) \n", "[GCC 4.7.2]
IPython0.13
OSposix [linux2]
Numpy1.7.0.dev-3f45eaa
matplotlib1.3.x
Tue Mar 5 15:26:54 2013
" ], "output_type": "pyout", "prompt_number": 32, "text": [ "" ] } ], "prompt_number": 32 } ], "metadata": {} } ] }