{ "metadata": { "name": "test-eigenvalues" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# QuTiP test notebook: Test sparse/dense eigenvalue/eigenvector solvers\n", "\n", "Copyright (C) 2011 and later, Paul D. Nation & Robert J. Johansson" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from qutip import *" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "N = 15\n", "H = rand_dm(N) - rand_dm(N)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Test groundstate" ] }, { "cell_type": "code", "collapsed": false, "input": [ "H.isherm = False\n", "e, eket1 = H.groundstate()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "e" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 4, "text": [ "(-0.18977307533043747-2.9509217660989655e-18j)" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "eket1" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "\\begin{equation}\\text{Quantum object: dims = [[15], [1]], shape = [15, 1], type = ket}\\\\[1em]\\begin{pmatrix}(0.191-0.082j)\\\\(0.073+0.066j)\\\\(-0.065+0.026j)\\\\(0.073+0.102j)\\\\(0.146-0.026j)\\\\\\vdots\\\\(0.052+0.082j)\\\\(-0.050+0.026j)\\\\(0.065+0.072j)\\\\(0.036+0.046j)\\\\(0.230+0.069j)\\\\\\end{pmatrix}\\end{equation}" ], "output_type": "pyout", "prompt_number": 5, "text": [ "Quantum object: dims = [[15], [1]], shape = [15, 1], type = ket\n", "Qobj data =\n", "[[ 0.19127561-0.08209118j]\n", " [ 0.07331730+0.06626114j]\n", " [-0.06472363+0.02641677j]\n", " [ 0.07325146+0.10152592j]\n", " [ 0.14627330-0.02613118j]\n", " [ 0.06145986+0.03328327j]\n", " [ 0.67409957+0.j ]\n", " [ 0.49132190+0.06005166j]\n", " [-0.01427794+0.20437063j]\n", " [ 0.09950448+0.25516574j]\n", " [ 0.05240227+0.0821856j ]\n", " [-0.05008274+0.02566426j]\n", " [ 0.06529614+0.07192849j]\n", " [ 0.03623606+0.04583408j]\n", " [ 0.22967682+0.06869587j]]" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "(H * eket1).full() / (eket1).full()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 6, "text": [ "array([[-0.18977308 +3.06343067e-17j],\n", " [-0.18977308 +3.51629507e-16j],\n", " [-0.18977308 -4.59495590e-16j],\n", " [-0.18977308 +1.12369136e-16j],\n", " [-0.18977308 +3.56273230e-16j],\n", " [-0.18977308 +9.82113592e-16j],\n", " [-0.18977308 -5.61321466e-17j],\n", " [-0.18977308 -4.87026157e-17j],\n", " [-0.18977308 -4.22344870e-18j],\n", " [-0.18977308 +8.26147250e-17j],\n", " [-0.18977308 +2.40104793e-16j],\n", " [-0.18977308 -6.85834186e-17j],\n", " [-0.18977308 +1.85102289e-16j],\n", " [-0.18977308 -1.04807234e-16j],\n", " [-0.18977308 +1.45586550e-16j]])" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "H.isherm = True\n", "e, eket2 = H.groundstate()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "e" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 8, "text": [ "-0.18977307533043666" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "eket2" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "\\begin{equation}\\text{Quantum object: dims = [[15], [1]], shape = [15, 1], type = ket}\\\\[1em]\\begin{pmatrix}-0.208\\\\(-0.041-0.090j)\\\\(0.070+0.001j)\\\\(-0.027-0.122j)\\\\(-0.145-0.034j)\\\\\\vdots\\\\(-0.016-0.096j)\\\\(0.056-0.004j)\\\\(-0.032-0.092j)\\\\(-0.015-0.056j)\\\\(-0.184-0.154j)\\\\\\end{pmatrix}\\end{equation}" ], "output_type": "pyout", "prompt_number": 9, "text": [ "Quantum object: dims = [[15], [1]], shape = [15, 1], type = ket\n", "Qobj data =\n", "[[-0.20814735+0.j ]\n", " [-0.04124173-0.08980582j]\n", " [ 0.06989584+0.00125082j]\n", " [-0.02727316-0.12218619j]\n", " [-0.14472273-0.03367561j]\n", " [-0.04335154-0.05482458j]\n", " [-0.61945927-0.26585795j]\n", " [-0.42781320-0.24895637j]\n", " [ 0.09372229-0.18217394j]\n", " [ 0.00919577-0.27372638j]\n", " [-0.01574156-0.09619082j]\n", " [ 0.05614492-0.00383188j]\n", " [-0.03163559-0.09185033j]\n", " [-0.01522240-0.05641005j]\n", " [-0.18396703-0.15370978j]]" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "(H * eket2).full() / (eket2).full()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 10, "text": [ "array([[-0.18977308 -3.90661525e-18j],\n", " [-0.18977308 +1.59521622e-17j],\n", " [-0.18977308 -2.28336412e-16j],\n", " [-0.18977308 -1.48759565e-16j],\n", " [-0.18977308 +7.39105708e-17j],\n", " [-0.18977308 -7.78740807e-17j],\n", " [-0.18977308 +9.45921075e-18j],\n", " [-0.18977308 -0.00000000e+00j],\n", " [-0.18977308 +3.01179206e-17j],\n", " [-0.18977308 +4.11468964e-17j],\n", " [-0.18977308 -3.07366693e-17j],\n", " [-0.18977308 +5.38194859e-17j],\n", " [-0.18977308 -8.44177005e-18j],\n", " [-0.18977308 -1.21824782e-16j],\n", " [-0.18977308 +6.66355559e-17j]])" ] } ], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "eket1.full() / eket2.full()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 11, "text": [ "array([[-0.91894328+0.39438973j],\n", " [-0.91894328+0.39438973j],\n", " [-0.91894328+0.39438973j],\n", " [-0.91894328+0.39438973j],\n", " [-0.91894328+0.39438973j],\n", " [-0.91894328+0.39438973j],\n", " [-0.91894328+0.39438973j],\n", " [-0.91894328+0.39438973j],\n", " [-0.91894328+0.39438973j],\n", " [-0.91894328+0.39438973j],\n", " [-0.91894328+0.39438973j],\n", " [-0.91894328+0.39438973j],\n", " [-0.91894328+0.39438973j],\n", " [-0.91894328+0.39438973j],\n", " [-0.91894328+0.39438973j]])" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "abs(eket1.full() / eket2.full()).T" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 12, "text": [ "array([[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1.]])" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Test eigenstates/eigenvectors" ] }, { "cell_type": "code", "collapsed": false, "input": [ "evals, evecs = la.eig(H.full())" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "evals" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 14, "text": [ "array([ 0.20215382 -5.58621559e-18j, -0.18977308 -2.95092177e-18j,\n", " -0.10949756 -3.71245315e-18j, 0.09767662 -3.63361751e-18j,\n", " -0.08568833 +6.26299109e-19j, 0.07009392 -6.81681939e-19j,\n", " 0.05621554 +4.39620683e-18j, 0.05059221 -1.25861075e-19j,\n", " -0.04620278 -3.34553216e-18j, 0.02336572 +2.85964480e-18j,\n", " 0.01197180 -1.84446575e-18j, -0.03899531 +8.06584941e-18j,\n", " -0.00339483 -5.50447036e-18j, -0.01228244 +1.31656907e-18j,\n", " -0.02623532 -8.25657673e-18j])" ] } ], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Test eigenenergies with eigenvectors" ] }, { "cell_type": "code", "collapsed": false, "input": [ "H.eigenstates()[0]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 15, "text": [ "array([-0.18977308, -0.10949756, -0.08568833, -0.04620278, -0.03899531,\n", " -0.02623532, -0.01228244, -0.00339483, 0.0119718 , 0.02336572,\n", " 0.05059221, 0.05621554, 0.07009392, 0.09767662, 0.20215382])" ] } ], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### hermitian" ] }, { "cell_type": "code", "collapsed": false, "input": [ "H.isherm = True" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [ "H.eigenstates(sparse=False, eigvals=5, sort='low')[0]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 17, "text": [ "array([-0.18977308, -0.10949756, -0.08568833, -0.04620278, -0.03899531])" ] } ], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "H.eigenstates(sparse=False, eigvals=5, sort='high')[0]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 18, "text": [ "array([ 0.20215382, 0.09767662, 0.07009392, 0.05621554, 0.05059221])" ] } ], "prompt_number": 18 }, { "cell_type": "code", "collapsed": false, "input": [ "H.eigenstates(sparse=True, eigvals=5, sort='low')[0]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 19, "text": [ "array([-0.18977308, -0.10949756, -0.08568833, -0.04620278, -0.03899531])" ] } ], "prompt_number": 19 }, { "cell_type": "code", "collapsed": false, "input": [ "H.eigenstates(sparse=True, eigvals=5, sort='high')[0]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 20, "text": [ "array([ 0.20215382, 0.09767662, 0.07009392, 0.05621554, 0.05059221])" ] } ], "prompt_number": 20 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### nonhermitian" ] }, { "cell_type": "code", "collapsed": false, "input": [ "H.isherm = False" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "H.eigenstates(sparse=False, eigvals=5, sort='low')[0]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 22, "text": [ "array([-0.18977308 -2.95092177e-18j, -0.10949756 -3.71245315e-18j,\n", " -0.08568833 +6.26299109e-19j, -0.04620278 -3.34553216e-18j,\n", " -0.03899531 +8.06584941e-18j])" ] } ], "prompt_number": 22 }, { "cell_type": "code", "collapsed": false, "input": [ "H.eigenstates(sparse=False, eigvals=5, sort='high')[0]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 23, "text": [ "array([ 0.20215382 -5.58621559e-18j, 0.09767662 -3.63361751e-18j,\n", " 0.07009392 -6.81681939e-19j, 0.05621554 +4.39620683e-18j,\n", " 0.05059221 -1.25861075e-19j])" ] } ], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "H.eigenstates(sparse=True, eigvals=5, sort='low')[0]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 24, "text": [ "array([-0.18977308 -1.67208499e-18j, -0.10949756 +1.88908328e-18j,\n", " -0.08568833 +2.83895112e-18j, -0.04620278 -3.94181456e-18j,\n", " -0.03899531 +4.98626434e-19j])" ] } ], "prompt_number": 24 }, { "cell_type": "code", "collapsed": false, "input": [ "H.eigenstates(sparse=True, eigvals=5, sort='high')[0]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 25, "text": [ "array([ 0.20215382 +3.19228800e-18j, 0.09767662 -2.00871820e-18j,\n", " 0.07009392 -3.77697834e-18j, 0.05621554 -6.74360270e-19j,\n", " 0.05059221 -4.09379031e-18j])" ] } ], "prompt_number": 25 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Test eigenenergies" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### hermitian" ] }, { "cell_type": "code", "collapsed": false, "input": [ "H.isherm = True" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 26 }, { "cell_type": "code", "collapsed": false, "input": [ "H.eigenenergies(sparse=False, eigvals=5, sort='low')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 27, "text": [ "array([-0.18977308, -0.10949756, -0.08568833, -0.04620278, -0.03899531])" ] } ], "prompt_number": 27 }, { "cell_type": "code", "collapsed": false, "input": [ "H.eigenenergies(sparse=False, eigvals=5, sort='high')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 28, "text": [ "array([ 0.20215382, 0.09767662, 0.07009392, 0.05621554, 0.05059221])" ] } ], "prompt_number": 28 }, { "cell_type": "code", "collapsed": false, "input": [ "H.eigenenergies(sparse=True, eigvals=5, sort='low')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 29, "text": [ "array([-0.18977308, -0.10949756, -0.08568833, -0.04620278, -0.03899531])" ] } ], "prompt_number": 29 }, { "cell_type": "code", "collapsed": false, "input": [ "H.eigenenergies(sparse=True, eigvals=5, sort='high')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 30, "text": [ "array([ 0.20215382, 0.09767662, 0.07009392, 0.05621554, 0.05059221])" ] } ], "prompt_number": 30 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### nonhermitian" ] }, { "cell_type": "code", "collapsed": false, "input": [ "H.isherm = False" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 31 }, { "cell_type": "code", "collapsed": false, "input": [ "H.eigenenergies(sparse=False, eigvals=5, sort='low')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 32, "text": [ "array([-0.18977308 -2.95092177e-18j, -0.10949756 -3.71245315e-18j,\n", " -0.08568833 +6.26299109e-19j, -0.04620278 -3.34553216e-18j,\n", " -0.03899531 +8.06584941e-18j])" ] } ], "prompt_number": 32 }, { "cell_type": "code", "collapsed": false, "input": [ "H.eigenenergies(sparse=False, eigvals=5, sort='high')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 33, "text": [ "array([ 0.20215382 -5.58621559e-18j, 0.09767662 -3.63361751e-18j,\n", " 0.07009392 -6.81681939e-19j, 0.05621554 +4.39620683e-18j,\n", " 0.05059221 -1.25861075e-19j])" ] } ], "prompt_number": 33 }, { "cell_type": "code", "collapsed": false, "input": [ "H.eigenenergies(sparse=True, eigvals=5, sort='low')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 34, "text": [ "array([-0.18977308 -9.46065488e-19j, -0.10949756 +1.24212913e-18j,\n", " -0.08568833 -1.67611217e-18j, -0.04620278 +1.65185784e-19j,\n", " -0.03899531 -1.30488484e-19j])" ] } ], "prompt_number": 34 }, { "cell_type": "code", "collapsed": false, "input": [ "H.eigenenergies(sparse=True, eigvals=5, sort='high')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 35, "text": [ "array([ 0.20215382 -1.48162126e-18j, 0.09767662 -1.92787564e-18j,\n", " 0.07009392 -3.92691747e-18j, 0.05621554 +2.39413867e-18j,\n", " 0.05059221 +1.38973175e-18j])" ] } ], "prompt_number": 35 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Software versions" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from qutip.ipynbtools import version_table\n", "\n", "version_table()" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
SoftwareVersion
Cython0.19-dev
SciPy0.13.0.dev-38ad5d2
QuTiP2.3.0.dev-75caa0a
Python2.7.3 (default, Sep 26 2012, 21:51:14) \n", "[GCC 4.7.2]
IPython0.13
OSposix [linux2]
Numpy1.8.0.dev-bd7104c
matplotlib1.3.x
Tue Apr 16 17:08:37 2013 JST
" ], "output_type": "pyout", "prompt_number": 36, "text": [ "" ] } ], "prompt_number": 36 } ], "metadata": {} } ] }