{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "9a4fdff8", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "# Importing standard Qiskit libraries\n", "from qiskit import QuantumCircuit, transpile, Aer, IBMQ\n", "from qiskit.tools.jupyter import *\n", "from qiskit.visualization import *\n", "from ibm_quantum_widgets import *\n", "\n", "# Loading your IBM Quantum account(s)\n", "provider = IBMQ.load_account()" ] }, { "cell_type": "markdown", "id": "28370f62", "metadata": {}, "source": [ "# Some more imports " ] }, { "cell_type": "code", "execution_count": 2, "id": "bda31a83", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/opt/conda/lib/python3.8/site-packages/qiskit/aqua/__init__.py:86: DeprecationWarning: The package qiskit.aqua is deprecated. It was moved/refactored to qiskit-terra For more information see <https://github.com/Qiskit/qiskit-aqua/blob/main/README.md#migration-guide>\n", " warn_package('aqua', 'qiskit-terra')\n" ] } ], "source": [ "from qiskit.quantum_info.operators import Operator, Pauli\n", "from qiskit.aqua.algorithms import QPE\n", "from qiskit.circuit import Parameter\n", "from qiskit.circuit.library import QFT\n", "from qiskit.quantum_info import random_statevector\n", "import numpy as np\n", "pi = np.pi\n", "sin = np.sin\n", "cos = np.cos\n", "exp = np.exp" ] }, { "cell_type": "code", "execution_count": 3, "id": "2c7167dd", "metadata": {}, "outputs": [], "source": [ "# time parameter\n", "t = [pi/8, pi/16, pi/4, pi/32, pi/24]\n", "#t = Parameter('t') #Define a universal parameter for all operators" ] }, { "cell_type": "markdown", "id": "ad28279f", "metadata": {}, "source": [ "# Defining matrix to transpile convertor, time evolution convertor(if time evolution is not already defined in the matrix, just remove the comments of evoloperator()) and my_qpe that takes in arguments and also applies inverse QFT." ] }, { "cell_type": "code", "execution_count": 4, "id": "c8fbf3eb", "metadata": {}, "outputs": [], "source": [ "#Operator to (1) transpile convertor\n", "def qc(operator,qubit_list):\n", " qc = QuantumCircuit(len(qubit_list))\n", " qc.unitary(operator,qubit_list)\n", " qc = transpile(qc)\n", " return qc " ] }, { "cell_type": "code", "execution_count": 5, "id": "56540a11", "metadata": {}, "outputs": [], "source": [ "# my_qpe takes in work qubits, simulation qubits, initialization condition and number of repetitions gate and applies QFT inverse\n", "def my_qpe(w_qubits,s_qubits, gate, initialize = None, repetitions=1): \n", " qpe_0 = QuantumCircuit(w_qubits+s_qubits,w_qubits)\n", " if (initialize == 'x') :\n", " for i in range(s_qubits):\n", " qpe_0.x(i+w_qubits)\n", " elif (initialize == 'r'):\n", " initial_state = {}\n", " for i in range(s_qubits):\n", " initial_state[i] = qpe_0.initialize(random_statevector(2).data, i+w_qubits)\n", " elif (initialize == 'h'):\n", " for i in range(s_qubits):\n", " qpe_0.h(i+w_qubits)\n", " elif (initialize == 'cx'):\n", " e,v = np.linalg.eig(U2_op)\n", " #print(v[2])\n", " qpe_0.initialize(v[2], [w_qubits+0, w_qubits+1])\n", " elif (initialize == 'deut'):\n", " e,v = np.linalg.eig(U2_op)\n", " qpe_0.initialize(v[3], [w_qubits+0, w_qubits+1])\n", " elif (initialize == 'H'):\n", " e,v = np.linalg.eig(H)\n", " qpe_0.initialize(v[3], [w_qubits+0, w_qubits+1])\n", "\n", " elif (initialize == 's'):\n", " e,v = np.linalg.eig(H)\n", " qpe_0.initialize(v[2][0:2], w_qubits+0)\n", " qpe_0.initialize(v[2][2:4], w_qubits+1)\n", " #qpe_0.initialize(initial_state1, w_qubits+1)\n", " for i in range(w_qubits):\n", " qpe_0.h(i)\n", " for counting_qubit in range(w_qubits):\n", " for i in range(repetitions):\n", " qubit_list = [counting_qubit]+list(range(w_qubits,w_qubits+s_qubits))\n", " qpe_0.append(gate,qubit_list)\n", " repetitions *= 2\n", " qpe_1 = QFT(w_qubits, 0, True , True)\n", " l = [*range(w_qubits)]\n", " qpe = qpe_0.compose(qpe_1, l)\n", " qpe.measure(l,l)\n", " return qpe" ] }, { "cell_type": "code", "execution_count": 6, "id": "446154fa-d1d1-4582-bd65-542699a37994", "metadata": {}, "outputs": [], "source": [ "def plot_to_eigenval(count,w_qubits):\n", " lists = []\n", " for (key,value) in count.items():\n", " if (value) > 10 :\n", " lists = lists + [key]\n", " #k=Counter(count).most_common(w_qubits) # Method to pick out the most probable outcomes based on number of expected eigen values\n", " for j in range(len(lists)):\n", " lists[j] = int(str(lists[j]), 2) #Convert them to decimal values\n", " for j in range(len(lists)):\n", " if (lists[j]>pow(2,w_qubits-1)):\n", " lists[j] = exp(complex(0,-2*pi*(lists[j]-pow(2,w_qubits))/(pow(2,w_qubits)*t[i])))\n", " else :\n", " lists[j] = exp(complex(0,-2*pi*lists[j]/(pow(2,w_qubits)*t[i])))\n", " display(print(lists))" ] }, { "cell_type": "code", "execution_count": 7, "id": "870613c2-65bc-4a61-9956-627d9808041d", "metadata": {}, "outputs": [], "source": [ "# temporary\n", "def plot_to_eigenval2(count,w_qubits):\n", " lists = []\n", " for (key,value) in count.items():\n", " if (value) > 10 :\n", " lists = lists + [key]\n", " #k=Counter(count).most_common(w_qubits) # Method to pick out the most probable outcomes based on number of expected eigen values\n", " for j in range(len(lists)):\n", " lists[j] = int(str(lists[j]), 2) #Convert them to decimal values\n", " for j in range(len(lists)):\n", " if (lists[j]>pow(2,w_qubits-1)):\n", " lists[j] = exp(complex(0,2*pi*(lists[j]-pow(2,w_qubits))/(pow(2,w_qubits))))\n", " else :\n", " lists[j] = exp(complex(0,2*pi*lists[j]/(pow(2,w_qubits))))\n", " display(print(lists))" ] }, { "cell_type": "markdown", "id": "d2406980", "metadata": {}, "source": [ "## Testing our function definitions using Phase(as Matrix t and as circuit qc2) and CNOT operators" ] }, { "cell_type": "code", "execution_count": 8, "id": "a9342e2c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Eigen values for given matrix are : [1. +0.j 0.70710678+0.70710678j]\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAc0AAAFTCAYAAABbKVcuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAcY0lEQVR4nO3df7iVZZ3v8fdXiNIgE0wFtqSIkwWa5s7UtopdMR7tjJV2Uq+M4XiSI02SeWqqM+pEp2ymJkenxmlk5kqxzjmWnWosVByLKEVsQ4f80QCTZoGwkRGlEsEf3/PHs+Cs2e4f94LNXou936/rWhdr3ff93Pv7/OH18fl1P5GZSJKk/u3T7AIkSdpbGJqSJBUyNCVJKmRoSpJUyNCUJKmQoSlJUqGRzS6gmQ488MA87LDDml2GJKmFLF++fFNmvqanvmEdmocddhidnZ3NLkOS1EIi4rHe+jw9K0lSIUNTkqRChqYkSYUMTUmSChmakiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKGZqSJBUyNCVJKmRoSpJUyNCUJKmQoSlJUiFDU5KkQoamJEmFDE1JkgoZmpIkFTI0JUkqZGhKQ9BFF13EQQcdxLRp03rsz0zmzp3LlClTOOaYY1ixYsXOvptuuokjjzySI488kptuumln+/Llyzn66KOZMmUKc+fOJTP3+H5IrcbQlIagWbNmcccdd/Taf/vtt7NmzRrWrFnDDTfcwJw5cwB48sknmTdvHsuWLeP+++9n3rx5bN68GYA5c+Ywf/78ndv1Nb80VBma0hB06qmnMnbs2F77v/vd7zJz5kwighNPPJGnnnqK9evXc+eddzJjxgzGjh3LAQccwIwZM7jjjjtYv349W7Zs4cQTTyQimDlzJt/5zncGb4ekFmFoSsPQunXrOPTQQ3f+bmtrY926dX22t7W1vaRdGm4MTUmSChma0jA0ceJEfvOb3+z8vXbtWiZOnNhn+9q1a1/SLg03hqY0DJ199tksWLCAzOS+++5j//33Z/z48ZxxxhksWrSIzZs3s3nzZhYtWsQZZ5zB+PHjedWrXsV9991HZrJgwQLe+c53Nns3pEE3stkFSBp4F1xwAYsXL2bTpk20tbUxb948nnvuOQAuueQSzjrrLBYuXMiUKVPYb7/9+OpXvwrA2LFjufLKK3nzm98MwFVXXbXzhqLrr7+eWbNmsXXrVs4880zOPPPM5uyc1EQxnJ+1am9vz87OzmaXIUlqIRGxPDPbe+rz9KwkSYUMTUmSChmakiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKDGpoRcWpE/FNErIuIjIhZBdscHRE/ioitte2uiojoNubciHg4IrbV/n33HtsJSdKwNdhHmqOBB4EPA1v7GxwRrwLuArqAN9e2+xhwed2Yk4BbgK8Dx9b+/WZEvGWAa5ckDXODuvZsZi4EFgJExI0Fm7wP2A/448zcCjwYEUcBl0fENVmtAXgZ8MPM/Gxtm89GxOm19gsGdg8kScNZq1/TPAn4cS0wd7gTmAAcVjdmUbft7gRO3uPVSZKGlVZ/y8khwNpubV11fY/W/u3qYcwhPU0YEbOB2QATJkxg8eLFAEyePJkxY8awcuVKAMaNG8fUqVNZsmQJACNHjqSjo4MVK1awZcsWANrb2+nq6uIvbjtid/ZRkjQAPn3eelatWgVU74xta2tj2bJlAIwePZr29naWLl3Ktm3bAOjo6GD16tVs3LgRgGnTpu3s603T3nISEb8DPpSZN/YxZhGwNjMvqmubBDwGnJyZSyNiO/CBzFxQN2YmMD8zX95XDQP1lpOLr93tKSRJu2n+ZQMzz978lpMNwMHd2g6u6+trzAYkSRpArR6aS4FTIuIVdW0zgMeBX9WNmdFtuxnAvXu8OknSsDLYz2mOjohjI+LY2t+eVPs9qdb/uYi4u26T/wk8A9wYEdMi4hzgE8COO2cBrgPeFhGfiIijIuKTwOnAtYO0W5KkYWKwjzTbgZ/VPvsC82rfP13rHw/svKsmM5+mOmqcAHQCfwt8Ebimbsy9wPnALODnwEzgvMxctmd3RZI03Az2c5qLgeijf1YPbQ8Ap/Yz763ArbtZniRJfWr1a5qSJLUMQ1OSpEKGpiRJhQxNSZIKGZqSJBUyNCVJKmRoSpJUyNCUJKmQoSlJUiFDU5KkQoamJEmFDE1JkgoZmpIkFTI0JUkqZGhKklTI0JQkqZChKUlSIUNTkqRChqYkSYUMTUmSChmakiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKGZqSJBUyNCVJKmRoSpJUyNCUJKmQoSlJUiFDU5KkQoamJEmFDE1JkgoZmpIkFTI0JUkqZGhKklTI0JQkqZChKUlSIUNTkqRChqYkSYUMTUmSCjUUmhGxT0TsU/f7kIj4QES8deBLkySptTR6pPl94FKAiBgNdAJfABZHxMwBrk2SpJbSaGi2Az+ofT8H2AIcBFwMfLRkgoj4YEQ8GhHPRsTyiDilj7E3RkT28Pl93ZjpvYw5qsF9kySpT42G5mjgqdr3PwS+nZnPUQXpEf1tHBHnAdcBVwPHAfcCt0fEpF42+TAwvtvnEeAbPYyd2m3cmqI9kiSpUKOh+WvgrRHxSuAM4K5a+1jgmYLtLwduzMz5mfmLzLwUWA/M6WlwZj6dmRt2fKiCeTIwv4fhG+vHZuYLDe6bJEl9ajQ0rwFuBtYC64AltfZTgQf62jAiRgHHA4u6dS0CTi78+xcDD2XmvT30dUbE+oi4OyJOL5xPkqRiIxsZnJl/HxHLgUOBuzLzxVrXL4Er+9n8QGAE0NWtvQt4e39/OyL2B94LfLJb144j1Z8Co4D3A3dHxGmZ+eMe5pkNzAaYMGECixcvBmDy5MmMGTOGlStXAjBu3DimTp3KkiXV/xeMHDmSjo4OVqxYwZYtWwBob2+nq6uLgjPTkqQ9bP369axatQqAiRMn0tbWxrJlywAYPXo07e3tLF26lG3btgHQ0dHB6tWr2bhxIwDTpk3b2debyMw9uAt1fyhiAtXR6WmZuaSu/SrgfZn5un62/xPgi8CEzHyyn7ELgecz8+y+xrW3t2dnZ2fpLvTq4mt3ewpJ0m6af9nAzBMRyzOzvae+hhc3qN39+lBEPBMRk2ttH4+I9/az6SbgBeDgbu0HAxsK/vTFwLf6C8yaZcCRBeMkSSrW6OIGlwFXADcAUdf1OPChvrbNzO3AcmBGt64ZVHfR9vV3TwDeSM83APXkWKrTtpIkDZiGrmkClwAXZ+b3I+Izde0rqB756M81wM0RcT9wT22+CcBXACJiAUBmdl8oYTawJjMXd5+wFuS/Ah6iuqZ5IfAu4NzCfZIkqUijofla4MEe2p8D9u1v48y8JSLGUR2tjq/NdVZmPlYb8pLnNSNiDHA+8Oleph1FtSpRG7CVKjzfkZkL+6tHkqRGNBqajwBvAh7r1n4W8HDJBJl5PXB9L33Te2j7LdWiCr3N93ng8yV/W5Kk3dFoaP4V8OWI2I/qmuZJEfF+4E+Biwa6OEmSWkmjz2l+NSJGUi2Dtx/VQgePA3Mz85Y9UJ8kSS2j0SNNMnM+MD8iDgT2ycyNA1+WJEmtp+HQ3CEzNw1kIZIktbp+QzMifk61is/miHgA6HUJocw8ZiCLkySplZQcaX4L2Fb3fXDW3ZMkqcX0G5qZOa/u+6f2aDWSJLWwRpfR+0FEvLqH9ldFxA8GrCpJklpQowu2T6dagae7VwCn7HY1kiS1sKK7ZyPiTXU/j4mI+jeNjADOoHrtlyRJQ1bpIyedVDcAJbCoh/6twKUDVZQkSa2oNDQPp1o27xHgBOCJur7twMbMfGGAa5MkqaUUhWbdW0gafmm1JElDRcniBucAt2Xmc7XvvcrM/zNglUmS1GJKjjRvBQ4BNta+9yapbgqSJGlIKlncYJ+evkuSNNwYgpIkFSq9plnEa5qSpKGs9JpmCa9pSpKGtIauaUqSNJwZiJIkFfI5TUmSCvmcpiRJhXxOU5KkQoagJEmFGg7NiHhTRCyIiM7a5+Zu79uUJGlIaig0I+J9wE+B8cDC2udg4P6IuHDgy5MkqXWUvk9zh88CV2bm1fWNEfFJ4DPA1waqMEmSWk2jp2dfA3yjh/ZvAgftfjmSJLWuRkPzh8D0HtqnAz/a3WIkSWpljS7YfjvwuYhoB+6rtZ0InAN8asCrkySphezqgu2za596XwKu3+2KJElqUS7YLklSIQNRkqRCjT5yQkQcAJwJTAJG1fdl5qcHqC5JklpOQ6EZEScC3we2UT1+so5qoYNtwK8AQ1OSNGQ1enr2C8DXgYnAs8DbqI44O4G/HNjSJElqLY2G5jHAlzMzgReAl2dmF/BxfOREkjTENRqa2+u+dwGvrX3/HTBhQCqSJKlFNXoj0ArgzcBqYDHwmYg4GLgQ+PnAliZJUmtp9Ejzz4DHa9+vAJ6gWtTgAF662IEkSUNKQ0eamdlZ9/0JqkdPJEkaFhp+ThMgIo4AXl/7+XBmPjJwJUmS1JoafU5zHPCPwNnAi/+/Ob4HXJSZ/zbA9UmS1DIavab5D8AU4BTgFbXPqcDhwPyBLU2SpNbSaGieAVycmfdk5vO1zz3Af6319SsiPhgRj0bEsxGxPCJO6WPs9IjIHj5HdRt3bkQ8HBHbav++u8H9kiSpX42G5hPA73tofwbo99RsRJwHXAdcDRwH3AvcHhGT+tl0KtVyfTs+a+rmPAm4hWqlomNr/34zIt7SXz2SJDWi0dD8NHBtREzc0VD7/kXK1p29HLgxM+dn5i8y81JgPTCnn+02ZuaGus8LdX2XAT/MzM/W5vws1TOklxXvlSRJBfq9ESgiHgCyrulw4FcRsa72e8c6tAdRXfPsbZ5RwPHAX3XrWgSc3E8ZnRHxcuBh4DOZ+cO6vpOonhWtdyfwoX7mlCSpISV3z946QH/rQGAE1fJ79bqAt/eyzY6j0J9SvYbs/cDdEXFaZv64NuaQXuY8ZCCKliRph35DMzPnDUYhvfztVcCquqalEXEY8DHgxz1u1I+ImE1t9aIJEyawePFiACZPnsyYMWNYuXIlAOPGjWPq1KksWbIEgJEjR9LR0cGKFSvYsmULAO3t7XR1dQFH7EopkqQBtH79elatqiJj4sSJtLW1sWzZMgBGjx5Ne3s7S5cuZdu2bQB0dHSwevVqNm7cCMC0adN29vUmqheWNCYi3ga8geq07UOZubhgm1FUNwxdkJnfrGv/W2BaZp5W+Lf/HDg/M19f+/1r4EuZ+YW6MR8DPpSZr+1lGgDa29uzs7OzryFFLr52t6eQJO2m+ZcNzDwRsTwz23vqa+hGoIiYGBH3A3dRvQ7sE1SnS5dFRJ9vOcnM7cByYEa3rhlUd9GWOpbqtO0OSwdgTkmS+tXoMnp/Q/UezSmZ+ShAREwGvlbre08/218D3FwL3nuAS6heKfaV2lwLADJzZu33ZcCvgIeormleCLwLOLduzuuAJRHxCeA7wLuB04GOBvdNkqQ+NRqaM4DpOwITIDMfiYi5wN39bZyZt9SW4ruC6nnLB4GzMvOx2pDuz2uOAr4AtAFbqcLzHZm5sG7OeyPifOAzVI+9/BI4LzOXNbhvkiT1aVcWbO/pImjxhdHMvB64vpe+6d1+fx74fMGctzJwd/lKktSjRhc3uBv4UkQcuqOhtprPtRQcaUqStDdrNDTnAq8EHomIxyLiMarToa+s9UmSNGQ1enr234ATgOnAjkXTf5GZ/zyQRUmS1IqKQzMiRgBPA2/MzLuoHjuRJGnYKD49W1sk/TGqO1olSRp2Gr2m+T+Av4iIA/dEMZIktbJGr2l+lOotJ+siYi3d3q2ZmccMVGGSJLWaRkPzVqpnMmMP1CJJUksrCs2I2I9qZZ53AS+jeibz0szctOdKkySptZRe05wHzAK+D/wvqvdf/t0eqkmSpJZUenr2HOC/ZOb/BoiIrwP3RMSI2l21kiQNeaVHmodS99LnzLwfeJ7qDSWSJA0LpaE5Atjere15dm3Bd0mS9kqloRfA1yJiW13bK4D5EfHMjobMPHsgi5MkqZWUhuZNPbR9bSALkSSp1RWFZmb+5z1diCRJra7RZfQkSRq2DE1JkgoZmpIkFTI0JUkqZGhKklTI0JQkqZChKUlSIUNTkqRChqYkSYUMTUmSChmakiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKGZqSJBUyNCVJKmRoSpJUyNCUJKmQoSlJUiFDU5KkQoamJEmFDE1JkgoZmpIkFTI0JUkqZGhKklTI0JQkqdCgh2ZEfDAiHo2IZyNieUSc0sfYcyJiUUQ8ERG/jYhlEXF2tzGzIiJ7+Lxiz++NJGk4GdTQjIjzgOuAq4HjgHuB2yNiUi+bnAb8AHhHbfxC4Ns9BO0zwPj6T2Y+O/B7IEkazkYO8t+7HLgxM+fXfl8aEf8BmAN8svvgzPxwt6Z5EfEO4F3Aj//90NywB+qVJGmnQTvSjIhRwPHAom5di4CTG5hqDLC5W9u+EfFYRKyNiO9FxHG7UaokST0azCPNA4ERQFe39i7g7SUTRMSfAG3AzXXNq4CLgJVUgfph4J6IeGNmrulhjtnAbIAJEyawePFiACZPnsyYMWNYuXIlAOPGjWPq1KksWbIEgJEjR9LR0cGKFSvYsmULAO3t7XR1dQFHlJQvSdqD1q9fz6pVqwCYOHEibW1tLFu2DIDRo0fT3t7O0qVL2bZtGwAdHR2sXr2ajRs3AjBt2rSdfb2JzNyDu1D3hyImAOuA0zJzSV37VcD7MvN1/Wx/LlVYnpeZt/UxbgTwf4EfZubcvuZsb2/Pzs7O8p3oxcXX7vYUkqTdNP+ygZknIpZnZntPfYN5I9Am4AXg4G7tBwN9Xo+MiPdQBebMvgITIDNfADqBI3e9VEmSXmrQQjMztwPLgRndumZQ3UXbo4h4L1VgzsrMW/v7OxERwDHA+l2vVpKklxrsu2evAW6OiPuBe4BLgAnAVwAiYgFAZs6s/T6fKjA/CiyJiENq82zPzCdrY/4cuA9YA7wKmEsVmnMGaZ8kScPEoIZmZt4SEeOAK6iep3wQOCszH6sN6f685iVUNV5b++zwI2B67furgRuAQ4CngZ8Bp2bm/QO+A5KkYW2wjzTJzOuB63vpm97X7162+QjwkYGoTZKkvrj2rCRJhQxNSZIKGZqSJBUyNCVJKmRoSpJUyNCUJKmQoSlJUiFDU5KkQoamJEmFDE1JkgoZmpIkFTI0JUkqZGhKklTI0JQkqZChKUlSIUNTkqRChqYkSYUMTUmSChmakiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKGZqSJBUyNCVJKmRoSpJUyNCUJKmQoSlJUiFDU5KkQoamJEmFDE1JkgoZmpIkFTI0JUkqZGhKklTI0JQkqZChKUlSIUNTkqRChqYkSYUMTUmSChmakiQVMjQlSSpkaEqSVGjQQzMiPhgRj0bEsxGxPCJO6Wf8abVxz0bEIxFxye7OKUnSrhjU0IyI84DrgKuB44B7gdsjYlIv4w8HFtbGHQd8DvhSRJy7q3NKkrSrBvtI83Lgxsycn5m/yMxLgfXAnF7GXwI8npmX1sbPB24CProbc0qStEsGLTQjYhRwPLCoW9ci4OReNjuph/F3Au0R8bJdnFOSpF0ymEeaBwIjgK5u7V3AIb1sc0gv40fW5tuVOSVJ2iUjm13AYIuI2cDs2s/fRcSqZtYjtZADgU3NLkLaVf/wkQGb6rW9dQxmaG4CXgAO7tZ+MLChl2029DL++dp80eicmXkDcENx1dIwERGdmdne7DqkVjZop2czczuwHJjRrWsG1R2vPVnay/jOzHxuF+eUJGmXDPbp2WuAmyPifuAeqrtjJwBfAYiIBQCZObM2/ivAhyLiWuDvgbcCs4ALSueUJGmgDGpoZuYtETEOuAIYDzwInJWZj9WGTOo2/tGIOAv4a6pHSB4H5mbmtxqYU1IZL1tI/YjMbHYNkiTtFVx7VpKkQoamJEmFDE1JkgoZmpJ6FRH7REQ0uw6pVRiaknaqrek8PiKOA8jMF7N2t6DhKXn3rKSaiHgr8N+Bo4DtwBhgCfDlzHSxEAlDU1JNRPwauItqJa6tVM9N/xHweuAnwMcz8+HmVSg1n6EpiYg4n+ol72/IzK21tpdRreN8GtXiIhuBP87M3zatUKnJvKYpCWB/4NdUL0EAoLa+89rM/DrVilsnAh1Nqk9qCYamJIAfUb3Q/QsRcWj3m34yczHwANX6z9KwZWhKIjP/BbgYmA58EXhvRLyutq4zEXEM1ZHmwqYVKbUAr2lKw1xE7JOZL0bESOAc4MPAScAaqqPLw4EDgGWZeUHvM0lDn6EpiYjYPzOfrvs9CXg/cDTwr8DDwG3eBKThztCUhrGImEL1ftrTqY4ofwr8E/DtzPx9bcw+mfli86qUWoehKQ1jEfEjqkUMfgJsAN5GdYfsU8CXgL/MzOcNTqliaErDVEScDnwD+IPM3FzXPoHqpqDZwHeBSzPzheZUKbUW756Vhq/jgV8CzwJExIjaEeXjmTkP+DjwPqrFDSRhaErD2ULgCKo7ZsnMF2p30Ubt99eAxRia0k6GpjR8rQIWAH8TETdExFkRMa7urSaHAG+ieuxEEl7TlIa1iHg5cClwNrAvsBZ4EngaeAuwb2a+qXkVSq3F0JRERBwF/EfgWKqFDMYD/wz8XWY+2sTSpJZiaErDVESMAPbJzOe6tb8mM59oUllSS/OapjTMRMTxsPPGn+dqbaNqrwLDwJR6Z2hKw0hEHAn8NCIejIhrIuI4gMzcnpnPRWVURJwQEaOaXK7UcgxNaXi5gOrZzLuo3lryvYi4LyL+NCIOrd05+xrgPuCgJtYptSSvaUrDSER8HdgEfA4YB7QDpwAnAGOBn1G9iPrwzJzarDqlVjWy2QVIGhy1V399H3htZm6gWmv2oYi4DXgd1QpBpwLvoVpGT1I3HmlKw1REvKyHO2fPAW4FRmfmM82pTGpdXtOUhomI+Hf/vdfdOTtyx9J5wMnAEgNT6pmnZ6XhY0Lt/ZkBvAisyswNmfk8QC04fwLc0sQapZbm6VlpGIiIOcBFwBuB3wP/SrVk3n3AdzJzVRPLk/Yanp6VhriIGAdcTfVuzPHAScBNwAvATKoF299QGzuiWXVKewOPNKUhLiIuBS7MzLf00NdB9fjJROCEzNw02PVJexOPNKWhbzswJiKmQfVmkx2r/WTmT6heNP0s8IfNK1HaOxia0tB3K9WNP5dFxJjM3JaZ23fcTZuZvwaeAtqaWKO0VzA0pSGsdkfsk8AVwAzg8Yj4xx2LtkfEpIi4EDga+EbzKpX2Dl7TlIaBiHg1MInqOcx3A2+tdW2gegTl5sz8VFOKk/YihqY0REXEQcD7gf9Gtd7sVqrTsD+hetTkZcAU4I7MXN2kMqW9iqEpDVERcSMwFbiN6hTtWKrTsH8AbASuyMxlTStQ2gsZmtIQVLuW+VvgrMxcUtc2CXgL8AFgMvDezFzRtEKlvYw3AklD0xuAR6keNwEgK49l5jeAP6I6VfufmlOetHcyNKWh6RGqU7B/HRFH9rBY+zaqVYHObEZx0t7K0JSGoMzcCvwZsC+wAJgZEYdGxGiAiNgPOA14sHlVSnsfr2lKQ1htFaArgbOpFmpfCjwBvB1YD3wgMx9oXoXS3sXQlIaB2uMn7wDeRbVk3oPANzPzX5pZl7S3MTSlYSYi9snMF5tdh7Q3MjQlSSrkjUCSJBUyNCVJKmRoSpJUyNCUJKmQoSlJUiFDU5KkQoamJEmF/h9vxAc9bU+n6QAAAABJRU5ErkJggg==\n", "text/plain": [ "<Figure size 504x360 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[(0.7071067811865476+0.7071067811865475j)]\n" ] }, { "data": { "text/plain": [ "None" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# phase operator as a matrix\n", "T = ([[1,0],[0,exp(complex(0,pi/4))]])\n", "e,v = np.linalg.eig(T)\n", "print(\"Eigen values for given matrix are : \",e)\n", "#operator to control gate, call transpile convertor qc\n", "T_Gate = qc(operator = T,qubit_list = [0]).to_gate().control(1)\n", "# calling qpe for T_Gate\n", "qpee = my_qpe(w_qubits=5,s_qubits=1,gate = T_Gate, initialize = 'x')\n", "#display(qpee.draw()) ; # To check if it is correct \n", "from qiskit import execute\n", "simulator = Aer.get_backend('qasm_simulator')\n", "result = execute(qpee, backend = simulator, shots = 4000).result()\n", "display(plot_histogram(result.get_counts(qpee)))\n", "count = result.get_counts(qpee)\n", "plot_to_eigenval2(count, 5)\n" ] }, { "cell_type": "markdown", "id": "c383e90f", "metadata": {}, "source": [ " $$ T = \\begin{bmatrix}\n", "1 & 0\\\\\n", "0 & e^{\\frac{i\\pi}{4}}\\\\\n", "\\end{bmatrix}\n", "$$ $\\implies$ eigen values = (1, $e^{\\frac{i\\pi}{4}}$) and eigen vectors = $\\begin{bmatrix}\n", "1 \\\\\n", "0 \\\\\n", "\\end{bmatrix}$, $\\begin{bmatrix}\n", " 0\\\\\n", "1\\\\\n", "\\end{bmatrix}$ \n", "$\\implies$ $\\begin{bmatrix}\n", "1 & 0\\\\\n", "0 & e^{\\frac{i\\pi}{4}}\\\\\n", "\\end{bmatrix}$$\\begin{bmatrix}\n", " 0\\\\\n", "1\\\\\n", "\\end{bmatrix}$ = $e^{\\frac{i\\pi}{4}}$$\\begin{bmatrix}\n", " 0\\\\\n", "1\\\\\n", "\\end{bmatrix}$ $\\\\$\n", "Therefore eigen value we expect is $e^{\\frac{i\\pi}{4}} = 0.707106781+0.707106781j$ which is also the observed." ] }, { "cell_type": "code", "execution_count": 9, "id": "5054da2d", "metadata": {}, "outputs": [ { "data": { "image/png": "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SZNSNjds2EC7du3Yv38/9evXD/VV5efn06FDh9D16NChA/n5+eTn59O6dWsuvvhiZs6cyQMPPMDu3btD/VyffPIJqampof6vzMxM6tevH+ojc87xwQcfMHbsWP7617+W6h+LNg8xsm9t8uTJHNn/vAQ/EcmlZNm3ePpKwTc7X3vttcycOZPHH3+8VLPpt99+y09+8pMyNjdt2kTbtm1Dz3x2djbz589n27ZtTJkyhfz8fI499ljat2/P008/Xa3PbYkO/HvWvHlznHO11mbJezZlyhR++ctf0rNnT3r37l1lm4WFhdxwww1cddVVfPzxx7z11lu0a9eulM3HHnuM1q1b88Mf/pAf/ehHFWrBueiii5g6dSrbt28v84HqefPm0a5dO6ZNm8aKFSu46qqr+N3vfhdqwbnooovo3bt3aMnARKT1+eefZ9++faxatYq33nqL7du3h5ZWLEnrjh07oua3U6ZMCeVfWVlZdOnSpZRN8COse/bsWSavqPR7WSX1QUxFMt5YgxpiOYpw1q5dy2effcagQYMq7CiKioqYOXMmp59+OsOHD+e4446rss2dO3eye/fuUuda4gRLbH722Wfk5uYyfPhwBg0adMBrV1hYyMKFC7nssss48sgjadiwYYXW6Cxh9uzZHHnkkTz11FM89NBDzJw5s8Laffv28a9//YusfmdXWFNb6djL92t+9tln3Hij79e87bbbQqNqGzRowIsvvsinn34a6istaUZdu3YtW7du5ZZbbuHGG28sNV3jxBNPJD09HaDUtJS0tLRQOPgmqoKCAt5++22ysrJo3bo1X375JaNGjeL999+v9ue2qKiIfv368c477/CDH/wgKe9KVWwCof8XLVrEscceW2Wb06dPp3HjxuTm5oYK5gUFBaVsTpkyhREjRrBo0SKuu+66AzphgKFDh9KiRYuoTqa8QnKJduvWrdSvXx8gIWl97bXX6NGjR8ipZWRksGjRolJpLSwsjJrfViSvXrt2LYsWLapQ/lUeddYhVie7du3iiy++4NZbb6VZs2YV1qWkpHDkkUfy4YcfMm/evFJzzOK12b59e3bt2hX6vX79eho1alTK5tChQ3n11VeZN28eixcvDmWgWVlZfPnll6G4X375JVlZWWRmZoYG0WRkZDBgwAAWLlwYynx79OhBYWFhqP9r/fr17N+/P9RHlpGRQUZG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\n", "text/plain": [ "<Figure size 504x360 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[(-0.7071067811865475+0.7071067811865476j), (-0.1950903220161282+0.9807852804032304j), (-0.555570233019602+0.8314696123025455j), (-0.3826834323650897+0.9238795325112867j), (-0.8314696123025453+0.5555702330196022j)]\n" ] }, { "data": { "text/plain": [ "None" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Phase as a circuit\n", "def qc2(p):\n", " qc2 = QuantumCircuit(1)\n", " qc2.p(2*pi/3,0)\n", " return qc2\n", "p_gate = qc2(1).to_gate().control(1)\n", "\n", "qppe = my_qpe(w_qubits = 5, s_qubits=1, gate = p_gate, initialize = 'x')\n", "# we dont need to call simulator and import again\n", "result = execute(qppe, backend = simulator, shots = 1000).result()\n", "count = result.get_counts(qppe)\n", "display(plot_histogram(result.get_counts(qppe)))\n", "plot_to_eigenval2(count, 5)" ] }, { "cell_type": "markdown", "id": "6609f472-3b0f-4410-84fe-50e250add847", "metadata": {}, "source": [ "Similarly, for $\\theta = \\frac{2\\pi}{3}$, eigen values are (1, -0.5+0.866025403j), and one of observed eigen value is $e^{i2\\pi\\frac{11}{2^5}}$ = {-0.555570233+0.831469612j}" ] }, { "cell_type": "markdown", "id": "77baa3ab-7c63-4545-b2a2-4445905c63b6", "metadata": {}, "source": [ "## Q) Why do we see single peaks for $\\frac{\\pi}{4}$ and not for $\\frac{\\pi}{12}$? \n", "## Ans) The reason being that, for $\\frac{\\pi}{4}$ case we can easily break 1/8 (the $\\theta$) as a decimal/$2^n$, but not for 1/24. Infact we can do this for any $\\theta$ that can be divided into a single valued decimal/$2^n$. " ] }, { "cell_type": "markdown", "id": "ec96b8be", "metadata": {}, "source": [ "## Testing with 2 qubit CNOT gate" ] }, { "cell_type": "code", "execution_count": 10, "id": "6cc78ec6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Eigen values for given matrix are : [0.92387953+0.38268343j 0.92387953-0.38268343j 0.92387953+0.38268343j\n", " 0.92387953+0.38268343j]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 504x360 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[(0.9238795325112867+0.3826834323650898j)]\n" ] }, { "data": { "text/plain": [ "None" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#exp(i(CNOT)t) where t = pi/8 using obtained using wolfram alpha\n", "import scipy\n", "op2 = ([[complex(0,pi/8),0,0,0],[0,complex(0,pi/8),0,0],[0,0,0,complex(0,pi/8)],[0,0,complex(0,pi/8),0]])\n", "U2_op = scipy.linalg.expm(op2) # just to check that same matrix is produced by scipy exponentiation\n", "#display(U2_op)\n", "e,v = np.linalg.eig(U2_op)\n", "print(\"Eigen values for given matrix are : \",e)\n", "U = qc(U2_op,[0,1]).to_gate().control(1)\n", "\n", "qpp = my_qpe(w_qubits = 5, s_qubits=2, gate = U, initialize = 'cx') #cx initializes to 3rd eigen vector\n", "# we dont need to call simulator and import again\n", "result = execute(qpp, backend = simulator, shots = 1000).result()\n", "display(plot_histogram(result.get_counts(qpp)))\n", "count = result.get_counts(qpp)\n", "plot_to_eigenval2(count, 5)\n" ] }, { "cell_type": "markdown", "id": "70fe6f9e", "metadata": {}, "source": [ "$$e^{it(CNOT)} = \\begin{bmatrix}\n", "e^{\\frac{i\\pi}{8}} & 0 & 0 & 0\\\\\n", "0 & e^{\\frac{i\\pi}{8}} & 0 & 0\\\\\n", "0 & 0 & cos(\\frac{\\pi}{8}) & i.sin(\\frac{\\pi}{8})\\\\\n", "0 & 0 & i.sin(\\frac{\\pi}{8}) & cos(\\frac{\\pi}{8})\\\\\n", "\\end{bmatrix}$$ for t = $\\frac{\\pi}{8}$\n", "has eigen values = {(0.92387953+0.38268343j)*3, (0.92387953-0.38268343j)} and eigen vectors = $\\begin{bmatrix}\n", "0 \\\\0\\\\1\\\\0\\end{bmatrix}\n", "$, $\\begin{bmatrix}\n", "0 \\\\0\\\\0\\\\1\\end{bmatrix}\n", "$, $\\begin{bmatrix}\n", "1/\\sqrt(2) \\\\-1/\\sqrt(2)\\\\0\\\\0\\end{bmatrix}\n", "$, $\\begin{bmatrix}\n", "1/\\sqrt(2)\\\\1/\\sqrt(2)\\\\0\\\\0\\end{bmatrix}\n", "$ \n", "\n", "$$\\implies \\begin{bmatrix}\n", "e^{\\frac{i\\pi}{8}} & 0 & 0 & 0\\\\\n", "0 & e^{\\frac{i\\pi}{8}} & 0 & 0\\\\\n", "0 & 0 & cos(\\frac{\\pi}{8}) & i.sin(\\frac{\\pi}{8})\\\\\n", "0 & 0 & i.sin(\\frac{\\pi}{8}) & cos(\\frac{\\pi}{8})\\\\\n", "\\end{bmatrix}\\begin{bmatrix}\n", "1/\\sqrt(2) \\\\-1/\\sqrt(2)\\\\0\\\\0\\end{bmatrix} = e^{\\frac{i\\pi}{8}}\\begin{bmatrix}\n", "1/\\sqrt(2) \\\\-1/\\sqrt(2)\\\\0\\\\0\\end{bmatrix}\n", "$$\n", "Therefore the expected eigen value is $ e^{\\frac{i\\pi}{8}} = (0.9238795325112867+0.3826834323650898j) $" ] }, { "cell_type": "markdown", "id": "6709334f", "metadata": {}, "source": [ "## Testing of Pairing part of pairing Hamiltonian for 2 qubits and for different values of t" ] }, { "cell_type": "code", "execution_count": 11, "id": "405d88e9", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Eigen value by algebra : [0.98078528+0.19509032j 0.98078528-0.19509032j 1. +0.j\n", " 1. +0.j ]\n" ] }, { "data": { "text/plain": [ "None" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[(1-0j)]\n" ] }, { "data": { "text/plain": [ "None" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAc0AAAFTCAYAAABbKVcuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAcdUlEQVR4nO3dfZjdZX3n8fcXIiAmKAmFPAwRQyhqAoIMCjg8yEWKYBcVXJGK2cgKJQoRWW11C9awgFUrQrWsErtA0N2iuNWqPMQiMRZCcJI2gmCSSyCaMExICUYFEh6++8fvJHsc5uE+yWTmZM77dV3nyjn3ff/u+f7+4cPv6f5FZiJJkga2y3AXIEnSzsLQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKjRruAobTPvvskwcccMBwlyFJaiJLly5dn5l/1FtfS4fmAQccQGdn53CXIUlqIhGxuq8+T89KklTI0JQkqZChKUlSIUNTkqRChqYkSYUMTUmSChmakiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKGZqSJBUyNCVJKmRoSpJUyNCUJKmQoSlJUiFDU5KkQoamJEmFDE1JkgoZmtIIdM4557Dvvvsyffr0Xvszkzlz5jB16lQOPfRQli1btrXvxhtv5KCDDuKggw7ixhtv3Nq+dOlSDjnkEKZOncqcOXPIzB2+H1KzMTSlEWjWrFncfvvtffbfdtttrFq1ilWrVnHdddcxe/ZsAJ588knmzp3LkiVLuO+++5g7dy4bNmwAYPbs2cybN2/rdv3NL41UhqY0Ah133HGMHTu2z/7vfve7zJw5k4jgqKOO4qmnnqKrq4s77riDGTNmMHbsWPbee29mzJjB7bffTldXFxs3buSoo44iIpg5cybf+c53hm6HpCZhaEotaO3atey///5bf7e1tbF27dp+29va2l7SLrUaQ1OSpEKGptSCJk2axK9//eutv9esWcOkSZP6bV+zZs1L2qVWY2hKLei0005j/vz5ZCb33nsvr3zlK5kwYQInn3wyCxYsYMOGDWzYsIEFCxZw8sknM2HCBPbaay/uvfdeMpP58+fzjne8Y7h3Qxpyo4a7AEmD76yzzmLhwoWsX7+etrY25s6dy3PPPQfA+eefz6mnnsqtt97K1KlT2XPPPbn++usBGDt2LJdeeilHHnkkAJ/61Ke23lB07bXXMmvWLJ555hlOOeUUTjnllOHZOWkYRSs/a9Xe3p6dnZ3DXYYkqYlExNLMbO+tz9OzkiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKDWloRsRxEfHPEbE2IjIiZhVsc0hE/Dginqlt96mIiB5jzoiIByNiU+3fd+2wnZAktayhPtIcDTwAfAR4ZqDBEbEX8EOgGziytt3HgYvrxhwN3Ax8Azis9u+3IuLNg1y7JKnFDenas5l5K3ArQETcULDJ+4A9gf+Smc8AD0TEa4GLI+KqrNYAvAi4KzOvqG1zRUS8tdZ+1uDugSSplTX7Nc2jgZ/UAnOLO4CJwAF1Yxb02O4O4JgdXp0kqaU0+1tOxgNrerR11/U9Uvu3u5cx43ubMCLOA84DmDhxIgsXLgRgypQpjBkzhuXLlwMwbtw4pk2bxqJFiwAYNWoUHR0dLFu2jI0bNwLQ3t5Od3c3f/O9A7dnHyVJg+CyM7tYsWIFUL0ztq2tjSVLlgAwevRo2tvbWbx4MZs2bQKgo6ODlStXsm7dOgCmT5++ta8vw/aWk4j4HXBBZt7Qz5gFwJrMPKeubTKwGjgmMxdHxGbgg5k5v27MTGBeZu7eXw2D9ZaTc6/e7ikkSdtp3kWDM8/O/JaTx4H9erTtV9fX35jHkSRpEDV7aC4Gjo2IPeraZgCPAY/WjZnRY7sZwD07vDpJUksZ6uc0R0fEYRFxWO1vT679nlzr/0xE3Fm3yf8GngZuiIjpEXE68Algy52zANcAJ0bEJyLitRHxSeCtwNVDtFuSpBYx1Eea7cC/1T4vB+bWvl9W658AbL2rJjN/Q3XUOBHoBP4e+AJwVd2Ye4D3ArOAnwEzgTMzc8mO3RVJUqsZ6uc0FwLRT/+sXtruB44bYN5bgFu2szxJkvrV7Nc0JUlqGoamJEmFDE1JkgoZmpIkFTI0JUkqZGhKklTI0JQkqZChKUlSIUNTkqRChqYkSYUMTUmSChmakiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKGZqSJBUyNCVJKmRoSpJUyNCUJKmQoSlJUiFDU5KkQoamJEmFDE1JkgoZmpIkFTI0JUkqZGhKklTI0JQkqZChKUlSIUNTkqRChqYkSYUMTUmSChmakiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKGZqSJBVqKDQjYpeI2KXu9/iI+GBEvGXwS5Mkqbk0eqT5A+BCgIgYDXQCnwcWRsTMQa5NkqSm0mhotgM/qn0/HdgI7AucC3ysZIKI+FBEPBIRz0bE0og4tp+xN0RE9vL5fd2YE/oY89oG902SpH41Gpqjgadq3/8E+KfMfI4qSA8caOOIOBO4BrgSOBy4B7gtIib3sclHgAk9Pg8D3+xl7LQe41YV7ZEkSYUaDc1fAW+JiFcAJwM/rLWPBZ4u2P5i4IbMnJeZD2XmhUAXMLu3wZn5m8x8fMuHKpinAPN6Gb6ufmxmvtDgvkmS1K9GQ/Mq4CZgDbAWWFRrPw64v78NI2I34AhgQY+uBcAxhX//XODnmXlPL32dEdEVEXdGxFsL55MkqdioRgZn5lcjYimwP/DDzHyx1vVL4NIBNt8H2BXo7tHeDZw00N+OiFcC7wE+2aNry5HqT4HdgPcDd0bE8Zn5k17mOQ84D2DixIksXLgQgClTpjBmzBiWL18OwLhx45g2bRqLFlX/XzBq1Cg6OjpYtmwZGzduBKC9vZ3u7m4KzkxLknawrq4uVqxYAcCkSZNoa2tjyZIlAIwePZr29nYWL17Mpk2bAOjo6GDlypWsW7cOgOnTp2/t60tk5g7chbo/FDGR6uj0+MxcVNf+KeB9mXnwANt/GPgCMDEznxxg7K3A85l5Wn/j2tvbs7Ozs3QX+nTu1ds9hSRpO827aHDmiYilmdneW1/DixvU7n79eUQ8HRFTam1/GRHvGWDT9cALwH492vcDHi/40+cC3x4oMGuWAAcVjJMkqVijixtcBFwCXAdEXddjwAX9bZuZm4GlwIweXTOo7qLt7+++CXgDvd8A1JvDqE7bSpI0aBq6pgmcD5ybmT+IiMvr2pdRPfIxkKuAmyLiPuDu2nwTga8ARMR8gMzsuVDCecCqzFzYc8JakD8K/JzqmubZwDuBMwr3SZKkIo2G5quBB3ppfw54+UAbZ+bNETGO6mh1Qm2uUzNzdW3IS57XjIgxwHuBy/qYdjeqVYnagGeowvPtmXnrQPVIktSIRkPzYeCNwOoe7acCD5ZMkJnXAtf20XdCL22/pVpUoa/5Pgd8ruRvS5K0PRoNzb8FvhwRe1Jd0zw6It4P/AVwzmAXJ0lSM2n0Oc3rI2IU1TJ4e1ItdPAYMCczb94B9UmS1DQaPdIkM+cB8yJiH2CXzFw3+GVJktR8Gg7NLTJz/WAWIklSsxswNCPiZ1Sr+GyIiPuBPpcQysxDB7M4SZKaScmR5reBTXXfh2bdPUmSmsyAoZmZc+u+f3qHViNJUhNrdBm9H0XEq3pp3ysifjRoVUmS1IQaXbD9BKoVeHraAzh2u6uRJKmJFd09GxFvrPt5aETUv2lkV+Bkqtd+SZI0YpU+ctJJdQNQAgt66X8GuHCwipIkqRmVhuZrqJbNexh4E/BEXd9mYF1mvjDItUmS1FSKQrPuLSQNv7RakqSRomRxg9OB72Xmc7XvfcrM/ztolUmS1GRKjjRvAcYD62rf+5JUNwVJkjQilSxusEtv3yVJajWGoCRJhUqvaRbxmqYkaSQrvaZZwmuakqQRraFrmpIktTIDUZKkQj6nKUlSIZ/TlCSpkM9pSpJUyBCUJKlQw6EZEW+MiPkR0Vn73NTjfZuSJI1IDYVmRLwP+CkwAbi19tkPuC8izh788iRJah6l79Pc4grg0sy8sr4xIj4JXA58fbAKkySp2TR6evaPgG/20v4tYN/tL0eSpObVaGjeBZzQS/sJwI+3txhJkppZowu23wZ8JiLagXtrbUcBpwOfHvTqJElqItu6YPt5tU+9LwHXbndFkiQ1KRdslySpkIEoSVKhRh85ISL2Bk4BJgO71fdl5mWDVJckSU2nodCMiKOAHwCbqB4/WUu10MEm4FHA0JQkjViNnp79PPANYBLwLHAi1RFnJ/DZwS1NkqTm0mhoHgp8OTMTeAHYPTO7gb/ER04kSSNco6G5ue57N/Dq2vffARMHpSJJkppUozcCLQOOBFYCC4HLI2I/4GzgZ4NbmiRJzaXRI82/Ah6rfb8EeIJqUYO9eeliB5IkjSgNHWlmZmfd9yeoHj2RJKklNPycJkBEHAi8rvbzwcx8ePBKkiSpOTX6nOY44B+A04AX/39zfB84JzP/Y5DrkySpaTR6TfNrwFTgWGCP2uc44DXAvMEtTZKk5tJoaJ4MnJuZd2fm87XP3cCf1/oGFBEfiohHIuLZiFgaEcf2M/aEiMhePq/tMe6MiHgwIjbV/n1Xg/slSdKAGg3NJ4Df99L+NDDgqdmIOBO4BrgSOBy4B7gtIiYPsOk0quX6tnxW1c15NHAz1UpFh9X+/VZEvHmgeiRJakSjoXkZcHVETNrSUPv+BcrWnb0YuCEz52XmQ5l5IdAFzB5gu3WZ+Xjd54W6vouAuzLzitqcV1A9Q3pR8V5JklRgwBuBIuJ+IOuaXgM8GhFra7+3rEO7L9U1z77m2Q04AvjbHl0LgGMGKKMzInYHHgQuz8y76vqOpnpWtN4dwAUDzClJUkNK7p69ZZD+1j7ArlTL79XrBk7qY5stR6E/pXoN2fuBOyPi+Mz8SW3M+D7mHD8YRUuStMWAoZmZc4eikD7+9gpgRV3T4og4APg48JNeNxpARJxHbfWiiRMnsnDhQgCmTJnCmDFjWL58OQDjxo1j2rRpLFq0CIBRo0bR0dHBsmXL2LhxIwDt7e10d3cDB25LKZKkQdTV1cWKFVVkTJo0iba2NpYsWQLA6NGjaW9vZ/HixWzatAmAjo4OVq5cybp16wCYPn361r6+RPXCksZExInA66lO2/48MxcWbLMb1Q1DZ2Xmt+ra/x6YnpnHF/7tvwbem5mvq/3+FfClzPx83ZiPAxdk5qv7mAaA9vb27Ozs7G9IkXOv3u4pJEnbad5FgzNPRCzNzPbe+hq6ESgiJkXEfcAPqV4H9gmq06VLIqLft5xk5mZgKTCjR9cMqrtoSx1Gddp2i8WDMKckSQNqdBm9v6N6j+bUzHwEICKmAF+v9b17gO2vAm6qBe/dwPlUrxT7Sm2u+QCZObP2+yLgUeDnVNc0zwbeCZxRN+c1wKKI+ATwHeBdwFuBjgb3TZKkfjUamjOAE7YEJkBmPhwRc4A7B9o4M2+uLcV3CdXzlg8Ap2bm6tqQns9r7gZ8HmgDnqEKz7dn5q11c94TEe8FLqd67OWXwJmZuaTBfZMkqV/bsmB7bxdBiy+MZua1wLV99J3Q4/fngM8VzHkLg3eXryRJvWp0cYM7gS9FxP5bGmqr+VxNwZGmJEk7s0ZDcw7wCuDhiFgdEaupToe+otYnSdKI1ejp2f8A3gScAGxZNP2hzPyXwSxKkqRmVByaEbEr8BvgDZn5Q6rHTiRJahnFp2dri6SvprqjVZKkltPoNc3/AfxNROyzI4qRJKmZNXpN82NUbzlZGxFr6PFuzcw8dLAKkySp2TQamrdQPZMZO6AWSZKaWlFoRsSeVCvzvBN4GdUzmRdm5vodV5okSc2l9JrmXGAW8APg/1C9//J/7qCaJElqSqWnZ08H/mtm/iNARHwDuDsidq3dVStJ0ohXeqS5P3Uvfc7M+4Dnqd5QIklSSygNzV2BzT3anmfbFnyXJGmnVBp6AXw9IjbVte0BzIuIp7c0ZOZpg1mcJEnNpDQ0b+yl7euDWYgkSc2uKDQz8wM7uhBJkppdo8voSZLUsgxNSZIKGZqSJBUyNCVJKmRoSpJUyNCUJKmQoSlJUiFDU5KkQoamJEmFDE1JkgoZmpIkFTI0JUkqZGhKklTI0JQkqZChKUlSIUNTkqRChqYkSYUMTUmSChmakiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKGZqSJBUyNCVJKmRoSpJUyNCUJKnQkIdmRHwoIh6JiGcjYmlEHNvP2NMjYkFEPBERv42IJRFxWo8xsyIie/nsseP3RpLUSoY0NCPiTOAa4ErgcOAe4LaImNzHJscDPwLeXht/K/BPvQTt08CE+k9mPjv4eyBJamWjhvjvXQzckJnzar8vjIi3AbOBT/YcnJkf6dE0NyLeDrwT+MkfDs3Hd0C9kiRtNWRHmhGxG3AEsKBH1wLgmAamGgNs6NH28ohYHRFrIuL7EXH4dpQqSVKvhvJIcx9gV6C7R3s3cFLJBBHxYaANuKmueQVwDrCcKlA/AtwdEW/IzFW9zHEecB7AxIkTWbhwIQBTpkxhzJgxLF++HIBx48Yxbdo0Fi1aBMCoUaPo6Ohg2bJlbNy4EYD29na6u7uBA0vKlyTtQF1dXaxYsQKASZMm0dbWxpIlSwAYPXo07e3tLF68mE2bNgHQ0dHBypUrWbduHQDTp0/f2teXyMwduAt1fyhiIrAWOD4zF9W1fwp4X2YePMD2Z1CF5ZmZ+b1+xu0K/DtwV2bO6W/O9vb27OzsLN+JPpx79XZPIUnaTvMuGpx5ImJpZrb31jeUNwKtB14A9uvRvh/Q7/XIiHg3VWDO7C8wATLzBaATOGjbS5Uk6aWGLDQzczOwFJjRo2sG1V20vYqI91AF5qzMvGWgvxMRARwKdG17tZIkvdRQ3z17FXBTRNwH3A2cD0wEvgIQEfMBMnNm7fd7qQLzY8CiiBhfm2dzZj5ZG/PXwL3AKmAvYA5VaM4eon2SJLWIIQ3NzLw5IsYBl1A9T/kAcGpmrq4N6fm85vlUNV5d+2zxY+CE2vdXAdcB44HfAP8GHJeZ9w36DkiSWtpQH2mSmdcC1/bRd0J/v/vY5qPARwejNkmS+uPas5IkFTI0JUkqZGhKklTI0JQkqZChKUlSIUNTkqRChqYkSYUMTUmSChmakiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKGZqSJBUyNCVJKmRoSpJUyNCUJKmQoSlJUiFDU5KkQoamJEmFDE1JkgoZmpIkFTI0JUkqZGhKklTI0JQkqZChKUlSIUNTkqRChqYkSYUMTUmSChmakiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKGZqSJBUyNCVJKmRoSpJUyNCUJKmQoSlJUqEhD82I+FBEPBIRz0bE0og4doDxx9fGPRsRD0fE+ds7pyRJ22JIQzMizgSuAa4EDgfuAW6LiMl9jH8NcGtt3OHAZ4AvRcQZ2zqnJEnbaqiPNC8GbsjMeZn5UGZeCHQBs/sYfz7wWGZeWBs/D7gR+Nh2zClJ0jYZstCMiN2AI4AFPboWAMf0sdnRvYy/A2iPiJdt45ySJG2ToTzS3AfYFeju0d4NjO9jm/F9jB9Vm29b5pQkaZuMGu4ChlpEnAecV/v5u4hYMZz1SE1kH2D9cBchbauvfXTQpnp1Xx1DGZrrgReA/Xq07wc83sc2j/cx/vnafNHonJl5HXBdcdVSi4iIzsxsH+46pGY2ZKdnM3MzsBSY0aNrBtUdr71Z3Mf4zsx8bhvnlCRpmwz16dmrgJsi4j7gbqq7YycCXwGIiPkAmTmzNv4rwAURcTXwVeAtwCzgrNI5JUkaLEMampl5c0SMAy4BJgAPAKdm5urakMk9xj8SEacCX6R6hOQxYE5mfruBOSWV8bKFNIDIzOGuQZKknYJrz0qSVMjQlCSpkKEpSVIhQ1PSH4iIqPu+S/1vqdUZmpJ62iUipgBk5otZu1vQ8JS8e1ZSTUQcQvUGoSOB31CtvLUE+Hpm/vswliY1DUNTEgARsQp4iGolrlFUy1G2A6+iervQFZm5btgKlJpAyy3YLumlIuLPqC7XnJ2ZG2ttY4CDgbcBHwBeHhEX1JavlFqSoSkJqtW4fgH8dktDZv4W6AQ6I+J+qhWDvgbcNywVSk3AG4EkASwETgT+onaE2dM/AyuBk4ayKKnZGJqSyMx7gcup1nj+XES8OSL2iojda0MmA4dQhavUsrwRSGpxEbFLZr4YES+jekH7xVQh+QDVm4P2B/4Y+GVm/unwVSoNP0NTEhGxR2Y+W/f7OOBMqrtnf0F1HfPbmdnXC+OllmBoSi0sIsYD7wbeCLyOKhxvzsx76sb8QaBKrczQlFpYRPwAmEr1fOZjVC96nwY8DHweuD4zn99yCnf4KpWag4+cSC0qIk4E3gQcnplrImIPYHeq0PwA8ElgDHCVgSlVDE2pdR0H3J+ZawBqp2CfBe6JiAeAC4HLImJhZi4bxjqlpuEjJ1Lr+hfgkIh4W8+O2qpAnwXuAY4f6sKkZmVoSq1rKXAb8OWI+EREHBERr6jrHw28Hlg9LNVJTcgbgaQWFhH7U127PAnYAPwUeBx4ATgaODgzDx6+CqXmYmhKIiIOBc4GjqG612FvqlOzV2Xm/cNZm9RMDE2pxdSWxjsUOJ1qgfafAZ1bFi6IiIOBR4HN6X8gpD9gaEotJiL+jiowu4CxwAFUp2S/C3w2M72GKfXBG4GkFhIRrwdmAecAb8vMA4HxwJeAU4BfRMSfR0QMX5VS8/JIU2ohEfHfqcLyuNrvUZn5fF3/lVRHoSdm5mPDVKbUtDzSlFrLQ8CEiJgKUFsib1RtNSCAecDTVOvRSurB0JRayyLgeeD7EfGeiNg9M5/fsiB7Zj4C7ApsGs4ipWbl6VmpxUTEROCLVC+VXkP1ZpMf1b5/GPgz4IDM/P2wFSk1KUNTakERMQ74U2AGMAU4mOrZzB8DX83MfxzG8qSmZWhKLSIi2qheAwbwe+BB4Bmq0BxNdS1zfWY+OTwVSs3P0JRaQETMpnrM5A1U4fgw1enYu4BbMvPXw1ietNPwRiBphKudir2SavGCCcBRwP8CNgPnAtfXnt/E5zOl/nmkKY1wEXEhcHZmvrmXvg7gM8Ak4E2ZuX6o65N2Jh5pSiPfZmBMREyHau3ZiNgNIDP/FXgf1cun/2T4SpR2DoamNPLdArwIXBQRYzJzU2ZujohdADLzV8BTQNsw1ijtFAxNaQSrXaN8EriE6vGSxyLiHyLiiFr/5Ig4m+qZzW8OX6XSzsFrmlILiIhXAZOp3pf5LuAtta7HgQBuysxPD0tx0k7E0JRGqIjYF3g/8N+A9VTPZD4F/CtwL/Ayquc2b8/MlcNUprRTMTSlESoibgCmAd+jOkU7luo07B8D64BLMnPJsBUo7YQMTWkEql3L/C1wamYuqmubDLwZ+CDVSkDvycxlw1aotJPxRiBpZHo98AjV4yYAZGV1Zn4T+E9Up2r/8/CUJ+2cDE1pZHqY6hTsFyPioC2Pl2yRmZuAG4FThqM4aWdlaEojUGY+A/wV8HJgPjAzIvaPiNEAEbEncDzwwPBVKe18vKYpjWC1VYAuBU6jerPJYuAJ4CSgC/hgZt4/fBVKOxdDU2oBtcdP3g68k2rJvAeAb2XmL4azLmlnY2hKLSYidsnMF4e7DmlnZGhKklTIG4EkSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIK/T/KK/9L6Rg7mQAAAABJRU5ErkJggg==\n", "text/plain": [ "<Figure size 504x360 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Eigen value by algebra : [0.70710678+0.70710678j 0.70710678-0.70710678j 1. +0.j\n", " 1. +0.j ]\n" ] }, { "data": { "text/plain": [ "None" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[(1-0j)]\n" ] }, { "data": { "text/plain": [ "None" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAc0AAAFTCAYAAABbKVcuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAcdUlEQVR4nO3dfZjdZX3n8fcXIiAmKAmFPAwRQyhqAoIMCjg8yEWKYBcVXJGK2cgKJQoRWW11C9awgFUrQrWsErtA0N2iuNWqPMQiMRZCcJI2gmCSSyCaMExICUYFEh6++8fvJHsc5uE+yWTmZM77dV3nyjn3ff/u+f7+4cPv6f5FZiJJkga2y3AXIEnSzsLQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKjRruAobTPvvskwcccMBwlyFJaiJLly5dn5l/1FtfS4fmAQccQGdn53CXIUlqIhGxuq8+T89KklTI0JQkqZChKUlSIUNTkqRChqYkSYUMTUmSChmakiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKGZqSJBUyNCVJKmRoSpJUyNCUJKmQoSlJUiFDU5KkQoamJEmFDE1JkgoZmtIIdM4557Dvvvsyffr0Xvszkzlz5jB16lQOPfRQli1btrXvxhtv5KCDDuKggw7ixhtv3Nq+dOlSDjnkEKZOncqcOXPIzB2+H1KzMTSlEWjWrFncfvvtffbfdtttrFq1ilWrVnHdddcxe/ZsAJ588knmzp3LkiVLuO+++5g7dy4bNmwAYPbs2cybN2/rdv3NL41UhqY0Ah133HGMHTu2z/7vfve7zJw5k4jgqKOO4qmnnqKrq4s77riDGTNmMHbsWPbee29mzJjB7bffTldXFxs3buSoo44iIpg5cybf+c53hm6HpCZhaEotaO3atey///5bf7e1tbF27dp+29va2l7SLrUaQ1OSpEKGptSCJk2axK9//eutv9esWcOkSZP6bV+zZs1L2qVWY2hKLei0005j/vz5ZCb33nsvr3zlK5kwYQInn3wyCxYsYMOGDWzYsIEFCxZw8sknM2HCBPbaay/uvfdeMpP58+fzjne8Y7h3Qxpyo4a7AEmD76yzzmLhwoWsX7+etrY25s6dy3PPPQfA+eefz6mnnsqtt97K1KlT2XPPPbn++usBGDt2LJdeeilHHnkkAJ/61Ke23lB07bXXMmvWLJ555hlOOeUUTjnllOHZOWkYRSs/a9Xe3p6dnZ3DXYYkqYlExNLMbO+tz9OzkiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKDWloRsRxEfHPEbE2IjIiZhVsc0hE/Dginqlt96mIiB5jzoiIByNiU+3fd+2wnZAktayhPtIcDTwAfAR4ZqDBEbEX8EOgGziytt3HgYvrxhwN3Ax8Azis9u+3IuLNg1y7JKnFDenas5l5K3ArQETcULDJ+4A9gf+Smc8AD0TEa4GLI+KqrNYAvAi4KzOvqG1zRUS8tdZ+1uDugSSplTX7Nc2jgZ/UAnOLO4CJwAF1Yxb02O4O4JgdXp0kqaU0+1tOxgNrerR11/U9Uvu3u5cx43ubMCLOA84DmDhxIgsXLgRgypQpjBkzhuXLlwMwbtw4pk2bxqJFiwAYNWoUHR0dLFu2jI0bNwLQ3t5Od3c3f/O9A7dnHyVJg+CyM7tYsWIFUL0ztq2tjSVLlgAwevRo2tvbWbx4MZs2bQKgo6ODlStXsm7dOgCmT5++ta8vw/aWk4j4HXBBZt7Qz5gFwJrMPKeubTKwGjgmMxdHxGbgg5k5v27MTGBeZu7eXw2D9ZaTc6/e7ikkSdtp3kWDM8/O/JaTx4H9erTtV9fX35jHkSRpEDV7aC4Gjo2IPeraZgCPAY/WjZnRY7sZwD07vDpJUksZ6uc0R0fEYRFxWO1vT679nlzr/0xE3Fm3yf8GngZuiIjpEXE68Algy52zANcAJ0bEJyLitRHxSeCtwNVDtFuSpBYx1Eea7cC/1T4vB+bWvl9W658AbL2rJjN/Q3XUOBHoBP4e+AJwVd2Ye4D3ArOAnwEzgTMzc8mO3RVJUqsZ6uc0FwLRT/+sXtruB44bYN5bgFu2szxJkvrV7Nc0JUlqGoamJEmFDE1JkgoZmpIkFTI0JUkqZGhKklTI0JQkqZChKUlSIUNTkqRChqYkSYUMTUmSChmakiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKGZqSJBUyNCVJKmRoSpJUyNCUJKmQoSlJUiFDU5KkQoamJEmFDE1JkgoZmpIkFTI0JUkqZGhKklTI0JQkqZChKUlSIUNTkqRChqYkSYUMTUmSChmakiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKGZqSJBVqKDQjYpeI2KXu9/iI+GBEvGXwS5Mkqbk0eqT5A+BCgIgYDXQCnwcWRsTMQa5NkqSm0mhotgM/qn0/HdgI7AucC3ysZIKI+FBEPBIRz0bE0og4tp+xN0RE9vL5fd2YE/oY89oG902SpH41Gpqjgadq3/8E+KfMfI4qSA8caOOIOBO4BrgSOBy4B7gtIib3sclHgAk9Pg8D3+xl7LQe41YV7ZEkSYUaDc1fAW+JiFcAJwM/rLWPBZ4u2P5i4IbMnJeZD2XmhUAXMLu3wZn5m8x8fMuHKpinAPN6Gb6ufmxmvtDgvkmS1K9GQ/Mq4CZgDbAWWFRrPw64v78NI2I34AhgQY+uBcAxhX//XODnmXlPL32dEdEVEXdGxFsL55MkqdioRgZn5lcjYimwP/DDzHyx1vVL4NIBNt8H2BXo7tHeDZw00N+OiFcC7wE+2aNry5HqT4HdgPcDd0bE8Zn5k17mOQ84D2DixIksXLgQgClTpjBmzBiWL18OwLhx45g2bRqLFlX/XzBq1Cg6OjpYtmwZGzduBKC9vZ3u7m4KzkxLknawrq4uVqxYAcCkSZNoa2tjyZIlAIwePZr29nYWL17Mpk2bAOjo6GDlypWsW7cOgOnTp2/t60tk5g7chbo/FDGR6uj0+MxcVNf+KeB9mXnwANt/GPgCMDEznxxg7K3A85l5Wn/j2tvbs7Ozs3QX+nTu1ds9hSRpO827aHDmiYilmdneW1/DixvU7n79eUQ8HRFTam1/GRHvGWDT9cALwH492vcDHi/40+cC3x4oMGuWAAcVjJMkqVijixtcBFwCXAdEXddjwAX9bZuZm4GlwIweXTOo7qLt7+++CXgDvd8A1JvDqE7bSpI0aBq6pgmcD5ybmT+IiMvr2pdRPfIxkKuAmyLiPuDu2nwTga8ARMR8gMzsuVDCecCqzFzYc8JakD8K/JzqmubZwDuBMwr3SZKkIo2G5quBB3ppfw54+UAbZ+bNETGO6mh1Qm2uUzNzdW3IS57XjIgxwHuBy/qYdjeqVYnagGeowvPtmXnrQPVIktSIRkPzYeCNwOoe7acCD5ZMkJnXAtf20XdCL22/pVpUoa/5Pgd8ruRvS5K0PRoNzb8FvhwRe1Jd0zw6It4P/AVwzmAXJ0lSM2n0Oc3rI2IU1TJ4e1ItdPAYMCczb94B9UmS1DQaPdIkM+cB8yJiH2CXzFw3+GVJktR8Gg7NLTJz/WAWIklSsxswNCPiZ1Sr+GyIiPuBPpcQysxDB7M4SZKaScmR5reBTXXfh2bdPUmSmsyAoZmZc+u+f3qHViNJUhNrdBm9H0XEq3pp3ysifjRoVUmS1IQaXbD9BKoVeHraAzh2u6uRJKmJFd09GxFvrPt5aETUv2lkV+Bkqtd+SZI0YpU+ctJJdQNQAgt66X8GuHCwipIkqRmVhuZrqJbNexh4E/BEXd9mYF1mvjDItUmS1FSKQrPuLSQNv7RakqSRomRxg9OB72Xmc7XvfcrM/ztolUmS1GRKjjRvAcYD62rf+5JUNwVJkjQilSxusEtv3yVJajWGoCRJhUqvaRbxmqYkaSQrvaZZwmuakqQRraFrmpIktTIDUZKkQj6nKUlSIZ/TlCSpkM9pSpJUyBCUJKlQw6EZEW+MiPkR0Vn73NTjfZuSJI1IDYVmRLwP+CkwAbi19tkPuC8izh788iRJah6l79Pc4grg0sy8sr4xIj4JXA58fbAKkySp2TR6evaPgG/20v4tYN/tL0eSpObVaGjeBZzQS/sJwI+3txhJkppZowu23wZ8JiLagXtrbUcBpwOfHvTqJElqItu6YPt5tU+9LwHXbndFkiQ1KRdslySpkIEoSVKhRh85ISL2Bk4BJgO71fdl5mWDVJckSU2nodCMiKOAHwCbqB4/WUu10MEm4FHA0JQkjViNnp79PPANYBLwLHAi1RFnJ/DZwS1NkqTm0mhoHgp8OTMTeAHYPTO7gb/ER04kSSNco6G5ue57N/Dq2vffARMHpSJJkppUozcCLQOOBFYCC4HLI2I/4GzgZ4NbmiRJzaXRI82/Ah6rfb8EeIJqUYO9eeliB5IkjSgNHWlmZmfd9yeoHj2RJKklNPycJkBEHAi8rvbzwcx8ePBKkiSpOTX6nOY44B+A04AX/39zfB84JzP/Y5DrkySpaTR6TfNrwFTgWGCP2uc44DXAvMEtTZKk5tJoaJ4MnJuZd2fm87XP3cCf1/oGFBEfiohHIuLZiFgaEcf2M/aEiMhePq/tMe6MiHgwIjbV/n1Xg/slSdKAGg3NJ4Df99L+NDDgqdmIOBO4BrgSOBy4B7gtIiYPsOk0quX6tnxW1c15NHAz1UpFh9X+/VZEvHmgeiRJakSjoXkZcHVETNrSUPv+BcrWnb0YuCEz52XmQ5l5IdAFzB5gu3WZ+Xjd54W6vouAuzLzitqcV1A9Q3pR8V5JklRgwBuBIuJ+IOuaXgM8GhFra7+3rEO7L9U1z77m2Q04AvjbHl0LgGMGKKMzInYHHgQuz8y76vqOpnpWtN4dwAUDzClJUkNK7p69ZZD+1j7ArlTL79XrBk7qY5stR6E/pXoN2fuBOyPi+Mz8SW3M+D7mHD8YRUuStMWAoZmZc4eikD7+9gpgRV3T4og4APg48JNeNxpARJxHbfWiiRMnsnDhQgCmTJnCmDFjWL58OQDjxo1j2rRpLFq0CIBRo0bR0dHBsmXL2LhxIwDt7e10d3cDB25LKZKkQdTV1cWKFVVkTJo0iba2NpYsWQLA6NGjaW9vZ/HixWzatAmAjo4OVq5cybp16wCYPn361r6+RPXCksZExInA66lO2/48MxcWbLMb1Q1DZ2Xmt+ra/x6YnpnHF/7tvwbem5mvq/3+FfClzPx83ZiPAxdk5qv7mAaA9vb27Ozs7G9IkXOv3u4pJEnbad5FgzNPRCzNzPbe+hq6ESgiJkXEfcAPqV4H9gmq06VLIqLft5xk5mZgKTCjR9cMqrtoSx1Gddp2i8WDMKckSQNqdBm9v6N6j+bUzHwEICKmAF+v9b17gO2vAm6qBe/dwPlUrxT7Sm2u+QCZObP2+yLgUeDnVNc0zwbeCZxRN+c1wKKI+ATwHeBdwFuBjgb3TZKkfjUamjOAE7YEJkBmPhwRc4A7B9o4M2+uLcV3CdXzlg8Ap2bm6tqQns9r7gZ8HmgDnqEKz7dn5q11c94TEe8FLqd67OWXwJmZuaTBfZMkqV/bsmB7bxdBiy+MZua1wLV99J3Q4/fngM8VzHkLg3eXryRJvWp0cYM7gS9FxP5bGmqr+VxNwZGmJEk7s0ZDcw7wCuDhiFgdEaupToe+otYnSdKI1ejp2f8A3gScAGxZNP2hzPyXwSxKkqRmVByaEbEr8BvgDZn5Q6rHTiRJahnFp2dri6SvprqjVZKkltPoNc3/AfxNROyzI4qRJKmZNXpN82NUbzlZGxFr6PFuzcw8dLAKkySp2TQamrdQPZMZO6AWSZKaWlFoRsSeVCvzvBN4GdUzmRdm5vodV5okSc2l9JrmXGAW8APg/1C9//J/7qCaJElqSqWnZ08H/mtm/iNARHwDuDsidq3dVStJ0ohXeqS5P3Uvfc7M+4Dnqd5QIklSSygNzV2BzT3anmfbFnyXJGmnVBp6AXw9IjbVte0BzIuIp7c0ZOZpg1mcJEnNpDQ0b+yl7euDWYgkSc2uKDQz8wM7uhBJkppdo8voSZLUsgxNSZIKGZqSJBUyNCVJKmRoSpJUyNCUJKmQoSlJUiFDU5KkQoamJEmFDE1JkgoZmpIkFTI0JUkqZGhKklTI0JQkqZChKUlSIUNTkqRChqYkSYUMTUmSChmakiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKGZqSJBUyNCVJKmRoSpJUyNCUJKnQkIdmRHwoIh6JiGcjYmlEHNvP2NMjYkFEPBERv42IJRFxWo8xsyIie/nsseP3RpLUSoY0NCPiTOAa4ErgcOAe4LaImNzHJscDPwLeXht/K/BPvQTt08CE+k9mPjv4eyBJamWjhvjvXQzckJnzar8vjIi3AbOBT/YcnJkf6dE0NyLeDrwT+MkfDs3Hd0C9kiRtNWRHmhGxG3AEsKBH1wLgmAamGgNs6NH28ohYHRFrIuL7EXH4dpQqSVKvhvJIcx9gV6C7R3s3cFLJBBHxYaANuKmueQVwDrCcKlA/AtwdEW/IzFW9zHEecB7AxIkTWbhwIQBTpkxhzJgxLF++HIBx48Yxbdo0Fi1aBMCoUaPo6Ohg2bJlbNy4EYD29na6u7uBA0vKlyTtQF1dXaxYsQKASZMm0dbWxpIlSwAYPXo07e3tLF68mE2bNgHQ0dHBypUrWbduHQDTp0/f2teXyMwduAt1fyhiIrAWOD4zF9W1fwp4X2YePMD2Z1CF5ZmZ+b1+xu0K/DtwV2bO6W/O9vb27OzsLN+JPpx79XZPIUnaTvMuGpx5ImJpZrb31jeUNwKtB14A9uvRvh/Q7/XIiHg3VWDO7C8wATLzBaATOGjbS5Uk6aWGLDQzczOwFJjRo2sG1V20vYqI91AF5qzMvGWgvxMRARwKdG17tZIkvdRQ3z17FXBTRNwH3A2cD0wEvgIQEfMBMnNm7fd7qQLzY8CiiBhfm2dzZj5ZG/PXwL3AKmAvYA5VaM4eon2SJLWIIQ3NzLw5IsYBl1A9T/kAcGpmrq4N6fm85vlUNV5d+2zxY+CE2vdXAdcB44HfAP8GHJeZ9w36DkiSWtpQH2mSmdcC1/bRd0J/v/vY5qPARwejNkmS+uPas5IkFTI0JUkqZGhKklTI0JQkqZChKUlSIUNTkqRChqYkSYUMTUmSChmakiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKGZqSJBUyNCVJKmRoSpJUyNCUJKmQoSlJUiFDU5KkQoamJEmFDE1JkgoZmpIkFTI0JUkqZGhKklTI0JQkqZChKUlSIUNTkqRChqYkSYUMTUmSChmakiQVMjQlSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIKGZqSJBUyNCVJKmRoSpJUyNCUJKmQoSlJUqEhD82I+FBEPBIRz0bE0og4doDxx9fGPRsRD0fE+ds7pyRJ22JIQzMizgSuAa4EDgfuAW6LiMl9jH8NcGtt3OHAZ4AvRcQZ2zqnJEnbaqiPNC8GbsjMeZn5UGZeCHQBs/sYfz7wWGZeWBs/D7gR+Nh2zClJ0jYZstCMiN2AI4AFPboWAMf0sdnRvYy/A2iPiJdt45ySJG2ToTzS3AfYFeju0d4NjO9jm/F9jB9Vm29b5pQkaZuMGu4ChlpEnAecV/v5u4hYMZz1SE1kH2D9cBchbauvfXTQpnp1Xx1DGZrrgReA/Xq07wc83sc2j/cx/vnafNHonJl5HXBdcdVSi4iIzsxsH+46pGY2ZKdnM3MzsBSY0aNrBtUdr71Z3Mf4zsx8bhvnlCRpmwz16dmrgJsi4j7gbqq7YycCXwGIiPkAmTmzNv4rwAURcTXwVeAtwCzgrNI5JUkaLEMampl5c0SMAy4BJgAPAKdm5urakMk9xj8SEacCX6R6hOQxYE5mfruBOSWV8bKFNIDIzOGuQZKknYJrz0qSVMjQlCSpkKEpSVIhQ1PSH4iIqPu+S/1vqdUZmpJ62iUipgBk5otZu1vQ8JS8e1ZSTUQcQvUGoSOB31CtvLUE+Hpm/vswliY1DUNTEgARsQp4iGolrlFUy1G2A6+iervQFZm5btgKlJpAyy3YLumlIuLPqC7XnJ2ZG2ttY4CDgbcBHwBeHhEX1JavlFqSoSkJqtW4fgH8dktDZv4W6AQ6I+J+qhWDvgbcNywVSk3AG4EkASwETgT+onaE2dM/AyuBk4ayKKnZGJqSyMx7gcup1nj+XES8OSL2iojda0MmA4dQhavUsrwRSGpxEbFLZr4YES+jekH7xVQh+QDVm4P2B/4Y+GVm/unwVSoNP0NTEhGxR2Y+W/f7OOBMqrtnf0F1HfPbmdnXC+OllmBoSi0sIsYD7wbeCLyOKhxvzsx76sb8QaBKrczQlFpYRPwAmEr1fOZjVC96nwY8DHweuD4zn99yCnf4KpWag4+cSC0qIk4E3gQcnplrImIPYHeq0PwA8ElgDHCVgSlVDE2pdR0H3J+ZawBqp2CfBe6JiAeAC4HLImJhZi4bxjqlpuEjJ1Lr+hfgkIh4W8+O2qpAnwXuAY4f6sKkZmVoSq1rKXAb8OWI+EREHBERr6jrHw28Hlg9LNVJTcgbgaQWFhH7U127PAnYAPwUeBx4ATgaODgzDx6+CqXmYmhKIiIOBc4GjqG612FvqlOzV2Xm/cNZm9RMDE2pxdSWxjsUOJ1qgfafAZ1bFi6IiIOBR4HN6X8gpD9gaEotJiL+jiowu4CxwAFUp2S/C3w2M72GKfXBG4GkFhIRrwdmAecAb8vMA4HxwJeAU4BfRMSfR0QMX5VS8/JIU2ohEfHfqcLyuNrvUZn5fF3/lVRHoSdm5mPDVKbUtDzSlFrLQ8CEiJgKUFsib1RtNSCAecDTVOvRSurB0JRayyLgeeD7EfGeiNg9M5/fsiB7Zj4C7ApsGs4ipWbl6VmpxUTEROCLVC+VXkP1ZpMf1b5/GPgz4IDM/P2wFSk1KUNTakERMQ74U2AGMAU4mOrZzB8DX83MfxzG8qSmZWhKLSIi2qheAwbwe+BB4Bmq0BxNdS1zfWY+OTwVSs3P0JRaQETMpnrM5A1U4fgw1enYu4BbMvPXw1ietNPwRiBphKudir2SavGCCcBRwP8CNgPnAtfXnt/E5zOl/nmkKY1wEXEhcHZmvrmXvg7gM8Ak4E2ZuX6o65N2Jh5pSiPfZmBMREyHau3ZiNgNIDP/FXgf1cun/2T4SpR2DoamNPLdArwIXBQRYzJzU2ZujohdADLzV8BTQNsw1ijtFAxNaQSrXaN8EriE6vGSxyLiHyLiiFr/5Ig4m+qZzW8OX6XSzsFrmlILiIhXAZOp3pf5LuAtta7HgQBuysxPD0tx0k7E0JRGqIjYF3g/8N+A9VTPZD4F/CtwL/Ayquc2b8/MlcNUprRTMTSlESoibgCmAd+jOkU7luo07B8D64BLMnPJsBUo7YQMTWkEql3L/C1wamYuqmubDLwZ+CDVSkDvycxlw1aotJPxRiBpZHo98AjV4yYAZGV1Zn4T+E9Up2r/8/CUJ+2cDE1pZHqY6hTsFyPioC2Pl2yRmZuAG4FThqM4aWdlaEojUGY+A/wV8HJgPjAzIvaPiNEAEbEncDzwwPBVKe18vKYpjWC1VYAuBU6jerPJYuAJ4CSgC/hgZt4/fBVKOxdDU2oBtcdP3g68k2rJvAeAb2XmL4azLmlnY2hKLSYidsnMF4e7DmlnZGhKklTIG4EkSSpkaEqSVMjQlCSpkKEpSVIhQ1OSpEKGpiRJhQxNSZIK/T/KK/9L6Rg7mQAAAABJRU5ErkJggg==\n", "text/plain": [ "<Figure size 504x360 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Eigen value by algebra : [0.99518473+0.09801714j 0.99518473-0.09801714j 1. +0.j\n", " 1. +0.j ]\n" ] }, { "data": { "text/plain": [ "None" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[(1-0j)]\n" ] }, { "data": { "text/plain": [ "None" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 504x360 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Eigen value by algebra : [0.99144486+0.13052619j 0.99144486-0.13052619j 1. +0.j\n", " 1. +0.j ]\n" ] }, { "data": { "text/plain": [ "None" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[(1-0j)]\n" ] }, { "data": { "text/plain": [ "None" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 504x360 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for i in range(1,len(t)):\n", " H = ([[1,0,0,0],[0,cos(t[i]),complex(0,sin(t[i])),0],[0,complex(0,sin(t[i])), cos(t[i]), 0],[0, 0, 0, 1]])\n", " e,v = np.linalg.eig(H)\n", " display(print(\"Eigen value by algebra :\",e))\n", " #display(qch().draw())#just to see \n", " Ut = qc(H,[0,1]).to_gate().control(1)\n", " qpevw = my_qpe(5,2,Ut,'H')\n", " result = execute(qpevw, backend = simulator, shots = 1000).result()\n", " count = result.get_counts(qpevw)\n", " plot_to_eigenval(count,5)\n", " display(plot_histogram(result.get_counts(qpevw)))" ] }, { "cell_type": "markdown", "id": "4a893717", "metadata": {}, "source": [ "## Eigen value via linear algebra and its comparision by above result\n", "Put d = 0 and g = 1\n", "\n", "H = $\\frac{-1}{2}$($X_1X_0 + Y_1Y_0$ ) \n", "= $\\begin{bmatrix} \n", "0 & 0 & 0 & 0 \\\\ \n", "0 & 0 & -1 & 0 \\\\ \n", "0 & -1 & 0 & 0 \\\\ \n", "0 & 0 & 0 & 0 \\\\ \n", "\\end{bmatrix}$\n", "$\\implies$ Evolution matrix is given by : U = $\\begin{bmatrix} \n", "1 & 0 & 0 & 0 \\\\ \n", "0 & cos(t) & i.sin(t) & 0 \\\\ \n", "0 & i.sin(t) & cos(t) & 0 \\\\ \n", "0 & 0 & 0 & 1 \\\\ \n", "\\end{bmatrix}$ \n", "$\\implies$ The eigen values are {$e^{it}$,$e^{-it}$,1,1} and eigen vectors are $\\begin{bmatrix}\n", "0 \\\\0\\\\1\\\\0\\end{bmatrix}\n", "$, $\\begin{bmatrix}\n", "1/\\sqrt(2) \\\\-1/\\sqrt(2)\\\\0\\\\0\\end{bmatrix}\n", "$, $\\begin{bmatrix}\n", "1/\\sqrt(2) \\\\1/\\sqrt(2)\\\\0\\\\0\\end{bmatrix}\n", "$, $\\begin{bmatrix}\n", "0\\\\0\\\\0\\\\1\\end{bmatrix}$, We chose the 4th eigen vector for ease of algebra.\n", "\n", "$\\implies$ $\\begin{bmatrix} \n", "1 & 0 & 0 & 0 \\\\ \n", "0 & cos(t) & i.sin(t) & 0 \\\\ \n", "0 & i.sin(t) & cos(t) & 0 \\\\ \n", "0 & 0 & 0 & 1 \\\\ \n", "\\end{bmatrix}$$\\begin{bmatrix}\n", "0\\\\0\\\\0\\\\1\\end{bmatrix}$ = $\\begin{bmatrix}\n", "0\\\\0\\\\0\\\\1\\end{bmatrix}$. Hence we expect to see an w" ] }, { "cell_type": "markdown", "id": "62513115", "metadata": {}, "source": [ "## Applying QPE to Pairing Hamiltonian for d=0 and g=1, number of particle " ] }, { "cell_type": "code", "execution_count": null, "id": "286e887a", "metadata": {}, "outputs": [], "source": [ "# Defining evolution operator for a given Hamiltonian if you do not already have matrix of evolution operator defined as operator\n", "#This definition hass been tested to be correct by comparision with the refered papers\n", "def evoloperator(s_qubits):\n", " evoloperator2 = QuantumCircuit(s_qubits)\n", " for p in range(s_qubits):\n", " for q in range(s_qubits):\n", " if (q > p):\n", " evoloperator2 = evoloperator2.compose(qc2(0,1),[p,q])\n", " return evoloperator2\n", "#evolution operator : pairing part of pairing hamiltonian \n", "for i in range(2,3):\n", " UPP = ([[1,0,0,0],[0,cos(t[i]),complex(0,sin(t[i])),0],[0,complex(0,sin(t[i])),cos(t[i]),0],[0,0,0,1]])\n", " #QC for UPP\n", " def qc2(p,q):\n", " qc = QuantumCircuit(2)\n", " qc.unitary(UPP,[0,1])\n", " qc = transpile(qc)\n", " return qc \n", " #converting the circuit into a controlled gate\n", " UPP_Gate = evoloperator(6).to_gate().control(1)\n", " qpe_12_par = my_qpe(7,6,UPP_Gate,'r')\n", " result = execute(qpe_12_par, backend = simulator, shots = 1000).result()\n", " count = result.get_counts(qpe_12_par)\n", " plot_to_eigenval(count,7)\n", " display(plot_histogram(result.get_counts(qpe_12_par)))\n", " display(print(count))" ] }, { "cell_type": "markdown", "id": "ecb4a322", "metadata": {}, "source": [ "#### As expected we are able to sample some of the eigen values for different values of t. Although we ran only 1 instance of t since it takes very long time to sample 4-5 time intervals at once. \n", "\n", "## Difference in our results vs the paper :\n", "- The initial state of their results was a random state and so do ours so, they may not match.\n", "- The best we can expected is to match some of the eigen values by sampling many time intervals and different random initial state.\n", "\n", "## Bug in the definition of plot_to_eigenval:\n", "The code samples all data points that have 10+ occurance in a simulation, which is mostly greater than the actual eigen value that the qpe projects, therefore we sample some extra unrequired eigen values. Need to fix that.\n", "\n", "## Else can be verified correctly" ] }, { "cell_type": "markdown", "id": "950946fb", "metadata": {}, "source": [ "\n", "\n", "# Conclusions:\n", "\n", "#### The codes defined for each operation works as expected. \n", "#### An arbitary initial state is also able to produce expected phase.\n", "#### But along with expected result some different small peaks are also observed.\n", "#### The number of significant high peaks correspond to number of eigen values of the evolution operator.\n", "#### Different values t can be set to produce different parts of the eigen value spectrum.\n", "#### There is a maximum limit to t upto which QPE can produce approximately correct results.\n", "#### Best results are obtained if the intial state is set to eigen state of evolution operator.\n" ] }, { "cell_type": "code", "execution_count": null, "id": "e946ef62-94e8-4fe6-b090-3d4d12641252", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Qiskit v0.29.0", "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.8.10" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "047eae731d7a4cac90a5264f7c579dc3": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_111a8414ba134fb5b6e7452414998950", "style": "IPY_MODEL_6e210a146e7d42d080197e500bc13ef8", "value": "<h5>Status</h5>" } }, "0827ffe0a5a646a5ac1ded51411b0602": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "width": "70px" } }, "08a07ea8ec61437fbad8f6b3a3ff38e7": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "width": "145px" } }, "111a8414ba134fb5b6e7452414998950": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "width": "95px" } }, "128ee462ec0e4438a52c828b30691957": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_0827ffe0a5a646a5ac1ded51411b0602", "style": "IPY_MODEL_a192aea83fea4feb96df768deaf4e4e6", "value": "<h5>Queue</h5>" } }, "38751b3eada141b6b974e113b2fbaa8a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonStyleModel", "state": {} }, "4e044d2f3a414d719e18033fbf2dc3af": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_08a07ea8ec61437fbad8f6b3a3ff38e7", "style": "IPY_MODEL_b34fe4110257432ab9dd0c306e99bb3b", "value": "<h5>Backend</h5>" } }, "68b73f4658274d29a174a35e9e64d93d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonModel", "state": { "button_style": "primary", "description": "Clear", "layout": "IPY_MODEL_a94129de38a34ba5bb626e0200bd47d9", "style": "IPY_MODEL_38751b3eada141b6b974e113b2fbaa8a" } }, "6baba55d149b4a868694460a4c01b4e5": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "6e210a146e7d42d080197e500bc13ef8": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "741d28191de94b6f8518e1f981c54c04": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "849f545182da4e98859ad900cbbc9fb2": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "margin": "0px 0px 0px 37px", "width": "600px" } }, "97ad919188854abbaf46cd3c53a60dd5": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "982c43592ab44ff09fe9296d822e6baa": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "9c570a98551d4a199fb235afeb0cd8d1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "GridBoxModel", "state": { "children": [ "IPY_MODEL_68b73f4658274d29a174a35e9e64d93d" ], "layout": "IPY_MODEL_9da135cf6e4444109fc641eda44312b8" } }, "9da135cf6e4444109fc641eda44312b8": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "grid_template_areas": "\n \". . . . right \"\n ", "grid_template_columns": "20% 20% 20% 20% 20%", "width": "100%" } }, "a192aea83fea4feb96df768deaf4e4e6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "a2ba4c00274e44fa8d3d5b19428e99f9": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_a9c5827e02c94c7f871ee12b6cec9b71", "IPY_MODEL_4e044d2f3a414d719e18033fbf2dc3af", "IPY_MODEL_047eae731d7a4cac90a5264f7c579dc3", "IPY_MODEL_128ee462ec0e4438a52c828b30691957", "IPY_MODEL_d466c07470e749a6b43bdca21d611612" ], "layout": "IPY_MODEL_849f545182da4e98859ad900cbbc9fb2" } }, "a94129de38a34ba5bb626e0200bd47d9": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "grid_area": "right", "padding": "0px 0px 0px 0px", "width": "70px" } }, "a9c5827e02c94c7f871ee12b6cec9b71": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_f889af04928a488b89c139c626ac97dc", "style": "IPY_MODEL_741d28191de94b6f8518e1f981c54c04", "value": "<h5>Job ID</h5>" } }, "b34fe4110257432ab9dd0c306e99bb3b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "d466c07470e749a6b43bdca21d611612": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_6baba55d149b4a868694460a4c01b4e5", "style": "IPY_MODEL_982c43592ab44ff09fe9296d822e6baa", "value": "<h5>Message</h5>" } }, "de995b66be724e88a073bf091bf0cf49": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "margin": "0px 0px 10px 0px" } }, "f0f947e09a2f44ef9e6108e3455584fb": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_de995b66be724e88a073bf091bf0cf49", "style": "IPY_MODEL_97ad919188854abbaf46cd3c53a60dd5", "value": "<p style='font-family: IBM Plex Sans, Arial, Helvetica, sans-serif; font-size: 20px; font-weight: medium;'>Circuit Properties</p>" } }, "f889af04928a488b89c139c626ac97dc": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "width": "190px" } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }