From 4d707b8293d58554adbeed433245fce9624241f4 2011-11-09 20:20:21 From: MinRK Date: 2011-11-09 20:20:21 Subject: [PATCH] update example notebooks after sort_keys and split_lines --- diff --git a/docs/examples/notebooks/basic_quantum.ipynb b/docs/examples/notebooks/basic_quantum.ipynb index 002a0b0..93e6176 100644 --- a/docs/examples/notebooks/basic_quantum.ipynb +++ b/docs/examples/notebooks/basic_quantum.ipynb @@ -1,282 +1,402 @@ { + "metadata": { + "name": "basic_quantum" + }, + "nbformat": 2, "worksheets": [ { "cells": [ { - "source": "

Basic Symbolic Quantum Mechanics

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

Basic Symbolic Quantum Mechanics

" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "%load_ext sympyprinting" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 18, - "input": "%load_ext sympyprinting" + "prompt_number": 18 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "from sympy import sqrt, symbols, Rational", + "from sympy import expand, Eq, Symbol, simplify, exp, sin", + "from sympy.physics.quantum import *", + "from sympy.physics.quantum.qubit import *", + "from sympy.physics.quantum.gate import *", + "from sympy.physics.quantum.grover import *", + "from sympy.physics.quantum.qft import QFT, IQFT, Fourier", + "from sympy.physics.quantum.circuitplot import circuit_plot" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 19, - "input": "from sympy import sqrt, symbols, Rational\nfrom sympy import expand, Eq, Symbol, simplify, exp, sin\nfrom sympy.physics.quantum import *\nfrom sympy.physics.quantum.qubit import *\nfrom sympy.physics.quantum.gate import *\nfrom sympy.physics.quantum.grover import *\nfrom sympy.physics.quantum.qft import QFT, IQFT, Fourier\nfrom sympy.physics.quantum.circuitplot import circuit_plot" + "prompt_number": 19 }, { - "source": "

Bras and Kets

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

Bras and Kets

" + ] }, { - "source": "Create symbolic states", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Create symbolic states" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "phi, psi = Ket('phi'), Ket('psi')", + "alpha, beta = symbols('alpha beta', complex=True)" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 20, - "input": "phi, psi = Ket('phi'), Ket('psi')\nalpha, beta = symbols('alpha beta', complex=True)" + "prompt_number": 20 }, { - "source": "Create a superposition", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Create a superposition" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "state = alpha*psi + beta*phi; state" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\alpha {\\left|\\psi\\right\\rangle } + \\beta {\\left|\\phi\\right\\rangle }$$" + ], "output_type": "pyout", - "latex": "$$\\alpha {\\left|\\psi\\right\\rangle } + \\beta {\\left|\\phi\\right\\rangle }$$", - "prompt_number": 21, "png": "iVBORw0KGgoAAAANSUhEUgAAAF8AAAAXCAYAAABtR5P0AAAABHNCSVQICAgIfAhkiAAABHBJREFU\naIHt2VmsXWMUB/Dfvb0dqBYtjZCrWvdBOiDVlmpTLTW0UiSGkHjRpoZETSUkTQyJseaIGzFUESXE\nA0rwwJWK4UE0SjwgaFNqnkra4PKw9s7Zd9+99z2nd0By/y/nfGt9a531/771rW/tfRjE/xL3Y8y/\nHUQ/o185NvfCdjSGNTD/JgzNyS7HhF7E0FeYhnYR41pciyaNcbwUB+RklfxaGgyyNxiJP3Kyp7Ac\nVwxgHHksxV+4WMTXjC/wSYN+2vB5TlbJrzeZ3wjG4tsC+SbsgVG99D9tJ+2Ow59Yo5YYnfgNhzXg\np1lsYB6V/AZq8Y9CR4luNZb00v8dO2EzCvPxSE4+XmTx2w34mor3S3Sl/AZq8WcoJ/MWZg5gLCnO\nwmMF8hvxiigZ9WKu8uQq5VdU8ycmgbViHL7Glfgl0Tfh7wK7YTgPR2IDbsnohqod69vFxXRqRr8O\ni/FsCYH+wHjRzYzGQ9guYv8KRyvmmEUrVuB7nISDsAtuwKe5uXXxO1jUqUXJuBn3Jcbpzt2dfD6J\nfTK2l2CS2OXt2C2R76XrhbMav+d+t0VxFtaLjgbnj8rENEpswmqR7Z1YkOjyHFNchJexv1iXexP5\n4diie9fTI782setX5+QniiyYif0y+mxgQ3FX8n0FflDbrNNE2UkxVvfMgKtwSFWAFehocP4iwSeP\n4fhOcKN48c/BR2rJNQ3LMvrn8GCB70p+a8Xij8zJW8XiLxcLv29BYMPFxsBGcVpSXI8hmfEQkWV5\njFHLoEbR0eD8lbmYstiIV5Pv+cWfgB1YmJGtEImb4gHF91s3fmnNb8axeEG0WVlsTj6PEH3slwWO\nd4jjNhlTRM+coknXNmw6Hi7wkc4twwQ8o/hibhP3TB5bxMnNo0Vxa9iCA/FSSQwL8VNO36brM8F0\nvFNi34VfuviTRW3+oMSIaKeWVuhhjiC1PhnvLS7sLCbiiQLbc0XWlOEz5f18B+b1EFuK0UlcRThZ\nXJrrSvST8bHaZdwinhNStInkW1lg241fmkWbEof5hSJqW6fY7e0lQaXoxDa1rJqH1zL6Zblxihax\nue/14L8vMBfH636CWkQJWYPXS2zXq5Vd4kHs3eR7k+ia2vFige9u/NIAfhZH+vic0QLcKo7RuGT+\nKSWBwfOilp6QjCeJ0zQCq8SdsrXA7nQ8XeG3LzED14i2OK37acfyo64lM4914kn9zGQ8XyTTWHGa\nN+CyArtCftk+/2zcJi6ZzUlAb+IC0YLeI148PV4R3FZR867DLNFRrEp07aJ0FGFx8vsDgRGiuViK\nR0Xi7Yk3cL7q/n4bjhFNxGxRZsdgV9ys+N6hH/iV9cAppuLCOvzMUp1t9aCjznm7K67HZajiOESt\nva5CKb/+fKSfr75FWaK49WwE39Q5b644zX2BQ5W/z8milF9vFr9TcbuWYgo+7MFHq6izv/YiDjij\nznmzNfbCrIrjHFGqqtBX/Lqhp9fA7XX4GOg/Uxp9+1nF8c467P8rfxYNYhCDGAT8A+0w3Ws5danI\nAAAAAElFTkSuQmCC\n", - "text": "\u03b1\u22c5\u2758\u03c8\u27e9 + \u03b2\u22c5\u2758\u03c6\u27e9" + "prompt_number": 21, + "text": [ + "\u03b1\u22c5\u2758\u03c8\u27e9 + \u03b2\u22c5\u2758\u03c6\u27e9" + ] } ], - "collapsed": false, - "prompt_number": 21, - "input": "state = alpha*psi + beta*phi; state\n" + "prompt_number": 21 }, { - "source": "Dagger the superposition and multiply the original", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Dagger the superposition and multiply the original" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "ip = Dagger(state)*state; ip" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\left(\\overline{\\alpha} {\\left\\langle \\psi\\right|} + \\overline{\\beta} {\\left\\langle \\phi\\right|}\\right) \\left(\\alpha {\\left|\\psi\\right\\rangle } + \\beta {\\left|\\phi\\right\\rangle }\\right)$$" + ], "output_type": "pyout", - "latex": "$$\\left(\\overline{\\alpha} {\\left\\langle \\psi\\right|} + \\overline{\\beta} {\\left\\langle \\phi\\right|}\\right) \\left(\\alpha {\\left|\\psi\\right\\rangle } + \\beta {\\left|\\phi\\right\\rangle }\\right)$$", - "prompt_number": 22, "png": "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\n2Kc62Q7y4E4AAAAASUVORK5CYII=\n", - "text": "\u239b\u23bd \u23bd \u239e \n\u239d\u03b1\u22c5\u27e8\u03c8\u2758 + \u03b2\u22c5\u27e8\u03c6\u2758\u23a0\u22c5(\u03b1\u22c5\u2758\u03c8\u27e9 + \u03b2\u22c5\u2758\u03c6\u27e9)" + "prompt_number": 22, + "text": [ + "\u239b\u23bd \u23bd \u239e ", + "\u239d\u03b1\u22c5\u27e8\u03c8\u2758 + \u03b2\u22c5\u27e8\u03c6\u2758\u23a0\u22c5(\u03b1\u22c5\u2758\u03c8\u27e9 + \u03b2\u22c5\u2758\u03c6\u27e9)" + ] } ], - "collapsed": false, - "prompt_number": 22, - "input": "ip = Dagger(state)*state; ip\n" + "prompt_number": 22 }, { - "source": "Distribute", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Distribute" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "qapply(expand(ip))" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\alpha \\overline{\\alpha} \\left\\langle \\psi \\right. {\\left|\\psi\\right\\rangle } + \\alpha \\overline{\\beta} \\left\\langle \\phi \\right. {\\left|\\psi\\right\\rangle } + \\beta \\overline{\\alpha} \\left\\langle \\psi \\right. {\\left|\\phi\\right\\rangle } + \\beta \\overline{\\beta} \\left\\langle \\phi \\right. {\\left|\\phi\\right\\rangle }$$" + ], "output_type": "pyout", - "latex": "$$\\alpha \\overline{\\alpha} \\left\\langle \\psi \\right. {\\left|\\psi\\right\\rangle } + \\alpha \\overline{\\beta} \\left\\langle \\phi \\right. {\\left|\\psi\\right\\rangle } + \\beta \\overline{\\alpha} \\left\\langle \\psi \\right. {\\left|\\phi\\right\\rangle } + \\beta \\overline{\\beta} \\left\\langle \\phi \\right. {\\left|\\phi\\right\\rangle }$$", - "prompt_number": 23, "png": "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\nVapUevofz4SOwufiq5gAAAAASUVORK5CYII=\n", - "text": "\u23bd \u23bd \u23bd \u23bd \n\u03b1\u22c5\u03b1\u22c5\u27e8\u03c8\u2758\u03c8\u27e9 + \u03b1\u22c5\u03b2\u22c5\u27e8\u03c6\u2758\u03c8\u27e9 + \u03b2\u22c5\u03b1\u22c5\u27e8\u03c8\u2758\u03c6\u27e9 + \u03b2\u22c5\u03b2\u22c5\u27e8\u03c6\u2758\u03c6\u27e9" + "prompt_number": 23, + "text": [ + "\u23bd \u23bd \u23bd \u23bd ", + "\u03b1\u22c5\u03b1\u22c5\u27e8\u03c8\u2758\u03c8\u27e9 + \u03b1\u22c5\u03b2\u22c5\u27e8\u03c6\u2758\u03c8\u27e9 + \u03b2\u22c5\u03b1\u22c5\u27e8\u03c8\u2758\u03c6\u27e9 + \u03b2\u22c5\u03b2\u22c5\u27e8\u03c6\u2758\u03c6\u27e9" + ] } ], - "collapsed": false, - "prompt_number": 23, - "input": "qapply(expand(ip))\n" + "prompt_number": 23 }, { - "source": "

Operators

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

Operators

" + ] }, { - "source": "Create symbolic operators", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Create symbolic operators" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "A = Operator('A')", + "B = Operator('B')", + "C = Operator('C')" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 24, - "input": "A = Operator('A')\nB = Operator('B')\nC = Operator('C')" + "prompt_number": 24 }, { - "source": "Test commutativity", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Test commutativity" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "A*B == B*A" + ], "language": "python", "outputs": [ { "output_type": "pyout", "prompt_number": 25, - "text": "False" + "text": [ + "False" + ] } ], - "collapsed": false, - "prompt_number": 25, - "input": "A*B == B*A\n" + "prompt_number": 25 }, { - "source": "Distribute A+B squared", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Distribute A+B squared" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "expand((A+B)**2)" + ], "language": "python", "outputs": [ { + "latex": [ + "$$A B + \\left(A\\right)^{2} + B A + \\left(B\\right)^{2}$$" + ], "output_type": "pyout", - "latex": "$$A B + \\left(A\\right)^{2} + B A + \\left(B\\right)^{2}$$", - "prompt_number": 26, "png": "iVBORw0KGgoAAAANSUhEUgAAAMAAAAAZCAYAAABn7SHgAAAABHNCSVQICAgIfAhkiAAABONJREFU\neJzt2luoFVUcx/FP6jnZsdNNKzVFKLsX1EORpGYIKRkFRgRJD70oFBRFmlQv0ksPQUVYPYXRTcTq\nISqKouhCD0YSdCUKtItd0JJSuunpYe3N2U4ze681M/scOcwXDps9a83M//f/nTXrv9ZsGhoaGhI5\nEmdgyngH0tCTrl5NHttYJgQrsBLHYCOmYtu4RtRQRONVzQzgpdYnnI4RXDhuETUU0XjVB07An1jQ\ncewPrBmfcBq6EOVVag27EoPY3KXPRswraPsHO1vnf5B471QG8XdC/zxt2WvswbH4q/V9Po7Sfy1F\n9CPXMR7XTZFXKfr67tWJrYs+1qPfIM4XppvnMSQMtCmYg4dbbevKBhLBLKxO6F+k7V6jU2geW7E+\nLbRaqTvXsR7XSTevUvT13asnWjd7MaLvilbf63PaBvAz9gkCY0hZrE8SDEw5p0jbmXi84Jy1uCXh\nHt2oshlRZ65TPC6ibq9i9ZXyalJkoJcK08sIZkb0X9z6fDun7UDrOkdE3n8pbovo1+YmvN66Twzd\ntH0pJPi8zPFV+EyYogewMCG+LKn6stSV61SP8+iHV7H6dijhVcw/4BTch7uxW/wA+Bw/5bQtxUl4\nVlik9GJA/EwBNwir/xhitL3g0KfHdThHSPpVguFHJ8SXJVVfljpyXcbjPPrhVYq+vnh1u9GV8yfY\n36P/kPAkeTSnbaFQY24RXlDEsFx87XY83ozsS5y2IWGxBdPxPj7M/M1OuGeWFH15sdWR61SPi6jb\nq1R9yV712gWajauFkQY/4lxhdb234JwFwpPgZKPJGG4FvA/X4q0e9y3LqdgV2TdW234cFJ5su4VS\n4XChjlyX8bgOYrxK1ZfsVa8B8IAwLR5sfW9PQzMVJ6dds60VRmibrXgQG/AVvusVXAmmC4mJIUXb\nTmG3YkfVAGumjlyX8bgOYrwqoy/Jq25rgKXCXmvnvmlncopYhC/wDX7r+Nsu1HyL8HRMcCXYi7kR\n/VK1zcLv1ULrC1VzXdbjOojxqoy+JK+KZoBBYdW8HQ91HL+44yZ5DOASPFPQ/oMgYLEwlXUGukxY\ntGSZI7zVm5/T9h42dXzfKfzwqRup2gYxA7/2uG4v6tDXSZVcU95jxsarMvqSvSoaAHcKK+stmePf\nCnVZ0dPhIuFt27sF7WfjOGFUZw3ZJtRtWRYIiXoypy1bQ+4S6sBub4FTtZ0m1JkjBdeLpQ59nVTJ\nNeU9Zmy8KqMv2au8ATAPlwuj/GCmbWbmM0u7ZisK+sbW51M5bXscWue1mYFpwgo+hs3C1Ji3w1BG\n2xLFT6EU6tLXpkquq3jM2HhVRt8SFb0axjvCW7U85guja1NB+yuKF1yrW+c+JyQpltRtwiG85v+v\nxctom4FXhX3kflF2G7Rsrqt63I26vCJdXymv2jPAMO7BNThL2BPe4NBdgDXCCCM8PdbhZXyNm4VV\n/RXCNtp6/NsR2JWC2FvxSEqAJdgv7GqsFmrcKtpWCdqqlj91MVX5XFfJw6e1Kwlkvaqi7w4lvGqP\nlmFc1nF8BG8Y/SUdYbrMjtSP8Esr2KKRdwAfC4uWMizHBbg/8bxT8L1q2iYLNXE/SdE3oHyuq+Qh\n1ruqXlXRN1f/vRoXluGu8Q6ij0wkfRNJy2HDNP3fkx5PJpK+iaSloaGhoaGhoWGi8h+sZcLwhv0Q\nuwAAAABJRU5ErkJggg==\n", - "text": "2 2\nA\u22c5B + A + B\u22c5A + B" + "prompt_number": 26, + "text": [ + "2 2", + "A\u22c5B + A + B\u22c5A + B" + ] } ], - "collapsed": false, - "prompt_number": 26, - "input": "expand((A+B)**2)" + "prompt_number": 26 }, { - "source": "Create a commutator", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Create a commutator" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "comm = Commutator(A,B); comm" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\left[A,B\\right]$$" + ], "output_type": "pyout", - "latex": "$$\\left[A,B\\right]$$", - "prompt_number": 27, "png": "iVBORw0KGgoAAAANSUhEUgAAAC4AAAAWCAYAAAC/kK73AAAABHNCSVQICAgIfAhkiAAAAkhJREFU\nSInt182LTWEcB/DPvOWlJpTGYLKwUFMzzYZmMzNJiWl2/gHFQlZm4yUbY4WtQsqUFRYiSoQ4aIpS\n8rKQRORdSZEMM1g8z+XOnXPmnntnZkG+dXvO/X3P7/v73t9znuc8l78UNSXfL+ArLuFAmdw9qMO2\nKuoOYC068QND+BK5RizB2Xjf+xjvx0o0oK9UMMlZuB3fcawK0wU0CGZPpXBtUf8eaku4REowD2qw\nD/VoriK/gOWYhYsp3ANcFhrUlpZcjfH1sdhnkzPeE8erGXwrRvE8j1hShp8XC9XjMT7kEc3AObzK\n4NbhpzCzpUjSElKDRTiEVfF6KIrPKOcwBbX4iOMl8dnYHLntxm8evz3WV1BshdDxK/H72zg241kF\nOtCBOZiLvTE2E6uFXW0NblUimGTEa3FN2KYKOCh0vLOSAhFbYu6yFG4jvmHDRB7zLs5Nwt5evFCK\nO14pevAOj1K4QbwWGtOYJZDnUWnCzlikqyjeEsdqjHfj+gT8J2F2l+JuHsEkJXYUvSnxPmG6d+UR\nLkJrzOvP4BdG/qkJFme5R6VLeIOdT+FexDGt44sm0Czs3zcy+IE4HhF+QC4kRdfteIMFGfcujsKn\nS+IdwvljMCPvpPDyqiuJN2E/RrAjp8cxwfnCGWE0Gnvoz/NcwAm8jPyw0L3CwacFT3Df2Kk+g5sx\nZyReJ/FzW3jNHzZ2HVVkfKqwewq1ipFQ3VklL6ZTe9rEe3FnmrQx3viI8Gcia6vKq9kt/Zw9GWwV\nvA1Pse5//Nv4Bfpvd5tNLRluAAAAAElFTkSuQmCC\n", - "text": "[A,B]" + "prompt_number": 27, + "text": [ + "[A,B]" + ] } ], - "collapsed": false, - "prompt_number": 27, - "input": "comm = Commutator(A,B); comm\n" + "prompt_number": 27 }, { - "source": "Carry out the commutator", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Carry out the commutator" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "comm.doit()" + ], "language": "python", "outputs": [ { + "latex": [ + "$$A B - B A$$" + ], "output_type": "pyout", - "latex": "$$A B - B A$$", - "prompt_number": 28, "png": "iVBORw0KGgoAAAANSUhEUgAAAE4AAAASCAYAAAD15uiRAAAABHNCSVQICAgIfAhkiAAAAi5JREFU\nWIXt1ztoVEEYBeDPGEGLlQQMahQipBUF0SqYwmdhrCxFO+0F0UKxUVS0ELENaWOhQhorFfGBlY+g\nIppOgmDAKkrUqLGYQddk7u59JAFhDyx3ds4/c87ZuXPnLi2UwpKC9VcwiTMNagaxDZvwFU/wPXKr\n0InrOIepgvqNsBC6efI2xVb8xFCO2g2YwaUEty9yI1XMLIJukbyZaMPdKHw7R/2hWLsrgx+LpmpV\nTC2gbtO8bTkNHcUNTGNNjvp+YZs8TnA1rMcEPufUz4v50i2aN4ku4ddvwzg+5BjzFg8zuBPCSh4p\na2iBdcvkTWIIfbH9FD80vlNXR4NnZ/V3xL4JHC5rZhF0c+VtbzJJH5b6e+t/jN+7YjuF/njtxcXY\nrmEA7+KcY03tF8d86JbJOwfteIS1dX1DwqpubjDuGr5heYI7Lxzvu/OaKICqumXzzsExHJ/VdyFO\ntLfBuFHphzOsEB6474sYyYmquoXyZm3V7jjJG/8e7T3xmnXSdGAjLmfw08JdsU7YRpPCVjqdUZ/C\niBCoqm49yuadg2HsSPQfEFbgZMa4/ZEfyOC3R/5OXiM5UVW3cN7U6bgTn3AvwY3Ha9YK9Eeh1JZZ\nhlOxPZgxviyq6FbJ+wdbhNOjM4PvjQaHM/jneJno78FNfMHBZiZKoKxu1by68Qq/YuFr4b2oHreE\nl8EZ4U/0A+zBSmG1XkRuSjid7sfPKJ7hqvAcmi9U0a2St4UWWvh/8Bt1v8TG07AChQAAAABJRU5E\nrkJggg==\n", - "text": "A\u22c5B - B\u22c5A" + "prompt_number": 28, + "text": [ + "A\u22c5B - B\u22c5A" + ] } ], - "collapsed": false, - "prompt_number": 28, - "input": "comm.doit()" + "prompt_number": 28 }, { - "source": "Create a more fancy commutator", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Create a more fancy commutator" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "comm = Commutator(A*B,B+C); comm" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\left[A B,B + C\\right]$$" + ], "output_type": "pyout", - "latex": "$$\\left[A B,B + C\\right]$$", - "prompt_number": 29, "png": "iVBORw0KGgoAAAANSUhEUgAAAGAAAAAWCAYAAAA/45nkAAAABHNCSVQICAgIfAhkiAAAA3tJREFU\naIHt2E2sXVMUB/DfexqvUvr0QxXFQI2k8dn4at+A1wglkfiImRIhEhEDDBrVCNLGM2qjHRA6EMSE\ngfhIkSt9jU7E90cISaWEpBJaDarFYO3b3l7n3LPP6733Te5/ss/Za+3/XufstdZeezPAtGKo7f1N\n/ImteKpi7Docgwc76GzCpTgPf+H91MJcnISX8Sh+r2F3r3iPBiO4Idl1rviPI9iMl7AWD+FjXIb9\nRSSNzMmW4G+8kKG7EP9iQ4HsyiR7K3PefvBOBRfhc2zBFeLHS+3j2IjfMC6cfGYZUSNjsiG8Lj7w\n3Qz9m5LutSXyT5N8XgZXL3nn4YyaNhCevV95JhjCJP4QP/6oF2AV7sNefJGhvxEHMLtANjPx/ILh\nDK5e8l4vvqsObheLfEeF3hq8k56PWIAZNSecg1uxAveINFCFMXyIPQWyO3E87sU/NW3pFW8uzhbp\nbweeqdD9TjhLJRoV8s0ix8F2sfoj5epOxEFMtPWPCq/Yrdp7+sVbNwK2ie8fz9C9EIvT85QjYKmI\ngGbe/zm1C7GzZMxykQLOxPrUN0vk7Z1J/mUNG3rNm4s5uByf4O0M/Q9yiRsl/cN4z5Gb1CbhARd3\n4JsQoXdCgexh7MPKXON6zFsnAlaKb3+u5hy0RUDuBnWXOBt839LXGgFlGBN1794C2bo0/7P+fx6p\nQq94c9F0us8ydOfqUInlpKAFWI2vsaylf1FqyxZgFi5QfqA7KEqzBcnA3Rm2dIN3lWJPH8WxSd6O\n5/Fky3sz5f6YYe9qPJahh+IUtAVXF/Q3w3BtCdeKJL+xRL40ySdzjesxb50UdFaa44kKvcW4v62v\nVgpaJk68bxTIdqW2LALGUrutQDZDVCvwdMn4U3vE2w18K6rA6xTvQ8QirRF7ZTYaLc9L8BNOLtE9\nTXjBKyXyHfimoH8RXhRp4raSsc1T7gNd5u2EumXobLEIkzi9pX8Ut4hCoahEryxD54tS8xyHq59x\nhz2euFxanp6vEd64Po17TZRp54sLsu0iioj6vZkeLhEbaRF24QcRgRM4rku83cQeXCUOfRuEA3yF\nX0XBUuQ8lWh0ybhu4ZE+zjWVq4ipYEpl6HRgWHh1v7BP/66uD6HuXVA/cTde7eN8W/s41yG0R8AB\nESL9CMVOmC/y/kfTbEc3cbP4t6fo3QXhAAMMMEAd/Af3QOJHSnIYNwAAAABJRU5ErkJggg==\n", - "text": "[A\u22c5B,B + C]" + "prompt_number": 29, + "text": [ + "[A\u22c5B,B + C]" + ] } ], - "collapsed": false, - "prompt_number": 29, - "input": "comm = Commutator(A*B,B+C); comm" + "prompt_number": 29 }, { - "source": "Expand the commutator", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Expand the commutator" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "comm.expand(commutator=True)" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\left[A,B\\right] B + \\left[A,C\\right] B + A \\left[B,C\\right]$$" + ], "output_type": "pyout", - "latex": "$$\\left[A,B\\right] B + \\left[A,C\\right] B + A \\left[B,C\\right]$$", - "prompt_number": 30, "png": "iVBORw0KGgoAAAANSUhEUgAAAN8AAAAWCAYAAABAHklQAAAABHNCSVQICAgIfAhkiAAABOVJREFU\neJztm0toXUUYx3+JCWnF+KrU+kYLYtHahY+gJKWIr9q6EVypFHRRxYAFn3RjXFnBjYKK1EgEURc+\nUNCIQh0fQVxpiwuRgO83ilItautj8c3h3hxnzpk58829t3J+EE4y38x3vu9/58ycOzOBlpaWvjBU\n+vtV4HfgdeChmrb3AocAdzS47wxwOTAB/A0sAPusbRw4GXjJ1vvBlm8DNgCjwCYlnzmI0RDSdCwY\nAq4EJoFzkfzHgOeAB4HVwAc2pkHXr446vXz6z5AvPw39MYE3WwvsB56KDLKbUST55x22s6z/PcBw\nyWYy+NTERNTV0PFUe895pAOM2/Jh4HrgSeBTYDogvkHQr4oQvUyFLUd+avp7DV0MAa8A/wC7IoIs\nc4H1caPHPm/tZ5fKTQafPo4GTgmsW2AC62nouAXYCzyKzAYuHrf3OCMgPm39oJmGLkL1MhU27fyS\n9G8ygm0BXgN+BVY1aF+w3l7f8NjXAH8Bn/fR54XA1RH3jyFVxylgFvngtyJ5uZgHvgI+CvCZ4zPR\n0lCj32nmp66/qbEfhQQ+AiwCPwUE6eNl4GuP7SpktLjPYTMZfPrYDNwWUR/CZr5UHY8EPkNyXV5T\n9xzgicD4tPWDZhqWidHLVNi08suiv9dgeQS4yP6+gAQ7VtPGxTDwM/B0qfxQ4CZru5P/LghVxZji\n00euhy9Vx522zXRdReAkZPapiy+HfqDz8MXoZTzlmvmp6D8S0LjgPGQEKt63v7PXVcgoEMM64Ahk\nBNlhy5YBlyArVZcB7w2Azxxo6LgZ+a6xM6DuF/anjkHVT6vfaeaXQ//KUeNNZDm24GHk6Z8IcVzi\nFtv2dIftBuBPZKUoJsYUnz60Zz4NHVfb+u9GxlVgPOU59IO0ma+JXsZTrpWfmv6hCy5bkT2K7i+i\n3SNQLOuB74GPHbZZ4BtE5HGHvZc+tdHQseh0HwbUHWNpx61iEPXT7Hda+anpH/LauRLYjgQ92VV+\nor02Xal7q8K+Fwn6NGB3D3xeB9zqaHM4IuC1DtszdF5fQtDSsXjV8i0cdHMzsukcQupnoq2hdr/T\n6nO59HdO2XPARkf5JmT6vTvUuWWNbbfNYz/O2j8hfMEl1acPzdfOOXR0HAV+Q05jVHEYcL+j3DjK\ncukHzV8752iml3GUaeanpn/da+cksus/77B9aa+uEej4Cp/FXsvbHvuMvT6GCBJCDp+aaOq4H5kx\nppCVNBcrkGNNDwTGN2j6NdXLR9P8eqU/sHTUWAt8CxzrqXuCDfSFUvk65GzbrKfds8hGaflEwEok\n4APAXYExavn0oTHz5dBxBOkAi8ixqILlwKXI0vyKwPggn34Qr2FTvQqMo6xJftn1d33nOwZZ1j2T\nzmrTxXRGHOg8+QBXICPKDmQT80fkLNv5yBRejCQvIoJOIKcBFpAlXpApepkt2wC84wm8TA6fWuTS\nEaSzXIOszm1HVvAWgV+QfKfxn7joZpD0S9XLRUp+vdB/CSa2QQX3KPrqxmTy6yLXJnsM2joaZX91\naGyyx2CU/WXTP+fp9H6dfNdkH/K60k8Odh0HQcMUsukfc8Ilho3A+5l895JdpP3nRir/Bx37rWEK\nWfUvP9UHkH0J35JsqM8p3P8zlcLtSGx/KPvVRkND0NfxYNEvlVb/lpaWlpaWlpaWlg7/Ap2JCsCY\nEBHmAAAAAElFTkSuQmCC\n", - "text": "[A,B]\u22c5B + [A,C]\u22c5B + A\u22c5[B,C]" + "prompt_number": 30, + "text": [ + "[A,B]\u22c5B + [A,C]\u22c5B + A\u22c5[B,C]" + ] } ], - "collapsed": false, - "prompt_number": 30, - "input": "comm.expand(commutator=True)" + "prompt_number": 30 }, { - "source": "Carry out and expand the commutators", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Carry out and expand the commutators" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "_.doit().expand()" + ], "language": "python", "outputs": [ { + "latex": [ + "$$A B C + A \\left(B\\right)^{2} - B A B - C A B$$" + ], "output_type": "pyout", - "latex": "$$A B C + A \\left(B\\right)^{2} - B A B - C A B$$", - "prompt_number": 31, "png": "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\n", - "text": "2 \nA\u22c5B\u22c5C + A\u22c5B - B\u22c5A\u22c5B - C\u22c5A\u22c5B" + "prompt_number": 31, + "text": [ + "2 ", + "A\u22c5B\u22c5C + A\u22c5B - B\u22c5A\u22c5B - C\u22c5A\u22c5B" + ] } ], - "collapsed": false, - "prompt_number": 31, - "input": "_.doit().expand()\n" + "prompt_number": 31 }, { - "source": "Take the dagger", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Take the dagger" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "Dagger(_)" + ], "language": "python", "outputs": [ { + "latex": [ + "$$- B^{\\dagger} A^{\\dagger} B^{\\dagger} - B^{\\dagger} A^{\\dagger} C^{\\dagger} + \\left(B^{\\dagger}\\right)^{2} A^{\\dagger} + C^{\\dagger} B^{\\dagger} A^{\\dagger}$$" + ], "output_type": "pyout", - "latex": "$$- B^{\\dagger} A^{\\dagger} B^{\\dagger} - B^{\\dagger} A^{\\dagger} C^{\\dagger} + \\left(B^{\\dagger}\\right)^{2} A^{\\dagger} + C^{\\dagger} B^{\\dagger} A^{\\dagger}$$", - "prompt_number": 32, "png": "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\n", - "text": "2 \n \u2020 \u2020 \u2020 \u2020 \u2020 \u2020 \u239b \u2020\u239e \u2020 \u2020 \u2020 \u2020\n- B \u22c5A \u22c5B - B \u22c5A \u22c5C + \u239dB \u23a0 \u22c5A + C \u22c5B \u22c5A" + "prompt_number": 32, + "text": [ + "2 ", + " \u2020 \u2020 \u2020 \u2020 \u2020 \u2020 \u239b \u2020\u239e \u2020 \u2020 \u2020 \u2020", + "- B \u22c5A \u22c5B - B \u22c5A \u22c5C + \u239dB \u23a0 \u22c5A + C \u22c5B \u22c5A" + ] } ], - "collapsed": false, - "prompt_number": 32, - "input": "Dagger(_)" + "prompt_number": 32 } ] } - ], - "metadata": { - "name": "basic_quantum" - }, - "nbformat": 2 + ] } \ No newline at end of file diff --git a/docs/examples/notebooks/clear_output.ipynb b/docs/examples/notebooks/clear_output.ipynb index 3655dc4..276ea3e 100644 --- a/docs/examples/notebooks/clear_output.ipynb +++ b/docs/examples/notebooks/clear_output.ipynb @@ -1,56 +1,90 @@ { + "metadata": { + "name": "clear_output" + }, + "nbformat": 2, "worksheets": [ { "cells": [ { - "source": "A demonstration of the ability to clear the output of a cell during execution.", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "A demonstration of the ability to clear the output of a cell during execution." + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "from IPython.core.display import clear_output, display" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 8, - "input": "from IPython.core.display import clear_output, display" + "prompt_number": 8 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "import time" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 4, - "input": "import time" + "prompt_number": 4 }, { - "source": "First we show how this works with ``display``:", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "First we show how this works with ``display``:" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "for i in range(10):", + " clear_output()", + " print \"Time step: %i\" % i", + " time.sleep(0.5)" + ], "language": "python", "outputs": [ { "output_type": "stream", "stream": "stdout", - "text": "\nTime step: 9" + "text": [ + "", + "Time step: 9" + ] }, { "output_type": "stream", "stream": "stdout", - "text": "\n" + "text": [ + "" + ] } ], - "collapsed": false, - "prompt_number": 20, - "input": "for i in range(10):\n clear_output()\n print \"Time step: %i\" % i\n time.sleep(0.5)\n" + "prompt_number": 20 }, { - "source": "Next, we show that ``clear_output`` can also be used to create a primitive form of animation using\nmatplotlib:", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Next, we show that ``clear_output`` can also be used to create a primitive form of animation using", + "matplotlib:" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "for i in range(10):", + " figure()", + " plot(rand(100))", + " clear_output()", + " show()", + " time.sleep(0.25)" + ], "language": "python", "outputs": [ { @@ -58,52 +92,66 @@ "png": "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\n8P8BdhDzr6dIpNsAAAAASUVORK5CYII=\n" } ], - "collapsed": false, - "prompt_number": 18, - "input": "for i in range(10):\n figure()\n plot(rand(100))\n clear_output()\n show()\n time.sleep(0.25)\n" + "prompt_number": 18 }, { - "source": "And we can even selectively clear only a subset of stdout/stderr/other display such as figures\n(all are cleared by default).", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "And we can even selectively clear only a subset of stdout/stderr/other display such as figures", + "(all are cleared by default)." + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "for i in range(4):", + " print \"Time step: %i\" % i", + " figure()", + " plot(rand(100))", + " # clear plots, but not stdout:", + " clear_output(stdout=False)", + " show()", + " time.sleep(0.25)" + ], "language": "python", "outputs": [ { "output_type": "stream", "stream": "stdout", - "text": "Time step: 0\n" + "text": [ + "Time step: 0" + ] }, { "output_type": "stream", "stream": "stdout", - "text": "Time step: 1\n" + "text": [ + "Time step: 1" + ] }, { "output_type": "stream", "stream": "stdout", - "text": "Time step: 2\n" + "text": [ + "Time step: 2" + ] }, { "output_type": "stream", "stream": "stdout", - "text": "Time step: 3\n" + "text": [ + "Time step: 3" + ] }, { "output_type": "display_data", "png": "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\nZjzrn0OUXq0AAAAASUVORK5CYII=\n" } ], - "collapsed": false, - "prompt_number": 19, - "input": "for i in range(4):\n print \"Time step: %i\" % i\n figure()\n plot(rand(100))\n # clear plots, but not stdout:\n clear_output(stdout=False)\n show()\n time.sleep(0.25)\n" + "prompt_number": 19 } ] } - ], - "metadata": { - "name": "clear_output" - }, - "nbformat": 2 + ] } \ No newline at end of file diff --git a/docs/examples/notebooks/decompose.ipynb b/docs/examples/notebooks/decompose.ipynb index 1c68f34..c04ed8d 100644 --- a/docs/examples/notebooks/decompose.ipynb +++ b/docs/examples/notebooks/decompose.ipynb @@ -1,250 +1,362 @@ { - "nbformat": 2, "metadata": { "name": "decompose" }, + "nbformat": 2, "worksheets": [ { "cells": [ { - "source": "

Gate Decomposition

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

Gate Decomposition

" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "%load_ext sympyprinting" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 1, - "input": "%load_ext sympyprinting" + "prompt_number": 1 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "from sympy import sqrt, symbols, Rational", + "from sympy import expand, Eq, Symbol, simplify, exp, sin", + "from sympy.physics.quantum import *", + "from sympy.physics.quantum.qubit import *", + "from sympy.physics.quantum.gate import *", + "from sympy.physics.quantum.grover import *", + "from sympy.physics.quantum.qft import QFT, IQFT, Fourier", + "from sympy.physics.quantum.circuitplot import circuit_plot" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 2, - "input": "from sympy import sqrt, symbols, Rational\nfrom sympy import expand, Eq, Symbol, simplify, exp, sin\nfrom sympy.physics.quantum import *\nfrom sympy.physics.quantum.qubit import *\nfrom sympy.physics.quantum.gate import *\nfrom sympy.physics.quantum.grover import *\nfrom sympy.physics.quantum.qft import QFT, IQFT, Fourier\nfrom sympy.physics.quantum.circuitplot import circuit_plot" + "prompt_number": 2 }, { - "source": "

Example 1

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

Example 1

" + ] }, { - "source": "Create a symbolic controlled-Y gate", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Create a symbolic controlled-Y gate" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "CY10 = CGate(1, Y(0)); CY10" + ], "language": "python", "outputs": [ { + "latex": [ + "$$C_{1}{\\left(Y_{0}\\right)}$$" + ], "output_type": "pyout", - "latex": "$$C_{1}{\\left(Y_{0}\\right)}$$", - "prompt_number": 3, "png": "iVBORw0KGgoAAAANSUhEUgAAADcAAAAYCAYAAABeIWWlAAAABHNCSVQICAgIfAhkiAAAAxZJREFU\nWIXt2EuoVlUUwPHfvb6KW3aLwgd1UySvNAgfGYJpBQ5CwhCCBmrq4KKENXBQ0WMWESIRohMRH1yp\nIKJEMGgQQoWIID2wBBU1xAi0p2mhlYO1Pzz33PP6PrMG+YfDx9l7PfZjrbX3+fgfMxVr8S4+w0d4\nC5PRhR0Y34Hdtfgaf6fnFNYVyC3BX0nmN2zvwNcwRuAFnMbTuCfTdxf2YhsOt2GzF0/l2naJgS+q\n0PsA6zGqoO9ZdLcxBn3YhxOYViIzMw1qY0ObYzGIW3LtTyQ7O0v0VohdLuMRvNlwDEZiP45jQo3s\n91jc0O42TC9ovwE/4xx6cn3zsaGB7a1iB2t5Tazk0gayn4pQq2M6dlf0b00+l2TapuAdsdh13CbS\n48YqoRn4E4c0i+MnG8jA23ison+BmNye9N6L9zVbuBavYmWVwEvJyUAbRusYiTMi58roFoXrIiaK\nxZjSpp+lIp1K+VBMblabhquYiy8ayL2RfB8SudYu9+OSijD+QYRlZewmpjZ0usyVcKtikZjciw3t\n5rk56U/KNmZz6yR+woUaQ3eoie8M45PNOmam3yYLUcSv+A53Zxuzk9srKk9fjaE1hp8tfaK65Rmt\nWcWbLxbhy4K+CXgOq5PfiSU2zuGmMgdz8Lu4mZSxKj0tevCyOISPFsgPqM+5UTiv/LjYhYczYywq\nHKNFQZpd5ejR5OgZQ3OvH69jYYneAsWTW5jsdVX4nCfy5fmCvn5RC0ak9y5xebgvJ3dvsnFnhR/E\n7NfjE3FR3iF2Z3KFTtnkbhVVbFJB3zKxC2fTwE7iY0Pz5nF8k9P7HMtzbYtxLO+gKB8OpOef4Ecx\ngX5xV80ymJ4qbhc7n+WC4XfUaeIoG0JbN+oO2SwuyJ1wXOxqlh4Rqi26xVGyJa/8b0xuUFwMHupA\n96A4erKMw7eZ9zU4IsL1mlCWcy1miVAf04Htw658T84Qx0VrU/rwlfLj4aroEh+z74nceEX59elB\nxRWxjtli91dgEx7I9G1SUeiqSnRT8n8znMcvJbJj8EeHfop0r8beda7zX3AZgzubCkf7gz4AAAAA\nSUVORK5CYII=\n", - "text": "C \u239bY \u239e\n 1\u239d 0\u23a0" + "prompt_number": 3, + "text": [ + "C \u239bY \u239e", + " 1\u239d 0\u23a0" + ] } ], - "collapsed": false, - "prompt_number": 3, - "input": "CY10 = CGate(1, Y(0)); CY10\n" + "prompt_number": 3 }, { - "source": "Decompose it into elementary gates and plot it", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Decompose it into elementary gates and plot it" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "CY10.decompose()" + ], "language": "python", "outputs": [ { + "latex": [ + "$$S_{0} CNOT_{1,0} S_{0} Z_{0}$$" + ], "output_type": "pyout", - "latex": "$$S_{0} CNOT_{1,0} S_{0} Z_{0}$$", - "prompt_number": 4, "png": "iVBORw0KGgoAAAANSUhEUgAAAIgAAAAcCAYAAAC6TfcHAAAABHNCSVQICAgIfAhkiAAABglJREFU\naIHtmn+slmMYxz9v5zjntJLTcaIiTURpxPphNVFMdljlN/1hTNootBSlmjIRE6ZVSGTTVKsIbf04\n8zNkRs2vP9CEqCX9GFEn6fjjez/e+zzv/fx4n/d5S/V+t7Oz576u+7qv+3vfz31f1/W8UEIJCVEO\n3A3MBxYCy4BhQAtgeQJ7/YApwErgXeA94FGgJdAaWGTpDgbWAL8CjUbPjxHAFiPfB3wGVPt0WgJj\nje9zgaVm/GEOvT+MrR+AVca/v03bx6bfGmCHaesbc975Ig3eK8j6+Q+wEXgLzWEl8IuRjUrqZHPj\nzCSgmdV+P/CNcTwuWqPJrgduBNpYsv7ACuBD4FlH34VowX4DKh3yY4FNQEeHbLCRDafpHNoA3wKv\nW+1DgU+BdpZeJbDXtNuoQeR3cIxZKNLi/VK0MaaSy1tfYA+wBMgkdXQx8HyAbDNwW0w7A9BurUeL\n6cI9aDdf62svQ4RMMPKbHH1PBJ50tF8GbAW6BYx5trE5wjwvMLZs9DM60xz9l1MAuSFIi/engdsd\n7Z3Ry7YWqMrbO4Pj0JE9MEC+Cjg1hp1TgJ3AG8AxIXpd0W4/3tfeAxiPFm4f8JGj73XAlb62/sBf\nwPUR/m0BvkMbd55DPhFtkDqHbH6E7SRIi3fQ9ejnvBbNdwNNT/G8cQUiZmSAfFIMG2XA+2jCUZOq\nRPGDH6PJ3vMLjU/dfTozaLqxeqBYYnEMH9cAB9Ap09shXw3sB1o5ZLfEsJ8v0uAdFKvc4GurQi/Y\nduCMRN5ZqEXENADTgQsIPwFcGIUm64or/KgArnK0z7fGvSjA3iu+51VG75IY4242urUOWTnaaK6N\nWyykwbsLGfTC7EXXZiq4FznaaP52A7PIzRKCUG/6dU44fobcgOxrtGheLFMDzLTkXc2YPxIdH1Qb\n3Q0B8t5G7opviolCeXdhOjophxbsnQ9dgAfJXhWNKPKNQhlayN8LGLsbMNnXdidNA8shKCvyMNzI\nF8SwP8jovhwgH2vk/vjmYCAp7y6MNP0npONaMLoBP6G6QFT0e45xam1M26478Q4UbNpohd6oL83z\nE0B7S/6YGfeRGGO+Y3RdVxsosD5AbuB8sJEP734MQleWPyvKAJcndWh8iGwa2tHNI2y0RlnJ0hjj\n1QHXONpfwk3IHLSw/ci9grx0eVzEmD2N3qIAeQbVOb6KsJMm0uDdRg/0Mq1E8ZSNgcBdeXln0NIY\nDMIsVFH00AdNbAyKsO17fz3wfYwxnwloD1q889DiLkebxUYvI1sdMl5z4AOU4gadDt4JODvEjoeL\ngYdi6IVxlSbvoKLhFuBz3LWnZeQWFqNsAnqb9wOnOWQnoMLTAPNcgyp73u6cDtxn6Y9GJPdxDYQy\nl6cC5KcDDwf0A5HVSG6qWYYqpA2IdD/KgTdR2blXiH0v1vGnija6Ag+gzTY3RA+iuUqT92oUzP8M\nnOywNwB3ZTjM5n94HBVSlgBnWe2d0KKMsdomAi9azxeixbExBdiFUk6vbFwOnA88R3CGM4/wbwQ3\nowXs5JB1QKX5GTQtVfcCXkXpXlhGkEEnUCNugv2YSvQGieIqLd4rgLdRgnCuz4c2KIhvQOsS2z/7\nfmqLFq87KtVWo8LKHnS/25XMLmghPGxGC94C+NO0TQG+QJnGNFRy3wmsM5Pe7XN0Mnp7a82YQ8h+\nU7CxyOi5rrBNZoLDgRdQoFlpxp5D8FE+08ypHdlFWm3mVY8C4KSI4iot3sehE2Ib2XpRGdpoNea5\nEXgtT/8SYQX6gOThJDN4e7f6EYs4J0iaXBWD91CbzVw9YmCjMeKhhfm/I6G9IxlpclUM3kNtJt0g\n61AA5aEtOtr2JrR3JCNNrorBe6jNpBvkE7KRNejzelDKerShiqZFvjS5KgbvoTbLEhrdij5P16GU\nry2qYDYktHe4oT1wK0qFz0Q8bkNBeE/0660VqB6RJlfF4D3UZqE/esmgL477CrRzuKGCbGbgYRfZ\no74j+oRQb8nT5KoYvB+ta3lIcDWH/jtOKkgag5QQjCp0umw/1I6U8P9EhuSxXQkllFBCCSWUUEIJ\nwL9xjqSsQYpqzQAAAABJRU5ErkJggg==\n", - "text": "S \u22c5CNOT \u22c5S \u22c5Z \n 0 1,0 0 0" + "prompt_number": 4, + "text": [ + "S \u22c5CNOT \u22c5S \u22c5Z ", + " 0 1,0 0 0" + ] } ], - "collapsed": false, - "prompt_number": 4, - "input": "CY10.decompose()\n" + "prompt_number": 4 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "circuit_plot(CY10.decompose(), nqubits=2)" + ], "language": "python", "outputs": [ { "output_type": "pyout", "prompt_number": 5, - "text": "<sympy.physics.quantum.circuitplot.CircuitPlot object at 0x2c85f10>" + "text": [ + "<sympy.physics.quantum.circuitplot.CircuitPlot object at 0x2c85f10>" + ] }, { "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAQ8AAACOCAYAAAAvtI33AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAACT5JREFUeJzt3EtIVH8YxvH32DCjleCFLhhoGBRBEGFEEFmLSMzSLLu4\nkGhTUFItui2sIIqiFkEUFaUuwqg2brqH1SK6/BehdLEL2t0wKmy6p/b+d5HlqPN69MyM3w/M5pwz\nP57feeNpjoM6qhoUkUQBgDA4qqpehwAQfeK8DgAgOlEeAEwoDwAmlAcAE8oDgAnlAcCE8gBgQnkA\nMKE8AJhQHgBMKA8AJpQHABPKA4AJ5QHAhPIAYEJ5ADChPACYUB4ATCgPACaUBwATygOACeUBwITy\nAGBCeQAwoTwAmFAeAEwoDwAmlAcAE8oDgAnlAcCE8gBgQnkAMKE8AJhQHogqz58/l0ePHomqeh1l\nwKM8EBWamppk8uTJMn78eMnKypLRo0fLnTt3vI41oDlKhSMKZGVlSV1dnbS3t/8+lpycLE1NTRIf\nH+9hsoGLTx6IeE+fPpX6+voOxSEi0t7eLhcvXvQoFUJ+8nAcp7+zAIgivlAneJpBpPj165ekp6fL\n69evOxxPSEiQV69eSUpKikfJBjYeWxDx4uLipLq6WpKSkiQxMVFEROLj46WyspLi8BA/MEXU+Pr1\nq1y4cEEWLlwo7969k9TUVK8jDWiUB6KO4zg8VkcAHlsAmFAeAEwoDwAmlAcAE8oDgAnlAcCE8gBg\nQnkAMKE8AJhQHgBMKA8AJpQHABPKA4AJ5QHAhPIAYEJ5ADChPACYUB4ATCgPACaUBwATygOACeUB\nwITyAGBCeQAwoTwAmFAeAEwoDwAmlAcAE8oDgAnlAcCE8gBgQnkAMKE8AJhQHgBMKA8AJpQHABPK\nA4AJ5QHAhPIAYEJ5ADCJqfJISUkRx3FcfaWkpHi9rQ7c3GOk7S3WxdrsHFVVr0O4xXEccXs7fbFm\nb7iZJ9L21lPkjox7EFOfPBCbXrx4IWVlZTJu3DhJSkoSEZHRo0fLqlWr5O7dux6nG7gGRHm8fftW\n/H6/xMXFid/vl7Fjx8rs2bMlNzdXcnNzJTU1VeLi4qS6utrrqL3S1tYm+/fvl5KSEikuLpbCwkKp\nqKiQL1++yLx587yOF7Y3b97IggULZNKkSfLp0yc5efKkNDY2iojIpUuXZOTIkZKbmyvZ2dlSV1fn\ncdrei7r5aQwJtZ2KigoNBAK6f/9+bWtr63CuurpaBw0apGvXrg1rTa+EyvP161fNy8vTnTt3dji+\na9cuHTt2rBYXF/d4rUjw+PFjzcjI0C1btujnz587nPsz98+fP7W8vFyHDRumNTU1/R0zLF3d73Dn\nFwmz8z6Bi0Ld0IULF+rZs2f/OX7r1i1NSEjQ+fPnh72mV0LlKSoq0hUrVnR6Li0tTcvLy3u8ltea\nm5s1MzNTDx8+3On5znJfvXpVhw0bprW1tX0dz6yr+x3u/CJhdt4ncFFnN/THjx86c+bMf443NDTo\n8OHDdcqUKfrt27ew1vRSZ3laWlrU7/fr5cuXO31PTk6OPnv2rEdrRYLS0lJds2ZNyPOhch89elSz\ns7P7KlavhcptmV8kzC7mf+bR3NwsZWVlHY59+PBB5syZI0OGDJEzZ85IfHy8R+nccf36dWltbZXH\njx93en769OmSkZHRz6lsPn36JFVVVbJhw4aw37ts2TJ58uSJ3Lt3rw+S9Z2onZ/X7eWmnmzn+/fv\nOn36dE1JSdH6+npX1uxPneV59+6d+nw+DQQCun79er1+/bq2traa1vLaoUOHtLCwsMtrusq9detW\nXbVqlduxXBEqt2V+kTA77xO4qLsb+uvXLy0uLtZAIKBXr151Zc3+FirP3r17NRAIqOM46jiODhky\nRFevXq0tLS1hr+WlgoICPXnyZJfXdJX7wYMHmpmZ6XYsV3SVO9z5RcLsvE/gou5u6ObNm9VxHD1+\n/Lhra/a3rvI8fPhQt23bptnZ2er3+9VxHC0qKjKt5ZXs7Oxui72r3O/fv9ekpCSXU7mju/sdzvwi\nYXYhE4hIVL5COXLkiDqOo9u3b+9w/Nu3b3rlypXQNygC9tTTPf7p/v37mp6ern6/X3/8+BE1e4v1\nV091Nz+v9yEiA+OTx/nz59Xn8+ny5cv/OVdeXq7V1dVhr+mVv/Ps3r075LWbN29Wv9+v379/79Fa\nkWDJkiWdfq38p65y//fffzp+/Hi3Y7mis9zW+UXC7GL+25ba2lpZvHixzJw5U44ePfrP+crKSsnJ\nyfEgWe99/vxZrl27FvJ8MBiUrKwsCQQC/ReqlxYtWiSVlZXm91dWVsrixYtdTNR3on5+XreXm/7e\nzsuXLzUtLU0nTJigwWDwn+urqqo0Pz8/rDW99meec+fOqc/n04aGhn+ua25u1hEjRui1a9d6tFak\naG1t1VGjRmldXV3Ia0Ll/vjxoyYnJ+vr16/7Kl6v/J27N/OLhNnF7CePYDAoc+bMEVWVs2fPSmJi\n4u9zTU1Nsnv3bikpKZGCggIPU/bOlStXJDMzUzZt2iT19fW/jzc2NkpBQYFs2rRJZsyY4WHC8Pl8\nPlm5cqWUlZVJe3t7WO/dtWuXzJo1S9LS0voonbuifX4+rwP0lXXr1sn9+/dl1KhRsmTJEhER+fnz\npzQ0NEgwGBQREb/fH5m/cNRDzc3Ncvv2bamtrZW1a9dKS0uLpKamSkJCguzbt0+mTp3qdUSTjRs3\nSk5OjpSWlsqBAwdk0KBB3b7n4MGDcurUKbl582Y/JHRHtM+Pv+fhwZq9EWt/EyKUlpYWKSwslKFD\nh8qOHTtk4sSJv8/9mfv58+eyZ88euXz5spw/f17GjBnjVeRuxdrsYvaxBdEtKSlJLly4IFOnTpW5\nc+fKtGnT5NixY3Lp0iURETlx4oTk5+dLVlaW+P1+uXHjRkQXRyzik4cHa/ZGrP3v1RNtbW1y5swZ\nOX36tLx9+1ZqampkwYIFkpeXJ0uXLpXBgwd7HbFHYm12lIcHa/ZGrP0DHEhibXY8tgAwiblvWxzH\ncXW95ORkV9dzg1t7jMS9xbpYml1MPbYA6D88tgAwoTwAmFAeAEwoDwAmlAcAE8oDgAnlAcCE8gBg\nQnkAMKE8AJhQHgBMKA8AJpQHABPKA4AJ5QHAhPIAYEJ5ADChPACYUB4ATCgPACaUBwATygOACeUB\nwITyAGBCeQAwoTwAmFAeAEwoDwAmlAcAE8oDgAnlAcCE8gBgQnkAMKE8AJj8DwAon3puf4mgAAAA\nAElFTkSuQmCC\n" } ], - "collapsed": false, - "prompt_number": 5, - "input": "circuit_plot(CY10.decompose(), nqubits=2)" + "prompt_number": 5 }, { - "source": "

Example 2

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

Example 2

" + ] }, { - "source": "Create a controlled-Z gate", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Create a controlled-Z gate" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "CZ01 = CGate(0, Z(1)); CZ01" + ], "language": "python", "outputs": [ { + "latex": [ + "$$C_{0}{\\left(Z_{1}\\right)}$$" + ], "output_type": "pyout", - "latex": "$$C_{0}{\\left(Z_{1}\\right)}$$", - "prompt_number": 6, "png": "iVBORw0KGgoAAAANSUhEUgAAADkAAAAYCAYAAABA6FUWAAAABHNCSVQICAgIfAhkiAAAA1JJREFU\nWIXt2FuIVWUUwPHfNOMMXZjR0pp5qLBoxqgH04rIQEnoMkQQXYToYsJkRBFEpBURBYm9GdRDPiQy\nUEQvRZQihD50E8EuUEZBWg9O9wtZmWT1sPbOc/bsvc93zpyHHuYP+2F/a5219trfWutb+zCLUdyP\nl/E2duAFLEQPtmK4C34m8E92/Yr3sT273szWf8ZgF3z9Ry/W4yDuxjkNstOxC1vwaRs25+K2Ctnr\n+AKXlsi24ghW1ti+r43nAGfgXRzAogqdJeLtPpNocxCTGCqRnYD9FbLHMz+rW9i/Bk8mPos+7M6c\njrTQ/QbXJdrdgsUVsmvxUMn6ahHgE4k+XsKaFMUNmeFbEnTfEinYisV4rUZ+vem7uFKk6GSC/Zxh\nfII5dUoX4Cg+xnEJRlclOn9RpFMq54smsxP9bfwONuHGOoVHxC5OtGm4jj58L70rjuAr7MO8Dvzd\nJbpxJdtEkEs7MF7FMnyYqHsS9opaX9ihvxU4VKfwo0jX4xOMjSY6vRVvJOj1Znq/4aKC7EKcluhv\nRGzU/MbFxtr7UtTCHy0MLcAdiU6HM5uteBZX4mbsKcjW4ZdEf1NimDizcbExyF04WZyTddwjCjxn\nmRgcHsDDBd1+UZd1rMNaMVm9WpCdLSarw9n9HDyPs2rsHRKpX8olmbH1NQbWZlfOAjH19Gb3m7KH\nzZlQX5Or8DeeLpH1ibPv9ux+jTgz/1I9pAyKdD23xqer8Dvu1VybY9iI8YL+Y9jccH+5OKtyxjN7\nPSW+LhMv9RXNGdWXBbFNBHRK4XeHVQd5sQiy6fwuptJ2LBdveIeozyl8jufEJNTIIs3z60HxFgfw\npxgP+0WNHGjQ68+CGxCd9J1sfUikaH6g78QPFQGVMYaPFPpAWb3sMb34q5gvdionb1pD+BY/iTFx\nTHOQRxQ6YJfIM6CJlMmmjv0iPXJOdOyzKGczbpihnxT6cLVoTE3MNMi9OLXhfhhfi53KmRQDxvIZ\n+mrFg3gPn3Xb8BLNqf0UHi3RW5rpDXTBZ1njGcUHKkqgt2yxDaYyw1fgPLGrGzTvZK63DzeJfxg6\nYVx8fq0Q5+Bcx46njbhTjITTKGvtndAjOmIxuCJ51+2EeZoz4Si+64LdWWb5P/EvN2Kn7DFqDnoA\nAAAASUVORK5CYII=\n", - "text": "C \u239bZ \u239e\n 0\u239d 1\u23a0" + "prompt_number": 6, + "text": [ + "C \u239bZ \u239e", + " 0\u239d 1\u23a0" + ] } ], - "collapsed": false, - "prompt_number": 6, - "input": "CZ01 = CGate(0, Z(1)); CZ01\n" + "prompt_number": 6 }, { - "source": "Decompose and plot it", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Decompose and plot it" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "CZ01.decompose()" + ], "language": "python", "outputs": [ { + "latex": [ + "$$H_{1} CNOT_{0,1} H_{1}$$" + ], "output_type": "pyout", - "latex": "$$H_{1} CNOT_{0,1} H_{1}$$", - "prompt_number": 7, "png": "iVBORw0KGgoAAAANSUhEUgAAAHwAAAAcCAYAAACj6tvkAAAABHNCSVQICAgIfAhkiAAABWZJREFU\naIHtmmtsFUUUx39FoAg+QKiSqtxGULCAqEAk1mINPj6IGJGEDxBBER/1kWAkBmPUqISYGKL4qApG\nHsHY+Pogii2oBVFRa1KxKPVF1EggJGAVCeDzw3/W7t07s7u3dy80dH9f5t45s2dm58ycOWfuhZQU\n4A1gG/Av8CfQAiw1sgzwPvCLkf8GfAbclof+Y4GZwNPARqABaAKmGfllwHxf+yeBzcBfwN/AORad\na4H9Zkx7gcWWNiOA54BXgGXA20A9MNoxzllG30GgGXgH+NrU/QqsN2P/HPgH+CbknTtLsW3xPxOM\nkicc8gVGPr0TetvQoGuA3qa+D/AY8DiwD7go8Nwg4AvT57MO3bPRBJUE6nsAdeb54GKZghbKdRZ9\nDcD9vjFCxyK43dL3u45xFUqxbJHFfKPkCoe8Ae22AXnoXAgcAu50yI9BK/R3oFdAdg0wA9hq5Mdb\nnr8LGBuoK0GLay1aVDYeRbuj3Fc3EHmCIC+geRkeqB+CFlUxKIYtcliDjNPPIuuFdmFLHvpq0aBn\nRrRbCLxlqV8MnAbcYfTUWtqsRIvGzxLk8gaF9DnJ6HzAVzcX+wR/C+y01I8F5oX0UQhJ2yKHHugc\n/NAhvxBN0JKY+kYit9kUo+0c7BPn7bYTgT+ALwPyEmBVoO5hM86rI/rMmHav+epmoXnwU27a2Xb+\nSGB8RD+dIVFbBF/IYwzQH7eBLjHlhjidAMtRoHZfjLat6Bz2cwLQbj63Ay8Bo8g+50cjd+9RDtyD\ndveaiD6HmrKvr24FCsT8TDTlRouOreg4SppEbdHTUe+92OXknokA40xpe/Egp5j2nwKbYrT/xFJX\nRfYKrwNuBG716bw4MJ5a5O5WofMtjMqQvv148xJ3oSdBkrZw8jpKgY6zyHoil/pVTF3XIpdTSECz\niI5d6LEZpUtl5vsKsgO9DabfK2Poryc8KPJoBfaQmwUUkyRtYXXpJUA1SmH2WeTnI9cXd0VdYMrW\nGG3LsEeaZwDfB+rqULo0x3zvjfJUj2Gm3B7RZwaYCuwCPgppNxB5gk1ocRwOkraF1eCVKKL9wPGM\nd27GdWs/mnJHjLb3km000Nm/39K2Hu22m9GY2wLyXaZsJ5x5aKfMRemei2pkgIJcZ54kbQurwb0z\nw3XeVpnS9uLTUC7sp8mU50WMpRLtxuBKnoD9bD2AgsEK5PKD4/EmaVJIn+OQoV8E3owYX1jAVgbc\nDdyCLo4qInR52ObL1mdStrDyMnJZgx3yncB3gbrx6EaqBXgkICtB0esWsqNgP8OR8UotsgeBsx3P\nnYki6UPIE/iZiM6+esezI4DdwKvYz8cgzcgD2ALd1cBk83kUShldGRCEz5efpG2RQ6lREjwvPcaY\nASx3yJc5OhmAjP4ecKqvvj+6PVtE9vWlx8nAz3QEZjbW4T57ZyAj+Xd5XxRItqEoPw4ZtHjWW2Sn\nI6/kX6w/oPw4Ctd8QZFs4a3CDHIL21AaNQSlQd5t1lXAx3S88BR0blQRj73ApejHimdQirYSeMjI\nFqBd6lFq+vsJ3a61oJzaxlNoIdlYjYw7FbntpcDzyOVOJjxzqKDjR51mdINXjdxrIwqYAM4y73DQ\n9+wOoo8wF8W2RaKErdijlenkBozrUAAaRTHnK3SHp3Se7eSmaf1QBtHlSA1eOFuAkwJ1g9Fx1OVI\nDV44B1Bgea757mUOjeb7MHJvCY8Yrrv0fBmKgocadNW3G/2iFOey5WhgNgo8G1Fufz2K6kG//deQ\n/ceLYs5XqO6k7oT7oBTLzx6yI+/uQCnZ0Tpojm9Af5zwKOZ8pbboAtx0pAeQcvioRpckKd2EpOKk\nlJSUlJSUlG7Mf20dXidP7IWnAAAAAElFTkSuQmCC\n", - "text": "H \u22c5CNOT \u22c5H \n 1 0,1 1" + "prompt_number": 7, + "text": [ + "H \u22c5CNOT \u22c5H ", + " 1 0,1 1" + ] } ], - "collapsed": false, - "prompt_number": 7, - "input": "CZ01.decompose()\n" + "prompt_number": 7 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "circuit_plot(CZ01.decompose(), nqubits=2)" + ], "language": "python", "outputs": [ { "output_type": "pyout", "prompt_number": 8, - "text": "<sympy.physics.quantum.circuitplot.CircuitPlot object at 0x472d550>" + "text": [ + "<sympy.physics.quantum.circuitplot.CircuitPlot object at 0x472d550>" + ] }, { "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAANcAAACOCAYAAACi/J2KAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAB1NJREFUeJzt3U1IVG0bwPHrTI9Zk2VZk5CLKKiRXGiUC5nyYxOVVAiR\nUqsKDMYWtYn2LSJpq7XKoXbZIoJSNDQsozADN9GmNFtUQwb2oVbOXM/qid7XGdPJyzNz5v8DN97N\n6Tre/p07ncpR1c8islIALChHVdXtIQAv8rk9AOBVxAUYIS7ACHEBRogLMEJcgBHiAowQF2CEuAAj\nxAUYIS7ACHEBRogLMEJcgBHiAowQF2CEuAAjxAUYIS7ACHEBRogLMEJcgBHiAowQF2CEuAAjxAUY\n8URcBQUF4jiO2VtBQYHbt+hpXt0/T/xb8Y7jiOVtWF8/23l1//5Z9N8RC05V5fHjxxKJRGR0dFSm\npqYkPz9fKioq5OTJk7J+/Xq3R8xKnjgWZitVlUgkImVlZXLixAkpLi6Ws2fPSl9fnxw/flxevXol\nwWBQjh07Ji9fvnR73OyjHjDbbdTV1WlxcbE6jqM5OTlaVlamjY2Nqqo6MjKiNTU1WlRUpI7j6KpV\nq7S8vFxbWlrmfH23TE9Pa2Njo5aWlur9+/c1Ho//Wvt93k+fPumlS5c0EAhoT0+PG6P+kVf3L/0+\na1Lwpw/ekydP1HEcPXPmTML1ixcvquM4evPmzZSuv9ji8bg2NTVpdXW1fv78ecZ6onl7enp03bp1\nOjAwsBgjzotX9y8rjoV9fX0iIrJ///6E6729vbJkyRLZs2fPYo6Vss7OTunu7pbbt2/LypVz+09B\na2pq5OrVq9LQ0CDxeNx4woWVsfvnStIL7E+3UVtbq7m5uToxMTFj7cePH7pixQrdvn17ytdfbLW1\ntdrW1pZ0Pdm88Xhcd+zYoR0dHUaTpcar++f5Z654PC79/f1SXl4uy5cvn7E+MDAgExMTUllZ6cJ0\n8zc8PCxPnz6V+vr6eT/WcRwJh8PS0tJiMJmNTN4/z8c1NDQk4+PjUl1dnXC9t7dXRESqqqoWcarU\n3bp1S44cOZLwE20uGhoapKenR75+/brAk9nI5P3z/M+5/juvd3V1ybNnz2asDwwMiOM4afmVL5Fo\nNCobN25M+fF+v1/Wrl0rY2NjkpeXt4CT2cjo/Ut2XhSRjHpLpq6uTnNycvTbt28z1qanp9Xv92tJ\nScmsZ2e37y0b3ry4f0mfuTSDXu7jOE7C96uqPHz4UEpLS8Xv989YHxwclMnJyTl91UuXj8eFCxfk\ny5cv0tzcnPTXzPZyn1gsJqtXr5bR0VFZs2aN1Zjz4tX98/SfuV68eCFjY2Oye/fuhOuPHj0SkfQ8\nryezb98+aW9vl1gsltLj7927JyUlJWkT1mwyff88Hdd/5/Vdu3YlXO/v7xcRSc/zehI7d+6UQCAg\nnZ2dKT2+tbVVwuHwAk9lI+P3b9bDaoZIdhv19fXq8/n0w4cPCdcLCwt1y5YtKV/fLZFIRCsrK/Xn\nz58J15PNOzg4qIFAQCcnJy3Hmzev7p9nn7m+f/8uDx48kM2bNyd8VfjQ0JBEo1EJhUIuTPd3jh49\nKrm5uXL69Ok5v9pieHhYDh06JC0tLbJs2TLjCf+eJ/bPlaQX2O+38ebNG62srNRNmzapz+fTpUuX\naigU0itXrqiq6p07d7SiokIDgYD6fD4tKCjQqqoq7e/vn9P108X4+LiGQiGtr6/X9+/f/8/a7/PG\n43Ht7u7WDRs2aGtr62KPOSde3T/+smQaXD9VU1NTcu7cOblx44bs3btXTp06Jdu2bZPCwkIZGRmR\nu3fvSmtrq8RiMWlubpYDBw64PXJCXt0/4kqD6/+t8fFxuX79urS1tcnbt2/l48ePUlRUJBUVFRIO\nh6W6ujrpt7vTgVf3j7jS4PoLjXkX9/rJePYbGoDbPPPaQstjTyb8wDXTeXH/PBFXJh2BMJNX949j\nIWCEuAAjxAUYIS7ACHEBRogLMEJcgBHiAowQF2CEuAAjxAUYIS7ACHEBRogLMEJcgBHiAowQF2CE\nuAAjxAUYIS7ACHEBRogLMEJcgBHiAowQF2CEuAAjxAUYIS7ACHEBRogLMEJcgBHiAowQF2CEuAAj\nxAUYIS7ACHEBRogLMEJcgBHi8pBYLCZdXV0iIvL69WuXpwFxecS7d+9k69atcvjwYRERKSkpkfPn\nz7s8VXZzVFXdHgJ/7+DBg9LR0SHT09O/3uf3+6Wrq0tCoZCLk2Uvnrk84v/DEhGZnJyU9vZ2lyZC\n0mcux3EWexbAU/5JtsBpMbM0NTXJtWvXZGpq6tf7/H6/PH/+XILBoIuTZS+OhR5x+fJlqa2tldzc\nXMnLy5P8/HyJRCKE5SK+oeEx0WhUotGoBINBycnJcXucrEZcgBGOhYAR4gKMEBdghLgAI8QFGCEu\nwAhxAUaICzBCXIAR4gKMEBdghLgAI8QFGCEuwAhxAUaICzBCXIAR4gKMEBdghLgAI8QFGCEuwAhx\nAUaICzBCXIAR4gKMEBdghLgAI8QFGCEuwAhxAUaICzBCXIAR4gKMEBdghLgAI8QFGCEuwAhxAUaI\nCzBCXIAR4gKM/Avn+MC2/OP35gAAAABJRU5ErkJggg==\n" } ], - "collapsed": false, - "prompt_number": 8, - "input": "circuit_plot(CZ01.decompose(), nqubits=2)" + "prompt_number": 8 }, { - "source": "

Example 3

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

Example 3

" + ] }, { - "source": "Create a SWAP gate", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Create a SWAP gate" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "SWAP10 = SWAP(1, 0); SWAP10" + ], "language": "python", "outputs": [ { + "latex": [ + "$$SWAP_{1,0}$$" + ], "output_type": "pyout", - "latex": "$$SWAP_{1,0}$$", - "prompt_number": 9, "png": "iVBORw0KGgoAAAANSUhEUgAAAE8AAAAcCAYAAAAgLuLfAAAABHNCSVQICAgIfAhkiAAABDdJREFU\naIHt2HuIV1UQB/CP7ur63DRre/0RuET2QHpQ0sO0skhJwhJKoiiVIAiDpDAqwYwsih5Y9KSo7EVG\nUVErbiXawyikCI0okvKPyNI0rVxbsz/m/Ni71/v7/W4+SnS/cDnnzJwzM2fuuTNzLj3YI2jEDCzA\nS3gd0zAQ76AdHdiOTizH4LR2Fr5PvO34HFdmZF+FtYm3GXeWsOc1TK3B74NF+DbJ3YDFaMMyfIe3\ncGIJXbuE/knRreidod+Mr4Uz4e5k6JMFMloT79UqOk7FxxhUwp6Lk6zZJeZemOZen6P3wePYgnNK\nyKmL3lXoz+JH3IG/M/R54nS1p/Ha1G4pkNGU2r5VdFyUns11bByI21P/0DpzYXRq23P0vzA32TW9\nhJy6KHLeAWJTr1RZ8yXeTf11NWTPSO2wAt7x+EmX82vhNjyQ+mWcNwbrsaqANyC1h5WQUxdFzjtT\nHPGjqqxZhtWpv77KnHH4BpsUO+9aPFLCvmPE5/+M+BTrOW8gTsaHaX4eo1K7oITuncJBIgF04F5d\nzizCGcLIhzK0JhEv+won/5xbMwkTStryNoan/joR9GvhvGTPTQW8BnyVbBpcwN9tuFFXJq1kxIcx\nJDdvhB2dNxsTU/8z8SJ6pXET5pe04XIRoypYhT/qrJmb7Dk9Rz9CVAsLRVja4xiBOViKrcmohbk5\nLbo7rxVvZPiLEn9oGs/E0SV0N+MTXTEK3kuyam1+KbaJ7P9oep5O+xhXQu8ewXH4QWSsfhl6o+7O\nezPNreCFxG8VQXpOSX0PYnKO9mKSVc35/UTW/7Skjl1GPmHMqjJvJZ4XxvfK0DuxMfUni8J4ZYb/\nS2qH4QbcV8KmEzBFlBNtmee0xK+WNEaJsLCkhI7dgsZMfxDG4q4qc5uxAn/m6OtEAJ6Nswt4MF4U\n1xvVRi/h4DEiuGcxUySwas47K7VL6ujog8dEDVsvARHha5KoHI4U+8z7wHhxkloLBLSIuizvHOIz\n6dBV12VxnTity1UvyLOYJpJVES5VfHOooF3Y31xD/lRRcHcKp9RDg0hUh6TxdDxVNPEeUZstxLEZ\n+nCx+ZlVFLQlBY0FvCliw6MLeHlcIOJqQxX+uUnWvAJeM34X2b0MtijnvEvwUWbcIk7dgPzE53Cg\nOF2LxYlqExfyfOrP4gmcX4U3JsmthZPES6uURct1fxH98b4IAdvxWxqPTM8yrEm8TfhAlDm1UNZ5\nt9jxptUpCvH9FmWdd7+43WSxSfqxUCYO7c9Ybcdr3gDpWtrjvNpYIeJcBS2iIljz/5izd6Dosx2J\nw3O0QeLXXCVBXIGXK8xqmW1fxQTxF3uscMwQfJF483GZ7gluqzhl14gb0inilrThP7F2L8NQUWRX\nnoMzvAZcXWNtU55QVJvty/i1Bm+b2v7o2M227FOYKK5fPdgJ7G9fYQ960IMe/Cv8A97G6Y4Q7MLo\nAAAAAElFTkSuQmCC\n", - "text": "SWAP \n 1,0" + "prompt_number": 9, + "text": [ + "SWAP ", + " 1,0" + ] } ], - "collapsed": false, - "prompt_number": 9, - "input": "SWAP10 = SWAP(1, 0); SWAP10\n" + "prompt_number": 9 }, { - "source": "Decompose and plot it", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Decompose and plot it" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "SWAP10.decompose()" + ], "language": "python", "outputs": [ { + "latex": [ + "$$CNOT_{1,0} CNOT_{0,1} CNOT_{1,0}$$" + ], "output_type": "pyout", - "latex": "$$CNOT_{1,0} CNOT_{0,1} CNOT_{1,0}$$", - "prompt_number": 10, "png": "iVBORw0KGgoAAAANSUhEUgAAAOQAAAAcCAYAAABxlhP5AAAABHNCSVQICAgIfAhkiAAABThJREFU\neJztm3uIVUUcxz93t01ta0PD2h7uZqQGWWRgSvZ+K0QEYUQPemCREj0kkLTAiEoIAwuWipDNsqRa\ngghCxY0sLXAVCrPWjc2gMrQnvShs++P3u7tzZ+ecM/ees+nemQ9czj3z+83re+bM/c3ccyASiYwa\npgIPAK8DHwLrgbXAZKAEdAKt6nsS0A3sBgaAbY7yZgKfq30A6AMutnwagOuALmCNftYDjwNHWL7d\nWs5+YJP6/aRpvcC7mr5H0x6qqvfVEbXypxqtIOpFI7AE+BZYCEwxbJOA94DViAA2i4FPtJGzE8rv\nBq51pJ8C7AQ6gGYjvQm5YL1aP8AJwD5glqPsf4DxRtphwEbg5oT25CFq5U8erSA8vQBoA7YCXwGn\nJficjYjyrMO2Fpij9s6E/K840iYB/cCtCXnGaZu69Pxe4BrL53DgD6T9No8wXOC8RK38yasVhKUX\nIHf7x0jjj8/w/Z7hM1EJWKffe4A/gQmWzwRglZXWisxQz2XUuQa5GO1aT6NlL1+sFY68z1A5s+Ul\nauVPXq0gEL0arPNHgXOAh4HvMvLuRn7CTaYjYQFIaDAWuM3yOR/4wDhvQX7yjwTuy6izT49nAe8A\nByz7hXp835G3B1kDFEXUyp+8WkFYegEwQxuxk+E3qovrHWmLGGp4M/AzInDJ8FlJ5YL9QWTmecKj\nzpfU11U3yEL7AHC0R1l5iFr5U4RWEI5egyzVBi3IUUYnMnOVWaVlXm6kvWp8bwC+Vp9pHuVvU9+T\nHbZG4Fdgu39zayZq5U8RWkEgepkz1nl6zFPpWOAv47xDj3frsQX4xbC3Iwvu/cAXGWWPB04H9iIL\ncJsZwFG4Q4qiiVr5U4RWEIhe5g05C/gX+Mwj31RH2hQkhDDZhWxlXw2ciFycLYb9VD32e9S5ELko\nXQn2C/T4fwyyqJU/ebWCsPQaZAfwg4ffRNwx+R3AFY70+UgosBx4ksqQ4Ey1bciocwwye/UjM5WL\nt7SsiRllFUHUyp+8WkFYeg3ytFbaluG3HDjOkf4isptl04R0+BvgTcvWgOxO/U7l+sBmBTLLXpRg\nLyGhic8s3Aa85uE3F9kUWMpQWFQmBK3S+u8iSde8WsHo0AuKGVuDzEZi9CUpBd2lHxfrEtIBHkMu\nyssO2/Nqm5uQdzHyh+ztKeVP1zI6UnyagWXahr4UP5A/rj9iaAfvDWQ2LlPvWmX13yRL17xawaGv\nV5Fjq4KrtIH3IE8vlJmGhATzEvLdCLyd0og2ZMv4ToetSfNuofKP3nZk1vwUWXCnsQwR7aYMP4DL\nyBbtBeTpizK3IM8ymtSzVj79t0nTtVatYHToVaaosVXBTOApYLM6dmqjJjt85wFfMvRA7w4kdnfR\nRfKifQxwPxKarNZPB/J84LiEPAuQ9cFWJOQYQEKXTcgjVkn4iLYZWbeYefY5/OpVK9/+Y/mk6VqN\nVjC69CpT5NgKBh/RdgE3GOdzgL9HrEWHHrX030fXeif32PJ5ciJE+pFZsUwz8ONBasvBIPT+jySp\n2sYb0s124FjjvBV56iMUQu//SJKqbbwhh7gU2QQAeTPhEsN2Jem7bPVGVv9NrSLZeI8t+xWTeqaE\nPJExH3nvrjwZ7UHE6gF+QwTrRd5OOAM4F9nFW0llqFHPpPXf1ipN11CIY6tGWq1Pi2FrQragTRqR\nd/lCJan/tlZpuoZCIWMrtMG2N8V2DMPfabPfiQuNpP7bWqXpGgpxbBXMIuKa2peoVXVEvWogtGgh\nD1Gr6oh6RSKRSCQSiUQikUikcP4DcImNVwb6bzMAAAAASUVORK5CYII=\n", - "text": "CNOT \u22c5CNOT \u22c5CNOT \n 1,0 0,1 1,0" + "prompt_number": 10, + "text": [ + "CNOT \u22c5CNOT \u22c5CNOT ", + " 1,0 0,1 1,0" + ] } ], - "collapsed": false, - "prompt_number": 10, - "input": "SWAP10.decompose()" + "prompt_number": 10 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "circuit_plot(SWAP10.decompose(), nqubits=2)" + ], "language": "python", "outputs": [ { "output_type": "pyout", "prompt_number": 11, - "text": "<sympy.physics.quantum.circuitplot.CircuitPlot object at 0x7f082c973650>" + "text": [ + "<sympy.physics.quantum.circuitplot.CircuitPlot object at 0x7f082c973650>" + ] }, { "output_type": "display_data", "png": "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\n" } ], - "collapsed": false, - "prompt_number": 11, - "input": "circuit_plot(SWAP10.decompose(), nqubits=2)" + "prompt_number": 11 }, { - "source": "

All together now

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

All together now

" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "gates = [CGate(1,Y(0)), CGate(0,Z(1)), SWAP(1, 0)]" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 12, - "input": "gates = [CGate(1,Y(0)), CGate(0,Z(1)), SWAP(1, 0)]" + "prompt_number": 12 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "for g in gates:", + " dg = g.decompose()", + " display(Eq(g, dg))", + " circuit_plot(g, nqubits=2)", + " circuit_plot(dg, nqubits=2) " + ], "language": "python", "outputs": [ { + "latex": [ + "$$C_{1}{\\left(Y_{0}\\right)} = S_{0} CNOT_{1,0} S_{0} Z_{0}$$" + ], "output_type": "display_data", - "latex": "$$C_{1}{\\left(Y_{0}\\right)} = S_{0} CNOT_{1,0} S_{0} Z_{0}$$", "png": "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\nYII=\n", - "text": "C \u239bY \u239e = S \u22c5CNOT \u22c5S \u22c5Z \n 1\u239d 0\u23a0 0 1,0 0 0" + "text": [ + "C \u239bY \u239e = S \u22c5CNOT \u22c5S \u22c5Z ", + " 1\u239d 0\u23a0 0 1,0 0 0" + ] }, { + "latex": [ + "$$C_{0}{\\left(Z_{1}\\right)} = H_{1} CNOT_{0,1} H_{1}$$" + ], "output_type": "display_data", - "latex": "$$C_{0}{\\left(Z_{1}\\right)} = H_{1} CNOT_{0,1} H_{1}$$", "png": "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\n", - "text": "C \u239bZ \u239e = H \u22c5CNOT \u22c5H \n 0\u239d 1\u23a0 1 0,1 1" + "text": [ + "C \u239bZ \u239e = H \u22c5CNOT \u22c5H ", + " 0\u239d 1\u23a0 1 0,1 1" + ] }, { + "latex": [ + "$$SWAP_{1,0} = CNOT_{1,0} CNOT_{0,1} CNOT_{1,0}$$" + ], "output_type": "display_data", - "latex": "$$SWAP_{1,0} = CNOT_{1,0} CNOT_{0,1} CNOT_{1,0}$$", "png": "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\n", - "text": "SWAP = CNOT \u22c5CNOT \u22c5CNOT \n 1,0 1,0 0,1 1,0" + "text": [ + "SWAP = CNOT \u22c5CNOT \u22c5CNOT ", + " 1,0 1,0 0,1 1,0" + ] }, { "output_type": "display_data", @@ -271,9 +383,7 @@ "png": "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\n" } ], - "collapsed": false, - "prompt_number": 16, - "input": "for g in gates:\n dg = g.decompose()\n display(Eq(g, dg))\n circuit_plot(g, nqubits=2)\n circuit_plot(dg, nqubits=2) " + "prompt_number": 16 } ] } diff --git a/docs/examples/notebooks/dense_coding.ipynb b/docs/examples/notebooks/dense_coding.ipynb index 9e47f2a..fbf477c 100644 --- a/docs/examples/notebooks/dense_coding.ipynb +++ b/docs/examples/notebooks/dense_coding.ipynb @@ -1,82 +1,141 @@ { - "nbformat": 2, "metadata": { "name": "dense_coding" }, + "nbformat": 2, "worksheets": [ { "cells": [ { - "source": "

Dense Coding\n

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

Dense Coding", + "

" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "%load_ext sympyprinting" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 2, - "input": "%load_ext sympyprinting" + "prompt_number": 2 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "from sympy import sqrt, symbols, Rational", + "from sympy import expand, Eq, Symbol, simplify, exp, sin", + "from sympy.physics.quantum import *", + "from sympy.physics.quantum.qubit import *", + "from sympy.physics.quantum.gate import *", + "from sympy.physics.quantum.grover import *", + "from sympy.physics.quantum.qft import QFT, IQFT, Fourier", + "from sympy.physics.quantum.circuitplot import circuit_plot" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 3, - "input": "from sympy import sqrt, symbols, Rational\nfrom sympy import expand, Eq, Symbol, simplify, exp, sin\nfrom sympy.physics.quantum import *\nfrom sympy.physics.quantum.qubit import *\nfrom sympy.physics.quantum.gate import *\nfrom sympy.physics.quantum.grover import *\nfrom sympy.physics.quantum.qft import QFT, IQFT, Fourier\nfrom sympy.physics.quantum.circuitplot import circuit_plot" + "prompt_number": 3 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "psi = Qubit('00')/sqrt(2) + Qubit('11')/sqrt(2); psi" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\frac{1}{2} \\sqrt{2} {\\left|00\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|11\\right\\rangle }$$" + ], "output_type": "pyout", - "latex": "$$\\frac{1}{2} \\sqrt{2} {\\left|00\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|11\\right\\rangle }$$", - "prompt_number": 4, "png": "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\n0rjOgKiDGwAAAABJRU5ErkJggg==\n", - "text": "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \n\u2572\u2571 2 \u22c5\u275800\u27e9 \u2572\u2571 2 \u22c5\u275811\u27e9\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 2 2" + "prompt_number": 4, + "text": [ + "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd ", + "\u2572\u2571 2 \u22c5\u275800\u27e9 \u2572\u2571 2 \u22c5\u275811\u27e9", + "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500", + " 2 2" + ] } ], - "collapsed": false, - "prompt_number": 4, - "input": "psi = Qubit('00')/sqrt(2) + Qubit('11')/sqrt(2); psi\n" + "prompt_number": 4 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "circuits = [H(1)*CNOT(1,0), H(1)*CNOT(1,0)*X(1), H(1)*CNOT(1,0)*Z(1), H(1)*CNOT(1,0)*Z(1)*X(1)]" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 5, - "input": "circuits = [H(1)*CNOT(1,0), H(1)*CNOT(1,0)*X(1), H(1)*CNOT(1,0)*Z(1), H(1)*CNOT(1,0)*Z(1)*X(1)]" + "prompt_number": 5 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "for circuit in circuits:", + " circuit_plot(circuit, nqubits=2)", + " display(Eq(circuit*psi,qapply(circuit*psi)))" + ], "language": "python", "outputs": [ { + "latex": [ + "$$H_{1} CNOT_{1,0} \\left(\\frac{1}{2} \\sqrt{2} {\\left|00\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|11\\right\\rangle }\\right) = {\\left|00\\right\\rangle }$$" + ], "output_type": "display_data", - "latex": "$$H_{1} CNOT_{1,0} \\left(\\frac{1}{2} \\sqrt{2} {\\left|00\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|11\\right\\rangle }\\right) = {\\left|00\\right\\rangle }$$", "png": "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\ny/8BXM2fWYIlT5QAAAAASUVORK5CYII=\n", - "text": "\u239b \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u239e \n \u239c\u2572\u2571 2 \u22c5\u275800\u27e9 \u2572\u2571 2 \u22c5\u275811\u27e9\u239f \nH \u22c5CNOT \u22c5\u239c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u239f = \u275800\u27e9\n 1 1,0 \u239d 2 2 \u23a0" + "text": [ + "\u239b \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u239e ", + " \u239c\u2572\u2571 2 \u22c5\u275800\u27e9 \u2572\u2571 2 \u22c5\u275811\u27e9\u239f ", + "H \u22c5CNOT \u22c5\u239c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u239f = \u275800\u27e9", + " 1 1,0 \u239d 2 2 \u23a0" + ] }, { + "latex": [ + "$$H_{1} CNOT_{1,0} X_{1} \\left(\\frac{1}{2} \\sqrt{2} {\\left|00\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|11\\right\\rangle }\\right) = {\\left|01\\right\\rangle }$$" + ], "output_type": "display_data", - "latex": "$$H_{1} CNOT_{1,0} X_{1} \\left(\\frac{1}{2} \\sqrt{2} {\\left|00\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|11\\right\\rangle }\\right) = {\\left|01\\right\\rangle }$$", "png": "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\nrkJggg==\n", - "text": "\u239b \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u239e \n \u239c\u2572\u2571 2 \u22c5\u275800\u27e9 \u2572\u2571 2 \u22c5\u275811\u27e9\u239f \nH \u22c5CNOT \u22c5X \u22c5\u239c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u239f = \u275801\u27e9\n 1 1,0 1 \u239d 2 2 \u23a0" + "text": [ + "\u239b \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u239e ", + " \u239c\u2572\u2571 2 \u22c5\u275800\u27e9 \u2572\u2571 2 \u22c5\u275811\u27e9\u239f ", + "H \u22c5CNOT \u22c5X \u22c5\u239c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u239f = \u275801\u27e9", + " 1 1,0 1 \u239d 2 2 \u23a0" + ] }, { + "latex": [ + "$$H_{1} CNOT_{1,0} Z_{1} \\left(\\frac{1}{2} \\sqrt{2} {\\left|00\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|11\\right\\rangle }\\right) = {\\left|10\\right\\rangle }$$" + ], "output_type": "display_data", - "latex": "$$H_{1} CNOT_{1,0} Z_{1} \\left(\\frac{1}{2} \\sqrt{2} {\\left|00\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|11\\right\\rangle }\\right) = {\\left|10\\right\\rangle }$$", "png": "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\nL5K2XHBY3nYAAAAASUVORK5CYII=\n", - "text": "\u239b \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u239e \n \u239c\u2572\u2571 2 \u22c5\u275800\u27e9 \u2572\u2571 2 \u22c5\u275811\u27e9\u239f \nH \u22c5CNOT \u22c5Z \u22c5\u239c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u239f = \u275810\u27e9\n 1 1,0 1 \u239d 2 2 \u23a0" + "text": [ + "\u239b \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u239e ", + " \u239c\u2572\u2571 2 \u22c5\u275800\u27e9 \u2572\u2571 2 \u22c5\u275811\u27e9\u239f ", + "H \u22c5CNOT \u22c5Z \u22c5\u239c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u239f = \u275810\u27e9", + " 1 1,0 1 \u239d 2 2 \u23a0" + ] }, { + "latex": [ + "$$H_{1} CNOT_{1,0} Z_{1} X_{1} \\left(\\frac{1}{2} \\sqrt{2} {\\left|00\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|11\\right\\rangle }\\right) = {\\left|11\\right\\rangle }$$" + ], "output_type": "display_data", - "latex": "$$H_{1} CNOT_{1,0} Z_{1} X_{1} \\left(\\frac{1}{2} \\sqrt{2} {\\left|00\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|11\\right\\rangle }\\right) = {\\left|11\\right\\rangle }$$", "png": "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\n", - "text": "\u239b \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u239e \n \u239c\u2572\u2571 2 \u22c5\u275800\u27e9 \u2572\u2571 2 \u22c5\u275811\u27e9\u239f \nH \u22c5CNOT \u22c5Z \u22c5X \u22c5\u239c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u239f = \u275811\u27e9\n 1 1,0 1 1 \u239d 2 2 \u23a0" + "text": [ + "\u239b \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u239e ", + " \u239c\u2572\u2571 2 \u22c5\u275800\u27e9 \u2572\u2571 2 \u22c5\u275811\u27e9\u239f ", + "H \u22c5CNOT \u22c5Z \u22c5X \u22c5\u239c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u239f = \u275811\u27e9", + " 1 1,0 1 1 \u239d 2 2 \u23a0" + ] }, { "output_type": "display_data", @@ -95,9 +154,7 @@ "png": "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\n" } ], - "collapsed": false, - "prompt_number": 6, - "input": "for circuit in circuits:\n circuit_plot(circuit, nqubits=2)\n display(Eq(circuit*psi,qapply(circuit*psi)))" + "prompt_number": 6 } ] } diff --git a/docs/examples/notebooks/display_protocol.ipynb b/docs/examples/notebooks/display_protocol.ipynb index 5e138a1..92560da 100644 --- a/docs/examples/notebooks/display_protocol.ipynb +++ b/docs/examples/notebooks/display_protocol.ipynb @@ -1,180 +1,379 @@ { + "metadata": { + "name": "display_protocol" + }, + "nbformat": 2, "worksheets": [ { "cells": [ { - "source": "# Using the IPython display protocol for your own objects\n\nIPython extends the idea of the ``__repr__`` method in Python to support multiple representations for a given\nobject, which clients can use to display the object according to their capabilities. An object can return multiple\nrepresentations of itself by implementing special methods, and you can also define at runtime custom display \nfunctions for existing objects whose methods you can't or won't modify. In this notebook, we show how both approaches work.\n\n
\n**Note:** this notebook has had all output cells stripped out so we can include it in the IPython documentation with \na minimal file size. You'll need to manually execute the cells to see the output (you can run all of them with the \n\"Run All\" button, or execute each individually). You must start this notebook with\n
\nipython notebook --pylab inline\n
\n\nto ensure pylab support is available for plots.\n\n## Custom-built classes with dedicated ``_repr_*_`` methods\n\nIn our first example, we illustrate how objects can expose directly to IPython special representations of\nthemselves, by providing methods such as ``_repr_svg_``, ``_repr_png_``, ``_repr_latex_``, etc. For a full\nlist of the special ``_repr_*_`` methods supported, see the code in ``IPython.core.displaypub``.\n\nAs an illustration, we build a class that holds data generated by sampling a Gaussian distribution with given mean \nand variance. The class can display itself in a variety of ways: as a LaTeX expression or as an image in PNG or SVG \nformat. Each frontend can then decide which representation it can handle.\nFurther, we illustrate how to expose directly to the user the ability to directly access the various alternate \nrepresentations (since by default displaying the object itself will only show one, and which is shown will depend on the \nrequired representations that even cache necessary data in cases where it may be expensive to compute.\n\nThe next cell defines the Gaussian class:", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "# Using the IPython display protocol for your own objects", + "", + "IPython extends the idea of the ``__repr__`` method in Python to support multiple representations for a given", + "object, which clients can use to display the object according to their capabilities. An object can return multiple", + "representations of itself by implementing special methods, and you can also define at runtime custom display ", + "functions for existing objects whose methods you can't or won't modify. In this notebook, we show how both approaches work.", + "", + "
", + "**Note:** this notebook has had all output cells stripped out so we can include it in the IPython documentation with ", + "a minimal file size. You'll need to manually execute the cells to see the output (you can run all of them with the ", + "\"Run All\" button, or execute each individually). You must start this notebook with", + "
", 
+                        "ipython notebook --pylab inline", 
+                        "
", + "", + "to ensure pylab support is available for plots.", + "", + "## Custom-built classes with dedicated ``_repr_*_`` methods", + "", + "In our first example, we illustrate how objects can expose directly to IPython special representations of", + "themselves, by providing methods such as ``_repr_svg_``, ``_repr_png_``, ``_repr_latex_``, etc. For a full", + "list of the special ``_repr_*_`` methods supported, see the code in ``IPython.core.displaypub``.", + "", + "As an illustration, we build a class that holds data generated by sampling a Gaussian distribution with given mean ", + "and variance. The class can display itself in a variety of ways: as a LaTeX expression or as an image in PNG or SVG ", + "format. Each frontend can then decide which representation it can handle.", + "Further, we illustrate how to expose directly to the user the ability to directly access the various alternate ", + "representations (since by default displaying the object itself will only show one, and which is shown will depend on the ", + "required representations that even cache necessary data in cases where it may be expensive to compute.", + "", + "The next cell defines the Gaussian class:" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "from IPython.lib.pylabtools import print_figure", + "from IPython.core.display import Image, SVG, Math", + "", + "class Gaussian(object):", + " \"\"\"A simple object holding data sampled from a Gaussian distribution.", + " \"\"\"", + " def __init__(self, mean=0, std=1, size=1000):", + " self.data = np.random.normal(mean, std, size)", + " self.mean = mean", + " self.std = std", + " self.size = size", + " # For caching plots that may be expensive to compute", + " self._png_data = None", + " self._svg_data = None", + " ", + " def _figure_data(self, format):", + " fig, ax = plt.subplots()", + " ax.plot(self.data, 'o')", + " ax.set_title(self._repr_latex_())", + " data = print_figure(fig, format)", + " # We MUST close the figure, otherwise IPython's display machinery", + " # will pick it up and send it as output, resulting in a double display", + " plt.close(fig)", + " return data", + " ", + " # Here we define the special repr methods that provide the IPython display protocol", + " # Note that for the two figures, we cache the figure data once computed.", + " ", + " def _repr_png_(self):", + " if self._png_data is None:", + " self._png_data = self._figure_data('png')", + " return self._png_data", + "", + "", + " def _repr_svg_(self):", + " if self._svg_data is None:", + " self._svg_data = self._figure_data('svg')", + " return self._svg_data", + " ", + " def _repr_latex_(self):", + " return r'$\\mathcal{N}(\\mu=%.2g, \\sigma=%.2g),\\ N=%d$' % (self.mean,", + " self.std, self.size)", + " ", + " # We expose as properties some of the above reprs, so that the user can see them", + " # directly (since otherwise the client dictates which one it shows by default)", + " @property", + " def png(self):", + " return Image(self._repr_png_(), embed=True)", + " ", + " @property", + " def svg(self):", + " return SVG(self._repr_svg_())", + " ", + " @property", + " def latex(self):", + " return Math(self._repr_svg_())", + " ", + " # An example of using a property to display rich information, in this case", + " # the histogram of the distribution. We've hardcoded the format to be png", + " # in this case, but in production code it would be trivial to make it an option", + " @property", + " def hist(self):", + " fig, ax = plt.subplots()", + " ax.hist(self.data, bins=100)", + " ax.set_title(self._repr_latex_())", + " data = print_figure(fig, 'png')", + " plt.close(fig)", + " return Image(data, embed=True)" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 1, - "input": "from IPython.lib.pylabtools import print_figure\nfrom IPython.core.display import Image, SVG, Math\n\nclass Gaussian(object):\n \"\"\"A simple object holding data sampled from a Gaussian distribution.\n \"\"\"\n def __init__(self, mean=0, std=1, size=1000):\n self.data = np.random.normal(mean, std, size)\n self.mean = mean\n self.std = std\n self.size = size\n # For caching plots that may be expensive to compute\n self._png_data = None\n self._svg_data = None\n \n def _figure_data(self, format):\n fig, ax = plt.subplots()\n ax.plot(self.data, 'o')\n ax.set_title(self._repr_latex_())\n data = print_figure(fig, format)\n # We MUST close the figure, otherwise IPython's display machinery\n # will pick it up and send it as output, resulting in a double display\n plt.close(fig)\n return data\n \n # Here we define the special repr methods that provide the IPython display protocol\n # Note that for the two figures, we cache the figure data once computed.\n \n def _repr_png_(self):\n if self._png_data is None:\n self._png_data = self._figure_data('png')\n return self._png_data\n\n\n def _repr_svg_(self):\n if self._svg_data is None:\n self._svg_data = self._figure_data('svg')\n return self._svg_data\n \n def _repr_latex_(self):\n return r'$\\mathcal{N}(\\mu=%.2g, \\sigma=%.2g),\\ N=%d$' % (self.mean,\n self.std, self.size)\n \n # We expose as properties some of the above reprs, so that the user can see them\n # directly (since otherwise the client dictates which one it shows by default)\n @property\n def png(self):\n return Image(self._repr_png_(), embed=True)\n \n @property\n def svg(self):\n return SVG(self._repr_svg_())\n \n @property\n def latex(self):\n return Math(self._repr_svg_())\n \n # An example of using a property to display rich information, in this case\n # the histogram of the distribution. We've hardcoded the format to be png\n # in this case, but in production code it would be trivial to make it an option\n @property\n def hist(self):\n fig, ax = plt.subplots()\n ax.hist(self.data, bins=100)\n ax.set_title(self._repr_latex_())\n data = print_figure(fig, 'png')\n plt.close(fig)\n return Image(data, embed=True)" + "prompt_number": 1 }, { - "source": "Now, we create an instance of the Gaussian distribution, whose default representation will be its LaTeX form:", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Now, we create an instance of the Gaussian distribution, whose default representation will be its LaTeX form:" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "x = Gaussian()", + "x" + ], "language": "python", "outputs": [], - "collapsed": false, - "prompt_number": 2, - "input": "x = Gaussian()\nx" + "prompt_number": 2 }, { - "source": "We can view the data in png or svg formats:", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "We can view the data in png or svg formats:" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "x.png" + ], "language": "python", "outputs": [], - "collapsed": false, - "prompt_number": 3, - "input": "x.png" + "prompt_number": 3 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "x.svg" + ], "language": "python", "outputs": [], - "collapsed": false, - "prompt_number": 4, - "input": "x.svg" + "prompt_number": 4 }, { - "source": "Since IPython only displays by default as an ``Out[]`` cell the result of the last computation, we can use the\n``display()`` function to show more than one representation in a single cell:", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Since IPython only displays by default as an ``Out[]`` cell the result of the last computation, we can use the", + "``display()`` function to show more than one representation in a single cell:" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "display(x.png)", + "display(x.svg)" + ], "language": "python", "outputs": [], - "collapsed": false, - "prompt_number": 5, - "input": "display(x.png)\ndisplay(x.svg)" + "prompt_number": 5 }, { - "source": "Now let's create a new Gaussian with different parameters", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Now let's create a new Gaussian with different parameters" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "x2 = Gaussian(0.5, 0.2, 2000)", + "x2" + ], "language": "python", "outputs": [], - "collapsed": false, - "prompt_number": 6, - "input": "x2 = Gaussian(0.5, 0.2, 2000)\nx2" + "prompt_number": 6 }, { - "source": "We can easily compare them by displaying their histograms", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "We can easily compare them by displaying their histograms" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "display(x.hist)", + "display(x2.hist)" + ], "language": "python", "outputs": [], - "collapsed": false, - "prompt_number": 7, - "input": "display(x.hist)\ndisplay(x2.hist)" + "prompt_number": 7 }, { - "source": "## Adding IPython display support to existing objects\n\nWhen you are directly writing your own classes, you can adapt them for display in IPython by \nfollowing the above example. But in practice, we often need to work with existing code we\ncan't modify. \n\nWe now illustrate how to add these kinds of extended display capabilities to existing objects.\nWe will use the numpy polynomials and change their default representation to be a formatted\nLaTeX expression.\n\nFirst, consider how a numpy polynomial object renders by default:", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "## Adding IPython display support to existing objects", + "", + "When you are directly writing your own classes, you can adapt them for display in IPython by ", + "following the above example. But in practice, we often need to work with existing code we", + "can't modify. ", + "", + "We now illustrate how to add these kinds of extended display capabilities to existing objects.", + "We will use the numpy polynomials and change their default representation to be a formatted", + "LaTeX expression.", + "", + "First, consider how a numpy polynomial object renders by default:" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "p = np.polynomial.Polynomial([1,2,3], [-10, 10])", + "p" + ], "language": "python", "outputs": [], - "collapsed": false, - "prompt_number": 8, - "input": "p = np.polynomial.Polynomial([1,2,3], [-10, 10])\np" + "prompt_number": 8 }, { - "source": "Next, we define a function that pretty-prints a polynomial as a LaTeX string:", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Next, we define a function that pretty-prints a polynomial as a LaTeX string:" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "def poly2latex(p):", + " terms = ['%.2g' % p.coef[0]]", + " if len(p) > 1:", + " term = 'x'", + " c = p.coef[1]", + " if c!=1:", + " term = ('%.2g ' % c) + term", + " terms.append(term)", + " if len(p) > 2:", + " for i in range(2, len(p)):", + " term = 'x^%d' % i", + " c = p.coef[i]", + " if c!=1:", + " term = ('%.2g ' % c) + term", + " terms.append(term)", + " px = '$P(x)=%s$' % '+'.join(terms)", + " dom = r', domain: $[%.2g,\\ %.2g]$' % tuple(p.domain)", + " win = r', window: $[%.2g,\\ %.2g]$' % tuple(p.window)", + " return px+dom+win" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 9, - "input": "def poly2latex(p):\n terms = ['%.2g' % p.coef[0]]\n if len(p) > 1:\n term = 'x'\n c = p.coef[1]\n if c!=1:\n term = ('%.2g ' % c) + term\n terms.append(term)\n if len(p) > 2:\n for i in range(2, len(p)):\n term = 'x^%d' % i\n c = p.coef[i]\n if c!=1:\n term = ('%.2g ' % c) + term\n terms.append(term)\n px = '$P(x)=%s$' % '+'.join(terms)\n dom = r', domain: $[%.2g,\\ %.2g]$' % tuple(p.domain)\n win = r', window: $[%.2g,\\ %.2g]$' % tuple(p.window)\n return px+dom+win" + "prompt_number": 9 }, { - "source": "This produces, on our polynomial ``p``, the following:", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "This produces, on our polynomial ``p``, the following:" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "poly2latex(p)" + ], "language": "python", "outputs": [], - "collapsed": false, - "prompt_number": 10, - "input": "poly2latex(p)" + "prompt_number": 10 }, { - "source": "Note that this did *not* produce a formated LaTeX object, because it is simply a string \nwith LaTeX code. In order for this to be interpreted as a mathematical expression, it\nmust be properly wrapped into a Math object:", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Note that this did *not* produce a formated LaTeX object, because it is simply a string ", + "with LaTeX code. In order for this to be interpreted as a mathematical expression, it", + "must be properly wrapped into a Math object:" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "from IPython.core.display import Math", + "Math(poly2latex(p))" + ], "language": "python", "outputs": [], - "collapsed": false, - "prompt_number": 11, - "input": "from IPython.core.display import Math\nMath(poly2latex(p))" + "prompt_number": 11 }, { - "source": "But we can configure IPython to do this automatically for us as follows. We hook into the\nIPython display system and instruct it to use ``poly2latex`` for the latex mimetype, when\nencountering objects of the ``Polynomial`` type defined in the\n``numpy.polynomial.polynomial`` module:", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "But we can configure IPython to do this automatically for us as follows. We hook into the", + "IPython display system and instruct it to use ``poly2latex`` for the latex mimetype, when", + "encountering objects of the ``Polynomial`` type defined in the", + "``numpy.polynomial.polynomial`` module:" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "ip = get_ipython()", + "latex_formatter = ip.display_formatter.formatters['text/latex']", + "latex_formatter.for_type_by_name('numpy.polynomial.polynomial',", + " 'Polynomial', poly2latex)" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 12, - "input": "ip = get_ipython()\nlatex_formatter = ip.display_formatter.formatters['text/latex']\nlatex_formatter.for_type_by_name('numpy.polynomial.polynomial',\n 'Polynomial', poly2latex)" + "prompt_number": 12 }, { - "source": "For more examples on how to use the above system, and how to bundle similar print functions\ninto a convenient IPython extension, see the ``IPython/extensions/sympyprinting.py`` file. \nThe machinery that defines the display system is in the ``display.py`` and ``displaypub.py`` \nfiles in ``IPython/core``.\n\nOnce our special printer has been loaded, all polynomials will be represented by their \nmathematical form instead:", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "For more examples on how to use the above system, and how to bundle similar print functions", + "into a convenient IPython extension, see the ``IPython/extensions/sympyprinting.py`` file. ", + "The machinery that defines the display system is in the ``display.py`` and ``displaypub.py`` ", + "files in ``IPython/core``.", + "", + "Once our special printer has been loaded, all polynomials will be represented by their ", + "mathematical form instead:" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "p" + ], "language": "python", "outputs": [], - "collapsed": false, - "prompt_number": 13, - "input": "p" + "prompt_number": 13 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "p2 = np.polynomial.Polynomial([-20, 71, -15, 1])", + "p2" + ], "language": "python", "outputs": [], - "collapsed": false, - "prompt_number": 14, - "input": "p2 = np.polynomial.Polynomial([-20, 71, -15, 1])\np2" + "prompt_number": 14 }, { "cell_type": "code", + "collapsed": true, + "input": [], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 14, - "input": "" + "prompt_number": 14 } ] } - ], - "metadata": { - "name": "display_protocol" - }, - "nbformat": 2 + ] } \ No newline at end of file diff --git a/docs/examples/notebooks/formatting.ipynb b/docs/examples/notebooks/formatting.ipynb index 45e5bed..81a430d 100644 --- a/docs/examples/notebooks/formatting.ipynb +++ b/docs/examples/notebooks/formatting.ipynb @@ -1,28 +1,118 @@ { - "nbformat": 2, "metadata": { "name": "formatting" }, + "nbformat": 2, "worksheets": [ { "cells": [ { - "source": "# Title (h1)\n\n## Heading (h2)\n\n### Heading (h3)\n\nHere is a paragraph of text.\n\n* One.\n - Sublist\n - Here we go\n - Sublist\n - Here we go\n - Here we go\n* Two.\n - Sublist\n* Three.\n - Sublist\n\nNow another list:\n\n---\n\n1. Here we go\n 1. Sublist\n 2. Sublist\n2. There we go\n3. Now this\n\nAnd another paragraph.\n\n### Heading (h3)\n\n#### Heading (h4)\n\n##### Heading (h5)\n\n###### Heading (h6)\n\n## Heading (h2)\n\n", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "# Title (h1)", + "", + "## Heading (h2)", + "", + "### Heading (h3)", + "", + "Here is a paragraph of text.", + "", + "* One.", + " - Sublist", + " - Here we go", + " - Sublist", + " - Here we go", + " - Here we go", + "* Two.", + " - Sublist", + "* Three.", + " - Sublist", + "", + "Now another list:", + "", + "---", + "", + "1. Here we go", + " 1. Sublist", + " 2. Sublist", + "2. There we go", + "3. Now this", + "", + "And another paragraph.", + "", + "### Heading (h3)", + "", + "#### Heading (h4)", + "", + "##### Heading (h5)", + "", + "###### Heading (h6)", + "", + "## Heading (h2)", + "" + ] }, { - "source": "# Heading (h1)\n\n## Heading (h2)\n\n### Heading (h3)\n\n#### Heading (h4)\n\n##### Heading (h5)\n\n###### Heading (h6)\n\nNow for a simpel code example:\n\n for i in range(10):\n print i\n\nNow more text", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "# Heading (h1)", + "", + "## Heading (h2)", + "", + "### Heading (h3)", + "", + "#### Heading (h4)", + "", + "##### Heading (h5)", + "", + "###### Heading (h6)", + "", + "Now for a simpel code example:", + "", + " for i in range(10):", + " print i", + "", + "Now more text" + ] }, { - "source": "## Heading (h2)\n\nHere is text.\n\n> This is a *block* quote. This is a block quote. This is a block quote. \n> This is a **block** quote. This is a block quote. This is a block quote. \n> This is a `block` quote. This is a block quote. This is a block quote. \n> This is a block quote. This is a block quote. This is a block quote. \n> This is a block quote. This is a block quote. This is a block quote. \n> This is a block quote. This is a block quote. This is a block quote. \n\nHere is text\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Header 1Header 2
row 1, cell 1row 1, cell 2
row 2, cell 1row 2, cell 2
", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "## Heading (h2)", + "", + "Here is text.", + "", + "> This is a *block* quote. This is a block quote. This is a block quote. ", + "> This is a **block** quote. This is a block quote. This is a block quote. ", + "> This is a `block` quote. This is a block quote. This is a block quote. ", + "> This is a block quote. This is a block quote. This is a block quote. ", + "> This is a block quote. This is a block quote. This is a block quote. ", + "> This is a block quote. This is a block quote. This is a block quote. ", + "", + "Here is text", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "
Header 1Header 2
row 1, cell 1row 1, cell 2
row 2, cell 1row 2, cell 2
" + ] }, { - "outputs": [], "cell_type": "code", "collapsed": true, - "language": "python" + "input": [], + "language": "python", + "outputs": [] } ] } diff --git a/docs/examples/notebooks/grovers.ipynb b/docs/examples/notebooks/grovers.ipynb index ee4df0f..8ee0ac2 100644 --- a/docs/examples/notebooks/grovers.ipynb +++ b/docs/examples/notebooks/grovers.ipynb @@ -1,138 +1,217 @@ { - "nbformat": 2, "metadata": { "name": "grovers" }, + "nbformat": 2, "worksheets": [ { "cells": [ { - "source": "

Grover's Algorithm

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

Grover's Algorithm

" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "%load_ext sympyprinting" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 1, - "input": "%load_ext sympyprinting" + "prompt_number": 1 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "from sympy import sqrt, symbols, Rational", + "from sympy import expand, Eq, Symbol, simplify, exp, sin", + "from sympy.physics.quantum import *", + "from sympy.physics.quantum.qubit import *", + "from sympy.physics.quantum.gate import *", + "from sympy.physics.quantum.grover import *", + "from sympy.physics.quantum.qft import QFT, IQFT, Fourier", + "from sympy.physics.quantum.circuitplot import circuit_plot" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 2, - "input": "from sympy import sqrt, symbols, Rational\nfrom sympy import expand, Eq, Symbol, simplify, exp, sin\nfrom sympy.physics.quantum import *\nfrom sympy.physics.quantum.qubit import *\nfrom sympy.physics.quantum.gate import *\nfrom sympy.physics.quantum.grover import *\nfrom sympy.physics.quantum.qft import QFT, IQFT, Fourier\nfrom sympy.physics.quantum.circuitplot import circuit_plot" + "prompt_number": 2 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "nqubits = 3" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 3, - "input": "nqubits = 3\n" + "prompt_number": 3 }, { - "source": "Grover's algorithm is a quantum algorithm which searches an unordered database (inverts a function).
\nProvides polynomial speedup over classical brute-force search ($O(\\sqrt{N}) vs. O(N))$ ", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Grover's algorithm is a quantum algorithm which searches an unordered database (inverts a function).
", + "Provides polynomial speedup over classical brute-force search ($O(\\sqrt{N}) vs. O(N))$ " + ] }, { - "source": "Define a black box function that returns True if it is passed the state we are searching for.", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Define a black box function that returns True if it is passed the state we are searching for." + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "def black_box(qubits):", + " return True if qubits == IntQubit(1, qubits.nqubits) else False" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 4, - "input": "def black_box(qubits):\n return True if qubits == IntQubit(1, qubits.nqubits) else False\n" + "prompt_number": 4 }, { - "source": "Build a uniform superposition state to start the search.", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Build a uniform superposition state to start the search." + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "psi = superposition_basis(nqubits); psi" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\frac{1}{4} \\sqrt{2} {\\left|0\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|1\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|2\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|3\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|4\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|5\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|6\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|7\\right\\rangle }$$" + ], "output_type": "pyout", - "latex": "$$\\frac{1}{4} \\sqrt{2} {\\left|0\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|1\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|2\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|3\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|4\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|5\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|6\\right\\rangle } + \\frac{1}{4} \\sqrt{2} {\\left|7\\right\\rangle }$$", - "prompt_number": 5, "png": "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\nTkSuQmCC\n", - "text": "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \n\u2572\u2571 2 \u22c5\u27580\u27e9 \u2572\u2571 2 \u22c5\u27581\u27e9 \u2572\u2571 2 \u22c5\u27582\u27e9 \u2572\u2571 2 \u22c5\u27583\u27e9 \u2572\u2571 2 \u22c5\u27584\u27e9 \u2572\u2571 2 \u22c5\u27585\u27e9 \u2572\u2571 2 \u22c5\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\n 4 4 4 4 4 4 4 \n\n \u23bd\u23bd\u23bd \n\u27586\u27e9 \u2572\u2571 2 \u22c5\u27587\u27e9\n\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 4" + "prompt_number": 5, + "text": [ + "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd ", + "\u2572\u2571 2 \u22c5\u27580\u27e9 \u2572\u2571 2 \u22c5\u27581\u27e9 \u2572\u2571 2 \u22c5\u27582\u27e9 \u2572\u2571 2 \u22c5\u27583\u27e9 \u2572\u2571 2 \u22c5\u27584\u27e9 \u2572\u2571 2 \u22c5\u27585\u27e9 \u2572\u2571 2 \u22c5", + "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500", + " 4 4 4 4 4 4 4 ", + "", + " \u23bd\u23bd\u23bd ", + "\u27586\u27e9 \u2572\u2571 2 \u22c5\u27587\u27e9", + "\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500", + " 4" + ] } ], - "collapsed": false, - "prompt_number": 5, - "input": "psi = superposition_basis(nqubits); psi\n" + "prompt_number": 5 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "v = OracleGate(nqubits, black_box)" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 6, - "input": "v = OracleGate(nqubits, black_box)\n" + "prompt_number": 6 }, { - "source": "Perform two iterations of Grover's algorithm. Each iteration, the amplitude of the target state increases.", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Perform two iterations of Grover's algorithm. Each iteration, the amplitude of the target state increases." + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "iter1 = qapply(grover_iteration(psi, v)); iter1" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\frac{1}{8} \\sqrt{2} {\\left|0\\right\\rangle } + \\frac{5}{8} \\sqrt{2} {\\left|1\\right\\rangle } + \\frac{1}{8} \\sqrt{2} {\\left|2\\right\\rangle } + \\frac{1}{8} \\sqrt{2} {\\left|3\\right\\rangle } + \\frac{1}{8} \\sqrt{2} {\\left|4\\right\\rangle } + \\frac{1}{8} \\sqrt{2} {\\left|5\\right\\rangle } + \\frac{1}{8} \\sqrt{2} {\\left|6\\right\\rangle } + \\frac{1}{8} \\sqrt{2} {\\left|7\\right\\rangle }$$" + ], "output_type": "pyout", - "latex": "$$\\frac{1}{8} \\sqrt{2} {\\left|0\\right\\rangle } + \\frac{5}{8} \\sqrt{2} {\\left|1\\right\\rangle } + \\frac{1}{8} \\sqrt{2} {\\left|2\\right\\rangle } + \\frac{1}{8} \\sqrt{2} {\\left|3\\right\\rangle } + \\frac{1}{8} \\sqrt{2} {\\left|4\\right\\rangle } + \\frac{1}{8} \\sqrt{2} {\\left|5\\right\\rangle } + \\frac{1}{8} \\sqrt{2} {\\left|6\\right\\rangle } + \\frac{1}{8} \\sqrt{2} {\\left|7\\right\\rangle }$$", - "prompt_number": 7, "png": "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\nSUVORK5CYII=\n", - "text": "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\n\u2572\u2571 2 \u22c5\u27580\u27e9 5\u22c5\u2572\u2571 2 \u22c5\u27581\u27e9 \u2572\u2571 2 \u22c5\u27582\u27e9 \u2572\u2571 2 \u22c5\u27583\u27e9 \u2572\u2571 2 \u22c5\u27584\u27e9 \u2572\u2571 2 \u22c5\u27585\u27e9 \u2572\u2571 2\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\n 8 8 8 8 8 8 \n\n\u23bd \u23bd\u23bd\u23bd \n \u22c5\u27586\u27e9 \u2572\u2571 2 \u22c5\u27587\u27e9\n\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n8 8" + "prompt_number": 7, + "text": [ + "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd", + "\u2572\u2571 2 \u22c5\u27580\u27e9 5\u22c5\u2572\u2571 2 \u22c5\u27581\u27e9 \u2572\u2571 2 \u22c5\u27582\u27e9 \u2572\u2571 2 \u22c5\u27583\u27e9 \u2572\u2571 2 \u22c5\u27584\u27e9 \u2572\u2571 2 \u22c5\u27585\u27e9 \u2572\u2571 2", + "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500", + " 8 8 8 8 8 8 ", + "", + "\u23bd \u23bd\u23bd\u23bd ", + " \u22c5\u27586\u27e9 \u2572\u2571 2 \u22c5\u27587\u27e9", + "\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500", + "8 8" + ] } ], - "collapsed": false, - "prompt_number": 7, - "input": "iter1 = qapply(grover_iteration(psi, v)); iter1\n" + "prompt_number": 7 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "iter2 = qapply(grover_iteration(iter1, v)); iter2" + ], "language": "python", "outputs": [ { + "latex": [ + "$$- \\frac{1}{16} \\sqrt{2} {\\left|0\\right\\rangle } + \\frac{11}{16} \\sqrt{2} {\\left|1\\right\\rangle } - \\frac{1}{16} \\sqrt{2} {\\left|2\\right\\rangle } - \\frac{1}{16} \\sqrt{2} {\\left|3\\right\\rangle } - \\frac{1}{16} \\sqrt{2} {\\left|4\\right\\rangle } - \\frac{1}{16} \\sqrt{2} {\\left|5\\right\\rangle } - \\frac{1}{16} \\sqrt{2} {\\left|6\\right\\rangle } - \\frac{1}{16} \\sqrt{2} {\\left|7\\right\\rangle }$$" + ], "output_type": "pyout", - "latex": "$$- \\frac{1}{16} \\sqrt{2} {\\left|0\\right\\rangle } + \\frac{11}{16} \\sqrt{2} {\\left|1\\right\\rangle } - \\frac{1}{16} \\sqrt{2} {\\left|2\\right\\rangle } - \\frac{1}{16} \\sqrt{2} {\\left|3\\right\\rangle } - \\frac{1}{16} \\sqrt{2} {\\left|4\\right\\rangle } - \\frac{1}{16} \\sqrt{2} {\\left|5\\right\\rangle } - \\frac{1}{16} \\sqrt{2} {\\left|6\\right\\rangle } - \\frac{1}{16} \\sqrt{2} {\\left|7\\right\\rangle }$$", - "prompt_number": 8, "png": "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\nzSfShSQN5wAAAABJRU5ErkJggg==\n", - "text": "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \n \u2572\u2571 2 \u22c5\u27580\u27e9 11\u22c5\u2572\u2571 2 \u22c5\u27581\u27e9 \u2572\u2571 2 \u22c5\u27582\u27e9 \u2572\u2571 2 \u22c5\u27583\u27e9 \u2572\u2571 2 \u22c5\u27584\u27e9 \u2572\u2571 2 \u22c5\u27585\u27e9 \u2572\n- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\n 16 16 16 16 16 16 \n\n \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \n\u2571 2 \u22c5\u27586\u27e9 \u2572\u2571 2 \u22c5\u27587\u27e9\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 16 16" + "prompt_number": 8, + "text": [ + "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd ", + " \u2572\u2571 2 \u22c5\u27580\u27e9 11\u22c5\u2572\u2571 2 \u22c5\u27581\u27e9 \u2572\u2571 2 \u22c5\u27582\u27e9 \u2572\u2571 2 \u22c5\u27583\u27e9 \u2572\u2571 2 \u22c5\u27584\u27e9 \u2572\u2571 2 \u22c5\u27585\u27e9 \u2572", + "- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500", + " 16 16 16 16 16 16 ", + "", + " \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd ", + "\u2571 2 \u22c5\u27586\u27e9 \u2572\u2571 2 \u22c5\u27587\u27e9", + "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500", + " 16 16" + ] } ], - "collapsed": false, - "prompt_number": 8, - "input": "iter2 = qapply(grover_iteration(iter1, v)); iter2\n" + "prompt_number": 8 }, { - "source": "A single shot measurement is performed to retrieve the target state.", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "A single shot measurement is performed to retrieve the target state." + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "measure_all_oneshot(iter2)" + ], "language": "python", "outputs": [ { + "latex": [ + "$${\\left|001\\right\\rangle }$$" + ], "output_type": "pyout", - "latex": "$${\\left|001\\right\\rangle }$$", - "prompt_number": 9, "png": "iVBORw0KGgoAAAANSUhEUgAAACkAAAATCAYAAAANgSQ9AAAABHNCSVQICAgIfAhkiAAAAahJREFU\nSInt1rtrFUEcxfEPQeMr6DXiC3yksFHRRiQoiHVCKiuxyh9gYyMWVhaCooKttZXYiEZQ0yhib7AR\ng5GA+CgUITe+IFrMBMa9e/fO3NZ8YZjZ8zu7e3Z3dnZZoYgL3QqrkvEZPMV7tHAdbXzBWtzC28r+\nub5lNuIJTmOuUmtjGz43XckkRuJ4GlcrtVdYX9kn1zeIE3iOP9hXc/4tONcUMA05Gg+0P6mtw3dc\nTrRcXwv3hTt+ryEkXMJATsi7mK+pP8JMsp3rS7nYI+RxjFfFutRH8KZGn8Uh4bGU+Ep4EYP2DLkd\nCzV6O/Y7Cn2lzGNvKlRDbhLmVVsny1qrwNcPDzDRFPI3lmKrsjr2SwW+fpjAVFPIRd3XuA2x/1Dg\n64cRvEuFujk5g801+lDsPxb6SjgmvDz/0C3k7hr9qPDm/ij0lTCGhzkhX+IA9iTaVhzGtT58uQzj\nqx5zeVKYD4N4hptJ7bzwTV+TaLm+lBvCYt6xFuKssKx1kP5gLOJXbKeET9ttfMMunMTPxJ/rI/xU\n7MTBuP0Yr3EHV6I2hE9dLm6F/4e/u+tyeF0qLvsAAAAASUVORK5CYII=\n", - "text": "\u2758001\u27e9" + "prompt_number": 9, + "text": [ + "\u2758001\u27e9" + ] } ], - "collapsed": false, - "prompt_number": 9, - "input": "measure_all_oneshot(iter2)\n" + "prompt_number": 9 } ] } diff --git a/docs/examples/notebooks/qerror.ipynb b/docs/examples/notebooks/qerror.ipynb index b8b5ab9..e301a66 100644 --- a/docs/examples/notebooks/qerror.ipynb +++ b/docs/examples/notebooks/qerror.ipynb @@ -1,268 +1,516 @@ { - "nbformat": 2, "metadata": { "name": "qerror" }, + "nbformat": 2, "worksheets": [ { "cells": [ { - "source": "

Quantum Error Correction

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

Quantum Error Correction

" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "%load_ext sympyprinting" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 1, - "input": "%load_ext sympyprinting" + "prompt_number": 1 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "from sympy import sqrt, symbols, Rational", + "from sympy import expand, Eq, Symbol, simplify, exp, sin", + "from sympy.physics.quantum import *", + "from sympy.physics.quantum.qubit import *", + "from sympy.physics.quantum.gate import *", + "from sympy.physics.quantum.grover import *", + "from sympy.physics.quantum.qft import QFT, IQFT, Fourier", + "from sympy.physics.quantum.circuitplot import circuit_plot" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 2, - "input": "from sympy import sqrt, symbols, Rational\nfrom sympy import expand, Eq, Symbol, simplify, exp, sin\nfrom sympy.physics.quantum import *\nfrom sympy.physics.quantum.qubit import *\nfrom sympy.physics.quantum.gate import *\nfrom sympy.physics.quantum.grover import *\nfrom sympy.physics.quantum.qft import QFT, IQFT, Fourier\nfrom sympy.physics.quantum.circuitplot import circuit_plot" + "prompt_number": 2 }, { - "source": "

5 qubit code

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

5 qubit code

" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "M0 = Z(1)*X(2)*X(3)*Z(4); M0" + ], "language": "python", "outputs": [ { + "latex": [ + "$$Z_{1} X_{2} X_{3} Z_{4}$$" + ], "output_type": "pyout", - "latex": "$$Z_{1} X_{2} X_{3} Z_{4}$$", - "prompt_number": 3, "png": "iVBORw0KGgoAAAANSUhEUgAAAFsAAAAYCAYAAACV+oFbAAAABHNCSVQICAgIfAhkiAAAA2NJREFU\naIHt2EmIHFUcx/FPktHQCS5oSGA0KoILIsaLmIOGOC4MMuA2CCYwGJfgwRUdRnBFFMlN9BAvBiFR\nBBcUPQREXHADMYgoKBIVnShCoqjEZZw4Hv41M9Xd1Rm76lWL0D8o6Fev6vte/+ot//+jr/9cKzGF\nGfyFL/AqdmbXvqzuin/BGsOu7PkZ/I6ncvUX46es7m98jnVd9LVufkovCrUJf+IWHNJSdykO4NEu\nmQ9mnbqvoG6L+AODXTJ7wa/DiyY9j5GC+2fjN7yExV0yV2Man7XcX4etJXi94tfhxZwOxRsF90/E\nD/gAy0qyXxajb31WPkNM+YGSvLr5dXoBjsOFLfeOEiPma6yqwB4RZjyDE/CCip2tmV+nF4VairfE\nJnNaRdYSfCPWwFdwdEVer/kpvWjTIjwtduOhRMx7xOi7KxGvV/w6vGjSw6LjY4l4A9guOrxb/IGU\nqpOf2osmbVYcSjWU/7JbcS6ezdjDpXvXW34dXsxpWATwTxbUXYPLSjAfwiXZ7/NF518s07ke8+vw\nYk5n4he8pj2Ih7exPFfegBsXYN6K63PlRSKTm8YxB3lvCPfiETyGwxLxB7Exe2cbRjtwu/ViVsux\nowNzTsdiDz7FEQX1G0QsC2vFtPoEdx+EuVHxZnW7GH33d3jvFIznyo/jzUT87eIDwhqRxq9peaYb\nL1q1RXty1aTD8TG+x/EtdYO4M+vUdS11OxSbvTRr9KMO7Q1mvMns2VZdi2/Nb3IXCPNWJuCfLj4m\nrNCcCFHeC7gIV1vA7G1Zo5N4P7t24WfzhzxT2gP5VrMbeA9/ZO8cEOcWeY2KeHiW+51IQPI6UnNC\ncRX2i1GWgj+rMbyjeZko68UK3IBTLWB2WXUa2Sm1GO/ipoTM1cKYndJlghMi/Pxfm/0A7qiJvRZf\naV8uutUoTsp+F5q9pGIDcDn2ijS2Dm0SS8ITYpoSoVhZNcQs2SPOpifFRj+N1ytwx8V+co6Ios4S\n/n6JXytwm1TnyB7RfNA/ofrB1YCIoGY3yFViDb6yIjevYYmXkZNxmzj9+hA3m48UUmi9GMEzuWt3\nIvaQOEPZLMK3CelS+/PwnNjMx+UOw6o00NAef+5TbYrntUyEYHlN4cdEfCL52J+QR3jSyJX3iiWq\nr7766quq/gHxxxJqg1cEfAAAAABJRU5ErkJggg==\n", - "text": "Z \u22c5X \u22c5X \u22c5Z \n 1 2 3 4" + "prompt_number": 3, + "text": [ + "Z \u22c5X \u22c5X \u22c5Z ", + " 1 2 3 4" + ] } ], - "collapsed": false, - "prompt_number": 3, - "input": "M0 = Z(1)*X(2)*X(3)*Z(4); M0\n" + "prompt_number": 3 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "M1 = Z(2)*X(3)*X(4)*Z(0); M1" + ], "language": "python", "outputs": [ { + "latex": [ + "$$Z_{2} X_{3} X_{4} Z_{0}$$" + ], "output_type": "pyout", - "latex": "$$Z_{2} X_{3} X_{4} Z_{0}$$", - "prompt_number": 4, "png": "iVBORw0KGgoAAAANSUhEUgAAAFoAAAAYCAYAAAB6OOplAAAABHNCSVQICAgIfAhkiAAAA4lJREFU\naIHt2FuoFWUUB/Df1pPHki5UWmk3eisiohfxIa0siLCyi1AZdqEMIqmQsqioSJEoeqgHiSCjG0EY\nlRKBGSFFNzpEFygqjLIi6B5k6dHTw5o5e/bec07umW/vXvYfBuabNfOfNf9Z37fWtxjgf8Us7MQY\nduELbMar2fFzZrtoL7iWYSS7fww78EzBfg5+zWx78Dnmd+Frr/lTatGBq/APbsQ+bbbF2I2Hu+Rc\nnTl0d4ntfuH87C45+8HfCy3GsQGLSq7PxV94CVO65DwKo/is7fp8rKvA1y/+XmgBpuGNkuvH4Ue8\nj/2qEGOjiLrTsvFJYpoPVeTrNX8vtXA0zmq7drCIlK9xWFViERljeA7H4gU1HO0Dfy+16MAwtoqE\nckJNrqn4Rqx5m3BITb5+86fUogUNPCuy7hmJOO8SUXdHIr5+8fdCi3GsFU4vS8Q3hKeEs18J51Oi\nl/yptRjHcuXl0r6q/9F1OBXPZ9xnV/auv/y90ALh4C48UWK7GhdU4FyD87PzhcLxF6s412f+XmgB\nTsYf2KKzQIc3MQPTcYtYE9djySScN+HawrghdmijmDPJc6eLqXo7HjXxhqMqP/FTbpjAtrda5DgX\nK4Um10z20iPxHT7FgSX2y0StCvdqfsQR+AUXljyzVHliWimi7p4JfJmFP3F8Nl6P1xPyw0H4BHeW\n2LrRgqjZtxbGG3Fe2UsPwEf4Ace02WbjNtEryP/UxyKic2zS2mMYFlvfD8telnHuwfbs3nY0RF08\nLRuvbuOqyw+r8IBOobvVgkjCtxbGy/Fy2UsfFxGwHe9kxwh+12zY7NQs0ueKgj7Hu3hQJIi38Xf2\nzG4hUhEXi3o35/1ebC4mwwcielPxL8aJ2bPtQnerBbFLXFoYL8K3//FNXWOemGZJd0oZzsRjWqOl\nLubgiuy8TOgq2KY1MS4U6zvqN3JgJu7DArH/T43XRKI7BQ8l4GvgcjyZgKuIbSLSc8wQeQv1hd5f\nZNhL8aXO9awOLsFbmpuOV0R1cWhN3nkiea8Sa+0CUXtfV5N3RCTwHIeL5as2pgtn86bNVOW94Kq4\nUmvtulasmSlmYRFPS7N0LBHNrBwbRADWRr77Kh4rUhBnGBb18wohxGaRvFLietGFe0/MoDpo4BHc\nLAJwjUILoE4vYKaI4iJ+E9VASkwRou9IzEtM7xyj+CkB55BmNTTAAAMMUAf/AiT2FBaVsAtVAAAA\nAElFTkSuQmCC\n", - "text": "Z \u22c5X \u22c5X \u22c5Z \n 2 3 4 0" + "prompt_number": 4, + "text": [ + "Z \u22c5X \u22c5X \u22c5Z ", + " 2 3 4 0" + ] } ], - "collapsed": false, - "prompt_number": 4, - "input": "M1 = Z(2)*X(3)*X(4)*Z(0); M1\n" + "prompt_number": 4 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "M2 = Z(3)*X(4)*X(0)*Z(1); M2" + ], "language": "python", "outputs": [ { + "latex": [ + "$$Z_{3} X_{4} X_{0} Z_{1}$$" + ], "output_type": "pyout", - "latex": "$$Z_{3} X_{4} X_{0} Z_{1}$$", - "prompt_number": 5, "png": "iVBORw0KGgoAAAANSUhEUgAAAFoAAAAYCAYAAAB6OOplAAAABHNCSVQICAgIfAhkiAAAA3RJREFU\naIHt2VtoHHUUx/FPTTSY1rTEeiHeSlEExUv1QVQMoggiXlEqXihaVPLmFalIUagifREUtPiiglQK\noiiKKCposSgIQQTBKqKUWC14odZ6aVrjw5nNTiazJjvzn9WH/GBh5/+f/e6Z3575nzP/ZUH/qY7E\nPkxhEl/hHbyVvX7K5q6dB2sNxrPzp/AHNufmL8Mv2dzf2I7RLmJtmp/Si1m6FX/hThxcmLsaB/Bk\nl8xHsoAeKpnbKIIf6ZLZC34TXkzrZVxeMn4OfsdrOKhL5nHYjy8K46PYVIHXK34TXoBD8H7J+Ers\nwicYrALG6yLrLsyOTxe3eX9FXtP8Jr1wPC4pjA2LTPkWR1UFi8yYwhaswCtqBNoDfpNezNIAtoqC\nckpNVh92iDXvDRxek9drfkovZmgRXhRV96JEzPUi6x5MxOsVvwkvpvWYCHpNIl4/XhDBfi2CT6km\n+am9mNYdytulQ1X/RTfhAryUsS+tHF1v+U14gQhwEs+XzK3FNRWYj+Kq7P3FIvBXqwTXY34TXoAz\n8SveM7tBhw+xGEtxg2jon8HYvzDvwu2540XiCW0/jplnXJtFBqXgHyYeQMbwOM7owJ2vF3mtwlMd\neNM6Ft/hc2FkUTeKXhU2aGfMsLioK0s+c5PywnSvyLqH5wpK/KCTWJKIv1E7MZbjGwwVzunGi9b5\n6/GmeDTvqCF8hu9xQmFuBOvEXsFt2dgKnJ07Zw9uyR0PZBf0aYfvG8l4E9m5nbQSN+M3M42uyh/E\nXjMfx7dide64Wy/yGjOH0c+KDJjAx9lrHLu1N2z2KW/SR/Ellonb+yP8mX3mgNiHyOs60e+2uDvF\nw0VRfXgge98yui7/ZGFSviPZIrqKFF7MaXQVDYssfhcnpYaLjGldTDGjq+p8kdF5PYenE7DpYHTd\njZyfRTVeiw9EIUilVSKjdiVkEuvxVGFssbiWxlTH6Le1K/0O/IC7a0fU1mpR9deJYjeAe3BWTe5O\nUU/y3cLR4hr+l9qG87L3/aINur+h71ousjDF0kFsbba2PodEkpR1FlVUunT01QCO4wqciPvE0rFB\nFJqUOlX0vOeKH3QCP9ZkbhMxLxFt2hOiy6ijpeIOvx6niWK7V7b0pdgLGBR/HxXXvVQaNLPH3Z19\nXwoNiJ2+FOrDEYWxPWYX3gUtaEELmq/+AS2CEfeikOXjAAAAAElFTkSuQmCC\n", - "text": "Z \u22c5X \u22c5X \u22c5Z \n 3 4 0 1" + "prompt_number": 5, + "text": [ + "Z \u22c5X \u22c5X \u22c5Z ", + " 3 4 0 1" + ] } ], - "collapsed": false, - "prompt_number": 5, - "input": "M2 = Z(3)*X(4)*X(0)*Z(1); M2\n" + "prompt_number": 5 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "M3 = Z(4)*X(0)*X(1)*Z(2); M3" + ], "language": "python", "outputs": [ { + "latex": [ + "$$Z_{4} X_{0} X_{1} Z_{2}$$" + ], "output_type": "pyout", - "latex": "$$Z_{4} X_{0} X_{1} Z_{2}$$", - "prompt_number": 6, "png": "iVBORw0KGgoAAAANSUhEUgAAAFoAAAAYCAYAAAB6OOplAAAABHNCSVQICAgIfAhkiAAAA2BJREFU\naIHt2F2oZlMYB/DfmDOOYTgiTMfHwZSLuZA0kguTSA3JR+PK6BTNiJqcKWEm5IxGcjEpNwdJSoSJ\niKIQTcqUmjQ1RUO+Bo0MIV/z4bh41nvOPu/Z++Tde+3XhfOvXXutZ6//evZ/P3utZz3M4z/FyTiA\nSRzEHryFN9O1P9lW/wuuUexMz0/iDzxbsF+Jn5Ltb3yClT342jZ/Ti1m4Sb8hTEs6rJdi8N4tEfO\nLcmh+0tsDwvnh3vk7Ad/G1pM4SVcVdJ/IX7HqziiR87TcQgfd/WvxEQNvn7xt6EFOBLvlfSfjX34\nEEfXIcZrIuouSe1zxW8+UJOvbf42tXAGLu/qO0FEyhc4pS6xiIxJPI8z8bIGjvaBv00tZmEQ28WG\nsrwh10J8Jda813FiQ75+8+fUYgYW4Dmx616aifM+EXX3ZOLrF38bWkzhIeH0aCa+ATwjnP1MOJ8T\nbfLn1mIKtyhPlxar/0UncDG2Je5Vtb3rL38bWiAcPIinS2w347oanA/imnR/mXD8lTrO9Zm/DS3A\nefgF75idoMP7OKarb7l40SpswLpCe4E4oR3CqXOMW4FNafxm1flqXf47zS1Ur1qM4l48nvyuzK9P\nwzfYjaES+w0iVy1iEd7FkxWca5RvTHeIqBuvGHcsPsVRqT2OBzLxr0r9X+PGivl71WI1rkj3A9iB\nrWXEx2EXvsNIl20YG0WtYG2XbT3uNlvoQXH0/ajiRYYT3970bDfG8GKhfb548Vz8RESWCV1Hiwlx\nSuxgI74sm/QpEQF7xdfYIYo1P5su2BwwM0m/SKyHa00LvRgf4M805rCoQxRxvch3O7zfisNFERN4\npNBemp4dycRPtdB1tDgLFxTaW9O4xliC29N9Uehc2Gbmuj8kXvCcjHNUCd0Ux4u/YapK2KSQsw5P\nNPVoDnwuhO2gs+n82OKcObAQj4mMZHuns67QIyLT2CDWoqtFAeeuZj7OwE5RC+5gqaiW/ZBxjjYw\nLvaON8xe3xtji/xLxzJRvOkEwyYVu3gD5F46bhNrNZFibs7IbY2Ivj3iBJUT60V03CqK67mKRCtE\nprQfb6d5mlYRx0xvlJ3rhY4xRy3gJLEuSeT7MnB2Y1BU5HJhSbqK+F6kbHUxJDKuIn7Drw045zGP\nefy/8Q8KoQ22z/3wywAAAABJRU5ErkJggg==\n", - "text": "Z \u22c5X \u22c5X \u22c5Z \n 4 0 1 2" + "prompt_number": 6, + "text": [ + "Z \u22c5X \u22c5X \u22c5Z ", + " 4 0 1 2" + ] } ], - "collapsed": false, - "prompt_number": 6, - "input": "M3 = Z(4)*X(0)*X(1)*Z(2); M3\n" + "prompt_number": 6 }, { - "source": "These operators should mutually commute.", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "These operators should mutually commute." + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "gate_simp(Commutator(M0,M1).doit())" + ], "language": "python", "outputs": [ { + "latex": [ + "$$0$$" + ], "output_type": "pyout", - "latex": "$$0$$", - "prompt_number": 7, "png": "iVBORw0KGgoAAAANSUhEUgAAAAwAAAASCAYAAABvqT8MAAAABHNCSVQICAgIfAhkiAAAAN1JREFU\nKJHN0i1LRFEQxvGf7i6LrGE3adCoUbAZBT+GzWATi9Vm22D3Q9gtZqNo8WXNgi9BUHBdUMO9F8bD\nlG1OOcwz8z9zeM4wZcwU+RKGeMQbOjjGawa3MMJu0I5whtkM2MYYvaCt4Ac7GXCJ80R/wGmTNKPa\nWMN9AoywWQILKgPeE+ADA3QjsBiKGQD9CIzr8zsBOrHWALf4SpqpXJvgJQIT3NRvLWMeTyp7/3zI\nFZaL5hbWcZ2NPlCtwFzQNuqbtzJggDvsBe0EF7GpXL5VHOKzznvYx3M24Z/EL9XoKBNI+V0xAAAA\nAElFTkSuQmCC\n", - "text": "0" + "prompt_number": 7, + "text": [ + "0" + ] } ], - "collapsed": false, - "prompt_number": 7, - "input": "gate_simp(Commutator(M0,M1).doit())\n" + "prompt_number": 7 }, { - "source": "And square to the identity.", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "And square to the identity." + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "for o in [M0,M1,M2,M3]:", + " display(gate_simp(o*o))" + ], "language": "python", "outputs": [ { + "latex": [ + "$$1$$" + ], "output_type": "display_data", - "latex": "$$1$$", "png": "iVBORw0KGgoAAAANSUhEUgAAAAsAAAASCAYAAACNdSR1AAAABHNCSVQICAgIfAhkiAAAAGBJREFU\nKJHt0bENQGAQhuEnWp1CZQFbqExhOI1BtEbABgoj/AoKkcgfCZ23uUvuvcuXHC9QYI5JKWqMCNdh\ncupLdKiwPInRxi5H+eXX5eyo+d1ijh6T/XsBKwY0TxJ8zAZBcgy8TZqNTgAAAABJRU5ErkJggg==\n", - "text": "1" + "text": [ + "1" + ] }, { + "latex": [ + "$$1$$" + ], "output_type": "display_data", - "latex": "$$1$$", "png": "iVBORw0KGgoAAAANSUhEUgAAAAsAAAASCAYAAACNdSR1AAAABHNCSVQICAgIfAhkiAAAAGBJREFU\nKJHt0bENQGAQhuEnWp1CZQFbqExhOI1BtEbABgoj/AoKkcgfCZ23uUvuvcuXHC9QYI5JKWqMCNdh\ncupLdKiwPInRxi5H+eXX5eyo+d1ijh6T/XsBKwY0TxJ8zAZBcgy8TZqNTgAAAABJRU5ErkJggg==\n", - "text": "1" + "text": [ + "1" + ] }, { + "latex": [ + "$$1$$" + ], "output_type": "display_data", - "latex": "$$1$$", "png": "iVBORw0KGgoAAAANSUhEUgAAAAsAAAASCAYAAACNdSR1AAAABHNCSVQICAgIfAhkiAAAAGBJREFU\nKJHt0bENQGAQhuEnWp1CZQFbqExhOI1BtEbABgoj/AoKkcgfCZ23uUvuvcuXHC9QYI5JKWqMCNdh\ncupLdKiwPInRxi5H+eXX5eyo+d1ijh6T/XsBKwY0TxJ8zAZBcgy8TZqNTgAAAABJRU5ErkJggg==\n", - "text": "1" + "text": [ + "1" + ] }, { + "latex": [ + "$$1$$" + ], "output_type": "display_data", - "latex": "$$1$$", "png": "iVBORw0KGgoAAAANSUhEUgAAAAsAAAASCAYAAACNdSR1AAAABHNCSVQICAgIfAhkiAAAAGBJREFU\nKJHt0bENQGAQhuEnWp1CZQFbqExhOI1BtEbABgoj/AoKkcgfCZ23uUvuvcuXHC9QYI5JKWqMCNdh\ncupLdKiwPInRxi5H+eXX5eyo+d1ijh6T/XsBKwY0TxJ8zAZBcgy8TZqNTgAAAABJRU5ErkJggg==\n", - "text": "1" + "text": [ + "1" + ] } ], - "collapsed": false, - "prompt_number": 8, - "input": "for o in [M0,M1,M2,M3]:\n display(gate_simp(o*o))\n" + "prompt_number": 8 }, { - "source": "

Codewords

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

Codewords

" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "zero = Rational(1,4)*(1+M0)*(1+M1)*(1+M2)*(1+M3)*IntQubit(0, 5); zero" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\frac{1}{4} \\left(1 + Z_{1} X_{2} X_{3} Z_{4}\\right) \\left(1 + Z_{2} X_{3} X_{4} Z_{0}\\right) \\left(1 + Z_{3} X_{4} X_{0} Z_{1}\\right) \\left(1 + Z_{4} X_{0} X_{1} Z_{2}\\right) {\\left|0\\right\\rangle }$$" + ], "output_type": "pyout", - "latex": "$$\\frac{1}{4} \\left(1 + Z_{1} X_{2} X_{3} Z_{4}\\right) \\left(1 + Z_{2} X_{3} X_{4} Z_{0}\\right) \\left(1 + Z_{3} X_{4} X_{0} Z_{1}\\right) \\left(1 + Z_{4} X_{0} X_{1} Z_{2}\\right) {\\left|0\\right\\rangle }$$", - "prompt_number": 9, "png": "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\nhBCC/wPS77xfXVkDTQAAAABJRU5ErkJggg==\n", - "text": "\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u27580\u27e9\n\u239d 1 2 3 4\u23a0 \u239d 2 3 4 0\u23a0 \u239d 3 4 0 1\u23a0 \u239d 4 0 1 2\u23a0 \n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 4" + "prompt_number": 9, + "text": [ + "\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u27580\u27e9", + "\u239d 1 2 3 4\u23a0 \u239d 2 3 4 0\u23a0 \u239d 3 4 0 1\u23a0 \u239d 4 0 1 2\u23a0 ", + "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500", + " 4" + ] } ], - "collapsed": false, - "prompt_number": 9, - "input": "zero = Rational(1,4)*(1+M0)*(1+M1)*(1+M2)*(1+M3)*IntQubit(0, 5); zero\n" + "prompt_number": 9 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "qapply(4*zero)" + ], "language": "python", "outputs": [ { + "latex": [ + "$${\\left|0\\right\\rangle } + {\\left|3\\right\\rangle } - {\\left|5\\right\\rangle } + {\\left|6\\right\\rangle } - {\\left|9\\right\\rangle } - {\\left|10\\right\\rangle } + {\\left|12\\right\\rangle } - {\\left|15\\right\\rangle } + {\\left|17\\right\\rangle } - {\\left|18\\right\\rangle } - {\\left|20\\right\\rangle } - {\\left|23\\right\\rangle } + {\\left|24\\right\\rangle } - {\\left|27\\right\\rangle } - {\\left|29\\right\\rangle } - {\\left|30\\right\\rangle }$$" + ], "output_type": "pyout", - "latex": "$${\\left|0\\right\\rangle } + {\\left|3\\right\\rangle } - {\\left|5\\right\\rangle } + {\\left|6\\right\\rangle } - {\\left|9\\right\\rangle } - {\\left|10\\right\\rangle } + {\\left|12\\right\\rangle } - {\\left|15\\right\\rangle } + {\\left|17\\right\\rangle } - {\\left|18\\right\\rangle } - {\\left|20\\right\\rangle } - {\\left|23\\right\\rangle } + {\\left|24\\right\\rangle } - {\\left|27\\right\\rangle } - {\\left|29\\right\\rangle } - {\\left|30\\right\\rangle }$$", - "prompt_number": 10, "png": "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\n", - "text": "\u27580\u27e9 + \u27583\u27e9 - \u27585\u27e9 + \u27586\u27e9 - \u27589\u27e9 - \u275810\u27e9 + \u275812\u27e9 - \u275815\u27e9 + \u275817\u27e9 - \u275818\u27e9 - \u275820\u27e9 - \u275823\u27e9 +\n \u275824\u27e9 - \u275827\u27e9 - \u275829\u27e9 - \u275830\u27e9" + "prompt_number": 10, + "text": [ + "\u27580\u27e9 + \u27583\u27e9 - \u27585\u27e9 + \u27586\u27e9 - \u27589\u27e9 - \u275810\u27e9 + \u275812\u27e9 - \u275815\u27e9 + \u275817\u27e9 - \u275818\u27e9 - \u275820\u27e9 - \u275823\u27e9 +", + " \u275824\u27e9 - \u275827\u27e9 - \u275829\u27e9 - \u275830\u27e9" + ] } ], - "collapsed": false, - "prompt_number": 10, - "input": "qapply(4*zero)\n" + "prompt_number": 10 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "one = Rational(1,4)*(1+M0)*(1+M1)*(1+M2)*(1+M3)*IntQubit(2**5-1, 5); one" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\frac{1}{4} \\left(1 + Z_{1} X_{2} X_{3} Z_{4}\\right) \\left(1 + Z_{2} X_{3} X_{4} Z_{0}\\right) \\left(1 + Z_{3} X_{4} X_{0} Z_{1}\\right) \\left(1 + Z_{4} X_{0} X_{1} Z_{2}\\right) {\\left|31\\right\\rangle }$$" + ], "output_type": "pyout", - "latex": "$$\\frac{1}{4} \\left(1 + Z_{1} X_{2} X_{3} Z_{4}\\right) \\left(1 + Z_{2} X_{3} X_{4} Z_{0}\\right) \\left(1 + Z_{3} X_{4} X_{0} Z_{1}\\right) \\left(1 + Z_{4} X_{0} X_{1} Z_{2}\\right) {\\left|31\\right\\rangle }$$", - "prompt_number": 11, "png": "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\n49kSjUC+pQAAAABJRU5ErkJggg==\n", - "text": "\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u275831\u27e9\n\u239d 1 2 3 4\u23a0 \u239d 2 3 4 0\u23a0 \u239d 3 4 0 1\u23a0 \u239d 4 0 1 2\u23a0 \n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 4" + "prompt_number": 11, + "text": [ + "\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u239b1 + Z \u22c5X \u22c5X \u22c5Z \u239e\u22c5\u275831\u27e9", + "\u239d 1 2 3 4\u23a0 \u239d 2 3 4 0\u23a0 \u239d 3 4 0 1\u23a0 \u239d 4 0 1 2\u23a0 ", + "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500", + " 4" + ] } ], - "collapsed": false, - "prompt_number": 11, - "input": "one = Rational(1,4)*(1+M0)*(1+M1)*(1+M2)*(1+M3)*IntQubit(2**5-1, 5); one\n" + "prompt_number": 11 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "qapply(4*one)" + ], "language": "python", "outputs": [ { + "latex": [ + "$$- {\\left|1\\right\\rangle } - {\\left|2\\right\\rangle } - {\\left|4\\right\\rangle } + {\\left|7\\right\\rangle } - {\\left|8\\right\\rangle } - {\\left|11\\right\\rangle } - {\\left|13\\right\\rangle } + {\\left|14\\right\\rangle } - {\\left|16\\right\\rangle } + {\\left|19\\right\\rangle } - {\\left|21\\right\\rangle } - {\\left|22\\right\\rangle } + {\\left|25\\right\\rangle } - {\\left|26\\right\\rangle } + {\\left|28\\right\\rangle } + {\\left|31\\right\\rangle }$$" + ], "output_type": "pyout", - "latex": "$$- {\\left|1\\right\\rangle } - {\\left|2\\right\\rangle } - {\\left|4\\right\\rangle } + {\\left|7\\right\\rangle } - {\\left|8\\right\\rangle } - {\\left|11\\right\\rangle } - {\\left|13\\right\\rangle } + {\\left|14\\right\\rangle } - {\\left|16\\right\\rangle } + {\\left|19\\right\\rangle } - {\\left|21\\right\\rangle } - {\\left|22\\right\\rangle } + {\\left|25\\right\\rangle } - {\\left|26\\right\\rangle } + {\\left|28\\right\\rangle } + {\\left|31\\right\\rangle }$$", - "prompt_number": 12, "png": "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\n", - "text": "-\u27581\u27e9 - \u27582\u27e9 - \u27584\u27e9 + \u27587\u27e9 - \u27588\u27e9 - \u275811\u27e9 - \u275813\u27e9 + \u275814\u27e9 - \u275816\u27e9 + \u275819\u27e9 - \u275821\u27e9 - \u275822\u27e9 \n+ \u275825\u27e9 - \u275826\u27e9 + \u275828\u27e9 + \u275831\u27e9" + "prompt_number": 12, + "text": [ + "-\u27581\u27e9 - \u27582\u27e9 - \u27584\u27e9 + \u27587\u27e9 - \u27588\u27e9 - \u275811\u27e9 - \u275813\u27e9 + \u275814\u27e9 - \u275816\u27e9 + \u275819\u27e9 - \u275821\u27e9 - \u275822\u27e9 ", + "+ \u275825\u27e9 - \u275826\u27e9 + \u275828\u27e9 + \u275831\u27e9" + ] } ], - "collapsed": false, - "prompt_number": 12, - "input": "qapply(4*one)\n" + "prompt_number": 12 }, { - "source": "

The encoding circuit

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

The encoding circuit

" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "encoding_circuit = H(3)*H(4)*CNOT(2,0)*CNOT(3,0)*CNOT(4,0)*H(1)*H(4)*\\", + " CNOT(2,1)*CNOT(4,1)*H(2)*CNOT(3,2)*CNOT(4,2)*H(3)*\\", + " H(4)*CNOT(4, 3)*Z(4)*H(4)*Z(4)" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 13, - "input": "encoding_circuit = H(3)*H(4)*CNOT(2,0)*CNOT(3,0)*CNOT(4,0)*H(1)*H(4)*\\\n CNOT(2,1)*CNOT(4,1)*H(2)*CNOT(3,2)*CNOT(4,2)*H(3)*\\\n H(4)*CNOT(4, 3)*Z(4)*H(4)*Z(4)\n" + "prompt_number": 13 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "circuit_plot(encoding_circuit, nqubits=5, scale=0.5)" + ], "language": "python", "outputs": [ { "output_type": "pyout", "prompt_number": 14, - "text": "<sympy.physics.quantum.circuitplot.CircuitPlot object at 0x38a6950>" + "text": [ + "<sympy.physics.quantum.circuitplot.CircuitPlot object at 0x38a6950>" + ] }, { "output_type": "display_data", "png": "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\nPol+/frhq6++0jvW/dtY9YnXUPBWVCIiqtWVK1fQvXt3pKamolu3bjXKtU0bZGZmYtiwYfj111+h\nUql0jpcOUGQtAAACtklEQVSdnY2hQ4ciIyMD7dq10zne3r178fzzz+P333+v8RTR2iQnJyMiIgIZ\nGRka+6kt3oYNG/Df//4X2dnZXI/4F7xyQUREtXriiSfw2WefYcSIETh//rxOdX7++WcEBwdjw4YN\neiUWANCjRw+88cYbGD58OK5evapTnaNHj2L69OnYtm2bXokFAAQEBGDMmDEICgrS+a6Pr7/+Gm+9\n9Ra2bNnCxEITQUREpIN169aJVq1aidWrV4vbt28/+P2f/5SUlJSIlStXCmdnZ7F582aDY6nVahEV\nFSXatWsnvvjiC3H37l2N8QoKCkRUVJRwdnYWycnJBserrq4W8+fPF56enmLnzp2iqqpKY7zLly+L\nRYsWidatW4uMjAyD41k7JhdERKSztLQ0ERwcLFQqlZg3b55ISEgQAMSXX34p5syZI5ycnMT48eNF\nZmamLPH27dsnhgwZIlxcXMSbb74pNm/eLACI+Ph4MW3aNPHYY4+J6dOnizNnzsgSLzExUfTv31+0\nbdtWvPfee2LLli0CgNi4caMYO3ascHJyEhEREeLixYuyxLNWXHNBRER6y8nJwfr163Hu3Dls2bIF\nkyZNgpeXF2bNmoU2bdrIHu/8+fOIjY3FhQsXsHXrVkyePBm9evXCzJkz0aJFC9njnTp1CnFxcbh8\n+TK2bduGKVOmoH///pg6dSocHR1lj2dtmFwQERGRrLigk4iIiGTF5IKIiIhkxeSCiIiIZMXkgoiI\niGTF5IKIiIhkxeSCiIiIZMXkgoiIiGTF5IKIiIhkxeSCiIiIZMXkgoiIiGTF5IKIiIhkxeSCiIiI\nZMXkgoiIiGTF5IKIiIhkxeSCiIiIZMXkgoiIiGTF5IKIiIhkxeSCiIiIZMXkgoiIiGTF5IKIiIhk\nxeSCiIiIZMXkgoiIiGTF5IKIiIhk9X8OQhhdOtBzlgAAAABJRU5ErkJggg==\n" } ], - "collapsed": false, - "prompt_number": 14, - "input": "circuit_plot(encoding_circuit, nqubits=5, scale=0.5)" + "prompt_number": 14 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "represent(4*encoding_circuit, nqubits=5)" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\left(\\begin{smallmatrix}1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0\\\\0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1\\\\0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1\\\\1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0\\\\0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1\\\\-1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0\\\\1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0\\\\0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1\\\\0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1\\\\-1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0\\\\-1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0\\\\0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1\\\\1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0\\\\0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1\\\\0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1\\\\-1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0\\\\0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1\\\\1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0\\\\-1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0\\\\0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1\\\\-1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0\\\\0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1\\\\0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1\\\\-1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0\\\\1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0\\\\0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1\\\\0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1\\\\-1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0\\\\0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1\\\\-1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0\\\\-1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0\\\\0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1\\end{smallmatrix}\\right)$$" + ], "output_type": "pyout", - "latex": "$$\\left(\\begin{smallmatrix}1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0\\\\0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1\\\\0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1\\\\1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0\\\\0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1\\\\-1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0\\\\1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0\\\\0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1\\\\0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1\\\\-1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0\\\\-1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0\\\\0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1\\\\1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0\\\\0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1\\\\0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1\\\\-1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0\\\\0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1\\\\1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0\\\\-1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0\\\\0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1\\\\-1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0\\\\0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1\\\\0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1\\\\-1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0\\\\1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & -1 & 0 & -1 & 0 & -1 & 0 & -1 & 0\\\\0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 0 & -1 & 0 & -1 & 0 & -1 & 0 & -1\\\\0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1\\\\-1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & 1 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0\\\\0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1\\\\-1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 & -1 & 0 & -1 & 0 & 1 & 0 & 1 & 0\\\\-1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0\\\\0 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & -1 & 0 & 1 & 0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 & 0 & -1 & 0 & 1 & 0 & 1 & 0 & -1\\end{smallmatrix}\\right)$$", "prompt_number": 15, - "text": "\u23a11 0 1 0 1 0 1 0 0 -1 0 -1 0 -1 0 -1 0 -1 0 -\n\u23a2 \n\u23a20 1 0 1 0 1 0 1 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0\n\u23a2 \n\u23a20 1 0 -1 0 1 0 -1 -1 0 1 0 -1 0 1 0 -1 0 1 0\n\u23a2 \n\u23a21 0 -1 0 1 0 -1 0 0 -1 0 1 0 -1 0 1 0 -1 0 1\n\u23a2 \n\u23a20 -1 0 -1 0 1 0 1 1 0 1 0 -1 0 -1 0 -1 0 -1 0\n\u23a2 \n\u23a2-1 0 -1 0 1 0 1 0 0 1 0 1 0 -1 0 -1 0 -1 0 -\n\u23a2 \n\u23a21 0 -1 0 -1 0 1 0 0 -1 0 1 0 1 0 -1 0 1 0 -\n\u23a2 \n\u23a20 1 0 -1 0 -1 0 1 -1 0 1 0 1 0 -1 0 1 0 -1 0\n\u23a2 \n\u23a20 -1 0 -1 0 -1 0 -1 1 0 1 0 1 0 1 0 -1 0 -1 0\n\u23a2 \n\u23a2-1 0 -1 0 -1 0 -1 0 0 1 0 1 0 1 0 1 0 -1 0 -\n\u23a2 \n\u23a2-1 0 1 0 -1 0 1 0 0 1 0 -1 0 1 0 -1 0 -1 0 1\n\u23a2 \n\u23a20 -1 0 1 0 -1 0 1 1 0 -1 0 1 0 -1 0 -1 0 1 0\n\u23a2 \n\u23a21 0 1 0 -1 0 -1 0 0 -1 0 -1 0 1 0 1 0 -1 0 -\n\u23a2 \n\u23a20 1 0 1 0 -1 0 -1 -1 0 -1 0 1 0 1 0 -1 0 -1 0\n\u23a2 \n\u23a20 -1 0 1 0 1 0 -1 1 0 -1 0 -1 0 1 0 1 0 -1 0\n\u23a2 \n\u23a2-1 0 1 0 1 0 -1 0 0 1 0 -1 0 -1 0 1 0 1 0 -\n\u23a2 \n\u23a20 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 -1 0 -1 0\n\u23a2 \n\u23a21 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 -1 0 -\n\u23a2 \n\u23a2-1 0 1 0 -1 0 1 0 0 -1 0 1 0 -1 0 1 0 1 0 -\n\u23a2 \n\u23a20 -1 0 1 0 -1 0 1 -1 0 1 0 -1 0 1 0 1 0 -1 0\n\u23a2 \n\u23a2-1 0 -1 0 1 0 1 0 0 -1 0 -1 0 1 0 1 0 -1 0 -\n\u23a2 \n\u23a20 -1 0 -1 0 1 0 1 -1 0 -1 0 1 0 1 0 -1 0 -1 0\n\u23a2 \n\u23a20 -1 0 1 0 1 0 -1 -1 0 1 0 1 0 -1 0 -1 0 1 0\n\u23a2 \n\u23a2-1 0 1 0 1 0 -1 0 0 -1 0 1 0 1 0 -1 0 -1 0 1\n\u23a2 \n\u23a21 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1\n\u23a2 \n\u23a20 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0\n\u23a2 \n\u23a20 -1 0 1 0 -1 0 1 -1 0 1 0 -1 0 1 0 -1 0 1 0\n\u23a2 \n\u23a2-1 0 1 0 -1 0 1 0 0 -1 0 1 0 -1 0 1 0 -1 0 1\n\u23a2 \n\u23a20 -1 0 -1 0 1 0 1 -1 0 -1 0 1 0 1 0 1 0 1 0\n\u23a2 \n\u23a2-1 0 -1 0 1 0 1 0 0 -1 0 -1 0 1 0 1 0 1 0 1\n\u23a2 \n\u23a2-1 0 1 0 1 0 -1 0 0 -1 0 1 0 1 0 -1 0 1 0 -\n\u23a2 \n\u23a30 -1 0 1 0 1 0 -1 -1 0 1 0 1 0 -1 0 1 0 -1 0\n\n1 0 -1 0 -1 -1 0 -1 0 -1 0 -1 0 \u23a4\n \u23a5\n -1 0 -1 0 0 -1 0 -1 0 -1 0 -1\u23a5\n \u23a5\n -1 0 1 0 0 -1 0 1 0 -1 0 1 \u23a5\n \u23a5\n 0 -1 0 1 -1 0 1 0 -1 0 1 0 \u23a5\n \u23a5\n 1 0 1 0 0 -1 0 -1 0 1 0 1 \u23a5\n \u23a5\n1 0 1 0 1 -1 0 -1 0 1 0 1 0 \u23a5\n \u23a5\n1 0 -1 0 1 1 0 -1 0 -1 0 1 0 \u23a5\n \u23a5\n -1 0 1 0 0 1 0 -1 0 -1 0 1 \u23a5\n \u23a5\n -1 0 -1 0 0 -1 0 -1 0 -1 0 -1\u23a5\n \u23a5\n1 0 -1 0 -1 -1 0 -1 0 -1 0 -1 0 \u23a5\n \u23a5\n 0 -1 0 1 -1 0 1 0 -1 0 1 0 \u23a5\n \u23a5\n -1 0 1 0 0 -1 0 1 0 -1 0 1 \u23a5\n \u23a5\n1 0 1 0 1 -1 0 -1 0 1 0 1 0 \u23a5\n \u23a5\n 1 0 1 0 0 -1 0 -1 0 1 0 1 \u23a5\n \u23a5\n -1 0 1 0 0 1 0 -1 0 -1 0 1 \u23a5\n \u23a5\n1 0 -1 0 1 1 0 -1 0 -1 0 1 0 \u23a5\n \u23a5\n -1 0 -1 0 0 1 0 1 0 1 0 1 \u23a5\n \u23a5\n1 0 -1 0 -1 1 0 1 0 1 0 1 0 \u23a5\n \u23a5\n1 0 1 0 -1 -1 0 1 0 -1 0 1 0 \u23a5\n \u23a5\n 1 0 -1 0 0 -1 0 1 0 -1 0 1 \u23a5\n \u23a5\n1 0 1 0 1 1 0 1 0 -1 0 -1 0 \u23a5\n \u23a5\n 1 0 1 0 0 1 0 1 0 -1 0 -1\u23a5\n \u23a5\n 1 0 -1 0 0 1 0 -1 0 -1 0 1 \u23a5\n \u23a5\n 0 1 0 -1 1 0 -1 0 -1 0 1 0 \u23a5\n \u23a5\n 0 1 0 1 -1 0 -1 0 -1 0 -1 0 \u23a5\n \u23a5\n 1 0 1 0 0 -1 0 -1 0 -1 0 -1\u23a5\n \u23a5\n -1 0 1 0 0 1 0 -1 0 1 0 -1\u23a5\n \u23a5\n 0 -1 0 1 1 0 -1 0 1 0 -1 0 \u23a5\n \u23a5\n -1 0 -1 0 0 -1 0 -1 0 1 0 1 \u23a5\n \u23a5\n 0 -1 0 -1 -1 0 -1 0 1 0 1 0 \u23a5\n \u23a5\n1 0 -1 0 1 -1 0 1 0 1 0 -1 0 \u23a5\n \u23a5\n -1 0 1 0 0 -1 0 1 0 1 0 -1\u23a6" + "text": [ + "\u23a11 0 1 0 1 0 1 0 0 -1 0 -1 0 -1 0 -1 0 -1 0 -", + "\u23a2 ", + "\u23a20 1 0 1 0 1 0 1 -1 0 -1 0 -1 0 -1 0 -1 0 -1 0", + "\u23a2 ", + "\u23a20 1 0 -1 0 1 0 -1 -1 0 1 0 -1 0 1 0 -1 0 1 0", + "\u23a2 ", + "\u23a21 0 -1 0 1 0 -1 0 0 -1 0 1 0 -1 0 1 0 -1 0 1", + "\u23a2 ", + "\u23a20 -1 0 -1 0 1 0 1 1 0 1 0 -1 0 -1 0 -1 0 -1 0", + "\u23a2 ", + "\u23a2-1 0 -1 0 1 0 1 0 0 1 0 1 0 -1 0 -1 0 -1 0 -", + "\u23a2 ", + "\u23a21 0 -1 0 -1 0 1 0 0 -1 0 1 0 1 0 -1 0 1 0 -", + "\u23a2 ", + "\u23a20 1 0 -1 0 -1 0 1 -1 0 1 0 1 0 -1 0 1 0 -1 0", + "\u23a2 ", + "\u23a20 -1 0 -1 0 -1 0 -1 1 0 1 0 1 0 1 0 -1 0 -1 0", + "\u23a2 ", + "\u23a2-1 0 -1 0 -1 0 -1 0 0 1 0 1 0 1 0 1 0 -1 0 -", + "\u23a2 ", + "\u23a2-1 0 1 0 -1 0 1 0 0 1 0 -1 0 1 0 -1 0 -1 0 1", + "\u23a2 ", + "\u23a20 -1 0 1 0 -1 0 1 1 0 -1 0 1 0 -1 0 -1 0 1 0", + "\u23a2 ", + "\u23a21 0 1 0 -1 0 -1 0 0 -1 0 -1 0 1 0 1 0 -1 0 -", + "\u23a2 ", + "\u23a20 1 0 1 0 -1 0 -1 -1 0 -1 0 1 0 1 0 -1 0 -1 0", + "\u23a2 ", + "\u23a20 -1 0 1 0 1 0 -1 1 0 -1 0 -1 0 1 0 1 0 -1 0", + "\u23a2 ", + "\u23a2-1 0 1 0 1 0 -1 0 0 1 0 -1 0 -1 0 1 0 1 0 -", + "\u23a2 ", + "\u23a20 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 -1 0 -1 0", + "\u23a2 ", + "\u23a21 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 -1 0 -", + "\u23a2 ", + "\u23a2-1 0 1 0 -1 0 1 0 0 -1 0 1 0 -1 0 1 0 1 0 -", + "\u23a2 ", + "\u23a20 -1 0 1 0 -1 0 1 -1 0 1 0 -1 0 1 0 1 0 -1 0", + "\u23a2 ", + "\u23a2-1 0 -1 0 1 0 1 0 0 -1 0 -1 0 1 0 1 0 -1 0 -", + "\u23a2 ", + "\u23a20 -1 0 -1 0 1 0 1 -1 0 -1 0 1 0 1 0 -1 0 -1 0", + "\u23a2 ", + "\u23a20 -1 0 1 0 1 0 -1 -1 0 1 0 1 0 -1 0 -1 0 1 0", + "\u23a2 ", + "\u23a2-1 0 1 0 1 0 -1 0 0 -1 0 1 0 1 0 -1 0 -1 0 1", + "\u23a2 ", + "\u23a21 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1", + "\u23a2 ", + "\u23a20 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0", + "\u23a2 ", + "\u23a20 -1 0 1 0 -1 0 1 -1 0 1 0 -1 0 1 0 -1 0 1 0", + "\u23a2 ", + "\u23a2-1 0 1 0 -1 0 1 0 0 -1 0 1 0 -1 0 1 0 -1 0 1", + "\u23a2 ", + "\u23a20 -1 0 -1 0 1 0 1 -1 0 -1 0 1 0 1 0 1 0 1 0", + "\u23a2 ", + "\u23a2-1 0 -1 0 1 0 1 0 0 -1 0 -1 0 1 0 1 0 1 0 1", + "\u23a2 ", + "\u23a2-1 0 1 0 1 0 -1 0 0 -1 0 1 0 1 0 -1 0 1 0 -", + "\u23a2 ", + "\u23a30 -1 0 1 0 1 0 -1 -1 0 1 0 1 0 -1 0 1 0 -1 0", + "", + "1 0 -1 0 -1 -1 0 -1 0 -1 0 -1 0 \u23a4", + " \u23a5", + " -1 0 -1 0 0 -1 0 -1 0 -1 0 -1\u23a5", + " \u23a5", + " -1 0 1 0 0 -1 0 1 0 -1 0 1 \u23a5", + " \u23a5", + " 0 -1 0 1 -1 0 1 0 -1 0 1 0 \u23a5", + " \u23a5", + " 1 0 1 0 0 -1 0 -1 0 1 0 1 \u23a5", + " \u23a5", + "1 0 1 0 1 -1 0 -1 0 1 0 1 0 \u23a5", + " \u23a5", + "1 0 -1 0 1 1 0 -1 0 -1 0 1 0 \u23a5", + " \u23a5", + " -1 0 1 0 0 1 0 -1 0 -1 0 1 \u23a5", + " \u23a5", + " -1 0 -1 0 0 -1 0 -1 0 -1 0 -1\u23a5", + " \u23a5", + "1 0 -1 0 -1 -1 0 -1 0 -1 0 -1 0 \u23a5", + " \u23a5", + " 0 -1 0 1 -1 0 1 0 -1 0 1 0 \u23a5", + " \u23a5", + " -1 0 1 0 0 -1 0 1 0 -1 0 1 \u23a5", + " \u23a5", + "1 0 1 0 1 -1 0 -1 0 1 0 1 0 \u23a5", + " \u23a5", + " 1 0 1 0 0 -1 0 -1 0 1 0 1 \u23a5", + " \u23a5", + " -1 0 1 0 0 1 0 -1 0 -1 0 1 \u23a5", + " \u23a5", + "1 0 -1 0 1 1 0 -1 0 -1 0 1 0 \u23a5", + " \u23a5", + " -1 0 -1 0 0 1 0 1 0 1 0 1 \u23a5", + " \u23a5", + "1 0 -1 0 -1 1 0 1 0 1 0 1 0 \u23a5", + " \u23a5", + "1 0 1 0 -1 -1 0 1 0 -1 0 1 0 \u23a5", + " \u23a5", + " 1 0 -1 0 0 -1 0 1 0 -1 0 1 \u23a5", + " \u23a5", + "1 0 1 0 1 1 0 1 0 -1 0 -1 0 \u23a5", + " \u23a5", + " 1 0 1 0 0 1 0 1 0 -1 0 -1\u23a5", + " \u23a5", + " 1 0 -1 0 0 1 0 -1 0 -1 0 1 \u23a5", + " \u23a5", + " 0 1 0 -1 1 0 -1 0 -1 0 1 0 \u23a5", + " \u23a5", + " 0 1 0 1 -1 0 -1 0 -1 0 -1 0 \u23a5", + " \u23a5", + " 1 0 1 0 0 -1 0 -1 0 -1 0 -1\u23a5", + " \u23a5", + " -1 0 1 0 0 1 0 -1 0 1 0 -1\u23a5", + " \u23a5", + " 0 -1 0 1 1 0 -1 0 1 0 -1 0 \u23a5", + " \u23a5", + " -1 0 -1 0 0 -1 0 -1 0 1 0 1 \u23a5", + " \u23a5", + " 0 -1 0 -1 -1 0 -1 0 1 0 1 0 \u23a5", + " \u23a5", + "1 0 -1 0 1 -1 0 1 0 1 0 -1 0 \u23a5", + " \u23a5", + " -1 0 1 0 0 -1 0 1 0 1 0 -1\u23a6" + ] } ], - "collapsed": false, - "prompt_number": 15, - "input": "represent(4*encoding_circuit, nqubits=5)" + "prompt_number": 15 } ] } diff --git a/docs/examples/notebooks/qft.ipynb b/docs/examples/notebooks/qft.ipynb index 9a74d60..2e0e50a 100644 --- a/docs/examples/notebooks/qft.ipynb +++ b/docs/examples/notebooks/qft.ipynb @@ -1,162 +1,348 @@ { - "nbformat": 2, "metadata": { "name": "qft" }, + "nbformat": 2, "worksheets": [ { "cells": [ { - "source": "

Quantum Fourier Transform

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

Quantum Fourier Transform

" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "%load_ext sympyprinting" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 1, - "input": "%load_ext sympyprinting" + "prompt_number": 1 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "from sympy import sqrt, symbols, Rational", + "from sympy import expand, Eq, Symbol, simplify, exp, sin", + "from sympy.physics.quantum import *", + "from sympy.physics.quantum.qubit import *", + "from sympy.physics.quantum.gate import *", + "from sympy.physics.quantum.grover import *", + "from sympy.physics.quantum.qft import QFT, IQFT, Fourier", + "from sympy.physics.quantum.circuitplot import circuit_plot" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 2, - "input": "from sympy import sqrt, symbols, Rational\nfrom sympy import expand, Eq, Symbol, simplify, exp, sin\nfrom sympy.physics.quantum import *\nfrom sympy.physics.quantum.qubit import *\nfrom sympy.physics.quantum.gate import *\nfrom sympy.physics.quantum.grover import *\nfrom sympy.physics.quantum.qft import QFT, IQFT, Fourier\nfrom sympy.physics.quantum.circuitplot import circuit_plot" + "prompt_number": 2 }, { - "source": "QFT is useful for a quantum algorithm for factoring numbers which is exponentially faster than what is thought to be possible on a classical machine.
\nThe transform does a DFT on the state of a quantum system
\nThere is a simple decomposition of the QFT in terms of a few elementary gates.", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "QFT is useful for a quantum algorithm for factoring numbers which is exponentially faster than what is thought to be possible on a classical machine.
", + "The transform does a DFT on the state of a quantum system
", + "There is a simple decomposition of the QFT in terms of a few elementary gates." + ] }, { - "source": "

QFT Gate and Circuit

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

QFT Gate and Circuit

" + ] }, { - "source": "Build a 3 qubit QFT and decompose it into primitive gates.", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Build a 3 qubit QFT and decompose it into primitive gates." + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "fourier = QFT(0,3).decompose(); fourier" + ], "language": "python", "outputs": [ { + "latex": [ + "$$SWAP_{0,2} H_{0} C_{0}{\\left(S_{1}\\right)} H_{1} C_{0}{\\left(T_{2}\\right)} C_{1}{\\left(S_{2}\\right)} H_{2}$$" + ], "output_type": "pyout", - "latex": "$$SWAP_{0,2} H_{0} C_{0}{\\left(S_{1}\\right)} H_{1} C_{0}{\\left(T_{2}\\right)} C_{1}{\\left(S_{2}\\right)} H_{2}$$", - "prompt_number": 3, "png": "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\n", - "text": "SWAP \u22c5H \u22c5C \u239bS \u239e\u22c5H \u22c5C \u239bT \u239e\u22c5C \u239bS \u239e\u22c5H \n 0,2 0 0\u239d 1\u23a0 1 0\u239d 2\u23a0 1\u239d 2\u23a0 2" + "prompt_number": 3, + "text": [ + "SWAP \u22c5H \u22c5C \u239bS \u239e\u22c5H \u22c5C \u239bT \u239e\u22c5C \u239bS \u239e\u22c5H ", + " 0,2 0 0\u239d 1\u23a0 1 0\u239d 2\u23a0 1\u239d 2\u23a0 2" + ] } ], - "collapsed": false, - "prompt_number": 3, - "input": "fourier = QFT(0,3).decompose(); fourier\n" + "prompt_number": 3 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "circuit_plot(fourier, nqubits=3)" + ], "language": "python", "outputs": [ { "output_type": "pyout", "prompt_number": 4, - "text": "<sympy.physics.quantum.circuitplot.CircuitPlot object at 0x4992910>" + "text": [ + "<sympy.physics.quantum.circuitplot.CircuitPlot object at 0x4992910>" + ] }, { "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAa8AAADFCAYAAADjc32JAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEnhJREFUeJzt3X9MVfXjx/HXuZeuAiECSZlOizkXGjVrECEgQbq0WWHa\nomXpVpNpzbIflLVafxi12qzW/FSzH1t/kJm1Ya5mTn7IbentF7OoGFFiq8RMELho/DjfP5p8Y9yL\ngJd77vv6fGznn/PWw+vNkfvivM+5V8u2bVsAABjE5XQAAABGi/ICABiH8gIAGIfyAgAYh/ICABiH\n8gIAGIfyAgAYh/ICABiH8gIAGIfyAgAYh/ICABiH8gIAGIfyAgAYh/ICABiH8gIAGIfyAgAYh/IC\nABiH8gIAGIfyAgAYh/ICABiH8gIAGIfyAgAYh/ICABiH8gIAGIfyAgAYh/ICABgnKsorOTlZlmWN\n25acnOz0FAeEcq6RNC9pfM5jpM0RQGhYtm3bToc4W5ZlaTynMd7HH41QZomkeUnjkyfS5gggNKLi\nygsAcG6hvAAAxqG8AADGifryWrZsmdLT0+VyueTxeDRv3jytWbNGknTo0CEVFhZq+vTpcrlcSkxM\nVFZWlrZs2eJw6rHp7e3VK6+8opUrV6qkpETFxcV666231NXVpaVLlzodb1QOHjwol8slt9utOXPm\naPHixbr22msHzuN1112nxYsXKycnR/Hx8XK73ero6HA6NoBwsaPAmabxxRdf2JZl2Q888EDA8fLy\nctuyLPv9998f0/HDKVgWv99v33jjjfamTZsG7S8vL7dnz55tl5SUjPhYTvlvno0bN9orVqywOzs7\nB/Z9//33tmVZ9urVqwf9vYMHD9qTJ08+4zEBRI+ov/KSpNraWknSkiVLAo5XVVXJ7XZr0aJF4YwV\nUnfddZemTZumjRs3Dtr/2GOPqbOzU9dff71Dycbm66+/VkVFheLj4wf21dTUSJIWLlw46M9efvnl\nmj9/fljzAecKv98/ZF9/f7+6u7sdSPP/zonyqqmpkcfjUW5u7pCxnp4eeb1eZWRkKDEx0YF0Z6+9\nvV2VlZVasWJFwPGMjAwVFRWFOdXYffPNN8rPz5fb7R60//QvIfn5+YP29/X16YILLghbPuBc0dXV\npblz5w787En/Fte9996rp59+2sFk50B59ff3y+v1KjMzU7GxsUPGfT6f/H7/kBdEk9TV1amnp0eN\njY0Bx/Py8jRz5swwpxq7o0ePatWqVUP219bW6tJLL9W0adMG7e/p6Ql6VQ1g7OLj47V161YtX75c\ntbW1A8XV1NSkp556ytFsMY5+9TCor69Xe3u7CgoKAo5XVVVJkhYsWBDGVKGVnZ0tt9utDRs26Jdf\nftEtt9yia665RjEx/57eJ554wuGEoxNo+bapqUl//PGH7r777iFjEydO1G233RaOaMA5p6ioSBUV\nFVq+fLkyMzPV2dmpXbt26fzzz3c2WLCbYZKM2oJ56aWXbMuy7KysLPuGG24YsqWkpNgul8v+66+/\ngh7D6bmNZK4vvPCCPWHCBNuyLNuyLDs+Pt5et26d3dbWZsy8hjuPb775pm1Zlv32228H/TOmzJGN\nje3st6BXXrZBH6ljWVbQsZqaGsXExKiqqkpxcXGDxvr6+jRp0iSlp6crJSVl2K8RKd+PYHN9+OGH\ntXTpUlVUVKiqqkpffPGFtmzZoiNHjmj79u1Bjxcp85KGP4/B7neNRCTNETDNf5cKa2trNWXKFH3w\nwQeO32qJ6s82tG1bqampuuSSS+Tz+YaMHzhwQNnZ2SotLR32vV2R9Pl4I83S0NCgxYsX688//1RH\nR4c8Hs+YjxUuw+VJS0tTT0+PDh8+HLJjAhjef4tr165dSkhI0J49e1RSUuJ4gUX1AxsNDQ06duyY\n8vLyAo7X1dVJMvt+1/PPPx9w/5w5c3THHXdIMv/K47ffftOvv/4a9DwCGB8nT55UUlLSoHtcRUVF\neu+999Tc3Oxotqgur9NLTYEekZckr9craWxLUZGgs7NT1dXVQcdPnDihq6++WhMmTAhfqHFwNkuG\nAMYuLi5OL7744pCHMwoLCwM+ERxOUV1eNTU1sixr2PKaNWuWpk6dGuZkobFv3z7t2bMn4G9Ara2t\n2rFjh8rLyx1IFlqny8vkK2QAoRW15XXq1ClVV1crLS1NqampQ8br6+vV2tpq9Ccz7N27V2lpaSor\nK9MPP/wwsL+5uVk333yzysrKjH/B9/v9+uyzzzR58mSlp6c7HQdAhIi693m1tLRo5cqVOnz4sI4e\nParjx48rNzdXd955p0pLS7Vz506Vl5erqalJlmWpsrJSBQUFevbZZ5WTk+N0/FE5cuSI9u/fr2+/\n/Vbr169XW1ubUlJSFBsbq82bNys7O9vpiGNi27aKi4vV0dGh5uZmtbS0SJKysrI0efJk3XPPPbyv\nCzjHRfXThqYcfzT4n5SdPyZwroqkn6eoXTYEAEQvygsAYJyouec13KcznK2kpKRxO/ZYhGqukTYv\nKfTnMRLnCODsRUV5RcoabDiMZK6RtC49GiPNbOr8AIQOy4YAAONQXgAA41BeAADjUF4AAONQXgAA\n41BeAADjUF4AAONQXgAA41BeAADjUF4AAONQXgAA41BeAADjUF4AAONQXgAA41BeAADjUF4AAONQ\nXgAA41BeAADjUF4AAONQXgAA41BeAADjUF4AAONQXgAA41BeAADjUF4AAONQXgAA41BeAADjUF4A\nAONQXgAA41BeAADjUF4AAONQXgAA41BewDhLTk6WZVnjtiUnJzs9RUmhnWekzAmRy7Jt23Y6BELL\nsixF82k1bX7jnTdSvh+hzBEpc8JgkXReuPICABiH8gIAGIfyAhyybNkypaeny+VyyePxaN68eVqz\nZo0k6dChQyosLNT06dPlcrmUmJiorKwsbdmyxeHUY9fb26tXXnlFK1euVElJiYqLi/XWW2+pq6tL\nS5cudToeDEN5AQ758MMP9c4770iS1q1bp2+++Uavv/66JGnmzJnau3ev7rvvPknS1q1bdeDAAa1d\nu9apuGelu7tbt9xyizo7O/Xuu++qoqJCH330kVpbW3XVVVcpISHB6YgwDOUFOKi2tlaStGTJkoDj\nVVVVcrvdWrRoUThjhdxdd92ladOmaePGjYP2P/bYY+rs7NT111/vUDKYKsbpAAit1tZWSVJPT4/O\nO+88h9PgTGpqauTxeJSbmztkrKenR16vVxkZGUpMTHQgXWi0t7ersrJSu3btCjiekZGhoqKiMKeC\n6bjyihLd3d1avny5ZsyYIUmaMmWKtm/f7nAqDKe/v19er1eZmZmKjY0dMu7z+eT3+5Wfn+9AutCp\nq6tTT0+PGhsbA47n5eVp5syZYU4F01FeUeKhhx7Srl27dOrUKUn//ra7atUq/fTTTw4nQzD19fVq\nb29XQUFBwPGqqipJ0oIFC8KYKvSys7Pldru1YcMGPfLII/J6vert7R0Yf+KJJxxMB1PxJuUoER8f\nL7/fP2hfTEyMHn30UW3atMmhVOMjkt4oORLB8r788st68MEHlZmZGfATJXw+n44fP67W1lalpKSM\n+vjhNlyOF198UU8++aT++ecfSVJcXJxWrVqlTZs2BVwSjZQ5YbCIOi92EJLY2NhCtAVSXFxsn3fe\n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\n" } ], - "collapsed": false, - "prompt_number": 4, - "input": "circuit_plot(fourier, nqubits=3)" + "prompt_number": 4 }, { - "source": "The QFT circuit can be represented in various symbolic forms.", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "The QFT circuit can be represented in various symbolic forms." + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "m = represent(fourier, nqubits=3)" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 5, - "input": "m = represent(fourier, nqubits=3)" + "prompt_number": 5 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "m" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\left(\\begin{smallmatrix}\\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2}\\\\\\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi}\\\\\\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath}\\\\\\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi}\\\\\\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2}\\\\\\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi}\\\\\\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath}\\\\\\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi}\\end{smallmatrix}\\right)$$" + ], "output_type": "pyout", - "latex": "$$\\left(\\begin{smallmatrix}\\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2}\\\\\\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi}\\\\\\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath}\\\\\\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi}\\\\\\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2}\\\\\\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi}\\\\\\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & \\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath}\\\\\\frac{1}{4} \\sqrt{2} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & - \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & - \\frac{1}{4} \\sqrt{2} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} & \\frac{1}{4} \\sqrt{2} \\mathbf{\\imath} & \\frac{1}{4} \\sqrt{2} e^{\\frac{1}{4} \\mathbf{\\imath} \\pi}\\end{smallmatrix}\\right)$$", "prompt_number": 6, - "text": "\u23a1 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \n\u23a2\u2572\u2571 2 \u2572\u2571 2 \u2572\u2571 2 \u2572\u2571 2 \u2572\u2571 2 \u2572\u2571 2 \u2572\u2571 2 \n\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \n\u23a2 4 4 4 4 4 4 4 \n\u23a2 \n\u23a2 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 \n\u23a2 \u2500\u2500\u2500 \u2500\u2500\u2500 \u2500\u2500\u2500 \n\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \n\u23a2\u2572\u2571 2 \u2572\u2571 2 \u22c5\u212f \u2572\u2571 2 \u22c5\u2148 \u2572\u2571 2 \u22c5\u2148\u22c5\u212f -\u2572\u2571 2 -\u2572\u2571 2 \u22c5\u212f -\u2572\u2571 2 \u22c5\n\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u23a2 4 4 4 4 4 4 4 \n\u23a2 \n\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd\n\u23a2\u2572\u2571 2 \u2572\u2571 2 \u22c5\u2148 -\u2572\u2571 2 -\u2572\u2571 2 \u22c5\u2148 \u2572\u2571 2 \u2572\u2571 2 \u22c5\u2148 -\u2572\u2571 2 \n\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\n\u23a2 4 4 4 4 4 4 4 \n\u23a2 \n\u23a2 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 \n\u23a2 \u2500\u2500\u2500 \u2500\u2500\u2500 \u2500\u2500\u2500 \n\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \n\u23a2\u2572\u2571 2 \u2572\u2571 2 \u22c5\u2148\u22c5\u212f -\u2572\u2571 2 \u22c5\u2148 \u2572\u2571 2 \u22c5\u212f -\u2572\u2571 2 -\u2572\u2571 2 \u22c5\u2148\u22c5\u212f \u2572\u2571 2 \u22c5\u2148\n\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u23a2 4 4 4 4 4 4 4 \n\u23a2 \n\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \n\u23a2\u2572\u2571 2 -\u2572\u2571 2 \u2572\u2571 2 -\u2572\u2571 2 \u2572\u2571 2 -\u2572\u2571 2 \u2572\u2571 2 \n\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \n\u23a2 4 4 4 4 4 4 4 \n\u23a2 \n\u23a2 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 \n\u23a2 \u2500\u2500\u2500 \u2500\u2500\u2500 \u2500\u2500\u2500 \n\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \n\u23a2\u2572\u2571 2 -\u2572\u2571 2 \u22c5\u212f \u2572\u2571 2 \u22c5\u2148 -\u2572\u2571 2 \u22c5\u2148\u22c5\u212f -\u2572\u2571 2 \u2572\u2571 2 \u22c5\u212f -\u2572\u2571 2 \u22c5\n\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u23a2 4 4 4 4 4 4 4 \n\u23a2 \n\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd\n\u23a2\u2572\u2571 2 -\u2572\u2571 2 \u22c5\u2148 -\u2572\u2571 2 \u2572\u2571 2 \u22c5\u2148 \u2572\u2571 2 -\u2572\u2571 2 \u22c5\u2148 -\u2572\u2571 2 \n\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\n\u23a2 4 4 4 4 4 4 4 \n\u23a2 \n\u23a2 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 \n\u23a2 \u2500\u2500\u2500 \u2500\u2500\u2500 \u2500\u2500\u2500 \n\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \n\u23a2\u2572\u2571 2 -\u2572\u2571 2 \u22c5\u2148\u22c5\u212f -\u2572\u2571 2 \u22c5\u2148 -\u2572\u2571 2 \u22c5\u212f -\u2572\u2571 2 \u2572\u2571 2 \u22c5\u2148\u22c5\u212f \u2572\u2571 2 \u22c5\u2148\n\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u23a3 4 4 4 4 4 4 4 \n\n \u23bd\u23bd\u23bd \u23a4\n \u2572\u2571 2 \u23a5\n \u2500\u2500\u2500\u2500\u2500 \u23a5\n 4 \u23a5\n \u23a5\n \u2148\u22c5\u03c0\u23a5\n \u2500\u2500\u2500\u23a5\n \u23bd\u23bd\u23bd 4 \u23a5\n\u2148 -\u2572\u2571 2 \u22c5\u2148\u22c5\u212f \u23a5\n\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u23a5\n 4 \u23a5\n \u23a5\n \u23bd\u23bd\u23bd \u23a5\n -\u2572\u2571 2 \u22c5\u2148 \u23a5\n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u23a5\n 4 \u23a5\n \u23a5\n \u2148\u22c5\u03c0 \u23a5\n \u2500\u2500\u2500 \u23a5\n \u23bd\u23bd\u23bd 4 \u23a5\n -\u2572\u2571 2 \u22c5\u212f \u23a5\n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u23a5\n 4 \u23a5\n \u23a5\n \u23bd\u23bd\u23bd \u23a5\n -\u2572\u2571 2 \u23a5\n \u2500\u2500\u2500\u2500\u2500\u2500 \u23a5\n 4 \u23a5\n \u23a5\n \u2148\u22c5\u03c0 \u23a5\n \u2500\u2500\u2500 \u23a5\n \u23bd\u23bd\u23bd 4 \u23a5\n\u2148 \u2572\u2571 2 \u22c5\u2148\u22c5\u212f \u23a5\n\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u23a5\n 4 \u23a5\n \u23a5\n \u23bd\u23bd\u23bd \u23a5\n \u2572\u2571 2 \u22c5\u2148 \u23a5\n \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u23a5\n 4 \u23a5\n \u23a5\n \u2148\u22c5\u03c0 \u23a5\n \u2500\u2500\u2500 \u23a5\n \u23bd\u23bd\u23bd 4 \u23a5\n \u2572\u2571 2 \u22c5\u212f \u23a5\n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u23a5\n 4 \u23a6" + "text": [ + "\u23a1 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd ", + "\u23a2\u2572\u2571 2 \u2572\u2571 2 \u2572\u2571 2 \u2572\u2571 2 \u2572\u2571 2 \u2572\u2571 2 \u2572\u2571 2 ", + "\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 ", + "\u23a2 4 4 4 4 4 4 4 ", + "\u23a2 ", + "\u23a2 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 ", + "\u23a2 \u2500\u2500\u2500 \u2500\u2500\u2500 \u2500\u2500\u2500 ", + "\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd ", + "\u23a2\u2572\u2571 2 \u2572\u2571 2 \u22c5\u212f \u2572\u2571 2 \u22c5\u2148 \u2572\u2571 2 \u22c5\u2148\u22c5\u212f -\u2572\u2571 2 -\u2572\u2571 2 \u22c5\u212f -\u2572\u2571 2 \u22c5", + "\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500", + "\u23a2 4 4 4 4 4 4 4 ", + "\u23a2 ", + "\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd", + "\u23a2\u2572\u2571 2 \u2572\u2571 2 \u22c5\u2148 -\u2572\u2571 2 -\u2572\u2571 2 \u22c5\u2148 \u2572\u2571 2 \u2572\u2571 2 \u22c5\u2148 -\u2572\u2571 2 ", + "\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500", + "\u23a2 4 4 4 4 4 4 4 ", + "\u23a2 ", + "\u23a2 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 ", + "\u23a2 \u2500\u2500\u2500 \u2500\u2500\u2500 \u2500\u2500\u2500 ", + "\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd ", + "\u23a2\u2572\u2571 2 \u2572\u2571 2 \u22c5\u2148\u22c5\u212f -\u2572\u2571 2 \u22c5\u2148 \u2572\u2571 2 \u22c5\u212f -\u2572\u2571 2 -\u2572\u2571 2 \u22c5\u2148\u22c5\u212f \u2572\u2571 2 \u22c5\u2148", + "\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500", + "\u23a2 4 4 4 4 4 4 4 ", + "\u23a2 ", + "\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd ", + "\u23a2\u2572\u2571 2 -\u2572\u2571 2 \u2572\u2571 2 -\u2572\u2571 2 \u2572\u2571 2 -\u2572\u2571 2 \u2572\u2571 2 ", + "\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 ", + "\u23a2 4 4 4 4 4 4 4 ", + "\u23a2 ", + "\u23a2 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 ", + "\u23a2 \u2500\u2500\u2500 \u2500\u2500\u2500 \u2500\u2500\u2500 ", + "\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd ", + "\u23a2\u2572\u2571 2 -\u2572\u2571 2 \u22c5\u212f \u2572\u2571 2 \u22c5\u2148 -\u2572\u2571 2 \u22c5\u2148\u22c5\u212f -\u2572\u2571 2 \u2572\u2571 2 \u22c5\u212f -\u2572\u2571 2 \u22c5", + "\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500", + "\u23a2 4 4 4 4 4 4 4 ", + "\u23a2 ", + "\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd", + "\u23a2\u2572\u2571 2 -\u2572\u2571 2 \u22c5\u2148 -\u2572\u2571 2 \u2572\u2571 2 \u22c5\u2148 \u2572\u2571 2 -\u2572\u2571 2 \u22c5\u2148 -\u2572\u2571 2 ", + "\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500", + "\u23a2 4 4 4 4 4 4 4 ", + "\u23a2 ", + "\u23a2 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 \u2148\u22c5\u03c0 ", + "\u23a2 \u2500\u2500\u2500 \u2500\u2500\u2500 \u2500\u2500\u2500 ", + "\u23a2 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd 4 \u23bd\u23bd\u23bd ", + "\u23a2\u2572\u2571 2 -\u2572\u2571 2 \u22c5\u2148\u22c5\u212f -\u2572\u2571 2 \u22c5\u2148 -\u2572\u2571 2 \u22c5\u212f -\u2572\u2571 2 \u2572\u2571 2 \u22c5\u2148\u22c5\u212f \u2572\u2571 2 \u22c5\u2148", + "\u23a2\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500", + "\u23a3 4 4 4 4 4 4 4 ", + "", + " \u23bd\u23bd\u23bd \u23a4", + " \u2572\u2571 2 \u23a5", + " \u2500\u2500\u2500\u2500\u2500 \u23a5", + " 4 \u23a5", + " \u23a5", + " \u2148\u22c5\u03c0\u23a5", + " \u2500\u2500\u2500\u23a5", + " \u23bd\u23bd\u23bd 4 \u23a5", + "\u2148 -\u2572\u2571 2 \u22c5\u2148\u22c5\u212f \u23a5", + "\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u23a5", + " 4 \u23a5", + " \u23a5", + " \u23bd\u23bd\u23bd \u23a5", + " -\u2572\u2571 2 \u22c5\u2148 \u23a5", + " \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u23a5", + " 4 \u23a5", + " \u23a5", + " \u2148\u22c5\u03c0 \u23a5", + " \u2500\u2500\u2500 \u23a5", + " \u23bd\u23bd\u23bd 4 \u23a5", + " -\u2572\u2571 2 \u22c5\u212f \u23a5", + " \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u23a5", + " 4 \u23a5", + " \u23a5", + " \u23bd\u23bd\u23bd \u23a5", + " -\u2572\u2571 2 \u23a5", + " \u2500\u2500\u2500\u2500\u2500\u2500 \u23a5", + " 4 \u23a5", + " \u23a5", + " \u2148\u22c5\u03c0 \u23a5", + " \u2500\u2500\u2500 \u23a5", + " \u23bd\u23bd\u23bd 4 \u23a5", + "\u2148 \u2572\u2571 2 \u22c5\u2148\u22c5\u212f \u23a5", + "\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u23a5", + " 4 \u23a5", + " \u23a5", + " \u23bd\u23bd\u23bd \u23a5", + " \u2572\u2571 2 \u22c5\u2148 \u23a5", + " \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u23a5", + " 4 \u23a5", + " \u23a5", + " \u2148\u22c5\u03c0 \u23a5", + " \u2500\u2500\u2500 \u23a5", + " \u23bd\u23bd\u23bd 4 \u23a5", + " \u2572\u2571 2 \u22c5\u212f \u23a5", + " \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u23a5", + " 4 \u23a6" + ] } ], - "collapsed": false, - "prompt_number": 6, - "input": "m" + "prompt_number": 6 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "represent(Fourier(0,3), nqubits=3)*4/sqrt(2)" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\left(\\begin{smallmatrix}1 & 1 & 1 & 1 & 1 & 1 & 1 & 1\\\\1 & \\omega & \\omega^{2} & \\omega^{3} & \\omega^{4} & \\omega^{5} & \\omega^{6} & \\omega^{7}\\\\1 & \\omega^{2} & \\omega^{4} & \\omega^{6} & 1 & \\omega^{2} & \\omega^{4} & \\omega^{6}\\\\1 & \\omega^{3} & \\omega^{6} & \\omega & \\omega^{4} & \\omega^{7} & \\omega^{2} & \\omega^{5}\\\\1 & \\omega^{4} & 1 & \\omega^{4} & 1 & \\omega^{4} & 1 & \\omega^{4}\\\\1 & \\omega^{5} & \\omega^{2} & \\omega^{7} & \\omega^{4} & \\omega & \\omega^{6} & \\omega^{3}\\\\1 & \\omega^{6} & \\omega^{4} & \\omega^{2} & 1 & \\omega^{6} & \\omega^{4} & \\omega^{2}\\\\1 & \\omega^{7} & \\omega^{6} & \\omega^{5} & \\omega^{4} & \\omega^{3} & \\omega^{2} & \\omega\\end{smallmatrix}\\right)$$" + ], "output_type": "pyout", - "latex": "$$\\left(\\begin{smallmatrix}1 & 1 & 1 & 1 & 1 & 1 & 1 & 1\\\\1 & \\omega & \\omega^{2} & \\omega^{3} & \\omega^{4} & \\omega^{5} & \\omega^{6} & \\omega^{7}\\\\1 & \\omega^{2} & \\omega^{4} & \\omega^{6} & 1 & \\omega^{2} & \\omega^{4} & \\omega^{6}\\\\1 & \\omega^{3} & \\omega^{6} & \\omega & \\omega^{4} & \\omega^{7} & \\omega^{2} & \\omega^{5}\\\\1 & \\omega^{4} & 1 & \\omega^{4} & 1 & \\omega^{4} & 1 & \\omega^{4}\\\\1 & \\omega^{5} & \\omega^{2} & \\omega^{7} & \\omega^{4} & \\omega & \\omega^{6} & \\omega^{3}\\\\1 & \\omega^{6} & \\omega^{4} & \\omega^{2} & 1 & \\omega^{6} & \\omega^{4} & \\omega^{2}\\\\1 & \\omega^{7} & \\omega^{6} & \\omega^{5} & \\omega^{4} & \\omega^{3} & \\omega^{2} & \\omega\\end{smallmatrix}\\right)$$", "prompt_number": 7, - "text": "\u23a11 1 1 1 1 1 1 1 \u23a4\n\u23a2 \u23a5\n\u23a2 2 3 4 5 6 7\u23a5\n\u23a21 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u23a5\n\u23a2 \u23a5\n\u23a2 2 4 6 2 4 6\u23a5\n\u23a21 \u03c9 \u03c9 \u03c9 1 \u03c9 \u03c9 \u03c9 \u23a5\n\u23a2 \u23a5\n\u23a2 3 6 4 7 2 5\u23a5\n\u23a21 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u23a5\n\u23a2 \u23a5\n\u23a2 4 4 4 4\u23a5\n\u23a21 \u03c9 1 \u03c9 1 \u03c9 1 \u03c9 \u23a5\n\u23a2 \u23a5\n\u23a2 5 2 7 4 6 3\u23a5\n\u23a21 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u23a5\n\u23a2 \u23a5\n\u23a2 6 4 2 6 4 2\u23a5\n\u23a21 \u03c9 \u03c9 \u03c9 1 \u03c9 \u03c9 \u03c9 \u23a5\n\u23a2 \u23a5\n\u23a2 7 6 5 4 3 2 \u23a5\n\u23a31 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u23a6" + "text": [ + "\u23a11 1 1 1 1 1 1 1 \u23a4", + "\u23a2 \u23a5", + "\u23a2 2 3 4 5 6 7\u23a5", + "\u23a21 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u23a5", + "\u23a2 \u23a5", + "\u23a2 2 4 6 2 4 6\u23a5", + "\u23a21 \u03c9 \u03c9 \u03c9 1 \u03c9 \u03c9 \u03c9 \u23a5", + "\u23a2 \u23a5", + "\u23a2 3 6 4 7 2 5\u23a5", + "\u23a21 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u23a5", + "\u23a2 \u23a5", + "\u23a2 4 4 4 4\u23a5", + "\u23a21 \u03c9 1 \u03c9 1 \u03c9 1 \u03c9 \u23a5", + "\u23a2 \u23a5", + "\u23a2 5 2 7 4 6 3\u23a5", + "\u23a21 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u23a5", + "\u23a2 \u23a5", + "\u23a2 6 4 2 6 4 2\u23a5", + "\u23a21 \u03c9 \u03c9 \u03c9 1 \u03c9 \u03c9 \u03c9 \u23a5", + "\u23a2 \u23a5", + "\u23a2 7 6 5 4 3 2 \u23a5", + "\u23a31 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u03c9 \u23a6" + ] } ], - "collapsed": false, - "prompt_number": 7, - "input": "represent(Fourier(0,3), nqubits=3)*4/sqrt(2)\n" + "prompt_number": 7 }, { - "source": "

QFT in Action

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

QFT in Action

" + ] }, { - "source": "Build a 3 qubit state to take the QFT of.", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Build a 3 qubit state to take the QFT of." + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "state = (Qubit('000') + Qubit('010') + Qubit('100') + Qubit('110'))/sqrt(4); state" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\frac{1}{2} \\left({\\left|000\\right\\rangle } + {\\left|010\\right\\rangle } + {\\left|100\\right\\rangle } + {\\left|110\\right\\rangle }\\right)$$" + ], "output_type": "pyout", - "latex": "$$\\frac{1}{2} \\left({\\left|000\\right\\rangle } + {\\left|010\\right\\rangle } + {\\left|100\\right\\rangle } + {\\left|110\\right\\rangle }\\right)$$", - "prompt_number": 8, "png": "iVBORw0KGgoAAAANSUhEUgAAAP4AAAAiCAYAAAB/amQFAAAABHNCSVQICAgIfAhkiAAABR5JREFU\neJztnFtoHFUYx3/bJNamphoraRvFVq2YQgQt+iBKKyqiguLlIYJQQX3wQbG+FC8g61MplGoror3g\nBXzwpYhI9UG0iohaBUWrBkGFWm94b1Mqac368M24k3Eu58yeMzuZ/X6w7M6Z/358/z2ZmXMNKIqi\nZDAM9Hc7CUVRymE+sAb4BljR3VQURXHBPAPNBDAEnOU5F0VRKkgLfeIrSi0weeIrilIzev3CPx24\nuNtJlEQveQX1m0mfReAmsBX40zKhKANIgoeAG4HJ2Pn5wL3AzcAFwBTwc0IcV7op4G5gbyE3dsT9\nmnoAaAAbgQ+A6RRNlb2GuPBhqpsrfk11RfyeA/yRn342nfbx+xFzpwTHzdj5PuAj4KHgeBHwCbDO\ns+4eYIm5jcI0I59Ncwu1TyK//2kpsavsNcSlj7r4NdUV9bsRufgL0wgS62RkfzNwbuS4GTt/G/AX\n0ioIWQccYXbyrnWnAvcbeohj22KyyW0EeBl4D/ia7D+MKnv14aMOfsuo32HgnYy4mdwOPIPccV4E\n1heIcT7wVKysGfncAD4DXopplgIzwAZPupBHKTbescdC27TMbQA4Mfi8mfQ/jCp7Bfc+6uK3rPq9\nBdgUD2rygzwP3AFcBNwKPG7wnTgbgJ0Z588ExoEPY+U/Ad8BV3nShbwGXJfpIJmFBb5jmtsx4G+H\n8ULK9ArufdTFb1n1uxu4nPZNBihnVL8PuAzpk6SxLHg/nHBuCljpSRfyPnBJRn4usc3NdbwyvdpQ\nh7r1gQu/vwA3RQvKuPDHgYNIsySNpcH7VMK5I7QHBF3rohwEzsjI0RVFcnMdryyvNtShbn3gwu8k\nch3+R3jhtzy8QkaB33LMLQjejyWcayFTGT50UUaAX3PydEGR3FzHK8urDXWoWx+48DsJLI8Kwt12\njU6zy2AYOJqj+TLj3EKkqeJDFzII/INZn6tTbHNzHa9MrzbUoW594MLvAdotB6Ccbba/kz8N+AVw\nnPbdLcog8KMnXcgEMmORRAPYlhLrPGBXQvkM8CDJLR3b3PKoslcb6lC3PnDhdzmxhTxlXPg/AGM5\nmmngK/7fDxtEVvrt86QLWQk8m5JbC9hObFQ04ELg6YTyGdJXTNnmlkeVvdpQh7r1gQu/q4DvowVl\nXPj7kabHMrKfZp8iU4ZR1gAnMHsq0LVuNbJGIYv9KeWHDb6bhGluruN1w6sNdahbH3Tqd4xY66WM\nUf0ZZG5xVY7uBeBqZncLrkfWL7/hUXcD8EqeCceY5uY6Xje82lCHuvVBp37PBl6PFpg88RcAdyFr\ngA8Az5G94SCJTcHrzQzNHuABZMHBVmQ24Eqkz+JLtwiZJjlu6adTTHLrB+5DBmXuDMp2I5sw9gJv\nW8brllfXPkx1VfdbVv1OAK8SWweQN5o/D3gCeATp12xBmhxrkea7DduAj2n3P5aQvOuqH2myHEWm\nIZKmMVzphpDf4JCpiRhvIauiTEjym5VbH3BtSqxvgc8Tyqvo1bUPU13V/ZZRv4sRH2uRQXZjxpE+\n0EhwPIoMiFxqEySS9A5i0wpznDK2fFaFXvIK9fC7BdknY80Q8BjSjAC5AbQwvxPGCffj1wXb5bVz\nmV7yCvXwu8JVoPXIZoGBPKGiKPVgDHgXae4ritIDjCL985OD417/X32KUnsWAw/Tbt6vBq7pXjqK\nonRK3nTeScjE/zTtHXejwBXI1j9FUeYgeQt4BpEFA1Fa6EWvKIqiKIqiKIqiKIqiKF3nX7rsUf7i\n3lIWAAAAAElFTkSuQmCC\n", - "text": "\u2758000\u27e9 + \u2758010\u27e9 + \u2758100\u27e9 + \u2758110\u27e9\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 2" + "prompt_number": 8, + "text": [ + "\u2758000\u27e9 + \u2758010\u27e9 + \u2758100\u27e9 + \u2758110\u27e9", + "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500", + " 2" + ] } ], - "collapsed": false, - "prompt_number": 8, - "input": "state = (Qubit('000') + Qubit('010') + Qubit('100') + Qubit('110'))/sqrt(4); state\n" + "prompt_number": 8 }, { - "source": "Perform the QFT.", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Perform the QFT." + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "qapply(fourier*state)" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\frac{1}{2} \\sqrt{2} {\\left|000\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|100\\right\\rangle }$$" + ], "output_type": "pyout", - "latex": "$$\\frac{1}{2} \\sqrt{2} {\\left|000\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|100\\right\\rangle }$$", - "prompt_number": 9, "png": "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\nMHDVAAAAAElFTkSuQmCC\n", - "text": "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \n\u2572\u2571 2 \u22c5\u2758000\u27e9 \u2572\u2571 2 \u22c5\u2758100\u27e9\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 2 2" + "prompt_number": 9, + "text": [ + "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd ", + "\u2572\u2571 2 \u22c5\u2758000\u27e9 \u2572\u2571 2 \u22c5\u2758100\u27e9", + "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500", + " 2 2" + ] } ], - "collapsed": false, - "prompt_number": 9, - "input": "qapply(fourier*state)\n" + "prompt_number": 9 } ] } diff --git a/docs/examples/notebooks/quantum_computing.ipynb b/docs/examples/notebooks/quantum_computing.ipynb index 175f2eb..20b26b2 100644 --- a/docs/examples/notebooks/quantum_computing.ipynb +++ b/docs/examples/notebooks/quantum_computing.ipynb @@ -1,423 +1,683 @@ { - "nbformat": 2, "metadata": { "name": "quantum_computing" }, + "nbformat": 2, "worksheets": [ { "cells": [ { - "source": "

Symbolic Quantum Computing

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

Symbolic Quantum Computing

" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "%load_ext sympyprinting" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 1, - "input": "%load_ext sympyprinting" + "prompt_number": 1 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "from sympy import sqrt, symbols, Rational", + "from sympy import expand, Eq, Symbol, simplify, exp, sin", + "from sympy.physics.quantum import *", + "from sympy.physics.quantum.qubit import *", + "from sympy.physics.quantum.gate import *", + "from sympy.physics.quantum.grover import *", + "from sympy.physics.quantum.qft import QFT, IQFT, Fourier", + "from sympy.physics.quantum.circuitplot import circuit_plot" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 2, - "input": "from sympy import sqrt, symbols, Rational\nfrom sympy import expand, Eq, Symbol, simplify, exp, sin\nfrom sympy.physics.quantum import *\nfrom sympy.physics.quantum.qubit import *\nfrom sympy.physics.quantum.gate import *\nfrom sympy.physics.quantum.grover import *\nfrom sympy.physics.quantum.qft import QFT, IQFT, Fourier\nfrom sympy.physics.quantum.circuitplot import circuit_plot" + "prompt_number": 2 }, { - "source": "

Qubits

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

Qubits

" + ] }, { - "source": "The state of a set of qubits (Two state systems) is the quantum state that is of interest in Quantum Computing.", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "The state of a set of qubits (Two state systems) is the quantum state that is of interest in Quantum Computing." + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "alpha, beta = symbols('alpha beta',real=True)" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 3, - "input": "alpha, beta = symbols('alpha beta',real=True)" + "prompt_number": 3 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "psi = alpha*Qubit('00') + beta*Qubit('11'); psi" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\alpha {\\left|00\\right\\rangle } + \\beta {\\left|11\\right\\rangle }$$" + ], "output_type": "pyout", - "latex": "$$\\alpha {\\left|00\\right\\rangle } + \\beta {\\left|11\\right\\rangle }$$", - "prompt_number": 4, "png": "iVBORw0KGgoAAAANSUhEUgAAAGkAAAAXCAYAAAAIqmGLAAAABHNCSVQICAgIfAhkiAAAA7JJREFU\naIHt2FuIVVUcx/FPTiWkDaFpGkRlRTeawgqjrMaY6IJ0oSCNpKCHogsF2bwEQVFQWnQxsCAwuiHE\nFF2xly4vQTesMSpCoqay8aHCSrtIYw//vZk9+6wzc/aZ45mS84XD2ue/f+vy32v9140OHZqkH3tN\ndSPaTF2fu5os8AgswRelsu7ENTgFF2AHvkvU2YjuOGxusn2TZQWuQy9uxjaMqPU5Z28M4Gd8PU65\nE+la6vMxWFay3YO3Ma1Q4S84ahK6djMdq7CoYFuInThTrc9dYqANYBfOr1Nuo7qkz9NSxiboxk14\nWow4+Bxf4YkmdERkHdJEW2bh0Cbywe1Yh/cLtl9FBPQk9OtxtYi08WhU16zPScqRtFKMkINLurvE\nKOyuqJM99zfRtqVZPVXpwyUJ+/X4E2eojaScZcaPkEZ1SZ9bFUkni3VlS8m+WYzCxRV1xAjeL7O3\ngwvxSsk2W3y0lfipDW1I+pzqpAW4A4/jRaw1doSndiDz8HvCvj1L51fU5bwsPbpbzRx8K6bgXjE9\nbcAmPIXH2tCGnBqfy53Ug3ewUYT55aJTni9oH04UPM/ohy6S2w6oqMvZKBbu3c0SvFVoy3YMYwg3\nGDtIdzc1PhfD6ki8KSLnjcw2glfxmtid/CAd9n9hn4Q9t41U1OWchE8S+lZzLF7Inj/MfnC2GLQX\n4aM2tIOEz8VIujtLHyxlGszSRbgWTyYK3lSnwhlZ+mNFXc6leKlOnlazK2H7JkvntqkNJHzOI2ka\nzsXraqej/JB5mmj0FrXhPygW3jIzs3S4og72xx9i15diBW5L2LvFeeeqxLv1uK9kO6hUb5Gjs/Tj\nOu9bTdLnvJOOx4H4bJwCThCRlGJQnE9mGNvJp2YVfllRB1eKtbAez2S/MkvFEeGBcfIW6cX3dd4t\nx1Z8oPmzVxWSPufT3ZAI962JjDPFWrFBnBdSfJql5f1/H54zOlIb1RGHuqE69bWSxaJjyxyGK3Cj\nGN3tIOlz3knbxJXFeaX3fVgtTuBzM31qSzyMR3Ar9s1sZ+FwY6eXRnWn472JfWoJv+EfnFiwzRZn\npnvFd5mIWVk60do1nq4hn6djjZi3V4sNxGXZux68i/uz5wW4uJS/S9w9DeAhsUM8J1FPI7p+zR+0\nq9w4zMct4gC5SlxXrcWzYmdXJOXzOrET2ylmor+z/2ua0E3G5/8dVTppufacwybFnthzO6RvNVIs\nNLpOdviP8uhUN6AR9sRIapQ5ai96O3To0KHD1PEvn5jpFWKUSuUAAAAASUVORK5CYII=\n", - "text": "\u03b1\u22c5\u275800\u27e9 + \u03b2\u22c5\u275811\u27e9" + "prompt_number": 4, + "text": [ + "\u03b1\u22c5\u275800\u27e9 + \u03b2\u22c5\u275811\u27e9" + ] } ], - "collapsed": false, - "prompt_number": 4, - "input": "psi = alpha*Qubit('00') + beta*Qubit('11'); psi\n" + "prompt_number": 4 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "Dagger(psi)" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\alpha {\\left\\langle 00\\right|} + \\beta {\\left\\langle 11\\right|}$$" + ], "output_type": "pyout", - "latex": "$$\\alpha {\\left\\langle 00\\right|} + \\beta {\\left\\langle 11\\right|}$$", - "prompt_number": 5, "png": "iVBORw0KGgoAAAANSUhEUgAAAGgAAAAXCAYAAADnaAq1AAAABHNCSVQICAgIfAhkiAAAA6NJREFU\naIHt2FuMXVMcx/GPKpOUiBoz1SJENG4xoiHtQ0VLEbQiIWFEE0EQJCKqjadOJOJSEoroQ0WCTDzg\nwS28uD64RYR6E0LRS0KkdFqiZjz810737NnnzN4zc86M5nyTnbX3Wr+91vrvtf//daHDAc/a6e7A\nNNA2m2dP8v2z8W1J/nLcmcqG8QuenqBuLR6ZZD/rshpLMIRTsQlvpbJGNmdchxW4cZw2mummzOb1\nxg7y6diDhel5Nj7GPRPUDUxFRyvSJT7M4lzeIvyDnvRcZjMcj7uwDy82aaOKbiC7mVWh0404ArtT\nQ3nuEx86+8v2YRAP4YQJ6Opy1CTevxfP4dNc3h9iQPo0tvkOPIhDcVCT+qvqpoRbsaCQd5z424ox\neiFGcEtNHfU9aCXW1HyHCDdXluTfhr/QrdzmIuN5UBXdQHYzGQ9agG2FvLPE31aM0d+ldFlNXTu5\nDK8V8rrFT7QGvym3uaWUxdKT0C9iZS92Yp1wdcI1l+KjknePSenuQv4w9mJ+TV276MGPqf1lwmuO\nFGFtE57CecptbilFD+rD+/hSdPJqMSCDOe3juBDvltSXffihkrIhYXQdXbtYbr89Q+naga24Xcw9\njWxuKfkBOhnvYLP9S8phvI7LcQ6OFa7+Hi4oqe/v3HtFDsnlV9W1i9PwTbr/HDfhBhE55uEKjW1u\nKfkBuj+ljxU0X6d0sej4ZnyA80vq29KkrcOwvaaunYyU5P2Q0l6NbW4p2Rw0CxfhTWPDzk8pXSI6\nnE2S24ydNLPBnFuooyu1taOmrhmrjd0zEeGoC9eXlL0klvF55jVp75SUfpHSMptbSjZAZ+Bo+928\njDOFB2UM4majPW47fhULjDznpnRLTV0zXkhXkZVi9/9ohTqIRcHPDcr6xSLps/RcZnNLyULcVuHi\nO0s0h4s54W2xH8jYlcoOLui/wqWFvBX4Hc9OQNdqlopBLXIirhGby70pr5HNLSMboF14BZcUyldg\ng9hZ9yZ9fjP3BlYV3lmPi8XEC3NwLTYavayuqms1f+JfsTfL6BZ7ogfEd8lTZnPGXLHq7dH8pKCq\nbhRdeFLE6Q3Cja9KZX1iknw43edZV1LXKryKJ/CyGIyyv66K7u6qBiTqnCTMF+dic8QZ3PN4Ruzw\nmy0Iijb34xMRtkfS9T0+NHpPV1VX1+b/FXUGqF8chs5YJnPUM1PZo3qIXCTmwg4zlI3T3YHxOBA9\nqCo92nzw2aFDhw4dRvEfMafj+g/WzT4AAAAASUVORK5CYII=\n", - "text": "\u03b1\u22c5\u27e800\u2758 + \u03b2\u22c5\u27e811\u2758" + "prompt_number": 5, + "text": [ + "\u03b1\u22c5\u27e800\u2758 + \u03b2\u22c5\u27e811\u2758" + ] } ], - "collapsed": false, - "prompt_number": 5, - "input": "Dagger(psi)\n" + "prompt_number": 5 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "qapply(Dagger(Qubit('00'))*psi)" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\alpha$$" + ], "output_type": "pyout", - "latex": "$$\\alpha$$", - "prompt_number": 6, "png": "iVBORw0KGgoAAAANSUhEUgAAAA4AAAANCAYAAACZ3F9/AAAABHNCSVQICAgIfAhkiAAAAMlJREFU\nKJHV0TFOQlEQheHP12CCLRYQGkLrK4kL0JBIY+si6Ejs3AA0hMYNaGdnoRsw0LoETDSUkJhQAQXz\nErh5lZ3TzJ0z+WfOzfDHOCnRWrhDE+dY4B6rA2abQjnmuIk6wyNe4w3jFGrjBw+J3osNHTRK+p4D\nrCZ6M8B+QPXCSpGv8Y7fBPyKfIkKvg+bFzF1kNqI2OITp4VQbJxHc1ECnWGDN6xTcIkXdBPoCkPM\n7E+T4ZbjO1YwQi3+leEjBuaYYIqnsP1fYgcPriV+6UcWLAAAAABJRU5ErkJggg==\n", - "text": "\u03b1" + "prompt_number": 6, + "text": [ + "\u03b1" + ] } ], - "collapsed": false, - "prompt_number": 6, - "input": "qapply(Dagger(Qubit('00'))*psi)\n" + "prompt_number": 6 }, { - "source": "SymPy supports many different types of measurements.", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "SymPy supports many different types of measurements." + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "for state, prob in measure_all(psi):", + " display(state)", + " display(prob)" + ], "language": "python", "outputs": [ { + "latex": [ + "$${\\left|00\\right\\rangle }$$" + ], "output_type": "display_data", - "latex": "$${\\left|00\\right\\rangle }$$", "png": "iVBORw0KGgoAAAANSUhEUgAAAB8AAAATCAYAAABobNZCAAAABHNCSVQICAgIfAhkiAAAAWdJREFU\nSInt1btLHUEUx/EPEjU+ICbiozBqq2AaCWKa1IqVpdX9A2xsJLWFhWhhmzqlpQqCTSzsDekUCULw\nURgCXvMQrhazN4x7181umkDID4Yze853+A07Z3b5x/XmocKjaD6H9/iMLqyhiks8xlscp9YX4aro\nxUXeDisYTua7WEnVPqI9taYI142FPOPYfAK3GIlqbfiG5ShXlIMlNBUx38BJRn0HH6Lnohy8wnQa\nzNrNOA4z8kcYE15jGQ72kw381rwPVxn5ahL7S3J1nWAoz/yJcG5VjarnukpwsTYxk2d+g1oy0mpO\nYq0EF2sGW3nm1xrvcl0dSTwtwcUaxqc8c0KnPs3IdybxrCQHk0LT3dND5s8z8i+FTv5ekoMpbBcx\nP8AoBqNcD15g9Q+4Z/giuz9+qSKcSwv2sB7VFoVvfmuUK8rNC9eyQfGP5Ro/kzErfCLf4SsG8Bo/\nIr4o14nzLPP/+iu6A4BqY/+ZKkASAAAAAElFTkSuQmCC\n", - "text": "\u275800\u27e9" + "text": [ + "\u275800\u27e9" + ] }, { + "latex": [ + "$$\\frac{\\alpha^{2}}{\\alpha^{2} + \\beta^{2}}$$" + ], "output_type": "display_data", - "latex": "$$\\frac{\\alpha^{2}}{\\alpha^{2} + \\beta^{2}}$$", "png": "iVBORw0KGgoAAAANSUhEUgAAAD0AAAAtCAYAAAAdtGNyAAAABHNCSVQICAgIfAhkiAAAAl1JREFU\naIHt2jtoFEEcx/GPSRAjBnwhCGrQQEQRHyAiGNBGELFI6SMIii+iTaIWgsiJYGOTQtBGEMEyVVp7\nBUFRRDEgSMogEhQlvqLFbOJqYu68vd0psl9YbmZvmN9/bnb/O/PbYw4yL6L2eTRhAa5FjKMwdmNH\nUr6DnUWKNxUplmItupPyG3RGiqNQWrA4KQ8qeNCxZvo7xrAVrzEcKY7CacVV8X74KJwWBt6EA5Fj\nyY3mVHk/PuId3qOryECKeE73J58TQtbuE2Z4GUYK0J9Gc/UmmRjAOG7gEU6iDeuEBPY5Z/0Zacmx\n704cRHvq3HPswhPh0o5CnplzLx7jS+rcJ2H1dT9H3arkOegRfE3VF2IjXghJbH6O2rOS5z09jA5s\nxvrkuIV9WIJn+JGjfknJXGRycfIzahQlJSWNIuuGI5a5F81UjGXuZdbNsgyNZe5FNRVjmXuZdbPM\ndCxzL7qpWKS5146VEXSnUa+51/ofbbfghJDA+nAmg25msph7V2ps1yFsRSfZg9EMunXRqP13pcZ2\nx5PPVcJ+fAjbsorX6pHFcDTX4KUwyMPowQM8zUnvDwZwKVUfFO6xQ1heZ5+VGtp0+73qOopeYTe4\nuk7NKarNdKMczX6sSNW7hMGkuY23qfpEcozjXnLuOr7VqFk3Z4X7KM0FvMLSDP1Wamhz6q/6djzM\noDlFtedcLEdzk5CpJxNnGy7jWCM6r3Z5DyUB9OKDcLldxE0hs95tRBAzsAHnhIQ5hkXCzI/mpFcI\nR6p835OneKx3w7O94WgW9w9AUegQLu+SkpKSkn/xC5fPb/BMrkVFAAAAAElFTkSuQmCC\n", - "text": "2 \n \u03b1 \n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 2 2\n\u03b1 + \u03b2" + "text": [ + "2 ", + " \u03b1 ", + "\u2500\u2500\u2500\u2500\u2500\u2500\u2500", + " 2 2", + "\u03b1 + \u03b2" + ] }, { + "latex": [ + "$${\\left|11\\right\\rangle }$$" + ], "output_type": "display_data", - "latex": "$${\\left|11\\right\\rangle }$$", "png": "iVBORw0KGgoAAAANSUhEUgAAAB8AAAATCAYAAABobNZCAAAABHNCSVQICAgIfAhkiAAAAOZJREFU\nSInt1TFOAkEUxvFfiLEkCIkFFkDCJTThABpqCiquYAWFtzHhBGBja0ws7KysjD2xkRYodo2w2d3Z\nRicxfs28vPle/m8mkzf8cc2KNmp78Rhnmf06ntALAMp8a5yGOpygm8bHGOABW/QLaqr4WrjOKz7K\nyTVwi1esSpqt6lvhRHLLmyLTxPfJv3Sj/ORVfRe4yiZrOcaf0GPaQBQ4vKMTC77AMBZ8iGUseBdv\nMeDnkkd3oN+CX+IuBryJDzkDJgRvpmtoNpf5xpgH6o3QTuN7vEim1hafeMY0U1PFV/ir/SuKdqio\nK05yzo7kAAAAAElFTkSuQmCC\n", - "text": "\u275811\u27e9" + "text": [ + "\u275811\u27e9" + ] }, { + "latex": [ + "$$\\frac{\\beta^{2}}{\\alpha^{2} + \\beta^{2}}$$" + ], "output_type": "display_data", - "latex": "$$\\frac{\\beta^{2}}{\\alpha^{2} + \\beta^{2}}$$", "png": "iVBORw0KGgoAAAANSUhEUgAAAD0AAAAwCAYAAACi/HI3AAAABHNCSVQICAgIfAhkiAAAAnhJREFU\naIHt2U2IjVEcx/HPvBSDCXeY1BRpRAlZEQ1NZmZhg0jZSImslGRhystkJ7spZSUryoosLcZKFhLG\nZhZTSlmRt7wsGBbnmVw3M/fOfeaeI/N8N8855znP8/ufzv8559zfZQ7SlFD7FFrRjosJ44jGVuzM\nylfRG1O8OaZYGauxLyuPY22iOKLSgqVZ+SY2xhRPNdM/8A7r8RqjMcVbY4qhG/34hvnowtnIMURl\nOwbK6p/9Tus9MQOJld4lLMf9rH4AExjBW3yJFEdUDgqf0iGcxxNsShVMrJluwnesErarldgdSTsJ\n7dhV0TaIWwliQZyZ7sHDirYOIcX/W65gTVm9hMdCBiQhxj79DIfxVFixB4SF7VME7SR0oi8rd2FF\nwliisR8LUwdRSaMXspJw8ppTdKQOoGAuM+mR/UwaRUFBwWyR1/dO5V0n88xTede5dfOcyFJ510k9\n81TedW7dPDOdyrtO6pnDPFzS+N/l3TiBI9k1lu5fOY5FWXkm3vVMMqzSL7+Lk3Xq5qZPcD/eCN51\n/wyePVdjvxL2ltWXCOn8s07dGdOExbP0rqEa+zXEL6/lm2jGBXwQZnaHkNZtWCZsG41iKr/8eZ6X\n1jLoG4J7OZzVB4RBf8S9POJVaBdSGC5n10FszvviaoPeIBj1R8vaRrENj/C+Rp3Tgkk4SY/wr2U5\n1/Cyos9IRZ8ofvlJ3KloO4MXfq+e9TBUQ5+G+eXVZnrMn6tjSTgUjAmHhDZ8zRvEFDTML2+pcn9c\n2Ca2YJ3gXQ8Li9lkqk3UoduLB9Pc78QCXBcG+Qq31f45/ZMcr3L/n/TLG82x1AGkoPDLCwoKCqbj\nFwnubvhneA5lAAAAAElFTkSuQmCC\n", - "text": "2 \n \u03b2 \n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 2 2\n\u03b1 + \u03b2" + "text": [ + "2 ", + " \u03b2 ", + "\u2500\u2500\u2500\u2500\u2500\u2500\u2500", + " 2 2", + "\u03b1 + \u03b2" + ] } ], - "collapsed": false, - "prompt_number": 7, - "input": "for state, prob in measure_all(psi):\n display(state)\n display(prob)\n" + "prompt_number": 7 }, { - "source": "Qubits can be represented in the computational basis.", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Qubits can be represented in the computational basis." + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "represent(psi)" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\left(\\begin{smallmatrix}\\alpha\\\\0\\\\0\\\\\\beta\\end{smallmatrix}\\right)$$" + ], "output_type": "pyout", - "latex": "$$\\left(\\begin{smallmatrix}\\alpha\\\\0\\\\0\\\\\\beta\\end{smallmatrix}\\right)$$", "prompt_number": 8, - "text": "\u23a1\u03b1\u23a4\n\u23a2 \u23a5\n\u23a20\u23a5\n\u23a2 \u23a5\n\u23a20\u23a5\n\u23a2 \u23a5\n\u23a3\u03b2\u23a6" + "text": [ + "\u23a1\u03b1\u23a4", + "\u23a2 \u23a5", + "\u23a20\u23a5", + "\u23a2 \u23a5", + "\u23a20\u23a5", + "\u23a2 \u23a5", + "\u23a3\u03b2\u23a6" + ] } ], - "collapsed": false, - "prompt_number": 8, - "input": "represent(psi)\n" + "prompt_number": 8 }, { - "source": "

Gates

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

Gates

" + ] }, { - "source": "Gate objects are the operators which act on a quantum state.", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Gate objects are the operators which act on a quantum state." + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "g = X(0); g" + ], "language": "python", "outputs": [ { + "latex": [ + "$$X_{0}$$" + ], "output_type": "pyout", - "latex": "$$X_{0}$$", - "prompt_number": 9, "png": "iVBORw0KGgoAAAANSUhEUgAAABkAAAAYCAYAAAAPtVbGAAAABHNCSVQICAgIfAhkiAAAAXxJREFU\nSInl1T9IVmEUBvDf9yl8iJNDEYhGSKBgIDQIiYMOQdGom4mDIBhtIRS0O+TSoA2FELiINLTW0JCD\nEdqfRUGQQhISWiLBRR3u++HL7cLV2w0HH7hwznPO+zzvv3svZ4gFbOMwPNsYieqzUW0P71ApYtSI\nzSDUkapVsIVHaCgiHmMqmDxO8TO4/a/idVzAPr6hGriHGD2NSN5S99CNPnxEP2qYO43JSTAg2bIN\nPClbPMZ6MLpcZHA1v0UnDkI8XsQkD61YQpvkfH5IrnZpaMEryQ2DecmWDZVl0IRFXIm43mDyNqO/\ngjHcxzTu5Bk04iV6MmprkvO5muKH8TzEVXzBNRERowPv8RWfMkwWwqwnU/wUXof4QLLau+nBtxx/\npw6xixupnhf4E/V8xkSo/cb1qPcB3mRMsjBqwbQr4u7hQz05yXuSh33sBKM6mvGrTBNYxcUov4Tv\nZZusYDDKb+JZPSn0N8tAUxBdRjt+4mlJ2n+h9r+EzxGOAGtDSS7Kxo8ZAAAAAElFTkSuQmCC\n", - "text": "X \n 0" + "prompt_number": 9, + "text": [ + "X ", + " 0" + ] } ], - "collapsed": false, - "prompt_number": 9, - "input": "g = X(0); g\n" + "prompt_number": 9 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "represent(g, nqubits=2)" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\left(\\begin{smallmatrix}0 & 1 & 0 & 0\\\\1 & 0 & 0 & 0\\\\0 & 0 & 0 & 1\\\\0 & 0 & 1 & 0\\end{smallmatrix}\\right)$$" + ], "output_type": "pyout", - "latex": "$$\\left(\\begin{smallmatrix}0 & 1 & 0 & 0\\\\1 & 0 & 0 & 0\\\\0 & 0 & 0 & 1\\\\0 & 0 & 1 & 0\\end{smallmatrix}\\right)$$", "prompt_number": 10, - "text": "\u23a10 1 0 0\u23a4\n\u23a2 \u23a5\n\u23a21 0 0 0\u23a5\n\u23a2 \u23a5\n\u23a20 0 0 1\u23a5\n\u23a2 \u23a5\n\u23a30 0 1 0\u23a6" + "text": [ + "\u23a10 1 0 0\u23a4", + "\u23a2 \u23a5", + "\u23a21 0 0 0\u23a5", + "\u23a2 \u23a5", + "\u23a20 0 0 1\u23a5", + "\u23a2 \u23a5", + "\u23a30 0 1 0\u23a6" + ] } ], - "collapsed": false, - "prompt_number": 10, - "input": "represent(g, nqubits=2)\n" + "prompt_number": 10 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "c = H(0)*Qubit('00'); c" + ], "language": "python", "outputs": [ { + "latex": [ + "$$H_{0} {\\left|00\\right\\rangle }$$" + ], "output_type": "pyout", - "latex": "$$H_{0} {\\left|00\\right\\rangle }$$", - "prompt_number": 11, "png": "iVBORw0KGgoAAAANSUhEUgAAADYAAAAZCAYAAAB6v90+AAAABHNCSVQICAgIfAhkiAAAArlJREFU\nWIXt1juIlUcUB/Df+mDBF76SrIWKkCDYCEZBWKNRQRvFUkQbQSSYWFioSEAuiIWNxErQRgsxnSls\nRDEmJgSx8YGoGBUM0RXBF1po1E0xM+53v71z937XlbXYf3O+c85/vjln5pyZYRifLDZjUqvkE7iB\nXvyHSzgcfTPxK/6N/ue4iO+b/G9HA9smHMde7MOazNiBeF0DzN0PC4XAD2T8u6J/bQv/qpX0DbiN\n8VH/DD1Y1iZvTwsxvMd2IfCVGf8pvNVaGdQK3x24Jqx+EUeFKuioyCMkWk42i5N4jbENfKPxQijR\nVlArfK8SFqwcyLpon1eRl1C3ayMygYxAt9A7Lxv4FwgJ/54Z3wxfR3mrZP87ym8r8hIeCv2GfGJz\nMRHnMv6lUf6W8TdDmvxFyZ4WcFpFXsIxrE/KqMzki6NcoW/lipgfZTs7lgIuV0LSJ1bkJTzBlKTk\nElsiHAxL9V+xUXiG63iUGd8Mr6J8V7KPLtlb5SVMEpJD41LswDe4rH9ShKYdo73dgqsZezqkHlTk\nJawXyhGNE5uDqTif+fGiKNvpL7gSZfmaGBdlT0VewjTcT0qjUkz99UcmsO4oizs2EhvRiRk4g9OZ\n8Sng6epLeUGUVyvyCFfC2cx87/GzcE90Zfw9+o7chI34KX6PxE18VfDXSvyn+LFkO4m/2uTtUX9h\n90OnEPjtjH+ukPSRkv26+ov0EHYX9FqJ/x3+wYSozxL6eVUbvC/wQyZeM4XSuqvv4fsntkT/amGV\nHkX/Y6HHuoU+fYPZpUROFPRtDebcil+wX9iFDZnYBuJtxuRcYh+CKUKy0wu2nVqo+Y+J3MujCh4L\n91pvwTY22ocMg5FYr/AY/rxg68K9Qfh32xiMxOCC+sNjuXCADBmaHpEVMB4HhUfzl7hjiBMbbHQO\ndQDDGMYnhv8BbkWjYKG8VMEAAAAASUVORK5CYII=\n", - "text": "H \u22c5\u275800\u27e9\n 0" + "prompt_number": 11, + "text": [ + "H \u22c5\u275800\u27e9", + " 0" + ] } ], - "collapsed": false, - "prompt_number": 11, - "input": "c = H(0)*Qubit('00'); c\n" + "prompt_number": 11 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "qapply(c)" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\frac{1}{2} \\sqrt{2} {\\left|00\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|01\\right\\rangle }$$" + ], "output_type": "pyout", - "latex": "$$\\frac{1}{2} \\sqrt{2} {\\left|00\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|01\\right\\rangle }$$", - "prompt_number": 12, "png": "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\n", - "text": "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \n\u2572\u2571 2 \u22c5\u275800\u27e9 \u2572\u2571 2 \u22c5\u275801\u27e9\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 2 2" + "prompt_number": 12, + "text": [ + "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd ", + "\u2572\u2571 2 \u22c5\u275800\u27e9 \u2572\u2571 2 \u22c5\u275801\u27e9", + "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500", + " 2 2" + ] } ], - "collapsed": false, - "prompt_number": 12, - "input": "qapply(c)\n" + "prompt_number": 12 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "for gate in [H,X,Y,Z,S,T]:", + " for state in [Qubit('0'),Qubit('1')]:", + " lhs = gate(0)*state", + " rhs = qapply(lhs)", + " display(Eq(lhs,rhs))" + ], "language": "python", "outputs": [ { + "latex": [ + "$$H_{0} {\\left|0\\right\\rangle } = \\frac{1}{2} \\sqrt{2} {\\left|0\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|1\\right\\rangle }$$" + ], "output_type": "display_data", - "latex": "$$H_{0} {\\left|0\\right\\rangle } = \\frac{1}{2} \\sqrt{2} {\\left|0\\right\\rangle } + \\frac{1}{2} \\sqrt{2} {\\left|1\\right\\rangle }$$", "png": "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\nRU5ErkJggg==\n", - "text": "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \n \u2572\u2571 2 \u22c5\u27580\u27e9 \u2572\u2571 2 \u22c5\u27581\u27e9\nH \u22c5\u27580\u27e9 = \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 0 2 2" + "text": [ + "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd ", + " \u2572\u2571 2 \u22c5\u27580\u27e9 \u2572\u2571 2 \u22c5\u27581\u27e9", + "H \u22c5\u27580\u27e9 = \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500", + " 0 2 2" + ] }, { + "latex": [ + "$$H_{0} {\\left|1\\right\\rangle } = \\frac{1}{2} \\sqrt{2} {\\left|0\\right\\rangle } - \\frac{1}{2} \\sqrt{2} {\\left|1\\right\\rangle }$$" + ], "output_type": "display_data", - "latex": "$$H_{0} {\\left|1\\right\\rangle } = \\frac{1}{2} \\sqrt{2} {\\left|0\\right\\rangle } - \\frac{1}{2} \\sqrt{2} {\\left|1\\right\\rangle }$$", "png": "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\n", - "text": "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \n \u2572\u2571 2 \u22c5\u27580\u27e9 \u2572\u2571 2 \u22c5\u27581\u27e9\nH \u22c5\u27581\u27e9 = \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 0 2 2" + "text": [ + "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd ", + " \u2572\u2571 2 \u22c5\u27580\u27e9 \u2572\u2571 2 \u22c5\u27581\u27e9", + "H \u22c5\u27581\u27e9 = \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500", + " 0 2 2" + ] }, { + "latex": [ + "$$X_{0} {\\left|0\\right\\rangle } = {\\left|1\\right\\rangle }$$" + ], "output_type": "display_data", - "latex": "$$X_{0} {\\left|0\\right\\rangle } = {\\left|1\\right\\rangle }$$", "png": "iVBORw0KGgoAAAANSUhEUgAAAFQAAAAZCAYAAACvrQlzAAAABHNCSVQICAgIfAhkiAAAA0BJREFU\naIHt2EuIHEUcx/HPJpFlSQyKUbIs6iFKDBjwgZfgQTwoERUxqPhWVokmJ9EEEpDMQRRfCAqiogjB\nHBRBDd4UFFFQwefiQQ1kTQIRRQ+aRFbUzaGq2e6anp7p7Vl3decLQ3X9q/pfv/lPPf41DFg03IKx\n+RZRQS19e3AI0/FzKDrIeDbXdgzvY6jC3/YS2414DQ/jUdyQtK/Etl4FN6RMX8YmIR4ptfUtwz4h\naGuStiHsx04s7cFXK6lficM4JSduEteUvLesR71NaJXYxrAFf+L1ivcK+pZUDPIXXojPNyVtT2Cr\nMLv+rpRazk7sxS+x/hvewssYzvXbi6tm4b8pd+MxrMA/Ff1q6zsVU/jBTPB34LaaAlu554uFWX9t\n0mdjtF+a2B+qOdZsaFW0HdF5hpLoq5qh8DPewBm4AuPCzN3dVWJnLozl94l9XywvKbGf1WC8uaag\nr1tA4flYPol1eLyhgNWxPJLYj8ZyNLG/qv3AWkgU9PWy4b+Hb7EWz/RBQBbQo4k9q5+U2P/A8g6+\n1gurpSrDSDmAq2v070ZBXy8BPcfMxnwXHmwoYCqW6WZ/Qgf7iCC6jAmc31BPUwr6ui35MWHTvTy+\nNK55GjPRwZ79yocT+/XCslqoFPRVBfRkYYnfi4PxpVHtuWJdvs75z7Milj8m9rX4ruGYc0lBX6fZ\nNiIcRvcLJz08hztwj/Y0Ygi340RhVn+Itzv4zgJ6uuJJf1Es8zP4AnzWwQ+cK+SudffQNGWbLd30\nIQR5N84raftC2OPOTuzX4cX4vEQI2vpceyvpP6k9W3gF3ygGZ5f5uyllVOWhbfrSJb9GmF0T+LLE\nwR7hC29J7NuFWwMh4O/i1gqRO3AnVsX6qJDYPyIk94TZfkzIe+eLlcLVepX2VVCpb6OZe/u0sMw3\nJH1eElKbrM9X2BzbfjeTsMMDeCdXv69kzHG8iaeEH2Nz0n6zsC38G6T6NuFjIQ7Z953EBzhzrvUN\nxwHX5Wxb8elcDLbQ6eWm1I0pIdWZztmW49c++P7P0Y+Awuc4LVdfLZymi45+BfQTxX+JLhPSrEVH\nnfytihEhgB8J/0z9hKf75HtRM9y9y4ABAwb8bzgOJqKj+ElYpHwAAAAASUVORK5CYII=\n", - "text": "X \u22c5\u27580\u27e9 = \u27581\u27e9\n 0" + "text": [ + "X \u22c5\u27580\u27e9 = \u27581\u27e9", + " 0" + ] }, { + "latex": [ + "$$X_{0} {\\left|1\\right\\rangle } = {\\left|0\\right\\rangle }$$" + ], "output_type": "display_data", - "latex": "$$X_{0} {\\left|1\\right\\rangle } = {\\left|0\\right\\rangle }$$", "png": "iVBORw0KGgoAAAANSUhEUgAAAFQAAAAZCAYAAACvrQlzAAAABHNCSVQICAgIfAhkiAAAA0JJREFU\naIHt2FuIVVUYB/DfmHEY1CEDQ5GisDIhIQtfeooeukHRPegOJmk+RWUoRechIsjALkRFERhCQReI\n3grsoaCCrvNkGpEJRUFBZTVgMz18a5p9lvvss8/FIzXnD4e11/9b61v/+eb71l5rM8K8wc1YeaxF\nVKArfbtxEDPpdzA5mMUzBdsfeA9jFf62Vtg2YWcJP4H76gruE2X6LsHreDT9Nmb2rvUtxH4RtFWZ\nbQzfYDuOq+GrWcKdhm2YxtMV8xbW8N8vmll/PX7FKanfwBe4s2Rei74FFYscxvPp+cbMtgNb8Aj+\nriE4x/3m/oiqzH4Ll/fgv19sxx4cSP0pvIIncFJhXNf6liVn35oL/jbc2qXAZht+saiAdhkKD3e5\nVi9oFp7PFFVzVzZmndCaJ1eLvqoMhZ/wpkj9y7BBZO6uruT2h/04fYjrrRNVs69EB1xQwv+rr1NA\n4bnUPo41eKxrif3hVdwwxPWWp/b3jD+U2hUZ36Kvzoa/B3uxGk/1ILBf/IlFbWxrRbVU7cM5DuCK\nCvtsQA9l/DT+wglV+uoE9KzkDO7AgzXmDBLjQnQZJkWJDhJTqZ0usR1fwrfo61TyK8Wme3GatMFw\njjFFXC/KaliYbMM3xBHx+4xv0VcV0KWixDfjuzRpBa7sVWmPWI2vhrjel6ldmvGLU/tDxrfoa5dt\n4+JldI9408OzuF3cbF7Lxo/hNiwRWf0+3q6jvgPOxScV9rPxku730Ksr7F+L/fPkjF+f2mIGd9KH\nCPIunFNi+0zsIWdk/HV4IT0vEP/ltQV7s81anc6hDzk2N6UP8XLG7RDl3ihwR+jLS36VyK5JfF6y\n8G6RDfmhd6u4NRABfxe3tFNfwImpXVZiWyK+Exyu4WfQeABX4dTUn8A14ug4+9Kq1HepuXv7jCjz\n87MxL4pSmB1TvNv+hvMKY+/FO4X+3ZmvjfgYvxT87RMfWSbSmJscWXZHC7k+uFZcanbiDXFdLibg\nUdPXEAFZU+C2iIDNO9S5KXXClNhbZgrcIvw8AN//OQwioPCp1q8wy819qZlXGFRAP8KFhf5F4pg1\n79DN+a0K4yKAH4gvUz/iyQH5ntdodB4ywggjjPC/wT+UDKQb+BPLoQAAAABJRU5ErkJggg==\n", - "text": "X \u22c5\u27581\u27e9 = \u27580\u27e9\n 0" + "text": [ + "X \u22c5\u27581\u27e9 = \u27580\u27e9", + " 0" + ] }, { + "latex": [ + "$$Y_{0} {\\left|0\\right\\rangle } = \\mathbf{\\imath} {\\left|1\\right\\rangle }$$" + ], "output_type": "display_data", - "latex": "$$Y_{0} {\\left|0\\right\\rangle } = \\mathbf{\\imath} {\\left|1\\right\\rangle }$$", "png": "iVBORw0KGgoAAAANSUhEUgAAAFYAAAAZCAYAAACrWNlOAAAABHNCSVQICAgIfAhkiAAAA3lJREFU\naIHt2F2MXVMUB/BfP8bX0KJSxTTUk/BES+LBEF8RSYmEphlE0HgYPIgE4yNuhCYi8SRBeJKQIVGC\nBPWVNiJFpFIJQtOI74eWFBMRTD2sfTNn9j1n7j23d1rp3P/LPvu/19n7f9ZZZ+29Dn0c0FiHJftb\nRBdoq3sVPsDf2IMJbMJgZncsfkk2k9iG4zKbO0rmvx7jeAgP44psfClubfMQs40y3XAo3sXpJWMd\n675WOO2ZNjZbMFQx3sj6a/ENFqX+EvyIizK7BzCvE5GzhEbWH8DZ2Ch8sqrivlLd87P+BhGtl+Hg\nkklWYDXOxfcdiJ2HMbyI3xK3C6+Ll1dc/22tzt5fGBC+WINf29h2rPtZ8YauzPhFeAlHt7m/Ubi+\nJM11cWZzVeLPyvgHOxE4S2hU8LeYOWIp0Z1HLOFYuLrALcATuFPk2E6xMrVfZ/z21J6X8T/ghBrz\n/1/QorvMsRuxE5fiqMQ9gqfwVc0Fl6X2j4yfSG2+8T2HkZpr1MWICJJx5c/fDVp0Lywx+gcvYFSk\ng4PwOd7rYsGmYycyvtk/MuN3m3qZOVbiafU2uO2mp7TV4uRzs8j5F+CtGvNVoUV3mWOJdDCKu8Wb\nHetywb9SO5nxAxX84iSyDJ8oP/LUweXi7HkODsN3ezlfEy26qz6FLcIpu3DPXiz4WQXfPB//lPEj\n4rOaLaxP7Y3iGb/s0bwtuqsce6o4br2hNarqYFtq88/78NT+nPFDehdFZdghomuN2DN6hRbdValg\nOLWbSsbmi0rqECwXuffNinmajl1uenSemdpiRA9jc8U8cAaeVD/Hrs24a8Q+8rxw8kLxZXaLdrqn\nYVwk+bykJSqvx9L1AnyBUwrjjcx+J+7PuJfxUcbtq8rrY1PRep+pDbZRYd/uHNtR5UU4axifat3N\niZr6lXT9r4jYmY5Id+EmER1wotiN1xdsjhFRs2eGeXqFIbyD48UmmqejHM2CaGnJWEe6TxIhvSMZ\n/o73xafTxDyxqZ1W4O7Fq4X+bSVzj4oofRSv4bpsfF0SuS9wgwiMMRxR4HPdG0QqmxT++BNbTa+y\neqZ7cVpkRYG7XY0cM1dQt/LYbeq3YROD6pW5cwLdlHRbTc83y/Btb+QcOOjGsR/i/EL/QnEM6qOA\nbo43g+InxmacLKL18V6Kmuso+xHeRx999NHHFP4D70iuykbrxK8AAAAASUVORK5CYII=\n", - "text": "Y \u22c5\u27580\u27e9 = \u2148\u22c5\u27581\u27e9\n 0" + "text": [ + "Y \u22c5\u27580\u27e9 = \u2148\u22c5\u27581\u27e9", + " 0" + ] }, { + "latex": [ + "$$Y_{0} {\\left|1\\right\\rangle } = - \\mathbf{\\imath} {\\left|0\\right\\rangle }$$" + ], "output_type": "display_data", - "latex": "$$Y_{0} {\\left|1\\right\\rangle } = - \\mathbf{\\imath} {\\left|0\\right\\rangle }$$", "png": "iVBORw0KGgoAAAANSUhEUgAAAGUAAAAZCAYAAAAonOB1AAAABHNCSVQICAgIfAhkiAAAA51JREFU\naIHt2VuMnVMUwPHftLRiRIsaI6YoHlyelEZ4GEK9EH1wT10S0fShcYnUJUriRAjCw0iaqJBIJKQR\nIUHiEiJthIoKWiGqRFxCBMmEEdeOh7WPOWef7zuXmTntTHr+yWR/3/rWt7+19jp77bX30KNHCatw\nyJ42Yg/Q1O9T8Tb+xjjGsAn9md5h+CXp7MI2HJ7p3NrEiLW4t0A+gOubvDcbKPL7fDyL+3A/rs2e\nt+X3VWLAn2yhswVDJc8rBbLjknw8GVfE3ehrZeAMppLdn45RE+O0H7ZrDEyD33MyhefELFmB+QUf\nXoILcCa+bdPYu3CHCEgzXse5bfY5G1gnfKqO0x94BuvVp6y2/H5KDODFmfxAPI+DW7xfKZEPaj5T\n4J5Wxs1gKjXXJ4j0vjrTWSbG4NJMXud3PlOIoMAVNbK52IDbxJrSLb7DEV3sf3exVKSkzzP5ztSe\nlcnr/C4Kymv4CefhoCR7EI9hx9RsbcnTWNnlb0yVo8TC/RLOKdEZTO1vmXwstXlxVOf3PgUd/iNy\n3xqRwubhE7zZrtVTYNTEDyHnFDyus2Jgp8Y0PBX6RLa4ObXr8EaBXjUoY5n8LzG+CzN5nd9FQSFS\n2Jr00Y24vQPDp8ICYWAR7+Pk3WRHGSvwMn7Hco3pqcqfqd2VyfvEUpDL6/wuC8qW1PHPonLaXawU\nU3mm8hG+xvE4Q/xoi9heIt9fBOb7TF7nd1lQThQl8Ssao9pNhvBNl7/xME7rQP86bE3XX6V2tVhf\nN5W8sy21eSo+ILU/ZPI6v8uCMpzaoo/OwTViM7RYrDWvlvTTCcPY3OT5Ujyq8zXl8kx2Y4d25czH\n1Xgg3R+LLzKdHWJfshjv1MiXpbZ2JrXy+382iiOX/JiF2NGvT9dz8amYzlUqJX222qfMlh39RWKx\nHsAiE/5WMr2teCKTjYjN5LwaWcsdPTHQw/hQY/VAnPG8kK7/FTOlnTK2uukcKHi2SKxfrXb9M4Eh\nfIwfxazbUKJ3Jy7Bkel+IS7EQ6IKow2/jxbT6Muk9CvewpU1On2iADgp+/iLNfc3Zf3egPdEdTGe\n/j4Twdw36axKBs4GDhV7uRGx2FfJ/YbLxCnISGpvUT8rpsXvBWJQl9TI1mozJ/Zoj6L01YxRE0f3\nVfp19+hlr6PToMAH6teFQVG795gmJhOUd3F2zf1yUar2mCYmU4L2i4pjM44Rs+SR6TSqx+Qp+idY\njx49evTYe/kP0yK1Sgfn/IEAAAAASUVORK5CYII=\n", - "text": "Y \u22c5\u27581\u27e9 = -\u2148\u22c5\u27580\u27e9\n 0" + "text": [ + "Y \u22c5\u27581\u27e9 = -\u2148\u22c5\u27580\u27e9", + " 0" + ] }, { + "latex": [ + "$$Z_{0} {\\left|0\\right\\rangle } = {\\left|0\\right\\rangle }$$" + ], "output_type": "display_data", - "latex": "$$Z_{0} {\\left|0\\right\\rangle } = {\\left|0\\right\\rangle }$$", "png": "iVBORw0KGgoAAAANSUhEUgAAAFEAAAAZCAYAAABJhMI3AAAABHNCSVQICAgIfAhkiAAAAvlJREFU\nWIXt2F2IVkUcx/HPo65LWppS65ZFWUFXiRGiJKYI1RIlQlem+dabC4IXQnkRqEghXqkZXob2RkFQ\nRCFIEXXpnVJGhm+wrVEp+BYq7nYxs3WaznN2z3OedVOfLzzMmd+c88yPmf/M+c+hxXVHNyaMtIkC\nSvnrwCX04zIOYx/2xt8fse3ZOs+Pxroc/RV8iDewFc8k7VOxeqgmK3BV/K3ERaxFW9K2CFewo+D5\nMXg90VbgJ4yP9Q78innJfZuHarICV8XfJ3g6R5+FC/gMo0qYHIUfhRnO8j6Oo5bRnsBjQzXaIMPu\nbyy+ydHvE2ZmP8aVNLlIWP5p589HfXpGqxn+aGyqv7xo6vTfGZmML/GnEKEXSpp+JJaHE/3nWM7P\naP34DbeX7KMKlfzlDeIJ4SUyQDs+xRQ8JURjWTpjeS7Rz8fyjkT/AEsb6KdRKvkbM8if1/AOZqML\nPzTm8W+T5xN9oH5rov+ufiTOxVsl+z+AZQXtlfwNNohvYjGW4+tB7i3iYiz7Er2tjn6bkEbl8R1m\nVPCSRyV/RW/Yl7EeG7Eno9+EBSVNHqyjD6QTvYm+BO+V7KMKlfzVG8QuvI3d2JS0LcbEch4diOWk\nRL85liczWk1YKo3svY1SyV/ecp6Bj/EtXsppX4UnhVBfJWT/0/CF/NQoa/JunM7oM2OZjYTH/fvF\nljIH2wva8zgoHCDq0Ux/7kIPvpcfbc/h83jdjS3xuk1IB+6N9TQPq+EsXkv+b6+wx2UZiRNL0/xN\nEGakF/ckbXcK+2MfXozaUTyauWcPXq1jEtbgGG6J9QeEfLMr6ae7yGSTaKq/7HLehoeESPwoamNx\nv3++XFwWIrFdiLqezPO/4OF43YczSV87Y3/v4ggexAvCbA+wUPgAMNz8L/xNFTL3bC63QTjV3HAU\npThFnBSOgP0ZbTxOVXZ0DdLoIF4R9s+OjNYpHBlblGC7sBkT3m4nhC89Nxy1wW+py0TswlfCJnxI\nOGe3aID2kTbQokWLFk3iL4dftLkOERIkAAAAAElFTkSuQmCC\n", - "text": "Z \u22c5\u27580\u27e9 = \u27580\u27e9\n 0" + "text": [ + "Z \u22c5\u27580\u27e9 = \u27580\u27e9", + " 0" + ] }, { + "latex": [ + "$$Z_{0} {\\left|1\\right\\rangle } = - {\\left|1\\right\\rangle }$$" + ], "output_type": "display_data", - "latex": "$$Z_{0} {\\left|1\\right\\rangle } = - {\\left|1\\right\\rangle }$$", "png": "iVBORw0KGgoAAAANSUhEUgAAAGEAAAAZCAYAAAAhd0APAAAABHNCSVQICAgIfAhkiAAAAt1JREFU\naIHt2F+oFVUUx/HPuf65WGAheTUNNKF8NQgKRB8kSaong8CUQiFTkBAS6SFJEcVXkainpBCDIKjI\nCCINRRGEHhL0wRdJi8L+UFCBEqeHNVfHOXuOZ+45586V5gvD2Wft2Xuv3+xZe689NDQU2IrZdTsx\nJCprG8N1tHEDl/AVvsyuX7O650vaT8PrXfp/E7sS9oXYUsXRmuimr7K2kZKOnhUPeTvuwSNYjTV4\nF/fjED4uad/CrIT9UezHXiGkyA+Zs1OdlL4Ja5teMshz4i3/vGB/Akcz+/be/L3JPjyIq3e47xRW\n4mTF/utk4Npm4puEfQl+xjkRHd2YLsIyxWIRZbtL6lvibZrKlOlbbALaUsvRfDGzeebgC/wjouTv\nnlydGG1cw9whjlEXSW2pSfhebMLjjOITzMMzIhqGzVFsmIRx6qBDW9meME4Lh/Gk2JQvDMevDn5R\nHgkrRFJQhe/wUl8eDY4ObXeahP1Yh5dxfEhOpXhApMEpTmHZJPoyaDq0laWosBlviE3mg5x9FlYN\n2rMC63FkyGPURYe2skhYg7fxPvYU6tbh94G7douWCNdh7z3v4LEe723jVbGs9UNSW2oSluEjkcu+\nkqjfhKcxIytPw8M4Jp3aVmW12xODIstxsGKf57GxYNtasY9BkNRWnISHxMO8grXik0WeF0UU/CVE\nLBJL1gxcxFO43KejK6SP/eOcxuN9jlEXSW35PWG2OAuMiFT0j1zdAvGwj+DTzLYTn2XlGziDF3pw\nZE72O5aoW4Afe+hjqtK3tvfE2ncVZ7PrWzEZ7ey6Ls4Lo9n/Rbn2B/BhVh7Ba4X+d4jT9p+5/i7i\nRO6eLeK71FSnqK8WbQuzgfL57lsikhoq0i1F7cZP4hNGO2e7F7/17dH/kIlOwr8iXcuvffPFJ4+G\nSeQgtmXllpiAJfW5c/fS6qPtfeLA8zWWio3o8CCcaqjOaN0ONDQ0NDQMhP8A5tyQhDNNGmcAAAAA\nSUVORK5CYII=\n", - "text": "Z \u22c5\u27581\u27e9 = -\u27581\u27e9\n 0" + "text": [ + "Z \u22c5\u27581\u27e9 = -\u27581\u27e9", + " 0" + ] }, { + "latex": [ + "$$S_{0} {\\left|0\\right\\rangle } = {\\left|0\\right\\rangle }$$" + ], "output_type": "display_data", - "latex": "$$S_{0} {\\left|0\\right\\rangle } = {\\left|0\\right\\rangle }$$", "png": "iVBORw0KGgoAAAANSUhEUgAAAFAAAAAZCAYAAACmRqkJAAAABHNCSVQICAgIfAhkiAAAAxFJREFU\nWIXt2FuIVVUcx/HPNGMoE1qBNRoRGpHVQ/SgFYSXwEKofCmwgp566iVIiMKgE1pEShAEPgiCqFTY\ng1BgF3opCO3Bl6HQLkxRjEk3jSYvXcaH/z7MdrX39uyzz2gj5wuHfdZ/3X5n7bX+//869LloWIDH\nLrSICgr1DVV0GMITWJZ9n4138Cbewn0VfZ/GK4ntFryAMZzAaWzByaz+CG44x4/oFdOubw7exXO4\nJGd/FofFIlbRSsrzcAz35Gy7sC1ptxZLOxXZgFZS7rm+PQWd24zj8ZoCN+CHxLYak7g7ZxsUu2C6\naSXlrvXld1ebeWKl95RMPoqPOhQKl+JJfJDYP8afznYF/+B3XF5j/KY00le0gHdhlvLz/onwE51y\nLebjq8R+Srz1lYn9DTxSY/ymNNJXFEQOiJV+FYuwN7P9ldVvqilwJHv+UVA3IaJbnnEsrDlHExrp\nK1rAn0Ww2IT12WcCO4SvONalwIkSgUXH9UvcKAJWyodix3TKJB7C19OhryyN2SxSloexCneIlOZq\nPNiR7ClOZc9/C+pmldiXYGfJeKtrzn8uGukr8oFtDuF5LMdt+F4El9k1BY5W1A2L/CrPAnFMJmvO\n0y2N9KUL+EzJQJ9jd9ZpoKbA73AcVxTUXYYfE9uj2Vzni0b6hpLGK/FyyURzcVBk6XAnVojgMgcv\nKt81oyLa5ZmP6/BezjaYzfNbyTiwT30fuA7fVLTpib41+BvXF9RdhaPCH8KVwsG3X8AWcT1q00r6\nv44vEts6Ee3z6dID4uo43bSSck/0bRa50Nu4OWdfjP0iGrfZgO258nIRmcoELsJPuD8rD+B9/70S\nbiwT12NaSblrffkjPILbcSteE+H7F3Fkn8KnubZL8G2uPC7e1LAI/ceTecZERr9e7PS54kjld+2I\n6mPWSy64vn0iV2xzjfA15zMB/l9QlcZUMebsgDGcPX9tJmfm0e0CHhSBpc2I8CEni5tfvHS7gJ+Z\nishwL7Y2lzPzGOyy31Hxt9ca3CR24EumrkV9OmRA/J/Wp0+fPjORMyCOwRiXS9e4AAAAAElFTkSu\nQmCC\n", - "text": "S \u22c5\u27580\u27e9 = \u27580\u27e9\n 0" + "text": [ + "S \u22c5\u27580\u27e9 = \u27580\u27e9", + " 0" + ] }, { + "latex": [ + "$$S_{0} {\\left|1\\right\\rangle } = \\mathbf{\\imath} {\\left|1\\right\\rangle }$$" + ], "output_type": "display_data", - "latex": "$$S_{0} {\\left|1\\right\\rangle } = \\mathbf{\\imath} {\\left|1\\right\\rangle }$$", "png": "iVBORw0KGgoAAAANSUhEUgAAAFYAAAAZCAYAAACrWNlOAAAABHNCSVQICAgIfAhkiAAAAwpJREFU\naIHt2F+oVFUUx/GPXpO8lkWQXdMHKSUzTXxQKqK8QYWQ/6CHNIggS+ohEEHqSSH7Z9JbCEGiqdSb\nkcINTLwgIlqYIEIFpiIUWmlEUFF5e1jnNmemc840M+coXecLw72z99pr/WbtffZe+9BlxDMJT11p\nEW2QqXt0wYAxeBE78CE+wjMYjz1Ngq0t6LsbRzLav8P0Jn6rpjTdeYkdJxI5QczGE1iKiTiKX5oI\n7M1ouxHL8GniJ4vPMa+J7yopTXdeYt8XM7EBl1Ltr+P6JEgrLMB7mIMLBXZ78FiLvqtkgTZ1j8kw\nugFLGg1THMe+FgUOJh9C7NQcu7/ws1glP7UYowoGtak7a8Xej2vk73cHcKodlf+RD7CiQv9VUac7\nK7GHxQy8jU1qiR5mQ5Xq8C1urTjGLLyFAfGYl0Gd7qzE/oCXk//XiBV6Ee+IpX45+Bp35PTtxbEW\nPl9gWmp8L1aJ33heVD6l687aY4nZ3I3l6Mc9eAG34PESheQxA9tz+h7u0PezeFccyv3Y0qG/NP/o\nLqpjv8Q6PIC5OCsOtWtLFJLFJPFYDVXkf7c4gB/BFGwtyW+d7sbEvpQz6AR2JoNGlSQkjyeTWFXx\nTfL3OVE2ni7Jb53u9FZwnSgp3sgZOEFcDn5Nvt+LB/GHuFC8qvNV1pPEuVhgM4CbW/A5JC44J1Nt\nfVikdorf3tDfKoW6F+LPJEgjE3FO7ElwE75Sm5hN6q+D6wtEDMpfJYsxv2BsWazBjxiL2eIwo0Td\n6a3gIVGfvomZqfbb8DE2Yn/S9jwOiomQ9K8sEDVMj7iA9Ip3Do3Mk30fL5spotq5JN5/bGti35Hu\n7WIl9ouS5jN8gl24L8P2ldT3aeKRGw66usF+dvJDziR2Q+IJOKR2yvfh6TxxJTND3B434q5U+xXX\nPaBW68LkJGjVhf3/hqJyq4hT6g+q4ZVa9KLiqqLdxB5V/wqtD9/jt44VjRDaTewRtQoBHsXmzuWM\nHHraHHdOnJILcadYsa/h95J0XfWMErVgly5dunT5N38DiqamQGdaPfcAAAAASUVORK5CYII=\n", - "text": "S \u22c5\u27581\u27e9 = \u2148\u22c5\u27581\u27e9\n 0" + "text": [ + "S \u22c5\u27581\u27e9 = \u2148\u22c5\u27581\u27e9", + " 0" + ] }, { + "latex": [ + "$$T_{0} {\\left|0\\right\\rangle } = {\\left|0\\right\\rangle }$$" + ], "output_type": "display_data", - "latex": "$$T_{0} {\\left|0\\right\\rangle } = {\\left|0\\right\\rangle }$$", "png": "iVBORw0KGgoAAAANSUhEUgAAAE8AAAAZCAYAAABw43NsAAAABHNCSVQICAgIfAhkiAAAAvNJREFU\nWIXt2E2IVlUcx/GPo43ju7YQqzFxFEJFMiVcREPUMnQr6SbSQDAGhISWLhRFaKeQEGRQiREVLSp7\nWfi20ZBSCEILq0ldpClWvqYtzr1xPN77zB3vHYex57s55/7uvf/ze849L//z0GbE04dxw22iBYX+\nRkX1hfguq/+AnzEVS3EDh3AFU/A4ujANF6MY47Aa25M2+vAkTqETX+GL6Jm5eApv38UPGwxD5m8z\nPsCkSFuAW9iVPLsQFwpiTMSrifYKjgmdDd04l5mN2VRmrEEa9dcR1ZfgBVyKtN6s/DJ577gwEgfi\nAWzAbmHUQj8OuvMrHsXiCjGbpJa/vPOewAFcT17IO29/oo/G7xXMrcCj2Jvon2MeeiLtEyyvELNJ\navnLO2863ioI3iusA78meic+rWBuSVaeSPSTWflMpN3A35hcIW5T1PKXd95enE4CzMXD7hx1cBl7\nKpibkZV/JXp+/VCiv4dVFeI2RS1/Y1oEzqfsvru2Fsxdxs0Sc1MTvR8zS2I9h9cH2f4RvDxU/qp0\nXtHIq8rVAmOEhVrBvW7BYBFfY1ENL0XU8tehnF5hKp9s8cxAHC/RJ2TlmURfKUyNe0Utf2Wd143Z\nwg5ch2MYL2wwMROz8mykjRFMF+WPQ0Utf2XTttWUHYuXhMy8Bx8LeVGZuVHCx/gp0vMENP7yy4R0\noIxnsa3F/SK+wdoW95v09x9vCCeLBQX31mNjVu/KGn0ku04z+E5cw7okxkF8lmjDccJo3N94/Ig/\n3H72zTnj9kz7feFsWGQOXsP3WVzCB7mGp6Nn5uDFKuZq0qi/fNp24CPhXNuDWZl+WJjjbwp53RRh\ne/8tinFaOKHAP/gzaWOrMIrfFRLux4TMPl5Pn8/aGGqG1d+crKH4z4Mt+LBu4JFIq1SliH7h/Hsr\n0ibgfGOORhCD7byrwvowPdJm4JfGHN3n7MSarD5aWPPKjlT3NUW76UA8iB3Cf3zz8S3eadLU/4Gx\nw22gTZs2bQbJv2c0thLwHEogAAAAAElFTkSuQmCC\n", - "text": "T \u22c5\u27580\u27e9 = \u27580\u27e9\n 0" + "text": [ + "T \u22c5\u27580\u27e9 = \u27580\u27e9", + " 0" + ] }, { + "latex": [ + "$$T_{0} {\\left|1\\right\\rangle } = e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} {\\left|1\\right\\rangle }$$" + ], "output_type": "display_data", - "latex": "$$T_{0} {\\left|1\\right\\rangle } = e^{\\frac{1}{4} \\mathbf{\\imath} \\pi} {\\left|1\\right\\rangle }$$", "png": "iVBORw0KGgoAAAANSUhEUgAAAHgAAAAlCAYAAACJdC37AAAABHNCSVQICAgIfAhkiAAABFZJREFU\neJzt2nuoFHUUwPGP3u2ppvmosJCLFFmYWNGL8hFlYRFlJIlRiAQKFZVESUUY9oaQ6J8C/UfsXaRF\nkAQRFoRID+hBZEaRPS0yzbKbZn+cWe64d2bv7r27d/de5gvDzP7mzG/OnDO/3znnN0tBQYE1rVag\noDl04FZ81WpFCprLO61WoK8Mb7UCBc2lcPAQp3DwEKdw8BCno9UKDAJuxtUYhc+xp7XqFBSkGNZq\nBYYgJVyGiXgKnbgFx1fI7cdi/DOQyrWKa7XPy3agn9t1GIOPMQmrMAOPY3pqP6XBemfasJQ6nojn\nReJ1QMSaw3BIcr4r2Y5MZP7D5did6uPQpO3VHCXmJf29WNH+PS7Bxlqfpon090U7ExOELUq4Q+Q6\nM4XTr0/2eTTNhrfjU1yKcUnbicLZb+rOuEu4AX/rmYWPTB6okmEiUenKOQ8r8xQbhDyGZanfCzFX\n2OfZXq5tqA3TDro42Tbit6TtnGT/mhixsA9rsSXVVo1HsQlLdc8GWWzHCTX01wo68GSNsiXh0LWY\nn7QtETaYIKbneumzDcsOnoRt+KnigpnJflNOZ7Vwj4hBy3qRe04Yph2ZjdNqlD0CvybyO8Sz/ylC\n3g5MFmGuHvpsw3IMnoHVGRfMFKP5s4r2EWI6r4V9NcrtEg9equOagWA09tYhv1uM3C58i2NFtkw4\n+iz8VacOfbZh2cHPZAhPEJneehGH0+zBQ3UqWQsbcCVeaULflZyCOThGlCqr8WOG3CwRoupha+r4\n54pzn9TZV70cZMNSFcFq03Oz+AjXyHbw+SIRrIcvcG9G+4MigVyCnaJWXYkbK+Qmi1E4mDjIhu3m\n4FFiGsviAyyvs7/dGW3340LxwpRnpgV4K0N2KsbidBwnRnyWXDtxkA17c/Au1Wu2RrNAJApZ7NX/\nf1Z04j5R9j0sas4O8fK8kCGfnpoXaX/nUmHDPAePwTRRMu0fAKXKdOKbJvY/J9kvlh1v81gu8pEr\n8HqjlWownVI2zHPwBaKEypuep+NsURK8hB8aoNh5eL/K+UbE4HLJUo9z4ZFka3d62DDPwdXi7zyx\norJIJCFv6DZcf5iLFVXOb5G/gpNHpU7b5ZcoS/G0nhXDYKKHDfMcPFssRW7JOLcCt4mpeyt+wVVY\n18vNy2u8Wd+gx+J31VfGuvR/+t6AO0UGXY7nw8TofE/7O7duG5YdPBx3iSl3qijGu8Sa6k68jXdx\nuIjNX6b62CpG8DrdX1TSzBfT60XJ77vFyP8ODyRtC/W+RtsINuMmsVC/RnzCG5Hce/MA3L8WGmrD\n9JeTc+WP6G0ibk1OjkeLDJvIRk8StZfk3B+pa6dgfEaf+3XHi/FieW+gKOFk8aL+O4D3rZWW2fAo\nMQWMTLWtEgvrBW1IvX+624WvxRtW5miNyaILmkBf/lX5Ic5I/Z6FlxujTkE7ME2s6JwqPmM90Vp1\nCprBKFFKjetFrqCgoKCgoKCgoGDo8T+sAvYh0KrrKgAAAABJRU5ErkJggg==\n", - "text": "\u2148\u22c5\u03c0 \n \u2500\u2500\u2500 \n 4 \nT \u22c5\u27581\u27e9 = \u212f \u22c5\u27581\u27e9\n 0" + "text": [ + "\u2148\u22c5\u03c0 ", + " \u2500\u2500\u2500 ", + " 4 ", + "T \u22c5\u27581\u27e9 = \u212f \u22c5\u27581\u27e9", + " 0" + ] } ], - "collapsed": false, - "prompt_number": 13, - "input": "for gate in [H,X,Y,Z,S,T]:\n for state in [Qubit('0'),Qubit('1')]:\n lhs = gate(0)*state\n rhs = qapply(lhs)\n display(Eq(lhs,rhs))" + "prompt_number": 13 }, { - "source": "

Symbolic gate rules and circuit simplification

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

Symbolic gate rules and circuit simplification

" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "for g1 in (Y,Z,H):", + " for g2 in (Y,Z,H):", + " e = Commutator(g1(0),g2(0))", + " if g1 != g2:", + " display(Eq(e,e.doit()))" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\left[Y_{0},Z_{0}\\right] = 2 \\mathbf{\\imath} X_{0}$$" + ], "output_type": "display_data", - "latex": "$$\\left[Y_{0},Z_{0}\\right] = 2 \\mathbf{\\imath} X_{0}$$", "png": "iVBORw0KGgoAAAANSUhEUgAAAHYAAAAZCAYAAADkBdqeAAAABHNCSVQICAgIfAhkiAAABSZJREFU\naIHt2XnsXFMUB/DPb0FpiQpR0kYpiYoqGgSNoJbiD2JfSqwVqVgihEotsaRiiVDUEmIXaxDRWCcR\n4RdibdIosdZSFRJ7tc3PH+eNvnm/N/PmTec3kvb3TV5m7jnv3nPfuffcs1yGsFqiK9N+AmPwJU7H\nhhn+3/gpQxuGjVPtf/BjC3MZieEF7/yBX+rwevAmevEyLmlhDq1iffzWYt/h4tvTWIolyf+sfiW8\npWWEVFL/T8SLWIF+zMdlOX2mio/qx9eYU0ZgCl8kY/yMt/EQ7kme+QnvqibG2RZzW5xDWUxHH57D\nx7gN65Yc42g8LwyiXxjFDSn+/liU8H7BK5hUdqKVHNrcZNCTG/R7HDPLCkthApbjcnRneLsIS31e\nWGUROrWwZ+FmK+c0CovxhrDgspgp9DwrhzcH9yk+0eqikkPbKxH4Up0+M3BGqwITzMRFOfSx+AHv\nav6jOrGw3fjMwAU8U7ER1MMoLMPnal3kUbiihfFqUMmhdeErYVGbZXgH4rpVFYoXDFTSSCxIZGfl\nNkInFnYbsYBvZ+gTE/pDLY77ZNJ/atKeokXXlj328tCPR8WRc2yKvh2maU+Qcrfa4GNtPCMW9GB8\n3wYZ7cQiYVnZAKY/+c362V7N6bq6Ic/EzsLyz21tirWo1KHvICb9btLeBE9jRDuEZtCFh0UwMaWF\n/s1YbLdQdrNPnm/Po50k9HRBinYwrhfWvWPBvLrEEb9MbOyygdh/6G3yvY9EZDpJLPIssZN+b1Vw\nA1yN48VufXUQxu/Fa1ivRJ8VOEztybEi571zRGZwZ9LeHLviQuFuTtHYAvvF6TUbH+CvEnNsiEoD\n3sWJ4K9EpDoYOC2RceUqjNHJdCeN00X0PjlFuxabisDvN5EeNcJwPCXqBd9oLgtoCpUGvClC6auS\n1jTCAeIIeiCHd1KJcf6PhZ0gUp19MvRq4eE0segbNBhjLTyC8SL46seh7ZpgpQHv0kTYYFjrRPwq\njsi1M7ydcE2JsTrlY6vYVLiqyQ3e6RN5aD104S7snrT3FLp+seA76qJZH0vks7/jvRzeFjhV+KCd\ncYvwyVVMxEL5PmO08D+LcLgImtKYIT66WVlF6BElx7I+9giRU6exngj0pqtNfc4TxQsiJtkV54sF\n3MlAHc7Gs3grab8pKlkHYEtRlcuilB4qdeg9wqLm1eE/i32T/+NEKrBW0h4rP+cjctcPhcLG5vD3\nFlFiOmFvJIvOHcXdeFBYVxojhJKruAGfJP8PwiGZ9y+WX9CYIfQ2u478Ij3UoFKHPjkRklcr3kpY\nctr6F1rpb4YJC3lfrY/pFRvlD7XH+zrYXkSYS3FHCVl0bmFvEqdMJfPMF3OvYi7uFf729hR9DB7D\nO3XG31LofLGBlwSFeihKmo8SlvYAvsVxeF0or4pxonC/PEVbLBaHiPD2F9Fe+ig+IXnnO9yayOkT\nu3ueKDEuEXXoZmV1CuOFbmDrzLOhOEaruFFEu2eLNHG4+M63hMGMMjALOFb4129FQNknbt6qKNRD\nkY99IjNgHjbCnxna3waWCNdNJlnF/clTBs3KGmwsEBbXDD7FMRnabgV9HkueeijUQzNlriIsNPBe\nd4Tae9v91O7iwZS1JqBQD+1Y2PliB6UxWjjzKiZpvAPbKWtNQKEe2rGwy4Rf3CNpTxAXwulyYDtu\ngJqVtSagUA9ZH7tEFPq/xJElBE0TBYwdRAAxzcqbjnajnqweEWT0qJ+WrU7opM6HMIQhDGEIQxhC\ngn8B8whCyP5F+H8AAAAASUVORK5CYII=\n", - "text": "\u23a1Y ,Z \u23a4 = 2\u22c5\u2148\u22c5X \n\u23a3 0 0\u23a6 0" + "text": [ + "\u23a1Y ,Z \u23a4 = 2\u22c5\u2148\u22c5X ", + "\u23a3 0 0\u23a6 0" + ] }, { + "latex": [ + "$$- \\left[H_{0},Y_{0}\\right] = - \\sqrt{2} \\mathbf{\\imath} \\left(- X_{0} + Z_{0}\\right)$$" + ], "output_type": "display_data", - "latex": "$$- \\left[H_{0},Y_{0}\\right] = - \\sqrt{2} \\mathbf{\\imath} \\left(- X_{0} + Z_{0}\\right)$$", "png": "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\nQmCC\n", - "text": "\u23bd\u23bd\u23bd \n-\u23a1H ,Y \u23a4 = -\u2572\u2571 2 \u22c5\u2148\u22c5\u239b- X + Z \u239e\n \u23a3 0 0\u23a6 \u239d 0 0\u23a0" + "text": [ + "\u23bd\u23bd\u23bd ", + "-\u23a1H ,Y \u23a4 = -\u2572\u2571 2 \u22c5\u2148\u22c5\u239b- X + Z \u239e", + " \u23a3 0 0\u23a6 \u239d 0 0\u23a0" + ] }, { + "latex": [ + "$$- \\left[Y_{0},Z_{0}\\right] = - 2 \\mathbf{\\imath} X_{0}$$" + ], "output_type": "display_data", - "latex": "$$- \\left[Y_{0},Z_{0}\\right] = - 2 \\mathbf{\\imath} X_{0}$$", "png": "iVBORw0KGgoAAAANSUhEUgAAAJUAAAAZCAYAAAA40GzsAAAABHNCSVQICAgIfAhkiAAABVhJREFU\naIHt2neoHFUUwOEvPmOMsUZDFBWNXVGxYRR7Q6Niw95rFIJdJPaKiooYCxKJLdiwtySIIrZYsMUS\nS+yCwS7YEo0x/nFmefMmu7Mz++bFLO4PBnbuzD3n7pkz55577tChQ8X0q0jOtrgRv+JMfIIFMvd8\ni1mZtqHonzr/Hn+2OIYFsWyB+6bjn0zbiTgES2Nj/NLiGP4LFhN2b7XvEpm2Gfgx+T1Q2CTNd/ir\nRX2l2AWjk9+DcRe+whzMxANYo06/F5J7ZuB5bNKLMRyfyJqFaXgC45Lj7uTad1gqR8YjWLIXY5hX\n9MMZeBkT8TauFC9WGY7EJPwt7DMdF6Wu7yWCwRz8gCexdi/GXYq0U9UYlgzmw5x+m2AKVq5gDBPw\nFtbMtC8gnOUPDG8io12c6jycr3s2WFVE1wkY0IK8K8WzOrHOtTtxfYtye0U9p4KXxGA3qnNtCB7G\nohXoXwSfinCdZQxmY58CctrBqRbDR3qmDXCOsPXuLchcTaQEb2Xaj8FpLcirhEZONUr80Wsy7QPE\nlLhiRfr3ENNBllMS/UUN0w5Otbn4TxMy7Tsk7de2KPfppP9myfmeuKJFWZXQyKmGiBxnup6J+1hs\nWqH+HcQbnGZvEaFuKCGnHZxqGWHPBzPt2wunGJtpz0a0Ruyb9L8NW+Fm1S3kWqKRUxGJ5BzsmJyf\njf36eDzDRQ71GLpK9GvmVP1EMlzm6IsHU+8/nSbsfESqbX+RL70m8q48+uMbYbd7FXfGuSi7WmiF\nuzBCLNlrK6/7+1DfKngc7+MgEa2q4jiMLNnnPvFgqyT7n7pEqjEV9yRta2F5UeJ5FQfjkhyZs0SU\nGi1WldnyzzwnL1INwm/JkQ3NVTNYrDa/UKxmlaUdpr96jMZPWD/VNkYsgoYKB2m2UFlKRPbZ4oVs\nmXSkWk+5eXQKTihw3+/4ACvhpFKjK8cA4RTLYgsRymtsLepmX/Sh/jJUaestcSp2wjup9gvFizwK\nP4vo3YiB4oU/SeS+u2EbPFdwfH1CXqQaKKrk2cSySvqJsP+XSFizPISFC8hpl5yqxjAx5W2QM96P\ncVWOjC6M1x3ldhO52T0NezRhXuRUm2EhUTHP4zixZTBIOGF6Obs4VtA4LF+OA0WF+JnMtdVFDWZm\nAT3NOAbHlrifKJ1cXbJPEZbEHSIZn5pqP0V3WWE7UYMaJ57Bmng3I2cMbtEd5SbhSzFdDhFbZ/Xo\njR0LkRepzhee3+htIpawE1PnDwknqXG/yAu2rdN3ZCL/ojrXBop6zuEF9bRLTrWQcNb1M+0r4uLU\n+e2YnPw+1Nw7Cpepn2vVCqmNnmkzO1ZCnlO9KOb27AZzmgf13CIYqWdx72hhnLMy/UYIZxufaV9O\nTIMvi32t2qZoMz3t4lR34HM8mzk+Equ8Gg+IledQEZFqDBM51lMN5G8gnOoz9Xc8cu2Y96B7Q5fY\nfHxP7Ov9LJziwgb3ryY2Lmt8i3VT57eK7YcZGR1XJfeug1eSY6qoy4wXb+4junfdm+lpB7YQxd7+\n4v+kj0F6ToWXigXSUThXTGdviI38DcV0eHpG/rGiDPK1iIivC/unybVjX+VUs7FzifsHi6JbjZnm\nrpAPFwZJ6yjrEEX0zO9MFvllEabggNT5r+LTnjxqX3bkkWvHvopUZZmm5yppUfGpRY0uEale6mM9\nHYqRa8f5xane1LNYuYKYz2vsLvbwelsdb6anQzFy7Ti/ONVkkXTX2FXP3fZH5X+XVZWeDsXItWOV\nnxPfJKrnp2utEnuBmKcHiA/OrqtobEX0nIzDxMpvI+31OfF/xbx6Xh06dOjQoUOHDv9L/gUVIj0T\n0uphewAAAABJRU5ErkJggg==\n", - "text": "-\u23a1Y ,Z \u23a4 = -2\u22c5\u2148\u22c5X \n \u23a3 0 0\u23a6 0" + "text": [ + "-\u23a1Y ,Z \u23a4 = -2\u22c5\u2148\u22c5X ", + " \u23a3 0 0\u23a6 0" + ] }, { + "latex": [ + "$$- \\left[H_{0},Z_{0}\\right] = \\sqrt{2} \\mathbf{\\imath} Y_{0}$$" + ], "output_type": "display_data", - "latex": "$$- \\left[H_{0},Z_{0}\\right] = \\sqrt{2} \\mathbf{\\imath} Y_{0}$$", "png": "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\n5G+hAAAAAElFTkSuQmCC\n", - "text": "\u23bd\u23bd\u23bd \n-\u23a1H ,Z \u23a4 = \u2572\u2571 2 \u22c5\u2148\u22c5Y \n \u23a3 0 0\u23a6 0" + "text": [ + "\u23bd\u23bd\u23bd ", + "-\u23a1H ,Z \u23a4 = \u2572\u2571 2 \u22c5\u2148\u22c5Y ", + " \u23a3 0 0\u23a6 0" + ] }, { + "latex": [ + "$$\\left[H_{0},Y_{0}\\right] = \\sqrt{2} \\mathbf{\\imath} \\left(- X_{0} + Z_{0}\\right)$$" + ], "output_type": "display_data", - "latex": "$$\\left[H_{0},Y_{0}\\right] = \\sqrt{2} \\mathbf{\\imath} \\left(- X_{0} + Z_{0}\\right)$$", "png": "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\n", - "text": "\u23bd\u23bd\u23bd \n\u23a1H ,Y \u23a4 = \u2572\u2571 2 \u22c5\u2148\u22c5\u239b- X + Z \u239e\n\u23a3 0 0\u23a6 \u239d 0 0\u23a0" + "text": [ + "\u23bd\u23bd\u23bd ", + "\u23a1H ,Y \u23a4 = \u2572\u2571 2 \u22c5\u2148\u22c5\u239b- X + Z \u239e", + "\u23a3 0 0\u23a6 \u239d 0 0\u23a0" + ] }, { + "latex": [ + "$$\\left[H_{0},Z_{0}\\right] = - \\sqrt{2} \\mathbf{\\imath} Y_{0}$$" + ], "output_type": "display_data", - "latex": "$$\\left[H_{0},Z_{0}\\right] = - \\sqrt{2} \\mathbf{\\imath} Y_{0}$$", "png": "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\nTAL/A1YPiWUFvKFfAAAAAElFTkSuQmCC\n", - "text": "\u23bd\u23bd\u23bd \n\u23a1H ,Z \u23a4 = -\u2572\u2571 2 \u22c5\u2148\u22c5Y \n\u23a3 0 0\u23a6 0" + "text": [ + "\u23bd\u23bd\u23bd ", + "\u23a1H ,Z \u23a4 = -\u2572\u2571 2 \u22c5\u2148\u22c5Y ", + "\u23a3 0 0\u23a6 0" + ] } ], - "collapsed": false, - "prompt_number": 14, - "input": "for g1 in (Y,Z,H):\n for g2 in (Y,Z,H):\n e = Commutator(g1(0),g2(0))\n if g1 != g2:\n display(Eq(e,e.doit()))\n" + "prompt_number": 14 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "c = H(0)*X(1)*H(0)**2*CNOT(0,1)*X(1)**3*X(0)*Z(1)**2; c" + ], "language": "python", "outputs": [ { + "latex": [ + "$$H_{0} X_{1} \\left(H_{0}\\right)^{2} CNOT_{0,1} X_{1} X_{0}$$" + ], "output_type": "pyout", - "latex": "$$H_{0} X_{1} \\left(H_{0}\\right)^{2} CNOT_{0,1} X_{1} X_{0}$$", - "prompt_number": 15, "png": "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\n", - "text": "2 \nH \u22c5X \u22c5\u239bH \u239e \u22c5CNOT \u22c5X \u22c5X \n 0 1 \u239d 0\u23a0 0,1 1 0" + "prompt_number": 15, + "text": [ + "2 ", + "H \u22c5X \u22c5\u239bH \u239e \u22c5CNOT \u22c5X \u22c5X ", + " 0 1 \u239d 0\u23a0 0,1 1 0" + ] } ], - "collapsed": false, - "prompt_number": 15, - "input": "c = H(0)*X(1)*H(0)**2*CNOT(0,1)*X(1)**3*X(0)*Z(1)**2; c\n" + "prompt_number": 15 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "circuit_plot(c, nqubits=2)" + ], "language": "python", "outputs": [ { "output_type": "pyout", "prompt_number": 16, - "text": "<sympy.physics.quantum.circuitplot.CircuitPlot object at 0x48cd350>" + "text": [ + "<sympy.physics.quantum.circuitplot.CircuitPlot object at 0x48cd350>" + ] }, { "output_type": "display_data", "png": "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\n" } ], - "collapsed": false, - "prompt_number": 16, - "input": "circuit_plot(c, nqubits=2)" + "prompt_number": 16 }, { - "source": "This performs a commutator/anticommutator aware bubble sort algorithm to simplify a circuit.", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "This performs a commutator/anticommutator aware bubble sort algorithm to simplify a circuit." + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "gate_simp(c)" + ], "language": "python", "outputs": [ { + "latex": [ + "$$H_{0} CNOT_{0,1} X_{0}$$" + ], "output_type": "pyout", - "latex": "$$H_{0} CNOT_{0,1} X_{0}$$", - "prompt_number": 17, "png": "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\n/AdptX/0ndrekwAAAABJRU5ErkJggg==\n", - "text": "H \u22c5CNOT \u22c5X \n 0 0,1 0" + "prompt_number": 17, + "text": [ + "H \u22c5CNOT \u22c5X ", + " 0 0,1 0" + ] } ], - "collapsed": false, - "prompt_number": 17, - "input": "gate_simp(c)\n" + "prompt_number": 17 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "circuit_plot(gate_simp(c),nqubits=2)" + ], "language": "python", "outputs": [ { "output_type": "pyout", "prompt_number": 18, - "text": "<sympy.physics.quantum.circuitplot.CircuitPlot object at 0x3da1990>" + "text": [ + "<sympy.physics.quantum.circuitplot.CircuitPlot object at 0x3da1990>" + ] }, { "output_type": "display_data", "png": "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\nDRHxyMelS5cwZsyYNp/zq+Oz2Wy4du2a6cfyJ4+0tDT4+vr+cA79/f3x9OlT02f71cOVx48fo6am\nBuPHj3e6fv36dQDAxIkTXe7DzL/PXvfbwoSEBNjtdjx+/Lhd25eUlKC6uhpjx47t4Ml07dy5E0lJ\nSfDx8UHPnj0RGBiInJwcREdHmz1au317vZWQkOB0vbi4GAD+ytdbgJd+cHfjxo2ora3Fnj17nK63\n9UHOlJQUDBgwwGPfTK6qqkJVVRWio6PRrVs3s8f5La7Ox5w5c5Cbm4t3794hLCys1XpERAQCAgLw\n/Pnzdu1fnXihyspKsVqtLt8MdnXYDx8+lODgYHn37p3mePQTZ+ejsbFRwsPDZdCgQU63KSkpEcMw\nZMGCBe3avzt4ZVwiItnZ2RIVFSVlZWWt1pz9sF++fCmRkZFy5MgRd4xHLbQ8HxUVFTJhwgSJiooS\ni8Ui3bt3l3Hjxsm+fftERCQvL0/i4+MlNDRULBaLWK1WmThxohQXF//W/t3Ja+MSEdm7d6/06dNH\njh49Ko2Njd//vOUPu6GhQQ4fPiwRERFy4MABM8bs9LT/8psVl1e+5mrp0qVL2Lp1K0pLS7F48WLE\nx8djxowZyMvLQ3FxMbKzs2Gz2ZCRkYHExESzx+2UvPU/S3p9XN88e/YMBw8exJMnT3Du3DkkJSUh\nNjYWS5cuxeDBg80er1NjXERKvDUur3ufi+hv4XWfLSTPZBiG2r6Dg4PV9t0WxkWm89ZXJrwtJFLC\nuIiUMC4iJYyLSAnjIlLCuIiUMC4iJYyLSAnjIlLCuIiUMC4iJYyLSAnjIlLCuIiUMC4iJYyLSAnj\nIlLCuIiUMC4iJYyLSAnjIlLCuIiUMC4iJYyLSAnjIlLCuIiUMC4iJYyLSAnjIlLCuIiUMC4iJYyL\nSAnjIlLCuIiU/A99uOsAb0dipwAAAABJRU5ErkJggg==\n" } ], - "collapsed": false, - "prompt_number": 18, - "input": "circuit_plot(gate_simp(c),nqubits=2)" + "prompt_number": 18 } ] } diff --git a/docs/examples/notebooks/smooth_dos.ipynb b/docs/examples/notebooks/smooth_dos.ipynb index f62e593..c9058fc 100644 --- a/docs/examples/notebooks/smooth_dos.ipynb +++ b/docs/examples/notebooks/smooth_dos.ipynb @@ -1,200 +1,283 @@ { - "nbformat": 2, "metadata": { - "name": "dos" + "name": "smooth_dos" }, + "nbformat": 2, "worksheets": [ { "cells": [ { "cell_type": "code", + "collapsed": true, + "input": [ + "from sympy import *", + "import numpy as np", + "import math" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 1, - "input": "from sympy import *\nimport numpy as np\nimport math" + "prompt_number": 1 }, { - "source": "

Strutinsky Energy Averaging Method

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

Strutinsky Energy Averaging Method

" + ] }, { - "source": "Define a callable class for computing the smooth part of the density of states $\\tilde{g}_m(E)$ with curvature\ncorrection of order $2M$.", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Define a callable class for computing the smooth part of the density of states $\\tilde{g}_m(E)$ with curvature", + "correction of order $2M$." + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "class SmoothDOS(object):", + "", + " def __init__(self, energies):", + " self.energies = energies", + "", + " def gaussian_smoothing_func(self, M, x):", + " return (mpmath.laguerre(M,0.5,x**2)*exp(-x**2)/sqrt(pi)).evalf()", + "", + " def __call__(self, e, M=3, gamma=1.0):", + " return sum(self.gaussian_smoothing_func(M, (e-ei)/gamma)/gamma for ei in self.energies)" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 2, - "input": "class SmoothDOS(object):\n\n def __init__(self, energies):\n self.energies = energies\n\n def gaussian_smoothing_func(self, M, x):\n return (mpmath.laguerre(M,0.5,x**2)*exp(-x**2)/sqrt(pi)).evalf()\n\n def __call__(self, e, M=3, gamma=1.0):\n return sum(self.gaussian_smoothing_func(M, (e-ei)/gamma)/gamma for ei in self.energies)" + "prompt_number": 2 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "def avgf(M, x):", + " return (mpmath.laguerre(M,0.5,x**2)*exp(-x**2)/sqrt(pi)).evalf()" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 3, - "input": "def avgf(M, x):\n return (mpmath.laguerre(M,0.5,x**2)*exp(-x**2)/sqrt(pi)).evalf()" + "prompt_number": 3 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "def smooth_dos(gamma, M, e, energies):", + " return sum(avgf(M, (e-ei)/gamma)/gamma for ei in energies)" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 4, - "input": "def smooth_dos(gamma, M, e, energies):\n return sum(avgf(M, (e-ei)/gamma)/gamma for ei in energies)" + "prompt_number": 4 }, { - "source": "

1D Simple Harmonic Oscillator DOS

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

1D Simple Harmonic Oscillator DOS

" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "def sho_smooth_dos(e):", + " \"\"\"Compute the exact smooth DOS.\"\"\"", + " return 1" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 5, - "input": "def sho_smooth_dos(e):\n \"\"\"Compute the exact smooth DOS.\"\"\"\n return 1" + "prompt_number": 5 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "def sho_spectrum(nmax):", + " \"\"\"Compute the first nmax energies of the 1D SHO.\"\"\"", + " return [n+0.5 for n in range(nmax)]" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 6, - "input": "def sho_spectrum(nmax):\n \"\"\"Compute the first nmax energies of the 1D SHO.\"\"\"\n return [n+0.5 for n in range(nmax)]" + "prompt_number": 6 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "sho_evalues = np.linspace(0.0,20,100)" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 7, - "input": "sho_evalues = np.linspace(0.0,20,100)" + "prompt_number": 7 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "sho_dos = SmoothDOS(sho_spectrum(30))" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 8, - "input": "sho_dos = SmoothDOS(sho_spectrum(30))" + "prompt_number": 8 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "sho_exact_dos = [sho_smooth_dos(e) for e in sho_evalues]" + ], "language": "python", "outputs": [], - "collapsed": false, - "prompt_number": 10, - "input": "sho_exact_dos = [sho_smooth_dos(e) for e in sho_evalues]" + "prompt_number": 10 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "sho_approx_dos = [sho_dos(e,M=3,gamma=10.0) for e in sho_evalues]" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 23, - "input": "sho_approx_dos = [sho_dos(e,M=3,gamma=10.0) for e in sho_evalues]" + "prompt_number": 23 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "plot(sho_evalues, sho_exact_dos, label=\"exact\")", + "plot(sho_evalues, sho_approx_dos, label=\"approx\")", + "title(\"Smooth part of the DOS for the 1D SHO\")", + "xlabel(\"Energy\"); ylabel(\"$g(E)$\")", + "legend(loc=4)" + ], "language": "python", "outputs": [ { "output_type": "pyout", "prompt_number": 24, - "text": "<matplotlib.legend.Legend at 0x7f1790f77990>" + "text": [ + "<matplotlib.legend.Legend at 0x7f1790f77990>" + ] }, { "output_type": "display_data", "png": "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\n" } ], - "collapsed": false, - "prompt_number": 24, - "input": "plot(sho_evalues, sho_exact_dos, label=\"exact\")\nplot(sho_evalues, sho_approx_dos, label=\"approx\")\ntitle(\"Smooth part of the DOS for the 1D SHO\")\nxlabel(\"Energy\"); ylabel(\"$g(E)$\")\nlegend(loc=4)" + "prompt_number": 24 }, { - "source": "Note how the exact smoothed DOS and the Strutinsky approximation agree once the energy is away from\n0. In general, these are edge effects and are also present at the right limit if you don't use enough energy\nlevels. Here we have used 30, so the right side doesn't show these artifacts.", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Note how the exact smoothed DOS and the Strutinsky approximation agree once the energy is away from", + "0. In general, these are edge effects and are also present at the right limit if you don't use enough energy", + "levels. Here we have used 30, so the right side doesn't show these artifacts." + ] }, { - "source": "

1D Particle in a BOX (PIAB) DOS

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

1D Particle in a BOX (PIAB) DOS

" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "def piab_smooth_dos(e):", + " \"\"\"Compute the exact smooth DOS.\"\"\"", + " return 1.0/(2.0*math.sqrt(e*math.pi**2/2))" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 16, - "input": "def piab_smooth_dos(e):\n \"\"\"Compute the exact smooth DOS.\"\"\"\n return 1.0/(2.0*math.sqrt(e*math.pi**2/2))" + "prompt_number": 16 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "def piab_spectrum(nmax):", + " \"\"\"Compute the first nmax energies of the 1D PIAB.\"\"\"", + " return [0.5*math.pi**2*(n+1)**2 for n in range(nmax)]" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 17, - "input": "def piab_spectrum(nmax):\n \"\"\"Compute the first nmax energies of the 1D PIAB.\"\"\"\n return [0.5*math.pi**2*(n+1)**2 for n in range(nmax)]" + "prompt_number": 17 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "piab_evalues = linspace(1.0,1000.0,100)" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 18, - "input": "piab_evalues = linspace(1.0,1000.0,100)" + "prompt_number": 18 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "piab_dos = SmoothDOS(piab_spectrum(20))" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 19, - "input": "piab_dos = SmoothDOS(piab_spectrum(20))" + "prompt_number": 19 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "piab_exact_dos = [piab_smooth_dos(e) for e in piab_evalues]" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 20, - "input": "piab_exact_dos = [piab_smooth_dos(e) for e in piab_evalues]" + "prompt_number": 20 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "piab_approx_dos = [piab_dos(e, M=4, gamma=150.0) for e in piab_evalues]" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 21, - "input": "piab_approx_dos = [piab_dos(e, M=4, gamma=150.0) for e in piab_evalues]" + "prompt_number": 21 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "plot(piab_evalues, piab_exact_dos, label=\"exact\")", + "plot(piab_evalues, piab_approx_dos, label=\"approx\")", + "title(\"Smooth part of the DOS for the 1D PIAB\")", + "xlabel(\"Energy\"); ylabel(\"$g(E)$\")", + "legend(loc=1)" + ], "language": "python", "outputs": [ { "output_type": "pyout", "prompt_number": 22, - "text": "<matplotlib.legend.Legend at 0x6107410>" + "text": [ + "<matplotlib.legend.Legend at 0x6107410>" + ] }, { "output_type": "display_data", "png": "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\n" } ], - "collapsed": false, - "prompt_number": 22, - "input": "plot(piab_evalues, piab_exact_dos, label=\"exact\")\nplot(piab_evalues, piab_approx_dos, label=\"approx\")\ntitle(\"Smooth part of the DOS for the 1D PIAB\")\nxlabel(\"Energy\"); ylabel(\"$g(E)$\")\nlegend(loc=1)" + "prompt_number": 22 }, { - "outputs": [], "cell_type": "code", "collapsed": true, - "language": "python" + "input": [], + "language": "python", + "outputs": [] } ] } diff --git a/docs/examples/notebooks/sympy.ipynb b/docs/examples/notebooks/sympy.ipynb index 650b929..fc5e434 100644 --- a/docs/examples/notebooks/sympy.ipynb +++ b/docs/examples/notebooks/sympy.ipynb @@ -1,266 +1,399 @@ { - "nbformat": 2, "metadata": { "name": "sympy" }, + "nbformat": 2, "worksheets": [ { "cells": [ { - "source": "

SymPy: Open Source Symbolic Mathematics

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

SymPy: Open Source Symbolic Mathematics

" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "%load_ext sympyprinting" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 1, - "input": "%load_ext sympyprinting" + "prompt_number": 1 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "from __future__ import division", + "from sympy import *", + "x, y, z = symbols(\"x y z\")", + "k, m, n = symbols(\"k m n\", integer=True)", + "f, g, h = map(Function, 'fgh')" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 2, - "input": "from __future__ import division\nfrom sympy import *\nx, y, z = symbols(\"x y z\")\nk, m, n = symbols(\"k m n\", integer=True)\nf, g, h = map(Function, 'fgh')" + "prompt_number": 2 }, { - "source": "

Elementary operations

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

Elementary operations

" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "Rational(3,2)*pi + exp(I*x) / (x**2 + y)" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\frac{3}{2} \\pi + \\frac{e^{\\mathbf{\\imath} x}}{x^{2} + y}$$" + ], "output_type": "pyout", - "latex": "$$\\frac{3}{2} \\pi + \\frac{e^{\\mathbf{\\imath} x}}{x^{2} + y}$$", - "prompt_number": 3, "png": "iVBORw0KGgoAAAANSUhEUgAAAGkAAAApCAYAAAA22gdWAAAABHNCSVQICAgIfAhkiAAABGRJREFU\neJzt22uIVVUUwPHfOGmOqWmZmZpDMoYpTlohkb2TKCOll/SyLxUR1YcKen3qBUkkQRQFZRj1Iewp\n9SGo7E1PghJ7J4ZBpVlgGWY204d1Lvcacx8zc885d/T84XD2vnPOWevedfbaa6+1h4KWpy1vBYYo\nXTgGT2MiZqEHo/A33mimsH0auGY0FmNC0l+Fbc1UYggyEUvwIrrxGtZiGeblodDrOCFpL8cneSjR\nYkzDg2hP+lPwUNIe1mxhjYykd5VHznu4GWPt3aPpPLyARWIkbcVnmIMd+LaZwtrrX+JN/JK0LxS+\n99FmKtHC7I8zcCSm4vvk8+8wTniZ4fgQu/BrxTWZ041rhXEOyEuJjJmMl4Vx4DaNvdRNp1GhW8UQ\nPg0z8E5qGrUOz2MT/hXBwA/4OleNqjAJKzAm6c9DL+bnplE2jMZOHJy3ItSPRGZiqbKRxifnXalp\nVJvjZOdu/8Hmin6X8jIkU+q5u03CJ29DB+7EGjyRsl7VuAZb8GPKcnbiEGGUzSKKm4qPUpY7KLrF\ngvawnPVYjmMzktUmsgqnCveXG42sk+Dz5BgMB4mQti96sDE5twq9WmTh3qiRBsNkEXxcoLZ7PQlv\nZ6DPkKPpKYz/0Y6H8b5IQt6HhcJtrsbspD1ZYaCqlEZSbwrPbhPpkxXKBugSicheke/6osq9w7Fv\nlc879D1HbLf790jjO+VCyUhplSxWV7QnibC2V8xNY2vcdxeO7+PzTjES/+jjb3fg1Yp+UYYZALfi\nuqQ9H58O4BlZRnctQ9pzUqWcy4WrI0bVEbIJXIY8Wf1IZ2M/rE/6HRgpDLUuIx0a5Urhijtxo3DR\nudKfkTRqEHKuxysV/VLG4KhBPDMNpuJPEexsFJXW3GnESKeLSfkGUbs/eQBytovwu8QHeBIbBvCs\nNJkiamZE1rsrR10aZhxWVvQXibxWLolGXI3DU5ZRyorcKwp+Lc9sETKX3qjRSX9xbhplwyQ8lrcS\n/aGzon20KFNMz0mXLGjD7WIO7s9a6zJh3NxZI9Y7ezIXiWQwnNOP+65QLrU3lf5EdzfhLdyThiI5\nMLyiPSI5zxRbtb4Um0pqZUUGQl+/d91lUKPrpEvwjdgMOEZEQV81rFprMUuknEaJtdsOUS97Cc/i\nwJTkdifHpSIA6xGBUCduqXVjI0Y6V5Ss12MuThRZ7aHKQjwgXrR1OBRX6f9euWUisCrRLfaAVOYV\nn8PHSXsBnsL9ojrQgzM1oco9XawXfq44fhJv4FCl5NqW4pkmPrfenDRCZDNWJf1h+E15/qtKvZG0\nwe7R3Z7AzuS8UDmXOB5/ic32acpdoryxdK544bfUuzGrBGurMEe4nJE4SzkTf7Gy8dJkgtjcA+eL\nQKwuuezIzJGJYnPJNLFYPUVUhtcK1zMYZogtxttrXLNVJALaRartEeWkc0GLUKo2T8Hvqm/MKciJ\nu8UaDB5XLoDWZW9zd3nSJkbSAvFvMitrX15QUFBQUFBQMAD+A4Qttne0VDZpAAAAAElFTkSuQmCC\n", - "text": "\u2148\u22c5x \n3\u22c5\u03c0 \u212f \n\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\n 2 2 \n x + y" + "prompt_number": 3, + "text": [ + "\u2148\u22c5x ", + "3\u22c5\u03c0 \u212f ", + "\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500", + " 2 2 ", + " x + y" + ] } ], - "collapsed": false, - "prompt_number": 3, - "input": "Rational(3,2)*pi + exp(I*x) / (x**2 + y)\n" + "prompt_number": 3 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "exp(I*x).subs(x,pi).evalf()" + ], "language": "python", "outputs": [ { + "latex": [ + "$$-1.0$$" + ], "output_type": "pyout", - "latex": "$$-1.0$$", - "prompt_number": 4, "png": "iVBORw0KGgoAAAANSUhEUgAAACsAAAASCAYAAADCKCelAAAABHNCSVQICAgIfAhkiAAAAV1JREFU\nSInt1b1LHEEYx/HP+VacTdKpKKKFXIqIIBZahBTX2Pk3pIpVIFhoMF26A8FKsLKzCqnTpxILUUjh\nW6FFbIIIuSKceBY7q8uyB9l7CSf4g+Hh+T47z/wYZmd4Qip0oOcX3KCSc14ZyzhBHRfYaq+1R5VE\nButYzTl3GlVMhrwfe/iQ/KinRYOxKlhBrcn5a/iB85DXsBv6jrbsroFK8u/sOG7xMcVfhV7vYtCu\nnW1FM+gVndWkTkN8G4NuMDsU4p8Ur4UxHINuMlvNqFXxIk66wezfEO8yav1J3g1mjxrwAor4FYO+\nRPE1tv37Q3GA9824S+kwxJcpXgxermKQNHuE+TYsnleXuMZYis+F+LDz//sYDGAigx9iMcXK+I2d\nTplZEF3kGw3q30UPwGyKvxH9+VMhH8Qx1jvg0Sfsi+7Kehg/g7mkKjjDSEaPJXzDJr7is+ixeNaz\nkroH5AA9SswlEREAAAAASUVORK5CYII=\n", - "text": "-1.00000000000000" + "prompt_number": 4, + "text": [ + "-1.00000000000000" + ] } ], - "collapsed": false, - "prompt_number": 4, - "input": "exp(I*x).subs(x,pi).evalf()\n" + "prompt_number": 4 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "e = x + 2*y" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 5, - "input": "e = x + 2*y" + "prompt_number": 5 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "srepr(e)" + ], "language": "python", "outputs": [ { "output_type": "pyout", "prompt_number": 6, - "text": "Add(Symbol('x'), Mul(Integer(2), Symbol('y')))" + "text": [ + "Add(Symbol('x'), Mul(Integer(2), Symbol('y')))" + ] } ], - "collapsed": false, - "prompt_number": 6, - "input": "srepr(e)" + "prompt_number": 6 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "exp(pi * sqrt(163)).evalf(50)" + ], "language": "python", "outputs": [ { + "latex": [ + "$$262537412640768743.99999999999925007259719818568888$$" + ], "output_type": "pyout", - "latex": "$$262537412640768743.99999999999925007259719818568888$$", - "prompt_number": 7, "png": "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\n", - "text": "262537412640768743.99999999999925007259719818568888" + "prompt_number": 7, + "text": [ + "262537412640768743.99999999999925007259719818568888" + ] } ], - "collapsed": false, - "prompt_number": 7, - "input": "exp(pi * sqrt(163)).evalf(50)" + "prompt_number": 7 }, { - "source": "

Algebra

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

Algebra

" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "((x+y)**2 * (x+1)).expand()" + ], "language": "python", "outputs": [ { + "latex": [ + "$$x^{3} + 2 x^{2} y + x^{2} + x y^{2} + 2 x y + y^{2}$$" + ], "output_type": "pyout", - "latex": "$$x^{3} + 2 x^{2} y + x^{2} + x y^{2} + 2 x y + y^{2}$$", - "prompt_number": 8, "png": "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\n", - "text": "3 2 2 2 2\nx + 2\u22c5x \u22c5y + x + x\u22c5y + 2\u22c5x\u22c5y + y" + "prompt_number": 8, + "text": [ + "3 2 2 2 2", + "x + 2\u22c5x \u22c5y + x + x\u22c5y + 2\u22c5x\u22c5y + y" + ] } ], - "collapsed": false, - "prompt_number": 8, - "input": "((x+y)**2 * (x+1)).expand()" + "prompt_number": 8 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "a = 1/x + (x*sin(x) - 1)/x", + "display(a)", + "simplify(a)" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\frac{x \\operatorname{sin}\\left(x\\right) -1}{x} + \\frac{1}{x}$$" + ], "output_type": "display_data", - "latex": "$$\\frac{x \\operatorname{sin}\\left(x\\right) -1}{x} + \\frac{1}{x}$$", "png": "iVBORw0KGgoAAAANSUhEUgAAAHUAAAAeCAYAAAASN1ElAAAABHNCSVQICAgIfAhkiAAAAyFJREFU\naIHt2luoFVUcx/GPF9SgcxGOciIUIzWFoBCpiCiSyoJeSjIxETFQocSXXuot6LmHHoIgKHzsYkUh\nJhVR0JNBCqFoiAoRegSFFEwte/jPhjnjvsze+8yeOefMFzasmXX7rf9/r1n/NWuoqemSUdxRtogm\nLC1bQBdUTut3eKFsESkW41X8VraQHPSsdf7Ua5nEM/iv4D7yMoStGMaikrV0YiBaRzCWpEcxnsob\nxvImdcYwL3Pv7lR6SeZ6Du7M2e9ILtXNeRYn+qg/SHrSmmemvoRreEQY/nfsxW5swMWk4+fwQVLn\nebGW7kzuwzaxPjyAH3Aa2/Ez9uOJJJ2n31Ecw6Xuhjs76OTUpbiOr8UsegVvidnzBz7F+qSdfcKp\nC8VMOpukGyzCUbFO7MI/WJfU3y8c9W/Ofq8Kp/+EN4TTW/EeznUY56zlfbyWufc5bgjjrszkfSxm\nZ5p38Gbq+kBSZgwbu+iX+HP0wox//M7touxT4rEJq3EPNmEFTuL1VNmRpPxnuK9FG8N4HF/hXq0D\ngmy/DbLrdU1CJ6fuwbt4SAQ1J0Vkthm/CEf8Kda371P1nsa3WGZycLMKR5LrDfhRPF7HTQ5+WvX7\naKrMtVwjvJ052j+u+2HuFLfdk9ZO//YhsV+ah4/EFmU5PhTr1IPJ9QUcTNWbwP24iUPJvRViHW04\n/zzWinX3CzELj+NWm34/EevuY/gVf3c51rdFELdABGxwqos2OrFTjPN4n+0MQutAmC+CpTwsKVJI\nH+zBlrJFdLOmFs1NXM5ZdqJIIdOdKjm1Zopo7FNvlaqi+hQRWBVm84ZTi4oGa1pTmM1rZ/bGVrEl\ny7JGvAk73STvS3xTpKgGtVN74y6TDyMavIgrONwk74x4T144RR+9zVT+Sn5Z1osI/kiTvIFRpei3\n3fHebKRne1RlprY7Zjtaoq6y6MseVXBqp2O22caMs0erY7bpwm68PIXtTXd7IE5j1ibp1e0KVpQx\n/X1qk2Xa2iN9zHZVnFAMYUeJmsqkb3tUYZ/6JB4WR3kXxRcUl8RXFddL1FUWtT1qampqamoqwv8Y\noZik/6S2SgAAAABJRU5ErkJggg==\n", - "text": "x\u22c5sin(x) - 1 1\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\n x x" + "text": [ + "x\u22c5sin(x) - 1 1", + "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500", + " x x" + ] }, { + "latex": [ + "$$\\operatorname{sin}\\left(x\\right)$$" + ], "output_type": "pyout", - "latex": "$$\\operatorname{sin}\\left(x\\right)$$", - "prompt_number": 9, "png": "iVBORw0KGgoAAAANSUhEUgAAADAAAAASCAYAAAAdZl26AAAABHNCSVQICAgIfAhkiAAAAnVJREFU\nSInt1klo11cQB/BPjKlbRaqigtFK0kQwitiIQlxA0iWCIopKL0LdwAVBiBseFA8iaA9igrbioZce\nhNBLC/WgYKHQqlFRXNBaqBsqVnDDhWj1MC/ty5+/HiSQg/lefjPz/c97M/Nmhj/vKT7HDVR1dSA9\n3tFvGM7heifG0o1udAVKitg+wjY8wBO04ZvEfYZZqMYi3Mv8GjEdt7ACMzFRzEsVluo4M4NQieNi\nFjekuyvwLR5iGUrRit/wHH++LaEeuIixSa/EPymw0dic7GewJvMbkxIYgFfYh4aM/xn7C+5anMnb\n0xlQJwpzQBT4KC4kbkOxgHPUYST+Tvp97MAJrMQeUdGxOlZzPlpQnvRLOJTxJRiS6QPwb5JrcDsL\n8gMMxPeiGD9ideJOobYwiRxjktNfaMK0jKtI3024g7KMq0zfVXiG3gXnXseWTK/HpCQPRZ+MWy/a\nt7RIfB+LQr4Vy3EtJfKqwKEEV7DzDb4t+LXA9mk6py6zLfR/yxTiF9FyxVCKrW8KvBA1otdbM1t9\nCqZavMCIjCvBXbEAcuwUSRNt9CG+wJdF7izDI6zLbH1F20r35VyHGfgOpzP9PA6KoW7H12IbXMZX\nGJ5x4zBYDF2ORfghyRvxUvTyJ8lWj7VJnpoSPJn5N6JXkqvEPBZNoEYMTDuGYDZ2ZbZyHEF/TMAf\nGTdDrLnfM1tfsRoPi5a5i6dis/UTr9aMOSmWJWIDvUj+teLFryZ9oijgf8gH5ZgYkgZMwXjsxtns\nN7ewAKMS9zjj5ort1ZLZ2lIw88R2aRIvQMzZJPGa/USxmvGTWNGT0RN7k8843BR/IrvRjc7Ca5nO\nfj0LzBdrAAAAAElFTkSuQmCC\n", - "text": "sin(x)" + "prompt_number": 9, + "text": [ + "sin(x)" + ] } ], - "collapsed": false, - "prompt_number": 9, - "input": "a = 1/x + (x*sin(x) - 1)/x\ndisplay(a)\nsimplify(a)" + "prompt_number": 9 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "solve(Eq(x**3 + 2*x**2 + 4*x + 8, 0), x)" + ], "language": "python", "outputs": [ { "output_type": "pyout", "prompt_number": 10, - "text": "[-2\u22c5\u2148, 2\u22c5\u2148, -2]" + "text": [ + "[-2\u22c5\u2148, 2\u22c5\u2148, -2]" + ] } ], - "collapsed": false, - "prompt_number": 10, - "input": "solve(Eq(x**3 + 2*x**2 + 4*x + 8, 0), x)" + "prompt_number": 10 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "a, b = symbols('a b')", + "Sum(6*n**2 + 2**n, (n, a, b))" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\sum_{n=a}^{b} \\left(2^{n} + 6 n^{2}\\right)$$" + ], "output_type": "pyout", - "latex": "$$\\sum_{n=a}^{b} \\left(2^{n} + 6 n^{2}\\right)$$", - "prompt_number": 11, "png": "iVBORw0KGgoAAAANSUhEUgAAAHgAAAA5CAYAAAD9YO8bAAAABHNCSVQICAgIfAhkiAAAB5NJREFU\neJzt3HuwVXUVwPEP9wUIBghpkKXySIQIzMmgqGywxwRUNuNgQzVI00RPpbSwml6WvSxrxoiisdIa\nzXAaKpssSCIzJ3tKphWBlWERpWU+QemPtY9n3+05556z9z7AdfZ3Zs/d+3d+j3X3+j3Wb/3WOVQ8\npuktUHYWjsG9uL8ccSrKpqdA2SdjE55YkiwVhxhPwF8PthAVrSkyRZ+Gh7AFo/BAGQJVlEsRBZ+D\n/diFc5O0PxSWqOKQ4XYcndwvxeaDKEtFE/IaWU/FbqFkmIn7SpGoolTyKngmfpF6fik2Fhenomzy\nKvhG7E3uF+FBXFKKRBWlMqJA2dMwEYdjrcqKrqioqKio6IRGa/BKHNHFNjfjV12svyJFIwV/B4uT\n+3uxTnisWjGAsRiT/B0rOsnsBm1sxqk55a0ogcnCibE/uc4pUNckvBJfxt9Sdc4uJmJFUV6Mh4Uy\nHsQzS6r3VbgTny+pvooCfEJ9xO3EuJLqfRK2Y0JJ9VXkpB8/U1fyhhLrXqp+AlVxEJmK/6gr+Y0l\n1l1FghwinKGu4Pswt8vtnYfjutzGY42JYknNzRfVlfx7sQ3qBm/Dii7VPRyZileI07uhOBdn5W3o\nMNysruRL81bUgmcod50f7qwQTqd5uEpsNftb5O/HNrwwb4NzxBRdU/KZeStqwg8xv+Q6hyt9+ImY\neokTu714yRDlFinoJXyDuoLvwQlFKktxijhjzstC0QEJG2GZiPocrozEr7EglbYbZ7dR9vtiNszN\nBnUl34TRRSpLuAgfbpDeg9UiWmQLPoIZmTzzhetzm+iAM3EsbilBrk7oFzbEJfg03iuWtjKYJb5c\n0M5a/HF8oUhj43GbupLL8ErdjJc1SL8Sq0RY7hG4DHtwcirPUhEdukd804IIBtxVglzt0oNr8c5U\n2gbRccuo+xq8ps38r8O/iza6QKwJ+7FPPboyD4cn9UzNpC8WCk0zRvi0d2bST8YNqeeVuKKATJN1\nFs60WnTGGv24QzlhTB8VMW/tcop4n+OLNvxB5Tg/ZjQR6EL8Ec/KpF+Z5J+eSjvP4Cl+s+ggz5Yv\nLOlzOL7NvNPFqdtzMumjcrad5s04KbnvF1umoZgi3s9c8gfdPS5p7EIRj1WEoxKB/ptJv1u8vKyC\n9yR/0yN+kbDCa8zB9SK8d6ijzkaM0L5ylgmj6IZM+v05265xNp6OF2CNmO73tiwR7BIG8DGEOd4p\nfWJ9uQXvyFE+S62TjTQ4tvp8fBe/zOSvGRrpsN2r8ePU8wq8CF8qQb6hmId/iRlolRhBA8Ig3J7K\nNxVvF4PjPfinMArHiw75GbGOE46kp4l3kzasft6mTPvE+8zFerFHG5W3ggwzRU+fM1RGTBPCf62k\ntpuxTnsWK7GM/EMsE7V3cqo4Fj0xle9icSL3LXwT71c/UVsmfP5FvkpU40jxPp+bp/Aa8Q9NKkGQ\nGhMSgdpZX74hLPgy229EJwq+S8ifddLciK3J/SR8LLnfgh3CYKyxJKnjqByyZlmY1NWuDfEIp4vN\ndnYfWgY7ROdpxUr82YE5iOhEwTvE2ph1I16hrrQjxd68tgy9JZN3Df6eU9YsZ4ptUi/tr8ELxOZ5\nsRjBZTAW/0vur9G64ywUoUPPEyO4LNYKQybLcWJENvrlgtX4aep5l/hfsgbQ3cnf6WJJI+QfJUZx\nmiX4UbtCD8EM8cX8h9otMFX0rtNLEoAIAUpvaxZ7tBVaY7p4oVNSaTPkmIIa0CdeePZaL4ycRp9l\n+ZAIa8pa3ZeKsKeJqbQPCOMqnfdooYylyXPR/etGvLrdzBNwq3KjLw7DbwyeAkcIJ3n2JGQivufR\njpQ36e65dCdT9HwxFWdnoK34bYO0qzJp7xJK7xMW+es7knQwJ4rj3FanTo8wIMz2ovvcNCeJDtNo\ntC4Rwg0kzyPFC7lMjJLadYHwO5fhA29GJwomRvxnU8+zhRWddqmOFt/fyq6/X8XlopNfJP/uZISY\n6Za3W+ArIka6iOk+Qij13UJZ+0RvX9Uk/1rRoxkc9Je9bisgUzt0quDRQvaNSdnLhYMizVyh4GmZ\n9OeLDv9J4XnLy2uFYTdoqWjmrXmfUMoF6oZQK3rF1DsmdY0TxtnjM3kfEEd5dzWop0e8oPOFgTOm\nQZ5aHXe0IVde1okToVs7LNcjlH1Pk8/HNPlsQHT+hztsr8Y44V5dIeyBlizXfOSUcX19iPZ7FfDC\nlMTFBvu6D3WavrNGI/jluutIuE7nI+NAM1r1kxQVFRUVFd0lvQYvFCca24RJP1O4z9I+0hO03jbt\nFz+GlnXbzRa/bXmd8Mv+qZDUFW1TU9Z8sc1ZnzxvF479H6hv4HvFMdhksc1pdu1U/0GWAWE13ySc\n8puEM+N33fqHKhrTrcC1dQYHom3X/aO+ihS106RvC7dabeQSfuGtmfyztA7zSU/Ro8XG+ynJZ8eK\n2KU9jQpWdIf0ceEig39vcjk+Jdxn1wvFzjO0gm8Xa/nxwlv1l1T91wqF3ykc7BUHkE1CCTV2i9Ok\nvKcbPWLt7RPT/dV4q+Z+6Ious1r9JIf4HswZmbROmSJmgmnCX3qWzpz4FRUVFRUVFRXDkv8DxIWR\nCnsQh3MAAAAASUVORK5CYII=\n", - "text": "b \n ___ \n \\ ` \n \\ \u239b n 2\u239e\n / \u239d2 + 6\u22c5n \u23a0\n /__, \nn = a" + "prompt_number": 11, + "text": [ + "b ", + " ___ ", + " \\ ` ", + " \\ \u239b n 2\u239e", + " / \u239d2 + 6\u22c5n \u23a0", + " /__, ", + "n = a" + ] } ], - "collapsed": false, - "prompt_number": 11, - "input": "a, b = symbols('a b')\nSum(6*n**2 + 2**n, (n, a, b))" + "prompt_number": 11 }, { - "source": "

Calculus

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

Calculus

" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "limit((sin(x)-x)/x**3, x, 0)" + ], "language": "python", "outputs": [ { + "latex": [ + "$$- \\frac{1}{6}$$" + ], "output_type": "pyout", - "latex": "$$- \\frac{1}{6}$$", - "prompt_number": 12, "png": "iVBORw0KGgoAAAANSUhEUgAAACYAAAAiCAYAAAAzrKu4AAAABHNCSVQICAgIfAhkiAAAASpJREFU\nWIXt178rRlEYwPEPXikZLH4NShTKoAyymw3KPyJlsBssVqvBYDIwCcl/gHpXr8liEYWN4bx0k3Ku\nzsmr937rDGd47vPtuc+5zz20OYN/LfCVUWxjp2xgLb3LJzOYxxCeygbnFKs31xT6ywZ3JtdJRCVW\nlrYW62iuUnRlEPlgHOtYwLBwOu9wnzFnRetRuim/4S3BM/4PxYpNYlV8FRvYSm7UpCjRg2nxYg+4\nTS1U8VtSnMqfmBP6tw97eI0Jyj0rNzGCfQxgLXO+KBZxUNgvC3Mzipyvchc3uMYYrnCeMV80dZyi\nVyjAMVZig3P2WDcu8SyMrRNsxAbnFGvgsbB/Ef7LosgpdoiJwn4YFxnzRVPDEZaEi++ZcPltGWaF\nz0TLXnwq2pN3yugjnSzSytcAAAAASUVORK5CYII=\n", - "text": "-1/6" + "prompt_number": 12, + "text": [ + "-1/6" + ] } ], - "collapsed": false, - "prompt_number": 12, - "input": "limit((sin(x)-x)/x**3, x, 0)" + "prompt_number": 12 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "(1/cos(x)).series(x, 0, 6)" + ], "language": "python", "outputs": [ { + "latex": [ + "$$1 + \\frac{1}{2} x^{2} + \\frac{5}{24} x^{4} + \\operatorname{\\mathcal{O}}\\left(x^{6}\\right)$$" + ], "output_type": "pyout", - "latex": "$$1 + \\frac{1}{2} x^{2} + \\frac{5}{24} x^{4} + \\operatorname{\\mathcal{O}}\\left(x^{6}\\right)$$", - "prompt_number": 13, "png": "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\nAAAAAElFTkSuQmCC\n", - "text": "2 4 \n x 5\u22c5x \n1 + \u2500\u2500 + \u2500\u2500\u2500\u2500 + O(x**6)\n 2 24" + "prompt_number": 13, + "text": [ + "2 4 ", + " x 5\u22c5x ", + "1 + \u2500\u2500 + \u2500\u2500\u2500\u2500 + O(x**6)", + " 2 24" + ] } ], - "collapsed": false, - "prompt_number": 13, - "input": "(1/cos(x)).series(x, 0, 6)" + "prompt_number": 13 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "diff(cos(x**2)**2 / (1+x), x)" + ], "language": "python", "outputs": [ { + "latex": [ + "$$- 4 \\frac{x \\operatorname{sin}\\left(x^{2}\\right) \\operatorname{cos}\\left(x^{2}\\right)}{x + 1} - \\frac{\\operatorname{cos}^{2}\\left(x^{2}\\right)}{\\left(x + 1\\right)^{2}}$$" + ], "output_type": "pyout", - "latex": "$$- 4 \\frac{x \\operatorname{sin}\\left(x^{2}\\right) \\operatorname{cos}\\left(x^{2}\\right)}{x + 1} - \\frac{\\operatorname{cos}^{2}\\left(x^{2}\\right)}{\\left(x + 1\\right)^{2}}$$", - "prompt_number": 14, "png": "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\n", - "text": "2 \n \u239b 2\u239e \u239b 2\u239e \u239b 2\u239e\n 4\u22c5x\u22c5sin\u239dx \u23a0\u22c5cos\u239dx \u23a0 cos \u239dx \u23a0\n- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n x + 1 2\n (x + 1)" + "prompt_number": 14, + "text": [ + "2 ", + " \u239b 2\u239e \u239b 2\u239e \u239b 2\u239e", + " 4\u22c5x\u22c5sin\u239dx \u23a0\u22c5cos\u239dx \u23a0 cos \u239dx \u23a0", + "- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500", + " x + 1 2", + " (x + 1)" + ] } ], - "collapsed": false, - "prompt_number": 14, - "input": "diff(cos(x**2)**2 / (1+x), x)" + "prompt_number": 14 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "integrate(x**2 * cos(x), (x, 0, pi/2))" + ], "language": "python", "outputs": [ { + "latex": [ + "$$-2 + \\frac{1}{4} \\pi^{2}$$" + ], "output_type": "pyout", - "latex": "$$-2 + \\frac{1}{4} \\pi^{2}$$", - "prompt_number": 15, "png": "iVBORw0KGgoAAAANSUhEUgAAAFgAAAAiCAYAAADbLB6TAAAABHNCSVQICAgIfAhkiAAAA1BJREFU\naIHt2m2oZVMYwPHfNcydmdzrZcQYV15GlDB5nabxhfjE0Agp6ZKR8UWkpPg2EspbUnzwbiRd+SgU\nX5SUuGXS5HUwKC+ZSxru0PHh2bu773Fuzt5n7bOvM+dfq73W2ns/6znPWetZz3rOYUitLGlagRoZ\nw374q2lFBo0DsA7bcVbDuti/aQVqYBP+xESfxz1CeITvip2DaOCXs2u/XMMS3CUMeyQuwVX4jME0\ncL+ZxOd4IWuvxLPYQGwCQ3rjcNxSaH8ofH9y267Dg3gK1wuf1CQ/6d8mN1qoP4y3Uw9wI7ZhbVZe\nwbc4JfVAJeingXPWCHdxQkqhx+ADER7lrMgG+kG1WDtFfP4zzk4gp1sOFhNrTWrBmzEtXESRR9HC\n+goyt+GgivpcjifwvvjAd1aUU4YVuB+HZO3zMEKaKGKZcAub8V6hf2d2XYt3S8ocNX9FlGEqK/1i\nKR7Da7LIAZfK/HAKAz+J3/BmW3++VLYnGKPfnIabsWqB+y3cIybONTg1Kznv5JWRmhRcii/wezbw\nbMn3p7BFbFT9ZhJbxYycwF6xGs/BJ9id9T2CXQ3oh4gLZ3FuxfencNh/PNOqqTxjLoZ9wNyR+0Vz\nPrZRTsYMLutBRjcGroNjxZ6S83qhXsnVFX3wibhV927jS9zX1rdSGOdavNqFjLt19nNn4iGRtCnS\nwr0iBKyDnYX6ehHLE1/2sn893QVFA3+Fx3Vv4N1t7VG8hNuE/4IDsVr4rk48h/EO/ceJpTrT1t/C\nN13q1ys34K2sPoGjhL0ayS+P4Glc1NZ/Pq6sIK8pF5FzqNigV2ftC8WXW/pkmiqbtlVEDmMiVUds\nFJuye/83bhJRUJ7b/SW7nq6BsPMKC+/If2N5BZmpZvAG1fIRn5p/AhzH9yLvW4oUM/gjbFzg3iz2\nJBijCuN4HreLY3MZNmJHof2rSAX8WFaJFAbe0aZMCvIV0Atb8HHFdzt9nq+rCFqsCfc7RDasKhfj\nDfyRRp3qLFYD9xLnrhK/Mkwn0qUnFquBe2FSxNCLgkH748nV4pfd43EGLhAHoL3qO/3tUywX4V1e\npnGdzqfFvjBoLmKPSHHO4Ghh5JPEkb0R6soHN82Y+cf2XQpJ8CFDhgwZsm/wD9hYqaXTKEKLAAAA\nAElFTkSuQmCC\n", - "text": "2\n \u03c0 \n-2 + \u2500\u2500\n 4" + "prompt_number": 15, + "text": [ + "2", + " \u03c0 ", + "-2 + \u2500\u2500", + " 4" + ] } ], - "collapsed": false, - "prompt_number": 15, - "input": "integrate(x**2 * cos(x), (x, 0, pi/2))" + "prompt_number": 15 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "eqn = Eq(Derivative(f(x),x,x) + 9*f(x), 1)", + "display(eqn)", + "dsolve(eqn, f(x))" + ], "language": "python", "outputs": [ { + "latex": [ + "$$9 \\operatorname{f}\\left(x\\right) + \\frac{\\partial^{2}}{\\partial^{2} x} \\operatorname{f}\\left(x\\right) = 1$$" + ], "output_type": "display_data", - "latex": "$$9 \\operatorname{f}\\left(x\\right) + \\frac{\\partial^{2}}{\\partial^{2} x} \\operatorname{f}\\left(x\\right) = 1$$", "png": "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\n", - "text": "2 \n d \n9\u22c5f(x) + \u2500\u2500\u2500(f(x)) = 1\n 2 \n dx" + "text": [ + "2 ", + " d ", + "9\u22c5f(x) + \u2500\u2500\u2500(f(x)) = 1", + " 2 ", + " dx" + ] }, { + "latex": [ + "$$\\operatorname{f}\\left(x\\right) = C_{1} \\operatorname{cos}\\left(3 x\\right) + C_{2} \\operatorname{sin}\\left(3 x\\right) + \\frac{1}{9}$$" + ], "output_type": "pyout", - "latex": "$$\\operatorname{f}\\left(x\\right) = C_{1} \\operatorname{cos}\\left(3 x\\right) + C_{2} \\operatorname{sin}\\left(3 x\\right) + \\frac{1}{9}$$", - "prompt_number": 16, "png": "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\n", - "text": "f(x) = C\u2081\u22c5cos(3\u22c5x) + C\u2082\u22c5sin(3\u22c5x) + 1/9" + "prompt_number": 16, + "text": [ + "f(x) = C\u2081\u22c5cos(3\u22c5x) + C\u2082\u22c5sin(3\u22c5x) + 1/9" + ] } ], - "collapsed": false, - "prompt_number": 16, - "input": "eqn = Eq(Derivative(f(x),x,x) + 9*f(x), 1)\ndisplay(eqn)\ndsolve(eqn, f(x))" + "prompt_number": 16 } ] } diff --git a/docs/examples/notebooks/teleportation.ipynb b/docs/examples/notebooks/teleportation.ipynb index 49d566d..76ec624 100644 --- a/docs/examples/notebooks/teleportation.ipynb +++ b/docs/examples/notebooks/teleportation.ipynb @@ -1,166 +1,279 @@ { - "nbformat": 2, "metadata": { "name": "teleportation" }, + "nbformat": 2, "worksheets": [ { "cells": [ { - "source": "

Teleportation

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

Teleportation

" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "%load_ext sympyprinting" + ], "language": "python", "outputs": [], - "collapsed": false, - "prompt_number": 5, - "input": "%load_ext sympyprinting" + "prompt_number": 5 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "from sympy import sqrt, symbols, Rational", + "from sympy import expand, Eq, Symbol, simplify, exp, sin", + "from sympy.physics.quantum import *", + "from sympy.physics.quantum.qubit import *", + "from sympy.physics.quantum.gate import *", + "from sympy.physics.quantum.grover import *", + "from sympy.physics.quantum.qft import QFT, IQFT, Fourier", + "from sympy.physics.quantum.circuitplot import circuit_plot" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 6, - "input": "from sympy import sqrt, symbols, Rational\nfrom sympy import expand, Eq, Symbol, simplify, exp, sin\nfrom sympy.physics.quantum import *\nfrom sympy.physics.quantum.qubit import *\nfrom sympy.physics.quantum.gate import *\nfrom sympy.physics.quantum.grover import *\nfrom sympy.physics.quantum.qft import QFT, IQFT, Fourier\nfrom sympy.physics.quantum.circuitplot import circuit_plot" + "prompt_number": 6 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "a,b = symbols('a b', real=True)", + "state = Qubit('000')*a + Qubit('001')*b; state" + ], "language": "python", "outputs": [ { + "latex": [ + "$$a {\\left|000\\right\\rangle } + b {\\left|001\\right\\rangle }$$" + ], "output_type": "pyout", - "latex": "$$a {\\left|000\\right\\rangle } + b {\\left|001\\right\\rangle }$$", - "prompt_number": 7, "png": "iVBORw0KGgoAAAANSUhEUgAAAHgAAAAVCAYAAACNDipWAAAABHNCSVQICAgIfAhkiAAAA4VJREFU\naIHt2V2IFlUYwPHf6ootWaxl0GJFhFFSN2ZFFxZbhLBQUV1UkgQRVJcF1UVRvBdFBdEXXZR60QcZ\nEUGFWN0FkRXR52YoSmz0YfRBBIpZZF2cMzCemVnnfXdOarz/mzPnmefMPB9nzpx5hiFDDkPWYumh\nNuIwojEe8we42F14L5GtwX1YgdU4HltrxnalN4MbsWUA+/vlHryIR/Eptifn/4t4wFF4E9vwQ3Ju\nRofx6CX9y7ArGgfHxhtemVmvh9G+LB+ctdhfsim1o0zXfo7iAiG5/8TjOno6ikcv6W/BM4nsCfyG\nhRn1zsFVbY0uMSI8Mf3wtOYnq5f0u/RzHjbhcbxk9gQPGo8KvdLxqnjTqxOdqSi/JJNewf39mQ7G\n8VqfY7YKSa6jVzrO5SfcavYEUxOPebMot2FlbHck8p2xncykV5YvO7iZc2IJluPdFrq5/GxLJR51\nCV6BB/AInsPl+KDhgifGdnci3xPbiUx6BS/j2gbbumKVsKyPYR02CktmXexy+dmWSjzSl/JqPI9z\n8R3Owid4p+GChaF7EnnRH8+kV7AXRzfY1hUXxXYEN8fjaWH3/FCim8vPtlTiUZ6Fpwov8juE5BLe\nPbs1L0/7Yrs/kS9I5F3rFYwJTuXkQuEzaX1Jtl39hiaXn22pxKOc4IeF3durJdlyHKc5wdMN8mIW\n7cqkV3CNsCzlYpHwyno7kS/D4hr9XH62pRKPYokewcV4y4EzYBJ/4sOGC34R28X4pSRfFNsfM+kV\nnCHsE+o4Gy8IvpWZj1PwWc2Ybbiu1D8/6pcn+MJ4300143P52ZZKPIoEn4kTVJ2exEf4A6fh6+R8\nYejJDtwRnhfb6Ux6hO++jzXzpfrv3XE8q1pQqON04b34TUk2JVSV6j61cvjZltp4FEv098KTurN0\nbkxIcFH+uq3mor8Lzk8l8kvxFTZn0iPs7l+vsalLduBb4fuz4AbhQdhYo5/Dz7YcNB6bcW88XiBU\nWX7GnTgptlQrN2uEZWZJ7E/gV6G8l0vvmJI9/dJPoWMUP8X7iTbMCEthQS8Z03U8Cu4WJtoVNeda\nxWNC2PY/JVRtlgo7xfeFCkmxdb+9ZuxNQtAewxu4peEeXeldLyxvg9BvJWslnsQGYdKnf21yx+MV\nfI6/hQTvFX56PFjSmUs8/ncMUqo8YplrqfJI5C+hoD9kyJAhQ4YcSv4FPQ4z7YmdV7kAAAAASUVO\nRK5CYII=\n", - "text": "a\u22c5\u2758000\u27e9 + b\u22c5\u2758001\u27e9" + "prompt_number": 7, + "text": [ + "a\u22c5\u2758000\u27e9 + b\u22c5\u2758001\u27e9" + ] } ], - "collapsed": false, - "prompt_number": 7, - "input": "a,b = symbols('a b', real=True)\nstate = Qubit('000')*a + Qubit('001')*b; state" + "prompt_number": 7 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "entangle1_2 = CNOT(1,2)*HadamardGate(1); entangle1_2" + ], "language": "python", "outputs": [ { + "latex": [ + "$$CNOT_{1,2} H_{1}$$" + ], "output_type": "pyout", - "latex": "$$CNOT_{1,2} H_{1}$$", - "prompt_number": 8, "png": "iVBORw0KGgoAAAANSUhEUgAAAGQAAAAcCAYAAACXkxr4AAAABHNCSVQICAgIfAhkiAAABNhJREFU\naIHt2HmIV1UUB/DPjE1ZppYU2TatalFEmxW000ILIkUUWUELGrTQRhGlQdFKkW1iBSG2WBFaEpJZ\nNGWm7UZhm0UbbbRHWRQ1/XHuj9+bN+/9fm/G0bbfFx7v3XPOPfe8c+8959xLC/8qjMb5eAjPYQFm\nYSu0YSZGJtnN0IXl6MbLBfrG4u3E78Z7ODAn045jMAf3pGcBrsY6OdmupOdrPJXkvku0dzE/0T9K\ntEv69PfNsScW4tuMHc/j6MSfJPz2W+J/hGexbV8HGoSL8RnOwKgMb3M8jRnCuXlcgNeTAXuV6O/C\nUQX0rbEM0zEkQ+8QC+HdND5sgq+EU/K6f8f6GdoaeBInldizsrhd/O8uJfx38I3eC6oSOrEEH2K7\nEpldkwG3FfBmYe/En1nS/74C2ub4ACeX9Fk72TQntc/B+JzMmlgh7M/jMr0nb6CwDJ+X8DYWvni4\nP4rXwAvCMRs3kf1S71XehgfT9yv4BSNyMiNwS442Uqz+O5qMeY/4uS3SOINy/NpCuK6g76167pqB\nwgZpzFkl/AmJf24VZe259hXYA1OUz3gNy0V4yGJHsVqIsDMYp+Rk9sWiTHuYCCfrVjD6vfTeGfPw\nR46/f3ovLOj7isgvA4390jvvixoOSO8imxpiF/GDy/SeqCIcV0A7U90pQ/C9mLi2jMyN6oUAXChW\n0DUVxrw7yRaNTSTxPzC8gq6Bws3CplEl/OXCD1V82gOXJsUT+21a5IzBmfYtSechGdr9me92fJxk\nxlTQ/3KS3bKANwg/4tXq5g4IluJXsRjyz9PC3nn9UfxY6rzbShj3YK69fdJZS8TDREVSw1aJ/1UF\n3euLnFQWSndPum6qauwAYD2xI/P/XUMtf1xUVWF2G+2JP/FmhX6jC2ijxPbM4i2xSsZhU+yDxRl+\nrR7/oMKYZ4jdN6eEX4vlfY7VK4F9hA8XNeDTT5uWilq5GTZUHO9Pw6EF9GPFKrkc1+oZbnZKvCea\njLkWvhATN7RE5pGka8MmugYS16cxdy7hv46fRPXaZ0xNyjubyF2OjQrod4lKKY8O4cxPMTvHaxeV\nz8965p48rhO794ASfps4JVfZ3Z14oILcBEwWpfhlepfYxBHhB8UJe7gIZ40WW0Nb9hLJ6eIGCk5P\nTxHK4ihcKSb73gLenYl3eEnfC8Rh79QG+ndMOqY3kBkiHHyvevlchiPVz1jteAbTcjLrihuB+SU6\nDk82TV4ZWw4TP3+2OBnXMEaEmyNK+p2ARxvo7RSrZVIBryP1XaznIXILsRvfwA6NjBY/140Tm8jB\nwZpPyFQ8nmmfKw7CWYxPY05poKNb+a6uaouxuEFcgi0QpexkURHlcQTeV78sXCryQhHmKC4GiBxx\nngh7M9IzXdw9rV3SZ6IIB0tEOOsWYfEp5admqjmhU89rlqvwWvqehBdFqOoWVV8Xtkn8acIPvyf+\nO5ir51msL7b859FXJwzFJ6nfKrelz6fH/xnaxU49S1zvrJYBWyjHFHE1MlfktFWO1oTUcZAoMGqY\nKK55XhLxv1GV10I/0CZO+7NFJTlF/XTfIZL0Oal9unqhUnvmrg5bijL/fxkjc+0V4kKSmJTjxY3y\ncL2ru6zsqralBeGgcX+3ES3UcaZWTv1HoV8XgC200EILLbTwT8FfiZEmaAj2TA8AAAAASUVORK5C\nYII=\n", - "text": "CNOT \u22c5H \n 1,2 1" + "prompt_number": 8, + "text": [ + "CNOT \u22c5H ", + " 1,2 1" + ] } ], - "collapsed": false, - "prompt_number": 8, - "input": "entangle1_2 = CNOT(1,2)*HadamardGate(1); entangle1_2\n" + "prompt_number": 8 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "state = qapply(entangle1_2*state); state" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\frac{1}{2} \\sqrt{2} a {\\left|000\\right\\rangle } + \\frac{1}{2} \\sqrt{2} a {\\left|110\\right\\rangle } + \\frac{1}{2} \\sqrt{2} b {\\left|001\\right\\rangle } + \\frac{1}{2} \\sqrt{2} b {\\left|111\\right\\rangle }$$" + ], "output_type": "pyout", - "latex": "$$\\frac{1}{2} \\sqrt{2} a {\\left|000\\right\\rangle } + \\frac{1}{2} \\sqrt{2} a {\\left|110\\right\\rangle } + \\frac{1}{2} \\sqrt{2} b {\\left|001\\right\\rangle } + \\frac{1}{2} \\sqrt{2} b {\\left|111\\right\\rangle }$$", - "prompt_number": 9, "png": "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\nrkJggg==\n", - "text": "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \n\u2572\u2571 2 \u22c5a\u22c5\u2758000\u27e9 \u2572\u2571 2 \u22c5a\u22c5\u2758110\u27e9 \u2572\u2571 2 \u22c5b\u22c5\u2758001\u27e9 \u2572\u2571 2 \u22c5b\u22c5\u2758111\u27e9\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 2 2 2 2" + "prompt_number": 9, + "text": [ + "\u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd \u23bd\u23bd\u23bd ", + "\u2572\u2571 2 \u22c5a\u22c5\u2758000\u27e9 \u2572\u2571 2 \u22c5a\u22c5\u2758110\u27e9 \u2572\u2571 2 \u22c5b\u22c5\u2758001\u27e9 \u2572\u2571 2 \u22c5b\u22c5\u2758111\u27e9", + "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500", + " 2 2 2 2" + ] } ], - "collapsed": false, - "prompt_number": 9, - "input": "state = qapply(entangle1_2*state); state\n" + "prompt_number": 9 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "entangle0_1 = HadamardGate(0)*CNOT(0,1); entangle0_1" + ], "language": "python", "outputs": [ { + "latex": [ + "$$H_{0} CNOT_{0,1}$$" + ], "output_type": "pyout", - "latex": "$$H_{0} CNOT_{0,1}$$", - "prompt_number": 10, "png": "iVBORw0KGgoAAAANSUhEUgAAAGQAAAAcCAYAAACXkxr4AAAABHNCSVQICAgIfAhkiAAABRFJREFU\naIHtmHtol1UYxz+bl5VmZnMm67JRijbJMI0km0XDgsKkDAomWeiKZgZWYhcoqcYKQmohq1bkpT8a\n3YgutrLaTMvSwK62LkgXQwnsZuLssv74npff+Z2d877vfvutHPt94cfL73me97mc5zzPed4DBQwI\nvAB8AXQDfwI7gBbDqwDeBnYb/m/ANmBJL/QfCSwAVgObgDagHbjc8OcAyy35h4GtwF/A38BUj84N\nwAHj08/AKo/MZOBR4BngceBVoBU4LeDnQqOvC9gOvAbsNLRfgI3G9w+Bf4AvY2LuM2Yaww8F+LcZ\n/hU56O1ECT4PGG7oRwAPAA8C+4FznPfGAh8Zm48EdF+NNlORQy8Gms37bjIvQYm8yqOvDbjT8hEy\nSbrBY/vNgF95wXJj+MIAvw3t1jG90NkAHAJuDPCHoGr7HRjm8C4FaoHPDH+U5/2bgOkOrQglfwNK\nug/3o0ovt2ilqJJcPIHWZZJDPwklvd/wMlq8kR7eMLSLd/RCXz0KZEGCXAPwioe+CjgBWGr01Htk\n1qGk2mhC7XVsjM0ao/Mui1aHfzN+Bezx0KcDy2Js9AnFqA9vCfDPRgE0pdQ3BbWF9hSyi/AHFu3W\n0cAfwCcOvwhY79DuMX7OS7BZYeSes2gL0TrYKDdyvsqZApyZYCdnTDOGGwL8Owx/fkp924y8ey74\ncBZQ6dCORodwhBaPvqnArdb/clThP9Czalycb/RtSJC70sgtTZDLGUMD9NnmeQE9ezLADPPclMLG\ncUb+A2BzCvn3PbRZZFdrM7AYuN7Sea7jTz1qrevRWReHqhjbNqJ16UiQyzueRyPmUR7eUNQyPk+p\naz7aVX058BqBUxzaVjSOlpn/a8keBDqM3YtT6G8lfoCJ8Cmwj55TXN7g9kiMsWo0Iu738M8ARpCu\nOkAtCBRMEsrwT20nA984tGY0ji4y/4ejb6YIE8xzV4LNCuAyYC/wboxcKaqkzSh5/QJfQqrQRPJO\n4J2ob6ct22/N88cUsreTvaigj8gDHtlWtFuvQz53Ovy95vlrgs1lqOrr0DgdQjXarGk3Yk7wJSTq\nk6F+P8s8bceGoJ6+BM30cyxeu3lOS/ClCu1mtypn4u/tB4E1aABopOdCRRuqJsbmDJSIJ4GXEvyL\n1sWXkLj441ACPAUcHyf0NCrJ8QH+HuBrh3YN+sKOnOsEJpr/RWjK+hi1Oh8mocUt8fBWAqcG3puI\nriwOoUqyMRudg62BdycDPwHP4j8rXWxHFeQbhOLiD6EOuButdWVIqAQtuNuvI5xuFKxx6DvR6Bjh\nMXTlEGEMSspbZO+GY9DXdyPZ1xMRxgHfkzm4fXiDcO+vRYtoV8kINGh0oiktDSpQcjcG+Enxx8Gb\nkApUirvIXChuIfM1PBd4D+2obtS7O1D7KjbO2lcJK9Gdko3RwC3Ai2gEXoc+LC/yOFli7B009nYD\nKwIBzQPuDfBAo/tq1JZaUIu4meQdXEnm0jOKuwu18tfRcAPp4w8htkJyQalReqJFW4GqYTCgr/Fn\nJcR3qPcW+9AkY4+CIw19MCCv8ecjId3oknGcRRsPfJcH3QMBeY0/HwkBjaX2oVaDDrbBgrj4J9Dz\nlqHfMQodlouB+4Br/2sH/mfExd+ERn4Xc9F02Y2Gjdr+cMz3HTGY4Iu/iMz1jo1jUWuLfmUQvu3N\nFV151jfQ4Iu/G//1/2AZeg47VKMP6gIOE+S7CxVQQAEFFFCAF/8CvQspefa4L7cAAAAASUVORK5C\nYII=\n", - "text": "H \u22c5CNOT \n 0 0,1" + "prompt_number": 10, + "text": [ + "H \u22c5CNOT ", + " 0 0,1" + ] } ], - "collapsed": false, - "prompt_number": 10, - "input": "entangle0_1 = HadamardGate(0)*CNOT(0,1); entangle0_1\n" + "prompt_number": 10 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "circuit_plot(entangle0_1*entangle1_2, nqubits=3)" + ], "language": "python", "outputs": [ { "output_type": "pyout", "prompt_number": 11, - "text": "<sympy.physics.quantum.circuitplot.CircuitPlot object at 0x3b9fb90>" + "text": [ + "<sympy.physics.quantum.circuitplot.CircuitPlot object at 0x3b9fb90>" + ] }, { "output_type": "display_data", "png": "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\n" } ], - "collapsed": false, - "prompt_number": 11, - "input": "circuit_plot(entangle0_1*entangle1_2, nqubits=3)\n" + "prompt_number": 11 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "state = qapply(entangle0_1*state); state" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\frac{1}{2} a {\\left|000\\right\\rangle } + \\frac{1}{2} a {\\left|001\\right\\rangle } + \\frac{1}{2} a {\\left|110\\right\\rangle } + \\frac{1}{2} a {\\left|111\\right\\rangle } + \\frac{1}{2} b {\\left|010\\right\\rangle } - \\frac{1}{2} b {\\left|011\\right\\rangle } + \\frac{1}{2} b {\\left|100\\right\\rangle } - \\frac{1}{2} b {\\left|101\\right\\rangle }$$" + ], "output_type": "pyout", - "latex": "$$\\frac{1}{2} a {\\left|000\\right\\rangle } + \\frac{1}{2} a {\\left|001\\right\\rangle } + \\frac{1}{2} a {\\left|110\\right\\rangle } + \\frac{1}{2} a {\\left|111\\right\\rangle } + \\frac{1}{2} b {\\left|010\\right\\rangle } - \\frac{1}{2} b {\\left|011\\right\\rangle } + \\frac{1}{2} b {\\left|100\\right\\rangle } - \\frac{1}{2} b {\\left|101\\right\\rangle }$$", - "prompt_number": 12, "png": "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\nAABJRU5ErkJggg==\n", - "text": "a\u22c5\u2758000\u27e9 a\u22c5\u2758001\u27e9 a\u22c5\u2758110\u27e9 a\u22c5\u2758111\u27e9 b\u22c5\u2758010\u27e9 b\u22c5\u2758011\u27e9 b\u22c5\u2758100\u27e9 b\u22c5\u2758101\u27e9\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 2 2 2 2 2 2 2 2" + "prompt_number": 12, + "text": [ + "a\u22c5\u2758000\u27e9 a\u22c5\u2758001\u27e9 a\u22c5\u2758110\u27e9 a\u22c5\u2758111\u27e9 b\u22c5\u2758010\u27e9 b\u22c5\u2758011\u27e9 b\u22c5\u2758100\u27e9 b\u22c5\u2758101\u27e9", + "\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500", + " 2 2 2 2 2 2 2 2" + ] } ], - "collapsed": false, - "prompt_number": 12, - "input": "state = qapply(entangle0_1*state); state\n" + "prompt_number": 12 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "result = measure_partial(state, (0,1))" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 13, - "input": "result = measure_partial(state, (0,1))\n" + "prompt_number": 13 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "state = (result[2][0]*2).expand(); state" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\frac{a {\\left|110\\right\\rangle }}{\\sqrt{a^{2} + b^{2}} \\sqrt{\\frac{1}{4} \\lvert{\\frac{a}{\\sqrt{a^{2} + b^{2}}}}\\rvert^{2} + \\frac{1}{4} \\lvert{\\frac{b}{\\sqrt{a^{2} + b^{2}}}}\\rvert^{2}}} + \\frac{b {\\left|010\\right\\rangle }}{\\sqrt{a^{2} + b^{2}} \\sqrt{\\frac{1}{4} \\lvert{\\frac{a}{\\sqrt{a^{2} + b^{2}}}}\\rvert^{2} + \\frac{1}{4} \\lvert{\\frac{b}{\\sqrt{a^{2} + b^{2}}}}\\rvert^{2}}}$$" + ], "output_type": "pyout", - "latex": "$$\\frac{a {\\left|110\\right\\rangle }}{\\sqrt{a^{2} + b^{2}} \\sqrt{\\frac{1}{4} \\lvert{\\frac{a}{\\sqrt{a^{2} + b^{2}}}}\\rvert^{2} + \\frac{1}{4} \\lvert{\\frac{b}{\\sqrt{a^{2} + b^{2}}}}\\rvert^{2}}} + \\frac{b {\\left|010\\right\\rangle }}{\\sqrt{a^{2} + b^{2}} \\sqrt{\\frac{1}{4} \\lvert{\\frac{a}{\\sqrt{a^{2} + b^{2}}}}\\rvert^{2} + \\frac{1}{4} \\lvert{\\frac{b}{\\sqrt{a^{2} + b^{2}}}}\\rvert^{2}}}$$", "prompt_number": 14, - "text": "a\u22c5\u2758110\u27e9 \n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd \n \u2571 2 2 \n \u2571 \u2502 a \u2502 \u2502 b \u2502 \n \u2571 \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502 \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502 \n \u2571 \u2502 \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u2502 \u2502 \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u2502 \n \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd \u2571 \u2502 \u2571 2 2 \u2502 \u2502 \u2571 2 2 \u2502 \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd \u2571\n \u2571 2 2 \u2571 \u2502\u2572\u2571 a + b \u2502 \u2502\u2572\u2571 a + b \u2502 \u2571 2 2 \u2571 \n\u2572\u2571 a + b \u22c5 \u2571 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2572\u2571 a + b \u22c5 \u2571 \n \u2572\u2571 4 4 \u2572\u2571 \n\n b\u22c5\u2758010\u27e9 \n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\n \u2571 2 2 \n \u2571 \u2502 a \u2502 \u2502 b \u2502 \n \u2571 \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502 \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502 \n\u2571 \u2502 \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u2502 \u2502 \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u2502 \n \u2502 \u2571 2 2 \u2502 \u2502 \u2571 2 2 \u2502 \n \u2502\u2572\u2571 a + b \u2502 \u2502\u2572\u2571 a + b \u2502 \n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \n 4 4" + "text": [ + "a\u22c5\u2758110\u27e9 ", + "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500", + " \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd ", + " \u2571 2 2 ", + " \u2571 \u2502 a \u2502 \u2502 b \u2502 ", + " \u2571 \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502 \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502 ", + " \u2571 \u2502 \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u2502 \u2502 \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u2502 ", + " \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd \u2571 \u2502 \u2571 2 2 \u2502 \u2502 \u2571 2 2 \u2502 \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd \u2571", + " \u2571 2 2 \u2571 \u2502\u2572\u2571 a + b \u2502 \u2502\u2572\u2571 a + b \u2502 \u2571 2 2 \u2571 ", + "\u2572\u2571 a + b \u22c5 \u2571 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2572\u2571 a + b \u22c5 \u2571 ", + " \u2572\u2571 4 4 \u2572\u2571 ", + "", + " b\u22c5\u2758010\u27e9 ", + "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500", + " \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd", + " \u2571 2 2 ", + " \u2571 \u2502 a \u2502 \u2502 b \u2502 ", + " \u2571 \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502 \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502 ", + "\u2571 \u2502 \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u2502 \u2502 \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u2502 ", + " \u2502 \u2571 2 2 \u2502 \u2502 \u2571 2 2 \u2502 ", + " \u2502\u2572\u2571 a + b \u2502 \u2502\u2572\u2571 a + b \u2502 ", + " \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 ", + " 4 4" + ] } ], - "collapsed": false, - "prompt_number": 14, - "input": "state = (result[2][0]*2).expand(); state" + "prompt_number": 14 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "state = qapply(XGate(2)*state); state" + ], "language": "python", "outputs": [ { + "latex": [ + "$$\\frac{a {\\left|010\\right\\rangle }}{\\sqrt{a^{2} + b^{2}} \\sqrt{\\frac{1}{4} \\lvert{\\frac{a}{\\sqrt{a^{2} + b^{2}}}}\\rvert^{2} + \\frac{1}{4} \\lvert{\\frac{b}{\\sqrt{a^{2} + b^{2}}}}\\rvert^{2}}} + \\frac{b {\\left|110\\right\\rangle }}{\\sqrt{a^{2} + b^{2}} \\sqrt{\\frac{1}{4} \\lvert{\\frac{a}{\\sqrt{a^{2} + b^{2}}}}\\rvert^{2} + \\frac{1}{4} \\lvert{\\frac{b}{\\sqrt{a^{2} + b^{2}}}}\\rvert^{2}}}$$" + ], "output_type": "pyout", - "latex": "$$\\frac{a {\\left|010\\right\\rangle }}{\\sqrt{a^{2} + b^{2}} \\sqrt{\\frac{1}{4} \\lvert{\\frac{a}{\\sqrt{a^{2} + b^{2}}}}\\rvert^{2} + \\frac{1}{4} \\lvert{\\frac{b}{\\sqrt{a^{2} + b^{2}}}}\\rvert^{2}}} + \\frac{b {\\left|110\\right\\rangle }}{\\sqrt{a^{2} + b^{2}} \\sqrt{\\frac{1}{4} \\lvert{\\frac{a}{\\sqrt{a^{2} + b^{2}}}}\\rvert^{2} + \\frac{1}{4} \\lvert{\\frac{b}{\\sqrt{a^{2} + b^{2}}}}\\rvert^{2}}}$$", "prompt_number": 15, - "text": "a\u22c5\u2758010\u27e9 \n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd \n \u2571 2 2 \n \u2571 \u2502 a \u2502 \u2502 b \u2502 \n \u2571 \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502 \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502 \n \u2571 \u2502 \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u2502 \u2502 \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u2502 \n \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd \u2571 \u2502 \u2571 2 2 \u2502 \u2502 \u2571 2 2 \u2502 \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd \u2571\n \u2571 2 2 \u2571 \u2502\u2572\u2571 a + b \u2502 \u2502\u2572\u2571 a + b \u2502 \u2571 2 2 \u2571 \n\u2572\u2571 a + b \u22c5 \u2571 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2572\u2571 a + b \u22c5 \u2571 \n \u2572\u2571 4 4 \u2572\u2571 \n\n b\u22c5\u2758110\u27e9 \n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\n \u2571 2 2 \n \u2571 \u2502 a \u2502 \u2502 b \u2502 \n \u2571 \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502 \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502 \n\u2571 \u2502 \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u2502 \u2502 \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u2502 \n \u2502 \u2571 2 2 \u2502 \u2502 \u2571 2 2 \u2502 \n \u2502\u2572\u2571 a + b \u2502 \u2502\u2572\u2571 a + b \u2502 \n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \n 4 4" + "text": [ + "a\u22c5\u2758010\u27e9 ", + "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500", + " \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd ", + " \u2571 2 2 ", + " \u2571 \u2502 a \u2502 \u2502 b \u2502 ", + " \u2571 \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502 \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502 ", + " \u2571 \u2502 \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u2502 \u2502 \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u2502 ", + " \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd \u2571 \u2502 \u2571 2 2 \u2502 \u2502 \u2571 2 2 \u2502 \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd \u2571", + " \u2571 2 2 \u2571 \u2502\u2572\u2571 a + b \u2502 \u2502\u2572\u2571 a + b \u2502 \u2571 2 2 \u2571 ", + "\u2572\u2571 a + b \u22c5 \u2571 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2572\u2571 a + b \u22c5 \u2571 ", + " \u2572\u2571 4 4 \u2572\u2571 ", + "", + " b\u22c5\u2758110\u27e9 ", + "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500", + " \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd", + " \u2571 2 2 ", + " \u2571 \u2502 a \u2502 \u2502 b \u2502 ", + " \u2571 \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502 \u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502 ", + "\u2571 \u2502 \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u2502 \u2502 \u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u23bd\u2502 ", + " \u2502 \u2571 2 2 \u2502 \u2502 \u2571 2 2 \u2502 ", + " \u2502\u2572\u2571 a + b \u2502 \u2502\u2572\u2571 a + b \u2502 ", + " \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 ", + " 4 4" + ] } ], - "collapsed": false, - "prompt_number": 15, - "input": "state = qapply(XGate(2)*state); state\n" + "prompt_number": 15 } ] } diff --git a/docs/examples/notebooks/text_analysis.ipynb b/docs/examples/notebooks/text_analysis.ipynb index 97344f0..c20404d 100644 --- a/docs/examples/notebooks/text_analysis.ipynb +++ b/docs/examples/notebooks/text_analysis.ipynb @@ -1,130 +1,237 @@ { - "nbformat": 2, "metadata": { "name": "text_analysis" }, + "nbformat": 2, "worksheets": [ { "cells": [ { - "source": "

Text Analysis Using NetworkX

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

Text Analysis Using NetworkX

" + ] }, { - "source": "

This notebook will analyze a plain text file treating it as a list of\nnewline-separated sentences (e.g. a list of paper titles).

\n
\n

It computes word frequencies (after doing some naive normalization by\nlowercasing and throwing away a few overly common words). It also computes,\nfrom the most common words, a weighted graph of word co-occurrences and\ndisplays it, as well as summarizing the graph structure by ranking its nodes in\ndescending order of eigenvector centrality.

\n
\n

This is meant as an illustration of text processing in Python, using matplotlib\nfor visualization and NetworkX for graph-theoretical manipulation. It should\nnot be considered production-strength code for serious text analysis.

\n
\n

Author: Fernando Perez

", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "

This notebook will analyze a plain text file treating it as a list of", + "newline-separated sentences (e.g. a list of paper titles).

", + "
", + "

It computes word frequencies (after doing some naive normalization by", + "lowercasing and throwing away a few overly common words). It also computes,", + "from the most common words, a weighted graph of word co-occurrences and", + "displays it, as well as summarizing the graph structure by ranking its nodes in", + "descending order of eigenvector centrality.

", + "
", + "

This is meant as an illustration of text processing in Python, using matplotlib", + "for visualization and NetworkX for graph-theoretical manipulation. It should", + "not be considered production-strength code for serious text analysis.

", + "
", + "

Author: Fernando Perez

" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "%run text_analysis.py" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 1, - "input": "%run text_analysis.py" + "prompt_number": 1 }, { "cell_type": "code", + "collapsed": true, + "input": [ + "default_url = \"http://bibserver.berkeley.edu/tmp/titles.txt\"", + "n_words = 15", + "n_nodes = 15", + "url = default_url", + " " + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 2, - "input": "default_url = \"http://bibserver.berkeley.edu/tmp/titles.txt\"\nn_words = 15\nn_nodes = 15\nurl = default_url\n " + "prompt_number": 2 }, { - "source": "Fetch text and do basic preprocessing.", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Fetch text and do basic preprocessing." + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "text = get_text_from_url(url).lower()", + "lines = text.splitlines()", + "words = text_cleanup(text)" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 3, - "input": "text = get_text_from_url(url).lower()\nlines = text.splitlines()\nwords = text_cleanup(text)" + "prompt_number": 3 }, { - "source": "Compute frequency histogram.", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Compute frequency histogram." + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "wf = word_freq(words)", + "sorted_wf = sort_freqs(wf)" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 4, - "input": "wf = word_freq(words)\nsorted_wf = sort_freqs(wf)" + "prompt_number": 4 }, { - "source": "Build a graph from the n_nodes most frequent words.", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Build a graph from the n_nodes most frequent words." + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "popular = sorted_wf[-n_nodes:]", + "pop_words = [wc[0] for wc in popular]", + "co_occur = co_occurrences(lines, pop_words)", + "wgraph = co_occurrences_graph(popular, co_occur, cutoff=1)", + "centrality = nx.eigenvector_centrality_numpy(wgraph)" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 5, - "input": "popular = sorted_wf[-n_nodes:]\npop_words = [wc[0] for wc in popular]\nco_occur = co_occurrences(lines, pop_words)\nwgraph = co_occurrences_graph(popular, co_occur, cutoff=1)\ncentrality = nx.eigenvector_centrality_numpy(wgraph)\n" + "prompt_number": 5 }, { - "source": "Print summaries of single-word frequencies and graph structure.", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Print summaries of single-word frequencies and graph structure." + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "summarize_freq_hist(sorted_wf)", + "summarize_centrality(centrality)" + ], "language": "python", "outputs": [ { "output_type": "stream", - "text": "Number of unique words: 9265\n\n10 least frequent words:\n rosenhouse's -> 1\n reconstruction, -> 1\nparameterization -> 1\n benda) -> 1\n reconstruction: -> 1\n payoff -> 1\n electricity -> 1\n kalman-bucy -> 1\n clark--ocone -> 1\n m-estimators -> 1\n\n10 most frequent words:\n large -> 421\n process -> 428\n markov -> 440\n equations -> 471\n limit -> 518\n brownian -> 536\n model -> 542\nstochastic -> 1000\n processes -> 1087\n random -> 2356\n\nGraph centrality\n random: 0.474\n limit: 0.336\n stochastic: 0.312\n walks: 0.307\n process: 0.297\n processes: 0.259\n theorem: 0.251\n time: 0.232\n equations: 0.213\n model: 0.209\n markov: 0.197\n large: 0.19\n brownian: 0.125\n models: 0.107\n percolation: 0.0852" + "stream": "stdout", + "text": [ + "Number of unique words: 9265", + "", + "10 least frequent words:", + " rosenhouse's -> 1", + " reconstruction, -> 1", + "parameterization -> 1", + " benda) -> 1", + " reconstruction: -> 1", + " payoff -> 1", + " electricity -> 1", + " kalman-bucy -> 1", + " clark--ocone -> 1", + " m-estimators -> 1", + "", + "10 most frequent words:", + " large -> 421", + " process -> 428", + " markov -> 440", + " equations -> 471", + " limit -> 518", + " brownian -> 536", + " model -> 542", + "stochastic -> 1000", + " processes -> 1087", + " random -> 2356", + "", + "Graph centrality", + " random: 0.474", + " limit: 0.336", + " stochastic: 0.312", + " walks: 0.307", + " process: 0.297", + " processes: 0.259", + " theorem: 0.251", + " time: 0.232", + " equations: 0.213", + " model: 0.209", + " markov: 0.197", + " large: 0.19", + " brownian: 0.125", + " models: 0.107", + " percolation: 0.0852" + ] } ], - "collapsed": false, - "prompt_number": 6, - "input": "summarize_freq_hist(sorted_wf)\nsummarize_centrality(centrality)" + "prompt_number": 6 }, { - "source": "Plot histogram and graph.", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Plot histogram and graph." + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "plot_word_histogram(sorted_wf, n_words,\"Frequencies for %s most frequent words\" % n_words)" + ], "language": "python", "outputs": [ { "output_type": "pyout", "prompt_number": 7, - "text": "<matplotlib.axes.AxesSubplot at 0x334b250>" + "text": [ + "<matplotlib.axes.AxesSubplot at 0x334b250>" + ] }, { "output_type": "display_data", "png": "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\n" } ], - "collapsed": false, - "prompt_number": 7, - "input": "plot_word_histogram(sorted_wf, n_words,\"Frequencies for %s most frequent words\" % n_words)" + "prompt_number": 7 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "plot_word_histogram(sorted_wf, 1.0, \"Frequencies for entire word list\")" + ], "language": "python", "outputs": [ { "output_type": "pyout", "prompt_number": 8, - "text": "<matplotlib.axes.AxesSubplot at 0x3371e50>" + "text": [ + "<matplotlib.axes.AxesSubplot at 0x3371e50>" + ] }, { "output_type": "display_data", "png": "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\n" } ], - "collapsed": false, - "prompt_number": 8, - "input": "plot_word_histogram(sorted_wf, 1.0, \"Frequencies for entire word list\")\n" + "prompt_number": 8 }, { "cell_type": "code", + "collapsed": false, + "input": [ + "plot_graph(wgraph)" + ], "language": "python", "outputs": [ { @@ -132,9 +239,7 @@ "png": "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\nuHjxoggMDBSpqamFzg0dOlSMHj3a+L5ixQrj4V9QfD0ej4iKihK//fabkbZv377izTffFELo4lu5\ncuVi++J62nOla331XLNmjXF+zJgx4t///rfxPTU1VURHRwuPxyP2798vatSo4VdW9+7dxbx584qt\nv48dO3aIuLg4kZycbLyU+Bg0aJDxkuXjt99+EzExMYZA/NGyGzduLBYtWlTo+MKFC8U999xjfM/O\nzvb7jYt6uPnqtnr1amEymURKSooQQv9tgoODxa+//lpsOy7HBx98IAYPHmx8971InT17Vpw5c0bY\n7XbhcDiM8xUqVDAenq+99prxOwohxA8//OBX96ZNm/qJ66JFi0SnTp2uql4jR44Uw4YNK3Q8JSVF\nBAQEGC88QgjRrFkzsXDhwiLzudK9/+CDD4q33nqr0HV79+4VkZGRhe4TIQr3cVHi+8orrxjf/+g9\nLoR+DyxYsMA437FjR/Hee+8JIYrvm4yMDFGmTBm/F5F//vOfYvLkyUV1zW1xf97uSLPzdVC7dm26\ndOnCpEmT/BxN1q9fz9133+2XtlGjRqxdu5Z9+/ahaRqVK1c2zjVo0MD4vHLlStauXUtERITxd/Dg\nQdasWVOo/PXr1xMXF0dUVFShcz/99BMNGzY0vjds2JBdu3aRmZnpl27fvn3k5uZSvXp1v7Rr1641\nvjdp0qTYPrie9hR1bcOGDQvNGxYsf+XKlUycONHIq2rVquTk5LB161ZWrlzJkSNH/Mr64Ycf/NpS\nHPXq1ePf//43o0aNoly5crz00kvFmunT09Pp1q0b//73v2natKlRr6stOzs7my1bttCsWbNC5376\n6Se/eycwMJBq1arx008/XbENAGXKlCE6OhoAs9lMdHQ0p06dMs7/EYeolStXMnv2bKM90dHRZGdn\ns2bNGjZt2kTVqlWx2+1G+oL13rRpk999UPBcdnY2GzZsoHPnzkbegwYNuuo2JicnF9l3P//8M5Ur\nVyYoKMg41qhRI9atWwfo/1590wXr168v9t73pS+unNWrV9OkSRNU9doen0X9e7qae3zbtm1GmoSE\nBONzmTJlDNNvcXVet24dKSkplC1b1sh3xowZRlsLcrvcn7c7Unyvk3HjxvHhhx/63UDNmjXz+4cC\nsHXrVlq0aEHNmjVRVZVDhw4Z5wqmbdOmDUlJSaSlpRl/mZmZPPfcc4XKbtq0KceOHeP8+fOFzjVr\n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\nrkJggg==\n" } ], - "collapsed": false, - "prompt_number": 9, - "input": "plot_graph(wgraph)" + "prompt_number": 9 } ] } diff --git a/docs/examples/notebooks/trapezoid_rule.ipynb b/docs/examples/notebooks/trapezoid_rule.ipynb index dc9b970..5ac8580 100644 --- a/docs/examples/notebooks/trapezoid_rule.ipynb +++ b/docs/examples/notebooks/trapezoid_rule.ipynb @@ -1,37 +1,73 @@ { + "metadata": { + "name": "trapezoid_rule" + }, + "nbformat": 2, "worksheets": [ { "cells": [ { - "source": "Basic numerical integration: the trapezoid rule\n===============================================\n\nA simple illustration of the trapezoid rule for definite integration:\n\n$$\n\\int_{a}^{b} f(x)\\, dx \\approx \\frac{1}{2} \\sum_{k=1}^{N} \\left( x_{k} - x_{k-1} \\right) \\left( f(x_{k}) + f(x_{k-1}) \\right).\n$$\n
\nFirst, we define a simple function and sample it between 0 and 10 at 200 points", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Basic numerical integration: the trapezoid rule", + "===============================================", + "", + "A simple illustration of the trapezoid rule for definite integration:", + "", + "$$", + "\\int_{a}^{b} f(x)\\, dx \\approx \\frac{1}{2} \\sum_{k=1}^{N} \\left( x_{k} - x_{k-1} \\right) \\left( f(x_{k}) + f(x_{k-1}) \\right).", + "$$", + "
", + "First, we define a simple function and sample it between 0 and 10 at 200 points" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "def f(x):", + " return (x-3)*(x-5)*(x-7)+85", + "", + "x = linspace(0, 10, 200)", + "y = f(x)" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 1, - "input": "def f(x):\n return (x-3)*(x-5)*(x-7)+85\n\nx = linspace(0, 10, 200)\ny = f(x)" + "prompt_number": 1 }, { - "source": "Choose a region to integrate over and take only a few points in that region", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Choose a region to integrate over and take only a few points in that region" + ] }, { "cell_type": "code", + "collapsed": true, + "input": [ + "a, b = 1, 9", + "xint = x[logical_and(x>=a, x<=b)][::30]", + "yint = y[logical_and(x>=a, x<=b)][::30]" + ], "language": "python", "outputs": [], - "collapsed": true, - "prompt_number": 2, - "input": "a, b = 1, 9\nxint = x[logical_and(x>=a, x<=b)][::30]\nyint = y[logical_and(x>=a, x<=b)][::30]" + "prompt_number": 2 }, { - "source": "Plot both the function and the area below it in the trapezoid approximation", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Plot both the function and the area below it in the trapezoid approximation" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "plot(x, y, lw=2)", + "axis([0, 10, 0, 140])", + "fill_between(xint, 0, yint, facecolor='gray', alpha=0.4)", + "text(0.5 * (a + b), 30,r\"$\\int_a^b f(x)dx$\", horizontalalignment='center', fontsize=20);" + ], "language": "python", "outputs": [ { @@ -39,39 +75,44 @@ "png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD3CAYAAADmBxSSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XlcVXX+x/HXZUfZZVEBV9TY3Usnk1Iy0Db3vbFlmspp\nMmd+beOgVlq2mDXjtDqTMjMuY7mBpGZYmYpiiLihbHIRZRNkX+/vjyOb4sL1wrnA5/l43Mc9nMs5\n5+N91Nuv3/M9369Gp9PpEEII0a6YqF2AEEIIw5NwF0KIdkjCXQgh2iEJdyGEaIck3IUQoh2ScBdC\niHbopuH+5JNP4ubmhr+//3WfffDBB5iYmJCXl1e3b/ny5fj4+ODv78+uXbsMX60QQojbctNwnzdv\nHlFRUdftT09PZ/fu3fTs2bNuX2xsLN988w3Hjx8nKiqKZ599loqKCsNXLIQQ4pZuGu6jRo3C0dHx\nuv0vv/wyK1asaLQvIiKC6dOnY2pqiru7O76+vsTExBi2WiGEELfFrLkHbN26FQ8PDwICAhrtz8jI\n4IEHHqj72cPDA61We93xGo1GjzKFEEI0Z0KBZt1QLSkpYdmyZSxZskSvizU8Rl46wsLCVK/BWF7y\nXch30Va+i9GjdYCOFSta97rN1ayWe1JSEqmpqQQGBgKg1WoZMmQIhw4dwsPDg/T09Lrf1Wq1eHp6\nNrsgIYQwVocOwb59YG8Pzz6rdjU316yWu7+/P5cuXSIlJYWUlBQ8PDw4evQobm5uhIaGsmHDBqqq\nqtBqtSQkJDB8+PCWqlsIIVrdu+8q7889B3Z26tZyKzcN9xkzZjBy5EgSExPx9PTkn//8Z6PPG/af\nDxkyhMcff5yAgAAeeughPvvsM8zNzVum6nYiKChI7RKMhnwX9eS7qGdM38WZM7BlC1hawh//qHY1\nt6bR6dOZcycX1Gj06j8SQgg1Pf00fPUV/O538NlnrX/95manhLsQQtzChQvQuzdUViot+H79Wr+G\n5manTD8ghBC3sHIlVFTApEnqBLs+pOUuhBA3kZMDvXpBcTEcPgxDh6pTh7TchRDCgFauVII9JES9\nYNeHtNyFEOIGLl+Gnj2hsBB++QVGjFCvFmm5CyGEgaxapQT72LHqBrs+pOUuhBBNKChQWu0FBfDj\njzBqlLr1SMtdCCEM4JNPlGAPClI/2PUhLXchhLjGlSvKuPa8PNi7F+6/X+2KpOUuhBB3bOVKJdjv\nvVdpubdF0nIXQogGcnOVVnthoTID5H33qV2RQlruQghxB1asUIL9wQeNJ9j1IS13IYS4KjMT+vaF\n0lKIiYFhw9SuqJ603IUQQk/LlinB/thjxhXs+pCWuxBCAGlpyqRgVVUQHw9+fmpX1Ji03IUQQg9/\n/asype/06cYX7PqQlrsQosOLi4PBg8HMDE6fhj591K7oetJyF0KIZvq//wOdDl54wTiDXR/SchdC\ndGjffQcPPQT29pCUBF26qF1R06TlLoQQt6m6Gv78Z2X7jTeMN9j1IeEuhOiw1q6F48eV2R//8Ae1\nqzEsCXchRIdUWKi01gHefhusrNStx9BuGu5PPvkkbm5u+Pv71+17+eWX8fHxwcfHhwkTJpCbm1v3\n2fLly/Hx8cHf359du3a1XNVCCHGHli1TnkgdPhxmzFC7GsO7abjPmzePqKioRvsefvhhEhISOHny\nJH5+frz11lsAxMbG8s0333D8+HGioqJ49tlnqaioaLnKhRBCT+fOwYcfKtsffwwm7bAP46Z/pFGj\nRuHo6Nho3/3334/J1W/iN7/5DRkZGQBEREQwffp0TE1NcXd3x9fXl5iYmBYqWwgh9Pfyy1BRAU88\nAXffrXY1LcPsTg7+/PPPmT59OgAZGRk88MADdZ95eHig1WqbPG7x4sV120FBQQS11QmThRBtznff\nwfbtYGsLy5erXc2NRUdHEx0drffxeof722+/jYWFBbNmzWr2sQ3DXQghWktFBbz0krK9aBF066Zu\nPTdzbcN3yZIlzTper3D/+uuviYiIYO/evXX7PDw8SE9Pr/tZq9Xi6empz+mFEKJFfPCBMr1Av37w\nxz+qXU3LavZthKioKFasWMG2bduwajB2KDQ0lA0bNlBVVYVWqyUhIYHhw4cbtFghhNBXcjIsXaps\nr14NFhbq1tPSbtpynzFjBvv27SMnJwdPT0+WLFnC8uXLqaioIDg4GIARI0awevVqhgwZwuOPP05A\nQAAmJiZ89tlnmJubt8ofQgghbqZ23piyMpg5E8aOVbuilidzywgh2r2NG2HaNHBwULpl3NzUrqj5\nZG4ZIYRooKCg/ibqO++0zWDXh4S7EKJde/nlcjIzYcQIeOYZtatpPdItI4Rot779toCJE+0xNa3m\n119NaTCTSpsj3TJCCAGcO3exrqUeHHyoTQe7PiTchRDtTmpqKk89dZHcXHv69y9mzJjDapfU6iTc\n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\n+PHjiY+PJyQkhLCwsFuep1XC3VDj39sLNzc3/Pz8ALCxsSEgIIALFy6oXJU6tFotkZGRPP300x36\nZntubi5xcXHMuPrUnomJCXZ2dipXpQ4nJyfMzc0pLi6mqqqKkpISevbsqXZZrWbUqFE4Ojo22hcZ\nGcmcOXMAmD179m3lZ6uEe1Pj37VabWtc2uilpqZy+PBh7u2gK5EsWLCA9957DxMTo53mqFWcPXsW\nFxcXpk6dip+fH3PnzqWoqEjtslTh5OTEwoUL6dGjB927d8fBwYGxY8eqXZaqsrOz6dKlCwDOzs5k\nZWXd8phW+T+qo/9z+0aKioqYMmUKq1atwtbWVu1yWt2OHTtwdXVl0KBBHbrVDsqDNocPH+bPf/4z\nCQkJODk58eabb6pdliqSkpL46KOPSE1N5cKFCxQVFfHvf/9b7bLanFYJ99sZ/97RVFZWMmnSJGbO\nnMljjz2mdjmq+OWXX9i2bRu9e/dmxowZ7N27l7lz56pdlio8PT1xd3dn2LBhAEyePJm4uDiVq1JH\nTEwMI0eOpEuXLpiZmTFx4kR+/vlntctSlYuLCzk5OYDSind1db3lMa0S7jL+vTGdTsdTTz2Fj48P\nCxYsULsc1Sxbtoz09HRSUlJYv349DzzwAGtrV0PvYDw9PXF2diYxMRGAPXv24N1BV6jx8vLi4MGD\nlJaWotPp2LNnD15eXmqXparQ0FDCw8MBCA8PJzQ09NYH6VpJZGSkztfXV+ft7a1btmxZa13WKP30\n0086jUajCwwM1A0cOFA3cOBA3c6dO9UuS1XR0dG6hx9+WO0yVBUXF6cbOnSozsfHRxcSEqLLy8tT\nuyTVhIWF6by8vHT9+/fXTZs2TVdaWqp2Sa1m+vTpum7duunMzc11Hh4eujVr1uhyc3N1Y8eO1fn7\n++uCg4N1ly9fvuV5NDpdB+/sFEKIdqhjD1EQQoh2SsJdCCHaIQl3IYRohyTchRCiHZJwF0KIdkjC\nXQgh2qH/B7d8dxd+Imh6AAAAAElFTkSuQmCC\n" } ], - "collapsed": false, - "prompt_number": 3, - "input": "plot(x, y, lw=2)\naxis([0, 10, 0, 140])\nfill_between(xint, 0, yint, facecolor='gray', alpha=0.4)\ntext(0.5 * (a + b), 30,r\"$\\int_a^b f(x)dx$\", horizontalalignment='center', fontsize=20);" + "prompt_number": 3 }, { - "source": "Compute the integral both at high accuracy and with the trapezoid approximation", - "cell_type": "markdown" + "cell_type": "markdown", + "source": [ + "Compute the integral both at high accuracy and with the trapezoid approximation" + ] }, { "cell_type": "code", + "collapsed": false, + "input": [ + "from scipy.integrate import quad, trapz", + "integral, error = quad(f, 1, 9)", + "print \"The integral is:\", integral, \"+/-\", error", + "print \"The trapezoid approximation with\", len(xint), \"points is:\", trapz(yint, xint)" + ], "language": "python", "outputs": [ { "output_type": "stream", - "text": "The integral is: 680.0 +/- 7.54951656745e-12\nThe trapezoid approximation with 6 points is: 621.286411141" + "stream": "stdout", + "text": [ + "The integral is: 680.0 +/- 7.54951656745e-12", + "The trapezoid approximation with 6 points is: 621.286411141" + ] } ], - "collapsed": false, - "prompt_number": 4, - "input": "from scipy.integrate import quad, trapz\nintegral, error = quad(f, 1, 9)\nprint \"The integral is:\", integral, \"+/-\", error\nprint \"The trapezoid approximation with\", len(xint), \"points is:\", trapz(yint, xint)" + "prompt_number": 4 }, { - "input": "", "cell_type": "code", "collapsed": true, + "input": [], "language": "python", "outputs": [] } ] } - ], - "metadata": { - "name": "trapezoid_rule" - }, - "nbformat": 2 -} + ] +} \ No newline at end of file