QC-Project / Project_Codes / LCU.ipynb
LCU.ipynb
Raw
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "63a34c63",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import qiskit.quantum_info as qi\n",
    "from math import *\n",
    "import scipy\n",
    "# Importing standard Qiskit libraries\n",
    "from qiskit import *\n",
    "from qiskit.tools.jupyter import *\n",
    "from qiskit.visualization import *\n",
    "#from ibm_quantum_widgets import *\n",
    "from qiskit.providers.aer import QasmSimulator\n",
    "from qiskit.circuit.library import MCMT"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "adaa555b",
   "metadata": {},
   "outputs": [],
   "source": [
    "from qiskit.quantum_info.operators import Operator, Pauli\n",
    "from qiskit.circuit.library import QFT,RYGate\n",
    "from qiskit.quantum_info import random_statevector\n",
    "from qiskit.opflow import X,Y,Z,I,CX\n",
    "from math import sqrt\n",
    "pi = np.pi\n",
    "sin = np.sin\n",
    "cos = np.cos\n",
    "exp = np.exp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "3ce93f44-54f3-4696-a26b-28f96d26e6f7",
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "21d6b0c0-07c2-4664-b9ad-2e41dfc19a09",
   "metadata": {
    "tags": []
   },
   "source": [
    "# Definitions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "5bf75b3b",
   "metadata": {},
   "outputs": [],
   "source": [
    "#Operator to gate convertor\n",
    "def qc(operator):\n",
    "    qubit_list = list(range(int(np.log(len(operator))/np.log(2))))\n",
    "    qc = QuantumCircuit(len(qubit_list))\n",
    "    qc.unitary(operator,qubit_list)\n",
    "    return qc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "9620f610-208e-4eba-b107-c68c2c4c48ea",
   "metadata": {},
   "outputs": [],
   "source": [
    "# will help to obtain the parameters for formation of B gate\n",
    "#t here is len(betas-1), in this scheme\n",
    "def theta_computer(betas):\n",
    "    t = len(betas)-1\n",
    "    A = sum(betas)\n",
    "    alphas = np.sqrt(np.array(betas)/A)\n",
    "    thetas = []\n",
    "    for i in range(t):\n",
    "        if i == 0 :\n",
    "            thetas.append(acos(alphas[i]))\n",
    "        else:\n",
    "            fac = 0\n",
    "            j = 0\n",
    "            while j<i :\n",
    "                fac+=alphas[j]**2\n",
    "                j+=1\n",
    "            thetas.append(acos(alphas[i]/np.sqrt(1-fac)))\n",
    "    return thetas,A"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "5b5d51c4-58a8-4ab9-a524-8d40000977ac",
   "metadata": {},
   "outputs": [],
   "source": [
    "#create gate\n",
    "def negate(circ,neg = True):\n",
    "    op = qi.Operator(circ)\n",
    "    if neg == True:\n",
    "        op = -op.data\n",
    "    else:\n",
    "        op = op.data\n",
    "    return op"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "275d85ef",
   "metadata": {},
   "outputs": [],
   "source": [
    "simulator = Aer.get_backend('statevector_simulator')\n",
    "qasm = Aer.get_backend('qasm_simulator')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "bcd102dc-87cf-474a-ac3b-df4eabcb9d4b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 146.797x264.88 with 1 Axes>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ccz = MCMT('cz',2,1)\n",
    "ccx = MCMT('cx',2,1)\n",
    "ccy = MCMT('cy',2,1)  \n",
    "cccx = MCMT('cx',3,1)\n",
    "cccy = MCMT('cy',3,1)\n",
    "cccz = MCMT('cz',3,1)\n",
    "cccxx = MCMT('cx',3,2)\n",
    "cccyy = MCMT('cy',3,2)\n",
    "cccy.draw('mpl')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fb7f472b-3cf2-460b-83cf-2ddcfb82ef6c",
   "metadata": {
    "tags": []
   },
   "source": [
    "# Hamiltonians (EFT)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "68c463a1-f3b3-4840-be16-a8b6bd1bdfc2",
   "metadata": {
    "tags": []
   },
   "source": [
    "## JWT"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e4366097",
   "metadata": {
    "tags": []
   },
   "source": [
    "### for N = 2, JWT "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "a7db1773-925c-4a17-99b1-5bf9ff8149db",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([13.56257922+0.j, -1.74916122+0.j,  0.        +0.j, 11.813418  +0.j]),\n",
       " array([-0.        -0.j, -0.29278612-0.j,  0.95617796+0.j, -0.        -0.j]))"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "H2_op = (5.906709 * I ^ I) + \\\n",
    "       (0.218291 * I ^ Z) - \\\n",
    "       (6.125 * Z ^ I) - \\\n",
    "       (2.143304 * X ^ X) - \\\n",
    "       (2.143304 * Y ^ Y)\n",
    "# H2_op = (0.218291 * Z ^ I) - \\\n",
    "#         (6.125 * I ^ Z) - \\\n",
    "#         (2.143304 * X ^ X) - \\\n",
    "#         (2.143304 * Y ^ Y)\n",
    "#ingoring the identity part that we will add at the end\n",
    "e_jw2,v_jw2 = np.linalg.eig(H2_op.to_matrix())\n",
    "v_jw2 = np.transpose(v_jw2)\n",
    "e_jw2,v_jw2[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "16214442-1656-4bf2-a8a5-5d646eedb7bd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.+0.j,  0.+0.j,  0.+0.j,  0.+0.j],\n",
       "       [ 0.+0.j, -1.+0.j,  0.+0.j,  0.+0.j],\n",
       "       [ 0.+0.j,  0.+0.j,  1.+0.j,  0.+0.j],\n",
       "       [ 0.+0.j,  0.+0.j,  0.+0.j, -1.+0.j]])"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(I^Z).to_matrix()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "9595cf56-c229-459b-8f01-44edfca7185e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.+0.j,  0.+0.j,  0.+0.j,  0.+0.j],\n",
       "       [ 0.+0.j, -1.+0.j,  0.+0.j,  0.+0.j],\n",
       "       [ 0.+0.j,  0.+0.j,  1.+0.j,  0.+0.j],\n",
       "       [ 0.+0.j,  0.+0.j,  0.+0.j, -1.+0.j]])"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "zi = QuantumCircuit(2)\n",
    "zi.z(0)\n",
    "negate(zi,neg = False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "9b92473e-2c27-485e-b89e-d3cf0c50bd44",
   "metadata": {},
   "outputs": [],
   "source": [
    "betas_jw2 = [5.906709,0.218291,6.125,2.143304,2.143304]\n",
    "thetas_jw2, A_jw2 =theta_computer(betas_jw2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "41672790-bb55-4e09-b4cb-ec191d7d2239",
   "metadata": {},
   "outputs": [],
   "source": [
    "#my comment -- if zi is taking then order is z0i1 and iz then i0z1 other order is z1i0 but this is reverse order and can be used if general and qiskit ordering is not considered\n",
    "# but for moment going with the same ordering\n",
    "\n",
    "ii = QuantumCircuit(2)\n",
    "ii.i([1,0])\n",
    "II = qc(negate(ii,neg = False)).to_gate(label = 'II').control(num_ctrl_qubits=3,ctrl_state=0)\n",
    "zi = QuantumCircuit(2)\n",
    "zi.z(0)\n",
    "ZI = qc(negate(zi,neg = False)).to_gate(label = 'ZI').control(num_ctrl_qubits=3,ctrl_state=1)\n",
    "iz = QuantumCircuit(2)\n",
    "iz.z(1)\n",
    "IZ_ = qc(negate(iz)).to_gate(label = 'IZ_').control(num_ctrl_qubits=3,ctrl_state=2)\n",
    "xx = QuantumCircuit(2)\n",
    "xx.x([0,1])\n",
    "XX_ = qc(negate(xx)).to_gate(label = 'XX_').control(num_ctrl_qubits=3,ctrl_state=3)\n",
    "yy = QuantumCircuit(2)\n",
    "yy.y([0,1])\n",
    "YY_ = qc(negate(yy)).to_gate(label = 'YY_').control(num_ctrl_qubits=3,ctrl_state=4)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "05d1aa67-837b-4563-bb02-ffe43ccdae42",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.        +0.j 0.91427629+0.j 0.08572371+0.j 0.        +0.j]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# my varification of intitial state\n",
    "temp1 = QuantumCircuit(2,2)\n",
    "#temp1.initialize(v[0],[0,1])\n",
    "temp1.ry(2.547304378732438,1)\n",
    "temp1.x(0)\n",
    "temp1.cx(1,0)\n",
    "\n",
    "\n",
    "print(v_jw2[1]**2)\n",
    "shots = 10000\n",
    "#svsim = Aer.get_backend('aer_simulator')\n",
    "\n",
    "#temp1.save_statevector()   # Tell simulator to save statevector\n",
    "#qobj1 = assemble(temp1)     # Create a Qobj from the circuit for the simulator to run\n",
    "#result1 = svsim.run(qobj1).result()\n",
    "#out_state = result1.get_statevector()\n",
    "#print(out_state) # Display the output state vector\n",
    "\n",
    "temp1.measure([0,1],[0,1])\n",
    "result = execute(temp1, backend = simulator, shots = shots).result()\n",
    "count = result.get_counts(temp1)\n",
    "#t_qpe = transpile(qpe, sim)\n",
    "#qobj = assemble(t_qpe, shots=shots)\n",
    "#result = sim.run(qobj).result()\n",
    "#count = result.get_counts()\n",
    "plot_histogram(count)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "bba08d98-d56a-4684-a4e1-e8350409f4fa",
   "metadata": {},
   "outputs": [],
   "source": [
    "ccry = RYGate(2*thetas_jw2[3]).control(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "d418d8b7-9d37-4be9-a16b-5c8865c4162f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 507.997x204.68 with 1 Axes>"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Qauntum Circuit for V_gate and V_dag\n",
    "V_cir_jw2 = QuantumCircuit(3)\n",
    "V_cir_jw2.ry(2*thetas_jw2[0],0)\n",
    "V_cir_jw2.cry(2*thetas_jw2[1],0,1)\n",
    "V_cir_jw2.cx(1,0)\n",
    "V_cir_jw2.cry(2*thetas_jw2[2],1,0)\n",
    "V_cir_jw2.append(ccry,[0,1,2])\n",
    "V_cir_jw2.cx(2,0)\n",
    "V_cir_jw2.cx(2,1)\n",
    "V_dag_jw2 = V_cir_jw2.inverse()\n",
    "V_cir_jw2.draw('mpl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "91190316-184e-48e3-8ae4-06127efa27c9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABGUAAAExCAYAAADVzR8YAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAABsiUlEQVR4nO3dd3wUdf7H8dfuphN66NUktAQSehUSigKKYqEI6p3KCVJUsCvW83ecBYWzYZezoTQRPVQEIaCg0qWHDoEAoRNaSLK/P4aEBFI2ySYzE97PxyMPwuzszjubyXe++5mZ79fhdrvdiIiIiIiIiIhIiXKaHUBERERERERE5EqkooyIiIiIiIiIiAlUlBERERERERERMYGKMiIiIiIiIiIiJlBRRkRERERERETEBCrKiIiIiIiIiIiYQEUZERERERERERETqCgjIiIiIiIiImICFWVEREREREREREygooyIiIiIiIiIiAlUlBERERERERERMYGKMiIiIiIiIiIiJlBRRkRERERERETEBCrKiIiIiIiIiIiYQEUZERERERERERETqCgjIiIiIiIiImICFWVEREREREREREygooyIiIiIiIiIiAlUlBERERERERERMYGKMiIiIiIiIiIiJvAxO4CIiEhx27RpU77rvPXWW4waNSrPdRo3buytSCJiE2o/RESkOOlKGREREeDtt982O4KI2JTaDxERKSwVZURERERERERETKCijIiIiIiIiIiICVSUERERAaZPn252BBGxKbUfIiJSWCrKiIiIiIiIiIiYQEUZERERoF+/fmZHEBGbUvshIiKFpSmxTbT5Fzh50Jxtl60KjbqZs20xn/Y9ERERkdJN/T3Jj1n7SFH2j9GjR7N69Wqv5vFU8+bNmThxotdfV0UZE508CMcSzE4hVyLteyIiIiKlm/p7kh877iOrV68mLi7O7BhepduXREREgJEjR5odQURsSu2HiIgUlq6UETFJSiqkpYOvC3xcZqcRq0lLN/YRpxP8XOBwmJ2o9Bs1apTZEUTEptR+FD+3G1LSID0d/HzApVPLconUNDifZuwbfvqUKzai3VWkhJxPgzW7ja89R+DYaWO5A6haDupWhtZXQcPq+gB+JXK7Yfdh+GMb7DwM+49Butt4rGwA1KkEEbWMfSTA19SopVaXLl1YtGiR2TFExIbUfhSPs+dh+Q5Y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ERGvyNqpV0FGRMS6srbRKsiIlJycTjID3N59LADBgRV46d6fsj3Wrsl1tGtyXYnkE3Oo2ywiIgJs3LjR7AgiYlNqP0REpLB0pYxYRtmqV+a2RcQapk6dyoABA8yOISI2pPZD5Mpm188xzZs3L/Bztu9OBCC0bo1s3xf3dkszFWXEMhp1MzuBiFzJnnvuOX2oEpFCUfshcmWz6+eYiRMnFvg5T7z8PgAvPT402/dSeLp9SURERERERETEBCrKiIiIiIiIiIiYQEUZERER4J133jE7gojYlNoPEREpLBVlREREgMjISLMjiIhNqf0QEZHCUlFGREQEiImJMTuCiNiU2g8RESksFWVEREREREREREygooyIiAjQpk0bsyOIiE2p/RARkcJSUUZERARYtmyZ2RFExKbUfoiISGGpKCMiIiIiIiIiYgIVZURERERERERETKCijIiICDB9+nSzI4iITan9EBGRwlJRRkRERERERETEBCrKiIiIAP369TM7gojYlNoPEREpLB+zA4iIeGrzL3DyYOGfv/yrwj2vbFVo1K3w2xURERF7K2ofBArXDylKH2T06NGsXr26cE8uoubNmzNx4kRTti1iNyrKiIhtnDwIxxIK//yiPFdERESuXEXtg0DJ90NWr15NXFxcyW5URApMty+JiIgAI0eONDuCiNiU2g8RESksFWVERESAUaNGmR1BRGxK7YeIiBSWijIiIiJAly5dzI4gIjal9kNERApLRRkREREgKSnJ7AgiYlNqP0REpLA00K+IlCoPT4pl466luFy+OJ0uqle8isHdxxIT3d/saCIiIlKKqQ8iIoWhooyIlDq393iG23s8TVpaKt8ueYt/fzmY8FotqBUSbnY0sbCIiAizI4iITan9kAzqg4hIQen2JREptVwuH3q3u5e09FS27VttdhyxuBkzZpgdQURsSu2HXOpK6oP4+vqaHUHE1lSUEZFS63xqCt8vmQRA7ZCGJqcRq3v22WfNjiAiNqX2Qy5lxz5I/fr1+cc//sG7777LnDlz+PHHH/niiy945JFH6NChQ47Padu2LfHx8bRq1aqE04qUHpYuyqSnpzN+/HgaNGhAQEAA0dHRxMXF0ahRI4YOHWp2PBGxqC/n/4ubnqlAn6cC+eSnp3mo/4eE1owCYNwXg/l9w/eZ6z43+SaWb55rVlSxkGnTppkdQURs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SFwuV+YgvwsWLGDbtm2EhYVRv359fv/9d0aMGMFrr71W5Axp6WmknD/L+dQUAFLOnyXl/FlL/fJERMR7XnjhBbMjZLLjMciOmcE+ue2SMyd2zu4pK7UfIiJiL5a8UgagYcOGLFiwINuyO++8k4iICAIDAwF44okneOKJJzIfj42NZdSoUV6ZfWneis8YP/XuzP9f/5Sxzc+e3EH1SvWL/PoiImItAwYMMDtCJjseg+yYGeyT2y45c2Ln7J6yUvshIiL2YtmiTE6WL19eYjMs9WxzFz3b3FUi2xIREfM1adKEjRs3mh0DsOcxyI6ZwT657ZIzJ3bO7ikrtR8iImIvtinKJCcnEx8fz4gRI3JdpzBjy4iIiIiIiIiImME2RZng4GDS0tLMjiEiIiIiIiIi4hWWHOhXRESkpMXGxpodQURsSu2HiIgUlooyIiIiwKRJk8yOICI2pfZDREQKS0UZERERYPjw4WZHEBGbUvshIiKFpaKMiIgIGixeRApP7YeIiBSWijIiIiIiIiIiIiZQUUZERERERERExAQqyoiIiAAbN240O4KI2JTaDxERKSwVZURERICpU6eaHUFEbErth4iIFJaP2QHMVraq2QmuLHq/RcSqnnvuOQYMGFCi2zSzTSzKts3KbcfMhdm21Y6VnuaxSm4zcpjRfoiISOlwxRdlGnUzO4GIiFyp7HoMsmNuO2W2U9as7JpbRETETLp9SURERERERETEBCrKiIiIAO+8847ZEUTEptR+iIhIYakoIyIiAkRGRpodQURsSu2HiIgUlooyIiIiQExMjNkRRMSm1H6IiEhhqSgjIiIiIiIiImICFWVERERERERERExwxU+JLSIipV/jxo3zXee5557zaD0RubKo/RARkeKkK2VERESA559/3uwIImJTaj9ERKSwVJQRERERERERETGBijIiIiIiIiIiIiZQUUZERERERERExAQqyoiIiIiIiIiImEBFGRERERERERERE6goIyIiIiIiIiJiAhVlcnHttdfSvHlzmjVrRr9+/Thx4oTZkURERERERCxpz549dO/enSZNmhAZGcmTTz5pdiSxmAcffJDatWvj4+NjdpQCWbhwIZGRkYSHh/OPf/yDtLQ0r76+ijK5mDZtGqtXr2bt2rXUrl2b119/3exIIiIiIiIiluTj48PLL7/Mxo0bWbVqFb/++ivffvut2bHEQvr378/y5cvNjlEg6enp/OMf/2DatGls3bqVEydO8Pnnn3t1GyrK5KJ8+fKA8Us4e/YsDofD5EQiIiIiIiLWVKNGDVq3bg2An58fLVq0YPfu3SanEiu5+uqrqV69utkxCmTZsmXUrFmTiIgIAIYMGcKMGTO8ug0VZfJw8803U7VqVTZv3szDDz9sdhwRERERERHLO3LkCLNmzeKaa64xO4pIkSQkJFCnTp3M/9etW5c9e/Z4dRv2upmrhH3zzTekpKQwZMgQpk+fzl133WV2JBEREREREa/5c80mlq5cf9ny/3wy47Lvq1epxIDrY/O8iyAlJYV+/frx4IMP0rhxY+8HlhJ17EQyn30zl/R0d7blOe0fTqeD22+6hkrly5Zoxpz875ff2bprb7ZlOWUGiGocStcOLXJ8HbfbneNyb9KVMvnw8/Pjtttu45tvvjE7ioiIiIiIiFe1iAwnPT2dxIOHSTx4OHP5pd8fPHyULm2j8izIpKWlMXjwYJo3b647DUqJCuWCaRJWL9/9I/HgYRqH1rVEQQagU+umHD1+Mt/Mp06fpV2LiFxfp06dOtmujNm9eze1a9f2alYVZXJw8uRJEhMTAWNMmdmzZxMZGWlyKhEREREREe/y9fFh4A3dcDnz/mh4bec21KhaOc91hg4dStmyZXnttde8GVFM1rVDC2rXqJLnOrWrV6Fbx5YllCh/FcoFc9O1V+e7Xv/rYwgK8M/18datW5OQkMCGDRsA+Oijj7jlllu8lhNUlMnRyZMnufHGG4mKiiIqKorU1FSefvpps2OJiIiIiIh4Xc2qlbmmc+tcH69fuzqd2zTL8zV+++03Pv74Y5YvX06LFi1o3rw5b7zxhrejiglcLicDr++Kr48rx8d9fFwM6NMVlyvv8sKwYcOoXbs2aWlp1K5dm5EjRxZH3EzRTcKIahya6+MdWzWlQf28r3pxuVx8+OGH9OvXj7CwMIKDg7nzzju9mtPhLombpEoRt9utmZhERERERKRUSU9P5/0p37MzYX+25f5+vjx4Tz/L3JYi5lm6cj3f/vzbZctv7NGRjq2ampAof6fPnGXCx9M5mXw62/IqlSrwwF234Otr/jC7ulKmgOL+WMMXs34mNS3N7CgiIiIiIiJe4XQ6GXB9LH5+vtmW39C9owoyAkD7FhE0vCr7lSUN6teifUvrDvURFBhA/94x2ZY5nQ4G9ulqiYIMlIKizNq1a7n11lsJCQkhICCABg0aMHbs2GLZ1rlzKSz6Yw0p51PxceV86ZaIiIiIiIgdVapQjhu6d8j8f0SD+rRq1tDERGIlDoeDfr1jCLwwBktggD/9rovFafE7SRqG1qFDy4uD+Xbv2CrfMXJKkjVKQ4W0YsUKunTpQp06dXj11VepV68eO3bsYMmSJcWyvSUr13P67Dl6dGpVLK8vIiIiIiJiptbNGrFhyy727DvILb06a+gGyaZc2TLcdO3VTJk9n5uu6UT5smXMjuSR3rHt2bJzL4H+/sR2aG52nGxsPaZMbGwsGzZsYMuWLZQvX75Az33i5feLKZWIiIiIiIiIXKleenyox+va9val06dPs3jxYgYNGlTggoyIiIiIiIiIiNlse/vS0aNHSU9Pp3btvKewyk1BKlfnzqXw8rtTqFOzKnf3712o7YmIiIiIiIiIZGXbokzFihVxOp3s3bu3UM8vzO1Lm7fv0W1PIiIiIiIiIpKrK+L2paCgILp06cKUKVM4ceKE2XFERERERERERArE1gP9Zsy+VK9ePR577DHq1avH7t27Wbx4MR9++KFXtrFg6Sp+WrSMkXfeRJ2aVb3ymiIiIiIiIiIitr19CaBVq1YsXbqUZ555hjFjxnD27Fnq1KnDbbfd5pXXP3cuhcV//kWj0DoqyIiIiIiIiIiIV9n6SpnilnjwMJ/P+pnb+nRTUUZEREREREREvEpFmXykp6fjdNp26B0RERERERERsSgVZURERERERERETKBLQERERERERERETKCijIiIiIiIiIiICVSUERERERERERExgYoyIiIiIiIiIiImUFFGRERERERERMQEKsqIiIiIiIiIiJhARRkREREREREREROoKCMiIiIiIiIiYgIVZURERERERERETKCijIiIiIiIiIiICVSUERERERERERExgYoyIiIiIiIiIiImUFFGRERERERERMQEKsqIiIiIiIiIiJhARRkREREREREREROoKCMiIiIiIiIiYgIVZURERERERERETKCijIiIiIiIiIiICVSUERERERERERExgYoyIiIiIiIiIiImUFFGRERERERERMQEKsqIiIiIiIiIiJhARRkREREREREREROoKCMiIiIiIiIiYgIVZURERERERERETKCijIiIiIiIiIiICVSUERERERERERExwf8DQUZCecbz4wMAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1471.2x385.28 with 1 Axes>"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "H2_cir_jw2 = QuantumCircuit(5,3)\n",
    "#state preparation\n",
    "H2_cir_jw2.initialize(v_jw2[1],[3,4])\n",
    "#H2_cir_jw2.ry(2.547304378732438,3)\n",
    "#H2_cir_jw2.x(4)\n",
    "#H2_cir_jw2.cx(3,4)\n",
    "# V \n",
    "H2_cir_jw2.compose(V_cir_jw2,[0,1,2],inplace= True)\n",
    "H2_cir_jw2.barrier()\n",
    "#applying unitaries as sum\n",
    "H2_cir_jw2.append(II,[0,1,2,3,4])\n",
    "H2_cir_jw2.append(ZI,[0,1,2,3,4])\n",
    "H2_cir_jw2.append(IZ_,[0,1,2,3,4])\n",
    "H2_cir_jw2.append(XX_,[0,1,2,3,4])\n",
    "H2_cir_jw2.append(YY_,[0,1,2,3,4])\n",
    "H2_cir_jw2.barrier()\n",
    "#V dagger\n",
    "H2_cir_jw2.compose(V_dag_jw2,[0,1,2],inplace= True)\n",
    "H2_cir_jw2.measure([0,1,2],[0,1,2])\n",
    "H2_cir_jw2.draw('mpl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "830be116-e79a-4edd-9997-a7e8815d4081",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "energy =  [-1.645371721235683, -1.7105600323749546, -1.7461593158197661, -1.7264725613770229, -1.8077167586601297] \n",
      "\n"
     ]
    }
   ],
   "source": [
    "shots_jw2 = 20000\n",
    "E_jw2 = []\n",
    "probs_jw2 = []\n",
    "for i in range(5):\n",
    "    result_jw2 = execute(H2_cir_jw2, backend = qasm, shots = shots_jw2).result()\n",
    "    count_jw2 = result_jw2.get_counts(H2_cir_jw2)\n",
    "    probs_jw2.append(count_jw2['000']/shots_jw2)\n",
    "    E_jw2.append(-A_jw2*np.sqrt(count_jw2['000']/shots_jw2))\n",
    "print('energy = ',E_jw2,'\\n')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "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.9.12"
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "state": {},
    "version_major": 2,
    "version_minor": 0
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}