Skip to content

Instantly share code, notes, and snippets.

@IvanIsCoding
Last active December 31, 2019 01:42
Show Gist options
  • Save IvanIsCoding/47754335e473c34203300387ba1e4ba5 to your computer and use it in GitHub Desktop.
Save IvanIsCoding/47754335e473c34203300387ba1e4ba5 to your computer and use it in GitHub Desktop.
Qubit and Qiskit's statevector_simulator
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# The Qubit\n",
"\n",
"A qubit is represented by $ |\\psi\\rangle = \\begin{bmatrix}\\alpha \\\\ \\beta\\end{bmatrix}$, where $\\alpha, \\beta \\in \\mathbb{C}$ and $|\\alpha|^{2} + |\\beta|^{2} = 1$.\n",
"\n",
"In Python, the vector is a list of complex numbers.\n",
"\n",
"We may extract the state of a qubit after running it using the **statevector_simulator** in _Qiskit_"
]
},
{
"cell_type": "code",
"execution_count": 135,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"from qiskit import *\n",
"from qiskit.visualization import plot_bloch_multivector"
]
},
{
"cell_type": "code",
"execution_count": 136,
"metadata": {},
"outputs": [],
"source": [
"# The following code is for nicer display of the qubits\n",
"from IPython.display import display, Markdown\n",
"\n",
"def format_float(x):\n",
" if x % 1 == 0:\n",
" return int(x)\n",
" else:\n",
" return x\n",
"\n",
"def format_imaginary(z):\n",
" if abs(z.imag) < 1e-15:\n",
" return \"{}\".format(format_float(z.real))\n",
" elif abs(z.real) < 1e-15:\n",
" return \"{}i\".format(format_float(z.imag))\n",
" if z.imag > 0:\n",
" return \"{} + {}i\".format(z.real, abs(z.imag))\n",
" else:\n",
" return \"{} - {}i\".format(z.real, abs(z.imag))\n",
"\n",
"def display_qubit(state_vector):\n",
" alpha = state_vector[0]\n",
" beta = state_vector[1]\n",
" cof_0 = format_imaginary(alpha)\n",
" cof_1 = format_imaginary(beta)\n",
" ans = r\"$|\\psi\\rangle = \\begin{{bmatrix}} {} \\\\ {}\\end{{bmatrix}}$\".format(cof_0, cof_1)\n",
" return ans"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The Qiskit simulators are available in the _Aer_ module. For this notebook, we will explore mostly the **statevector_simulator** because we are interested in the state of the qubit."
]
},
{
"cell_type": "code",
"execution_count": 137,
"metadata": {},
"outputs": [],
"source": [
"simulator = Aer.get_backend(\"statevector_simulator\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"By default, all qubits in the circuit start as $|0\\rangle$. We can verify it by using an empty circuit. In the snippet below, we execute an empty circuit and verify that it is $\\begin{bmatrix}1 \\\\ 0\\end{bmatrix}$."
]
},
{
"cell_type": "code",
"execution_count": 138,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAGMAAABOCAYAAAA0Cah9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAACIUlEQVR4nO3cLasiYQDF8TPLFTVY1CDYRDEIIzgfwGoWDAYxCNqNgnWC+DlMYjQ7xTBYFNNEEQxGBZvPTctFdhe2OM8Bzw8sj8EDf+Yl6RhjDITCL9sD5IdiEFEMIopBRDGIKAYRxSCiGEQUg4hiEFEMIopBRDGIKAYRxSCiGEQUg4hiEFEMIopBRDGIKAYRxSCiGEQUg4hiEFEMIopBRDGIKAYRxSCiGEQUg4hiEFEMIopBRDGI0MR4Pp+Yz+eoVCpIpVKo1+sIggDVahXD4dD2vFh82R7w22AwwGq1wnQ6hed52G636Ha7uF6vGI/HtufFwxBYLBYGgNlsNi/n7XbbADBhGFpaFi+K25Tv+2i1Wmg2my/n5XIZiUQCrutaWhYv6zHO5zOOxyM6nc4f351OJ9RqNSSTSQvL4kcRAwAKhcLL+ePxQBAEaDQab/19x3He/vlf1mPk83kAQBRFL+ez2QyXywWe59mYZYX1t6lSqQTXdeH7PrLZLIrFIpbLJdbrNQC8PYYh+h8bxxCsiaIIo9EIYRgil8uh3+8jk8lgMpngdrshnU7bnhgLihh/0+v1sN/vcTgcbE+JjfVnxr/sdruPel4ApDHu9zuiKHr7mxQb2tvUJ6K8Mj6VYhBRDCKKQUQxiCgGEcUgohhEFIOIYhBRDCKKQUQxiCgGEcUgohhEFIOIYhBRDCKKQUQxiCgGEcUgohhEFIOIYhBRDCLffqrq/e7JK6AAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 113.176x84.28 with 1 Axes>"
]
},
"execution_count": 138,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"circuit = QuantumCircuit(1)\n",
"circuit.draw(output=\"mpl\")"
]
},
{
"cell_type": "code",
"execution_count": 139,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"State vector: [1.+0.j 0.+0.j]\n",
"State vector is [1, 0]? True\n"
]
}
],
"source": [
"job = execute(circuit, backend=simulator)\n",
"result = job.result()\n",
"state_vector = result.get_statevector()\n",
"print(\n",
" \"State vector: {}\\nState vector is [1, 0]? {}\".format(\n",
" state_vector, (state_vector == [1, 0])[0]\n",
" )\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To modify the qubit, we need to apply gates. The $X$ gate is the gate that allows us to get $|1\\rangle$, as we can see in the snippet that follows."
]
},
{
"cell_type": "code",
"execution_count": 140,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAJEAAABOCAYAAAAgsPTZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAADb0lEQVR4nO3dT0iTcRzH8c/zPC5neUjZQfAmiofRBL31B/FQGZQX28qDB5Fc5iWQokt/yFoxVnSou4dqlGPRxR2KcFqXHIJiHXawEMGLBwVhWj7P0yEypMLNrw+/58nPC57Ls8PzZbz57bc9g0ezbdsGkYCuegDyPkZEYoyIxBgRiTEiEmNEJMaISIwRkRgjIjFGRGKMiMQYEYkxIhJjRCTGiEiMEZEYIyIxRkRijIjEGBGJMSISY0QkxohIjBGRGCMiMUZEYoyIxBgRiZWpHsAL9r3JKLnut+OnlFy3VFyJSIwRkRgjIjFGRGKMiMQYEYkxIhJjRCTmmogsy0IikUBDQwP8fj+ampqQzWbR2NiIvr4+1eMVzS4U8D18Htb4+9/n1texcXkQG7fvwrYshdM5wzUR9fb2YmhoCNFoFJlMBpFIBF1dXZibm0NLS4vq8YqmVVRAP9sJ89lz2LYN2zRh3rkH+Hwwrl2FprvmLd81rrjtkUwmMTw8jLGxMbS2tgIA2traMDU1hXQ6jebmZsUTlkbvOAMrlYY98QHWZA720hLKEnFo+3yqR3OEKyKKxWJob2/fDOiX+vp6+Hw+hEIhRZPtjFbhhx7uhJl4CFQdRNmjB9AO7Fc9lmOUr60LCwuYnZ1FOBz+47X5+XkEg0GUl5crmGwXrK3BOBeBVlWlehJHuSIiAKipqdlyvlAoIJvNOv5RpmnatkeprLfvYL14Ce3kCZivXmOnT74oZjYnj2IpjygQCAAA8vn8lvPxeByLi4ue2lQDgPVxEubjJzBuXodx6SKwvAx7fEL1WI5Svieqq6tDKBRCLBZDdXU1amtrkUqlMDo6CgCOR1TMKlHs/4msT59hxu7DuDIIPXQIAH7ujZ4moR07WvI3M688u0f5SqTrOkZGRhAMBtHf34+enh4EAgEMDAzAMAzPbKrtL19h3rgFI3oB+pHDm+f1jtPAysp/vRppbn1UVXd3N6anpzEzM6N6FP6zcRvKV6J/yeVyntsP7VWujGh1dRX5fN5zPzLuVco31n9TWVkJ0zRVj0FFcuVKRN7CiEiMEZEYIyIxRkRijIjEGBGJufa2B3kHVyISY0QkxohIjBGRGCMiMUZEYoyIxBgRiTEiEmNEJMaISIwRkRgjIjFGRGKMiMQYEYkxIhJjRCTGiEjsB2Gp1M7c8wXZAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 173.376x84.28 with 1 Axes>"
]
},
"execution_count": 140,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"circuit = QuantumCircuit(1)\n",
"circuit.x(0)\n",
"circuit.draw(output=\"mpl\")"
]
},
{
"cell_type": "code",
"execution_count": 141,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"$|\\psi\\rangle = \\begin{bmatrix} 0 \\\\ 1\\end{bmatrix}$"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"state_vector = execute(circuit, backend=simulator).result().get_statevector()\n",
"display(\n",
" Markdown(\n",
" display_qubit(state_vector)\n",
" )\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We may apply many gates to a circuit. In the circuit below, we go from $|0\\rangle$ to $|1\\rangle$ and then $|-\\rangle$. Notice that $H$ is frequently used to generate supperpositions."
]
},
{
"cell_type": "code",
"execution_count": 142,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAL4AAABOCAYAAACe5qyEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAEmElEQVR4nO3bf0jcdRzH8df3e56/ci31NiW3xkSTuHaGbgS1EP8oFdr+aM2SMBBLZwZNRtH+qEbWFWKxP4oI9od/zKQUR/8orChv6wd0IijWH5fcQozrSuoklzr3/X77QzK+1PTO8/b53t6vB/jPx9PvW3n65k6/apZlWSASRlc9AJEKDJ9EYvgkEsMnkRg+icTwSSSGTyIxfBKJ4ZNIDJ9EYvgkEsMnkRg+icTwSSSGTyIxfBKJ4ZNIDJ9EYvgkEsMnkRg+icTwSSSGTyIxfBKJ4ZNIDJ9EYvgkEsMnkTJUD5AOMj8bVXLdaw83JPXxJ/u3aZAEnH3q5l9zK7jxSSSGTyIxfBKJ4ZNIDJ9EYvgkEsMnkRg+ieSY8E3TRG9vL8rLy5GdnY3KykoEAgFUVFSgra1N9Xhxs5aWsHr8SZiXvvr3bGUF10+ewvXX34Rlmgqn29i55+/E9JfnbGeWZeGDZ27HTPCCoqlSwzHht7a2oru7G+3t7RgdHUVjYyOampoQDodRXV2tery4aTk50B8/BqP/I1iWBcswYLzxFuB2w/XyS9B0x3zLbRZ//xlXYxHs2nef7Xzh1zCuLf+JotKDiiZLDUfcsjAwMIC+vj6MjY2hpqYGAFBbW4uJiQkMDw+jqqpK8YSJ0Y8egTk0DOvy1zCD47Dm55HR2wMt0616tBuKhoPQdBcK99xrO5+fnUTuziLsKNyraLLUcET4fr8f9fX169H/o6ysDG63Gz6fT9FkW6PlZEM/fgxG77tA/h3IOPsOtNtyVY+1oWg4iPziu5GRmW07/212Erv331rbHnBA+HNzc5ienkZXV9d/3jc7Owuv14usrCwFk22D5WW4nmiElp+vepJNRcNBxKIz+PCEx3a+urKIg0dOK5oqdRwRPgAUFxfbzpeWlhAIBNDQkNwdipvRNG3Tx7gvjiT0Oc3Pv4D58SfQ6h6BceFTaA11cV1nK7Nt5IXzVtyPjV4Zx/2PncE9h5+2nfefPoCiBDZ+sjMny7Li+5qVv9LyeNY2TCgUsp339PQgEomk1QtbADC/C8J47324XnsFrudOALEYrEuXVY+1odgvM1i5+gf2+eqwo3DP+puxuoyVv2IoKj2kesRtp3zjl5aWwufzwe/3o6CgACUlJRgaGsLIyNqWTXX48WyIeO/HN7//AYb/bbhePAXddwAA1p7rnx+A9tDhhH+jE+/2upF478ePhoPIyMrFrrsqbeeRH79BXuFe5O7cHfc1k535ZlG+8XVdx+DgILxeLzo6OtDS0gKPx4POzk64XK60eWFrXfkJxqtn4Gp/FvqDD6yf60cfBRYWHL31o+EgivYfgu6y78HIzLcJPc1JJ5rl0B/R5uZmTE5OYmpqSvUo/A+sBPA/sJI0Pj6eds/vKX04MvzFxUWEQqG0+8MVpQ/lL27/T15eHgzDUD0G3cIcufGJUo3hk0gMn0Ri+CQSwyeRGD6JxPBJJMfeskCUStz4JBLDJ5EYPonE8Ekkhk8iMXwSieGTSAyfRGL4JBLDJ5EYPonE8Ekkhk8iMXwSieGTSAyfRGL4JBLDJ5EYPon0N193LEQZkLk9AAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 233.576x84.28 with 1 Axes>"
]
},
"execution_count": 142,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"circuit = QuantumCircuit(1)\n",
"circuit.x(0)\n",
"circuit.h(0)\n",
"circuit.draw(output=\"mpl\")"
]
},
{
"cell_type": "code",
"execution_count": 143,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"$|\\psi\\rangle = \\begin{bmatrix} 0.7071067811865475 \\\\ -0.7071067811865476\\end{bmatrix}$"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"state_vector = execute(circuit, backend=simulator).result().get_statevector()\n",
"display(\n",
" Markdown(\n",
" display_qubit(state_vector)\n",
" )\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On a relevant note, different gates may lead to the same qubit!"
]
},
{
"cell_type": "code",
"execution_count": 144,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAL4AAABOCAYAAACe5qyEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAEXklEQVR4nO3bX2hbZRzG8SfntGtXOsfabCl2c6y0Fo2m0nQMYVIquKYwvdhdkQ5KpVgqulYEK6tMlFyUiiLIEOosuFpZS5QhVadi40W9SCmk9Cp2EUIlxopWzMyycs7xYjg4Vmv+NH0Tf88HcvMm7flBvnk5SU4clmVZIBJGUz0AkQoMn0Ri+CQSwyeRGD6JxPBJJIZPIjF8Eonhk0gMn0Ri+CQSwyeRGD6JxPBJJIZPIjF8Eonhk0gMn0Ri+CQSwyeRGD6JxPBJJIZPIjF8Eonhk0gMn0Ri+CQSwyeRylQPUArOTak57ptP5vf3e774dGcGycKtx7p2/Zi54I5PIjF8Eonhk0gMn0Ri+CQSwyeRGD6JxPBJpKIJ3zRNjI+Po6mpCZWVlWhpaUEwGERzczP6+/tVj5eViWfuxsrXE7Y1y7Jw8am7sBr6SNFU2zM/v4bNJ85svflOY9N3GlYqpXrEHVU039z29fUhEAhgdHQUXq8XCwsL6O7uxvr6OoaHh1WPl7HkLz/gxkYcB48+ZFv/7acobt38Ha6GNkWTbU/rPAWt85RtzQx+A2PsdejPDsKxd6+iyQqjKMKfnp7G5OQk5ufn0d7eDgDo6OjA0tISAoEAWltbFU+YuUQ0BIemo/bwA7b1n2NhVO13YV/tEUWTZcf88isYb7wF/flz0B7tUD3OjiuK8P1+P3w+353o/9LY2Ijy8nJ4PB5Fk2UvEQ3hQN29KNtTaVtfj4Vx6Fhx7vZ/Z859BuPti9BffAHaIydVj1MQysNfW1vDysoKhoaGttwXi8XgdrtRUVGhYLLcJKIhbCRW8c7TTtv6ZjqJtsdHFE2VOePjqzAnLkE//xK0h0+oHqdgiiJ8AKirq7Otp1IpBINBdHUV9mo/h8Pxn4957rKV8f9LfL+IE2cu4L6TZ23rUyMPwpXljp/JbNspvzaX1eONK7Mw35+CfuFlaG25nV7mO3O+LCuz50r5pzpO5+2dMRKJ2NbHxsYQj8fh9XpVjJWTjR9Xkb7xK456OrGv9vCdm7F5E+k/NuBqOK56xH9lXP4A5tQ09NdeyTn6UqJ8x29oaIDH44Hf70dNTQ3q6+sxOzuLubnbu1Whw89kh8j0evxENISyiiocvKfFth7/bgHVtUdQtf/Qjs+2nUyvxzcuTcK8+gl0/6vQ3Pfndcx8Z94tynd8TdMwMzMDt9uNgYEB9Pb2wul0YnBwELqul9wbW9ex49B0+34SX/0269Oc3WJdvw7zwytAOg1j5PyWz/GNd99TPWJBOKwifYn29PQgHA5jeXlZ9Sj8BVYW+AusPC0uLpbU+T2VlqIMP5lMIhKJlNQXV1RalL+5/SfV1dUwDEP1GPQ/VpQ7PlGhMXwSieGTSAyfRGL4JBLDJ5EYPolUtJcsEBUSd3wSieGTSAyfRGL4JBLDJ5EYPonE8Ekkhk8iMXwSieGTSAyfRGL4JBLDJ5EYPonE8Ekkhk8iMXwSieGTSAyfRPoTP/Yi4zVfFwoAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 233.576x84.28 with 1 Axes>"
]
},
"execution_count": 144,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"circuit = QuantumCircuit(1)\n",
"circuit.h(0)\n",
"circuit.z(0)\n",
"circuit.draw(output=\"mpl\")"
]
},
{
"cell_type": "code",
"execution_count": 145,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"$|\\psi\\rangle = \\begin{bmatrix} 0.7071067811865476 \\\\ -0.7071067811865475\\end{bmatrix}$"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"state_vector = execute(circuit, backend=simulator).result().get_statevector()\n",
"display(\n",
" Markdown(\n",
" display_qubit(state_vector)\n",
" )\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And gate order matters! Matrix multiplication is not commutative in general. The qubit will be different if the same gates are applied in a different order"
]
},
{
"cell_type": "code",
"execution_count": 146,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAL4AAABOCAYAAACe5qyEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAEZElEQVR4nO3bYUjcdRzH8c/9/zqduMb0tpPcGhNN6uoMzzGChRg0T1g92DMJB2JIYtQ0gowZi+IeiFEEMQJbQjNjyhUjrFaR1wN7cCKc+OhyF4hxXUYZ3XI3+f//PRgN/ph65+38/W/fzwvuyc/T+wpvv5x3/3NZlmWBSBhN9QBEKjB8Eonhk0gMn0Ri+CQSwyeRGD6JxPBJJIZPIjF8Eonhk0gMn0Ri+CQSwyeRGD6JxPBJJIZPIjF8Eonhk0gMn0Ri+CQSwyeRGD6JxPBJJIZPIjF8Eonhk0gMn0QqUj1AIdjzzZdKHvfWU205ff+5sbs0SBbefXb3H3MnuPFJJIZPIjF8Eonhk0gMn0Ri+CQSwyeRGD6J5JjwTdPE8PAw6urqUFpaioaGBoTDYdTX16O7u1v1eBkzv76G9WfObLwFTmM9cBrW2prqETc18sL9WPh+xHZmWRYuPncfFiOfKZoqPxzzzm1XVxdCoRAGBwfh9/sxMzOD9vZ2rKysoL+/X/V4GdNaT0FrPWU7M8M/wBh6G/qLvXDt3atosq2l/vgFN1YTOHj0Mdv5X7/Fcevm3/DUNCmaLD8cEf74+DhGR0cxPT2N5uZmAEBLSwvm5uYQCoXQ2NioeMKdM7/9DsY770F/+Ry0J1tUj7OpZDwCl6aj8vAjtvPfl6Io2+/BvsojiibLD0eEHwwGEQgE7kT/n9raWhQXF8Pn8ymaLDfm1Fcw3r8I/dVXoD1xUvU4W0rGIzhQ9SCK9pTazleWojh07N7a9oADwl9eXsbCwgL6+vo2fG1paQlerxclJSUKJsuN8flVmCOXoJ9/DdrjJ1SPs61kPILV5CI+eN5tO19Pp9D09ICiqfLHEeEDQFVVle18bW0N4XAYbW25XaG4HZfLte19iq9NZfUzjSuTMD8eg37hdWhNO3+alslsW3npspXxfZM/z+LEmQt46ORZ2/nYwKPwZLHxc505V5aV2e+s/FUdt/v2honFYrbzoaEhJBIJ+P1+FWPtmHH5E5hj49DfeiOn6HfT6q+LSN/4E0d9rdhXefjOzVi/ifQ/q/DUHFc94l2nfOPX1NTA5/MhGAyioqIC1dXVmJycxNTU7S2b7/Az2RCZXo9vXBqFefUL6ME3oXkfznW0jLfXZjK9Hj8Zj6CopAwHH2iwnSd+mkF55RGU7T+U8WPmOvNuUb7xNU3DxMQEvF4venp60NnZCbfbjd7eXui6XjD/2FrXr8P89AqQTsMYOL/hdXzjw49Uj7ipZDwCz7Hj0HT7Hkws/pjV05xC4rIc+ifa0dGBaDSK+fl51aPwE1hZ4CewcjQ7O1twz++pcDgy/FQqhVgsVtBvXJGzKf/n9v+Ul5fDMAzVY9A9zJEbnyjfGD6JxPBJJIZPIjF8Eonhk0gMn0Ry7CULRPnEjU8iMXwSieGTSAyfRGL4JBLDJ5EYPonE8Ekkhk8iMXwSieGTSAyfRGL4JBLDJ5EYPonE8Ekkhk8iMXwSieGTSP8Ct0Qi42uYDbUAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 233.576x84.28 with 1 Axes>"
]
},
"execution_count": 146,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"circuit = QuantumCircuit(1)\n",
"circuit.z(0)\n",
"circuit.h(0)\n",
"circuit.draw(output=\"mpl\")"
]
},
{
"cell_type": "code",
"execution_count": 147,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"$|\\psi\\rangle = \\begin{bmatrix} 0.7071067811865476 \\\\ 0.7071067811865475\\end{bmatrix}$"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"state_vector = execute(circuit, backend=simulator).result().get_statevector()\n",
"display(\n",
" Markdown(\n",
" display_qubit(state_vector)\n",
" )\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It is important to recall that $\\alpha, \\beta \\in \\mathbb{C}$. The following circuit originates a state where the coefficient are not in $\\mathbb{R}$."
]
},
{
"cell_type": "code",
"execution_count": 148,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 293.776x84.28 with 1 Axes>"
]
},
"execution_count": 148,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"circuit = QuantumCircuit(1)\n",
"circuit.h(0)\n",
"circuit.s(0)\n",
"circuit.y(0)\n",
"circuit.draw(output=\"mpl\")"
]
},
{
"cell_type": "code",
"execution_count": 149,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"$|\\psi\\rangle = \\begin{bmatrix} 0.7071067811865475 \\\\ 0.7071067811865476i\\end{bmatrix}$"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"state_vector = execute(circuit, backend=simulator).result().get_statevector()\n",
"display(\n",
" Markdown(\n",
" display_qubit(state_vector)\n",
" )\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Also, last note: because the coefficients are complex numbers, it is important to write $|\\alpha|^{2} + |\\beta|^{2} = 1$ and not $\\alpha^{2} + \\beta^{2} = 1$. $\\alpha^2$ might not even be a real number!"
]
},
{
"cell_type": "code",
"execution_count": 150,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Incorrect: alpha^2 + beta^2 = (-2.220446049250313e-16+0j)\n",
"Correct: |alpha|^2 + |beta|^2 = 1.0\n"
]
}
],
"source": [
"print(\n",
" \"Incorrect: alpha^2 + beta^2 = {}\".format(\n",
" state_vector[0]**2 + state_vector[1]**2\n",
" )\n",
")\n",
"print(\n",
" \"Correct: |alpha|^2 + |beta|^2 = {}\".format(\n",
" abs(state_vector[0]**2) + abs(state_vector[1]**2)\n",
" )\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A cool fact about qubits is: they can be visualized as 3d vectors in a unitary sphere!\n",
"We won't go deep into how the representation is made (it has to do with $X$, $Y$, and $Z$ basis). But you can see it using **plot_bloch_multivector** that is in _qiskit.visualization_"
]
},
{
"cell_type": "code",
"execution_count": 151,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 288x288 with 1 Axes>"
]
},
"execution_count": 151,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"plot_bloch_multivector(state_vector)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment