{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# I-Python/Jupyter Notebook: Demo for PHY682 QIS\n",
"### Created by Tzu-Chieh Wei
Materials collected and revised from various places: QISKIT Summer School 2020, QISKIT Book, etc. [Updated Sep 2021]\n",
"### Simple VQE illustration"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# import packages\n",
"from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# first variational form and Z measurement\n",
"def get_var_formZ(params):\n",
" qr = QuantumRegister(1, name=\"q\")\n",
" cr = ClassicalRegister(1, name='c')\n",
" qc = QuantumCircuit(qr, cr)\n",
" qc.u(params[0], params[1], params[2], qr[0])\n",
" qc.measure(qr,cr)\n",
" return qc"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# variational form and X measurement\n",
"def get_var_formX(params):\n",
" qr = QuantumRegister(1, name=\"q\")\n",
" cr = ClassicalRegister(1, name='c')\n",
" qc = QuantumCircuit(qr, cr)\n",
" qc.u(params[0], params[1], params[2], qr[0])\n",
" qc.h(qr[0])\n",
" qc.measure(qr,cr)\n",
" return qc"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"