{ "metadata": { "name": "", "signature": "sha256:d28ccc4483f72b8e3526855566be7c5b03ba2f6676557b81237bd4a4fb16b7d0" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Examples for `sympy.physics.quantum` section" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "from matplotlib import pyplot as plt" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "from sympy.physics.quantum import Commutator, Dagger, Operator, Ket, qapply\n", "A = Operator('A')\n", "B = Operator('B')\n", "C = Operator('C')\n", "D = Operator('D')\n", "a = Ket('a')\n", "comm = Commutator(A, B)\n", "comm" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 2, "text": [ "[A,B]" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "qapply(Dagger(comm*a)).doit()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ "-" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "q.flip(1)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "|0111>" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "Dagger(q)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 7, "text": [ "<0101|" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "ip = Dagger(q)*q\n", "ip" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 8, "text": [ "<0101|0101>" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "ip.doit()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ "1" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "from sympy.physics.quantum.qubit import Qubit, measure_all\n", "from sympy.physics.quantum.gate import H, X, Y, Z\n", "from sympy.physics.quantum.qapply import qapply\n", "c = H(0)*H(1)*Qubit('00')\n", "c" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 10, "text": [ "H(0)*H(1)*|00>" ] } ], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "q = qapply(c)\n", "measure_all(q)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 11, "text": [ "[(|00>, 1/4), (|01>, 1/4), (|10>, 1/4), (|11>, 1/4)]" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "from sympy.physics.quantum.qft import QFT\n", "from sympy.physics.quantum.circuitplot import circuit_plot" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "fourier = QFT(0,3).decompose()\n", "fourier" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 13, "text": [ "SWAP(0,2)*H(0)*C((0),S(1))*H(1)*C((0),T(2))*C((1),S(2))*H(2)" ] } ], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "circuit_plot(fourier, nqubits=3);\n", "%mkdir -p './images'\n", "plt.savefig('./images/fig1-circuitplot-qft.pdf', format='pdf')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nAAAY+B/Xn+RPbDV0uQAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 14 } ], "metadata": {} } ] }