Skip to content

Commit

Permalink
imporoving testing notebook
Browse files Browse the repository at this point in the history
  • Loading branch information
marekgluza committed Apr 5, 2024
1 parent 972e5ad commit 9f38a48
Showing 1 changed file with 119 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
{
"cell_type": "code",
"execution_count": 1,
"id": "765f8da6",
"id": "173074d1",
"metadata": {},
"outputs": [],
"source": [
Expand All @@ -25,10 +25,103 @@
" print(reduce(str.__add__, out[0]))"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "eb3a4f7f",
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"@pytest.mark.parametrize(\"nqubits\", [3])\n",
"def test_double_bracket_iteration_eval_dbr_unitary(backend, nqubits):\n",
" h0 = random_hermitian(2**nqubits, backend=backend)\n",
" d = backend.cast(np.diag(np.diag(backend.to_numpy(h0))))\n",
" dbi = DoubleBracketIteration(\n",
" Hamiltonian(nqubits, h0, backend=backend),\n",
" mode=DoubleBracketGeneratorType.group_commutator,\n",
" )\n",
"\n",
" for s in np.linspace(0,.01,NSTEPS):\n",
" u = dbi.eval_dbr_unitary(s,mode = DoubleBracketRotationType.single_commutator)\n",
" v = dbi.eval_dbr_unitary(s, mode = DoubleBracketRotationType.group_commutator)\n",
"\n",
" assert np.linalg.norm( u - v ) < 10 * s * np.linalg.norm(h0) * np.linalg.norm(d)\n",
"\n"
]
}
],
"source": [
"print_function_source_code(test_double_bracket_iteration_eval_dbr_unitary)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "ceb004ac",
"metadata": {},
"outputs": [],
"source": [
"import qibo\n",
"backend = qibo.backends.construct_backend(\"numpy\")\n",
"nqubits = 3"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "50a41bdc",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"numpy"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"backend"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "c0e53a8d",
"metadata": {
"scrolled": true
},
"outputs": [
{
"ename": "UnboundLocalError",
"evalue": "local variable 'operator' referenced before assignment",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mUnboundLocalError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/tmp/ipykernel_9225/3866532243.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mtest_double_bracket_iteration_eval_dbr_unitary\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbackend\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnqubits\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m~/Projects_git/DBI_qibo/qibo/examples/dbi/../../tests/test_models_dbi.py\u001b[0m in \u001b[0;36mtest_double_bracket_iteration_eval_dbr_unitary\u001b[0;34m(backend, nqubits)\u001b[0m\n\u001b[1;32m 61\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 62\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ms\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlinspace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m.01\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mNSTEPS\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 63\u001b[0;31m \u001b[0mu\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdbi\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0meval_dbr_unitary\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ms\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mmode\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mDoubleBracketRotationType\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msingle_commutator\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 64\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdbi\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0meval_dbr_unitary\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ms\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmode\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mDoubleBracketRotationType\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgroup_commutator\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 65\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/Projects_git/DBI_qibo/qibo/src/qibo/models/dbi/double_bracket.py\u001b[0m in \u001b[0;36meval_dbr_unitary\u001b[0;34m(self, step, mode, d)\u001b[0m\n\u001b[1;32m 139\u001b[0m )\n\u001b[1;32m 140\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 141\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0moperator\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 142\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 143\u001b[0m \u001b[0;34m@\u001b[0m\u001b[0mstaticmethod\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mUnboundLocalError\u001b[0m: local variable 'operator' referenced before assignment"
]
}
],
"source": [
"test_double_bracket_iteration_eval_dbr_unitary(backend, nqubits)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "cdf50e7c",
"id": "02929afc",
"metadata": {},
"outputs": [
{
Expand Down Expand Up @@ -64,7 +157,7 @@
{
"cell_type": "code",
"execution_count": 7,
"id": "8688a26d",
"id": "de085a6e",
"metadata": {},
"outputs": [
{
Expand All @@ -80,10 +173,32 @@
"set_backend('numpy')"
]
},
{
"cell_type": "markdown",
"id": "b33d65d0",
"metadata": {},
"source": [
"# Show that double bracket iteration group commutator and dbi converge for small s BHMM\n",
"\n",
"This is testing the following:\n",
"\n",
"`dbi` runs $V = e^{-sW}$ and rotates $H_1 = V^\\dagger H_0 V$.\n",
"\n",
"`gci` runs $Q = GC$ and rotates $J_1 = Q^\\dagger H_0 Q$.\n",
"\n",
"`dbi2` runs $R = GC$ and rotates $K_1 = R^\\dagger H_0 R$.\n",
"\n",
"We assert that gci and dbi2 should be within machine precision for the correct sorting.\n",
"$$||J_1-K_1||\\le2 ||H_0||\\,||R-Q||\\le \\epsilon$$\n",
"\n",
"We assert that gci and dbi should be within the approximation bound of the GC\n",
"$$||J_1-H_1||\\le2 ||H_0||\\,||R-V||\\le C ||H_0|| s^{3/2}$$\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "1add4aa2",
"id": "99b58bba",
"metadata": {},
"outputs": [],
"source": [
Expand Down

0 comments on commit 9f38a48

Please sign in to comment.