{ "metadata": { "name": "", "signature": "sha256:8d03e812c3b9c199a40cc90ae2588eebc64bb41b014c6c2a77d32487caba15f5" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "
\n", "

This notebook is for testing code in sglib.py

\n", "
\n", "

\n", "I may end up also using it for documenting sglib functions.\n", "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Contents

\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "

^ Setup Cell

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%autosave 0\n", "%matplotlib inline\n", "import sglib\n", "reload(sglib)\n", "from sglib import *" ], "language": "python", "metadata": {}, "outputs": [ { "javascript": [ "IPython.notebook.set_autosave_interval(0)" ], "metadata": {}, "output_type": "display_data" }, { "output_type": "stream", "stream": "stdout", "text": [ "Autosave disabled\n" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "

^ Kets and Vectors

\n", "

\n", "You can create a state using either the col() or the\n", "ket() function. In both cases, the object that gets\n", "created is a column vector." ] }, { "cell_type": "code", "collapsed": false, "input": [ "col(1,0)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}1\\\\0\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAABYAAAAyBAMAAACqpzYoAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhDNIruZq3bd\nZkRVk0nZAAAAoUlEQVQoFWOQ//+JAQT0/39kEHZxBbNDXAwZRMAsEOEIYbMFwNns/XA2a+d6OJuB\nYf/AsGfJn7oAdyfY3VA3DxA7UnsKPKySGWIKoG7jFWBgSoCyORYwMH+FsvkXMPB9hrLjJzDw/Yay\n6xUYWICRA/YLMjteAaGGfwIDM0wvTwMDL8xMbgEGTphdDIcZAh2g5jAE7V4CdxuQQTEbOc0gpSUA\nIOM9jSjGIy4AAAAASUVORK5CYII=\n", "prompt_number": 36, "text": [ "\u23a11\u23a4\n", "\u23a2 \u23a5\n", "\u23a30\u23a6" ] } ], "prompt_number": 36 }, { "cell_type": "code", "collapsed": false, "input": [ "ket('+z')" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}1\\\\0\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAABYAAAAyBAMAAACqpzYoAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhDNIruZq3bd\nZkRVk0nZAAAAoUlEQVQoFWOQ//+JAQT0/39kEHZxBbNDXAwZRMAsEOEIYbMFwNns/XA2a+d6OJuB\nYf/AsGfJn7oAdyfY3VA3DxA7UnsKPKySGWIKoG7jFWBgSoCyORYwMH+FsvkXMPB9hrLjJzDw/Yay\n6xUYWICRA/YLMjteAaGGfwIDM0wvTwMDL8xMbgEGTphdDIcZAh2g5jAE7V4CdxuQQTEbOc0gpSUA\nIOM9jSjGIy4AAAAASUVORK5CYII=\n", "prompt_number": 37, "text": [ "\u23a11\u23a4\n", "\u23a2 \u23a5\n", "\u23a30\u23a6" ] } ], "prompt_number": 37 }, { "cell_type": "markdown", "metadata": {}, "source": [ "When you use the col() the parameters you give it are simply\n", "the individual components of the column vector, separated by commas. The\n", "vector can have any dimension. Here's one of dimension 4:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "col(1,0,0,0)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}1\\\\0\\\\0\\\\0\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAABoAAABkCAMAAACvvNBNAAAAP1BMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFBd4eAAAAFHRS\nTlMAMquZdlQQQO0wRM0iu+/dZol8bIlZUvoAAAENSURBVEgN7VbLEoMgDESIaH2Bbf7/W0uIAnGw\n46GHzlQOglkSwrJhUA3GplVqji1KNWggtDYhytO/RoKabM0jf4RGu4MHaJqxDtnZ6BMohIIbSswb\nvaDTngk+0LuzTv0NnbNhzQpml7Ikagy6t25iXwH5hYzrWIHmWEftplLhhREakMuphCwaCjUgxIgl\nNOFKtoY7cZQfIMvTy4AddjG44rXaLY1nWbBupim+ljzELZvalpUjopaNxDL5YF7DdVGnl7PZvtLr\nVyEL6coqU5zCsV29D7Pf5S3/j0T7B9MjJfrqC3pviZYFm9VEo8uKEm7f8PobiaYylxIVHN4SjRI9\nfVVaekMCDFmF8VUJoN4wwSOLJ/RcqwAAAABJRU5ErkJggg==\n", "prompt_number": 40, "text": [ "\u23a11\u23a4\n", "\u23a2 \u23a5\n", "\u23a20\u23a5\n", "\u23a2 \u23a5\n", "\u23a20\u23a5\n", "\u23a2 \u23a5\n", "\u23a30\u23a6" ] } ], "prompt_number": 40 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The ket() only takes a single parameter, and it needs to by\n", "enclosed in quotes. It will recognize the basic electron states, and a\n", "zero or one for the classical bit state." ] }, { "cell_type": "code", "collapsed": false, "input": [ "ket('-y')" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}\\frac{\\sqrt{2}}{2}\\\\- \\frac{\\sqrt{2} i}{2}\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAD8AAAA/BAMAAAClcQ3sAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMARM1UEHaJu2Yimasy\n3e/JfTDcAAAB2klEQVRIDY2Vv0vDQBTHX5JWW5vWgtBFIQGhk2AhOIpBB0cDji6Zu9ihLi46OgYU\nXOt/4CS4ufhn+D+0kMUpvmeay/14F31DL7zvp3eXe993gaAoQrDEXVFMIIiioUWHnegEAV0tMJZV\ncmACTlqJNDLAZjy9jQXDAEcbWS9sAsJ+5n83AJ37wbC7agBc1LzcAnQnAJeo9RMLMMqhNUNtKnT9\nNcewNQToLKxAED+jNoI9QWjn4KbvAP5+NLcBzuoVT1cqhb4HOMzEf8sHbQn41HRjBl1XgW1yQhnL\nitSXqPJiNAHZDIgZgGIGDlDMwAGKGThAMQMP9BPMizA2qZgBMROQzcACshk4QDEDByhm4ADMAbSp\nYmW9zE0SMKKfMnhgDlSy9gIZFvCS35L5ZD8WcKEuGQs8QF0yFghxai93rnAwl3jEl5yg0E82LmIG\ncK5jOMc89u/TMY3GEm4KL5inkt2wgJN3ZyhgyVr5Bz4YM8C4h69PJfPClAWCXUpjKVpv/EG59Q2H\nJLOEn1BehLkHIZUPa+D0i+IAYN276wGZ/86gzSs1MDuD3MAsULvBsofaDRZAbmB2Cfk2twD1bc4D\nUgPzgNTALCA3MAvIDcwC8sET8NfH/azx4x5lP14sjgVU+v8SAAAAAElFTkSuQmCC\n", "prompt_number": 48, "text": [ "\u23a1 ___ \u23a4\n", "\u23a2 \u2572\u2571 2 \u23a5\n", "\u23a2 \u2500\u2500\u2500\u2500\u2500 \u23a5\n", "\u23a2 2 \u23a5\n", "\u23a2 \u23a5\n", "\u23a2 ___ \u23a5\n", "\u23a2-\u2572\u2571 2 \u22c5\u2148 \u23a5\n", "\u23a2\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u23a5\n", "\u23a3 2 \u23a6" ] } ], "prompt_number": 48 }, { "cell_type": "code", "collapsed": false, "input": [ "ket('0'), ket('1')" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\begin{pmatrix}\\left[\\begin{matrix}1\\\\0\\end{matrix}\\right], & \\left[\\begin{matrix}0\\\\1\\end{matrix}\\right]\\end{pmatrix}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAHUAAAAyBAMAAACQd4lbAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAiUSZq1TvELvdZiIy\nds1Wk1T5AAAC60lEQVRIDaWWPYgTURDHJwl5m803WJ+mt7gIh5WYVBaiJNWBIGRRDyyEiyiiVQKK\nrYFTEGxSiZV3pZ2vEZtAAoqd3BaKraIifhH/M29fdlMk7K4DmcybyW9n3nuzL48IkmkQ7c6/wII9\nn3tiLCs1n9fZY8I3w+ARmDuT1+JwJq+8MLKw1MVJnwcmnPVtINOGdc2OqOwtzNBQ2toSfm5H2/xE\nYatsrWSdE290EC7IBFDGJX4Is6UHa9lq13kSsM4OM0SFJmuwzt3OWvYp0VFb1jYzRD0GTM2Ha9l7\n8lszJbfOEO2JlvmuZ78RbXaD5cj/ZqooOkZe5yvYmV1KyegOY+YtoXmmdcvu8/SmjVTsYAbspKBx\nakbesOaqD+5KXJYw355dK6pgmcq/YrOPiTDLoO1Kf0l4pmPs0Tui07Y3iK6iq7zYed2ugwy23e8T\nqWHIbu0+HIdB4w+00ujZjbfQlj12QIOmiUrNYtqg8QdaaTu04f0Gr7pIYnY641VPx6LgQ52SrbWp\ndZCWHaZnlU9yVCB14rVSI+qYkpOzrvdfbKufcq3cEaG1RNLMN7q/NzZO4Tmm6Qa+eWaglWbjEz62\nJ7HOaEsRzvuR7qAKE3R/GH+glYbxgn2WrQ2p18AYArboUcZfBI+L2yqliW5vRVn0ZORdKLQpj2jw\n4LHF5FtpfFWiLN6FyDuIDs1+t6wzxo9DURr2EouXCFMWQc14TBankMlbNG6rlYa1xGKDCp9NGOxL\nHNw4R+1iGH+glYaxxHaCMfyJWZx1ZcyQhWuuR2o23oVWGmY0L5+xkbO91qT8Yq0QiYrSGEVZPtup\nhQ8EefGvVgz3yLitVhpWlC2M4NhsQAlb8Sjnx12r2gyQ22SU89IjuqXjsvIfymVCmL3+/hz0yj3K\nnfl5dhH+wBBdFs2skZVsNJw1t4Ven50J2YKZaVW+ErJyn8ON7E/yvOY+B+5CcjYomSjXBpys5mec\nTuQ8dMo7MOUaSe/esjX/AHWQEqGcK7+dAAAAAElFTkSuQmCC\n", "prompt_number": 50, "text": [ "\u239b\u23a11\u23a4, \u23a10\u23a4\u239e\n", "\u239c\u23a2 \u23a5 \u23a2 \u23a5\u239f\n", "\u239d\u23a30\u23a6 \u23a31\u23a6\u23a0" ] } ], "prompt_number": 50 }, { "cell_type": "code", "collapsed": false, "input": [ "import sglib\n", "reload(sglib)\n", "from sglib import *\n", "\n", "psi = 1/sqrt(2)*ket('+z') + 1/sqrt(2)*ket('-z')\n", "fm = latex\n", "fm = sg_latex\n", "fm = sg_format_state(['+z','-z'], ',').format\n", "Print(r'$\\psi = %s$' % fm(psi))\n" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "$\\psi = \\frac{1}{\\sqrt{2}}|+z\\rangle+\\frac{1}{\\sqrt{2}}|-z\\rangle$" ], "metadata": {}, "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 54 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "


\n", "\n", "

^ string_tensor()

\n", "

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "string_tensor(2, ['0','1'], separator=',', D=False)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 15, "text": [ "['0,0', '0,1', '1,0', '1,1']" ] } ], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "


\n", "\n", "

^ sg_format_state()

\n", "

" ] }, { "cell_type": "code", "collapsed": false, "input": [ "fs = sg_format_state(basis=['0', '1'], separator='').format\n", "fs = sg_format_state(basis=['+z', '-z'], separator='').format\n", "fs = sg_format_state(basis=['Heads', 'Tails'], separator='').format\n", "psi = 1/sqrt(2)*col(1,0)+1/sqrt(2)*col(0,1)\n", "Print('$\\psi=%s$'%fs(psi))" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "$\\psi=\\frac{1}{\\sqrt{2}}|Heads\\rangle+\\frac{1}{\\sqrt{2}}|Tails\\rangle$" ], "metadata": {}, "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "#\n", "# The Bell States\n", "#\n", "bell_1 = 1/sqrt(2)*TP(pZ,pZ) + 1/sqrt(2)*TP(mZ,mZ) # phi+\n", "bell_2 = 1/sqrt(2)*TP(pZ,pZ) - 1/sqrt(2)*TP(mZ,mZ) # phi-\n", "bell_3 = 1/sqrt(2)*TP(pZ,mZ) + 1/sqrt(2)*TP(mZ,pZ) # psi+ (Triplet)\n", "bell_4 = 1/sqrt(2)*TP(pZ,mZ) - 1/sqrt(2)*TP(mZ,pZ) # psi- (Singlet)\n", "#\n", "# pick a format\n", "#\n", "fs = sg_format_state(basis=['+z', '-z'], separator=',').format\n", "fs = sg_format_state(basis=['0', '1'], separator='').format\n", "Print('Bell$_1 = %s$' %(fs(bell_1)))\n", "Print('Bell$_2 = %s$' %(fs(bell_2)))\n", "Print('Bell$_3 = %s$' %(fs(bell_3)))\n", "Print('Bell$_4 = %s$' %(fs(bell_4)))" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "Bell$_1 = \\frac{1}{\\sqrt{2}}|00\\rangle+\\frac{1}{\\sqrt{2}}|11\\rangle$" ], "metadata": {}, "output_type": "display_data", "text": [ "" ] }, { "html": [ "Bell$_2 = \\frac{1}{\\sqrt{2}}|00\\rangle-\\frac{1}{\\sqrt{2}}|11\\rangle$" ], "metadata": {}, "output_type": "display_data", "text": [ "" ] }, { "html": [ "Bell$_3 = \\frac{1}{\\sqrt{2}}|01\\rangle+\\frac{1}{\\sqrt{2}}|10\\rangle$" ], "metadata": {}, "output_type": "display_data", "text": [ "" ] }, { "html": [ "Bell$_4 = \\frac{1}{\\sqrt{2}}|01\\rangle-\\frac{1}{\\sqrt{2}}|10\\rangle$" ], "metadata": {}, "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 } ], "metadata": {} } ] }