From 68f84be7e6557ee88bf2cc48166c4e5579518290 Mon Sep 17 00:00:00 2001 From: kevinsung Date: Thu, 19 Oct 2023 16:30:26 +0000 Subject: [PATCH] deploy: eba4655277fecb8ebbb55999423617ba0c369391 --- .../api/generated/ffsim.hamiltonians.doctree | Bin 70584 -> 70838 bytes .doctrees/environment.pickle | Bin 1566939 -> 1568358 bytes .../nbsphinx/tutorials/01-introduction.ipynb | 24 +- .../tutorials/02-orbital-rotation.ipynb | 32 +- .../tutorials/03-double-factorized.ipynb | 140 ++++---- .doctrees/nbsphinx/tutorials/04-lucj.ipynb | 64 ++-- .../tutorials/05-fermion-operator.ipynb | 130 +++---- .../tutorials/03-double-factorized.doctree | Bin 54325 -> 54734 bytes .doctrees/tutorials/04-lucj.doctree | Bin 38069 -> 38069 bytes .../tutorials/05-fermion-operator.doctree | Bin 41385 -> 41325 bytes .../double_factorized_hamiltonian.html | 319 +++++++++--------- .../tutorials/03-double-factorized.ipynb.txt | 8 +- api/generated/ffsim.hamiltonians.html | 99 +++--- api/generated/ffsim.html | 2 +- genindex.html | 4 +- objects.inv | Bin 4189 -> 4203 bytes searchindex.js | 2 +- tutorials/01-introduction.ipynb | 24 +- tutorials/02-orbital-rotation.ipynb | 32 +- tutorials/03-double-factorized.html | 60 ++-- tutorials/03-double-factorized.ipynb | 140 ++++---- tutorials/04-lucj.html | 32 +- tutorials/04-lucj.ipynb | 64 ++-- tutorials/05-fermion-operator.html | 58 ++-- tutorials/05-fermion-operator.ipynb | 130 +++---- 25 files changed, 687 insertions(+), 677 deletions(-) diff --git a/.doctrees/api/generated/ffsim.hamiltonians.doctree b/.doctrees/api/generated/ffsim.hamiltonians.doctree index 2e92229677a931b6c34f8ed81cfc3df539c1e35e..dfbf3127e0292a6e5dd1655517a51b0a977caee2 100644 GIT binary patch delta 9515 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 WB(tt}wXBC${B6dPmWfvO1p6PCee90_ diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle index ee0cba34d5996e10ec08d26935b1314a88104ea0..5a38fd6ef515a61c671b920822f9d2de77cdd9cf 100644 GIT binary patch delta 153963 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 delta 152507 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 z%0D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 diff --git a/.doctrees/nbsphinx/tutorials/01-introduction.ipynb b/.doctrees/nbsphinx/tutorials/01-introduction.ipynb index b46f68b04..9ba68d884 100644 --- a/.doctrees/nbsphinx/tutorials/01-introduction.ipynb +++ b/.doctrees/nbsphinx/tutorials/01-introduction.ipynb @@ -16,10 +16,10 @@ "execution_count": 1, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:55.333137Z", - "iopub.status.busy": "2023-10-19T14:39:55.332800Z", - "iopub.status.idle": "2023-10-19T14:39:55.620635Z", - "shell.execute_reply": "2023-10-19T14:39:55.620092Z" + "iopub.execute_input": "2023-10-19T16:27:36.509941Z", + "iopub.status.busy": "2023-10-19T16:27:36.509492Z", + "iopub.status.idle": "2023-10-19T16:27:36.878359Z", + "shell.execute_reply": "2023-10-19T16:27:36.877646Z" } }, "outputs": [], @@ -62,10 +62,10 @@ "execution_count": 2, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:55.625193Z", - "iopub.status.busy": "2023-10-19T14:39:55.624119Z", - "iopub.status.idle": "2023-10-19T14:39:55.629183Z", - "shell.execute_reply": "2023-10-19T14:39:55.628710Z" + "iopub.execute_input": "2023-10-19T16:27:36.884089Z", + "iopub.status.busy": "2023-10-19T16:27:36.882169Z", + "iopub.status.idle": "2023-10-19T16:27:36.888779Z", + "shell.execute_reply": "2023-10-19T16:27:36.888221Z" } }, "outputs": [], @@ -93,10 +93,10 @@ "execution_count": 3, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:55.633035Z", - "iopub.status.busy": "2023-10-19T14:39:55.632089Z", - "iopub.status.idle": "2023-10-19T14:39:55.636031Z", - "shell.execute_reply": "2023-10-19T14:39:55.635577Z" + "iopub.execute_input": "2023-10-19T16:27:36.893261Z", + "iopub.status.busy": "2023-10-19T16:27:36.892022Z", + "iopub.status.idle": "2023-10-19T16:27:36.896757Z", + "shell.execute_reply": "2023-10-19T16:27:36.896155Z" } }, "outputs": [], diff --git a/.doctrees/nbsphinx/tutorials/02-orbital-rotation.ipynb b/.doctrees/nbsphinx/tutorials/02-orbital-rotation.ipynb index be6e21fe5..9a019f00c 100644 --- a/.doctrees/nbsphinx/tutorials/02-orbital-rotation.ipynb +++ b/.doctrees/nbsphinx/tutorials/02-orbital-rotation.ipynb @@ -43,10 +43,10 @@ "execution_count": 1, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:57.127490Z", - "iopub.status.busy": "2023-10-19T14:39:57.127250Z", - "iopub.status.idle": "2023-10-19T14:39:57.415242Z", - "shell.execute_reply": "2023-10-19T14:39:57.414684Z" + "iopub.execute_input": "2023-10-19T16:27:38.740446Z", + "iopub.status.busy": "2023-10-19T16:27:38.740199Z", + "iopub.status.idle": "2023-10-19T16:27:39.133772Z", + "shell.execute_reply": "2023-10-19T16:27:39.133089Z" } }, "outputs": [], @@ -111,10 +111,10 @@ "execution_count": 2, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:57.419456Z", - "iopub.status.busy": "2023-10-19T14:39:57.418437Z", - "iopub.status.idle": "2023-10-19T14:39:57.443882Z", - "shell.execute_reply": "2023-10-19T14:39:57.443356Z" + "iopub.execute_input": "2023-10-19T16:27:39.139249Z", + "iopub.status.busy": "2023-10-19T16:27:39.137973Z", + "iopub.status.idle": "2023-10-19T16:27:39.170534Z", + "shell.execute_reply": "2023-10-19T16:27:39.169918Z" } }, "outputs": [], @@ -160,10 +160,10 @@ "execution_count": 3, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:57.447969Z", - "iopub.status.busy": "2023-10-19T14:39:57.447021Z", - "iopub.status.idle": "2023-10-19T14:39:57.458057Z", - "shell.execute_reply": "2023-10-19T14:39:57.457553Z" + "iopub.execute_input": "2023-10-19T16:27:39.175431Z", + "iopub.status.busy": "2023-10-19T16:27:39.174296Z", + "iopub.status.idle": "2023-10-19T16:27:39.187414Z", + "shell.execute_reply": "2023-10-19T16:27:39.186695Z" } }, "outputs": [], @@ -203,10 +203,10 @@ "execution_count": 4, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:57.462338Z", - "iopub.status.busy": "2023-10-19T14:39:57.461004Z", - "iopub.status.idle": "2023-10-19T14:39:57.467050Z", - "shell.execute_reply": "2023-10-19T14:39:57.466562Z" + "iopub.execute_input": "2023-10-19T16:27:39.192482Z", + "iopub.status.busy": "2023-10-19T16:27:39.190867Z", + "iopub.status.idle": "2023-10-19T16:27:39.197986Z", + "shell.execute_reply": "2023-10-19T16:27:39.197420Z" } }, "outputs": [], diff --git a/.doctrees/nbsphinx/tutorials/03-double-factorized.ipynb b/.doctrees/nbsphinx/tutorials/03-double-factorized.ipynb index 2cb8abca1..09532880c 100644 --- a/.doctrees/nbsphinx/tutorials/03-double-factorized.ipynb +++ b/.doctrees/nbsphinx/tutorials/03-double-factorized.ipynb @@ -43,10 +43,10 @@ "execution_count": 1, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:58.908837Z", - "iopub.status.busy": "2023-10-19T14:39:58.908499Z", - "iopub.status.idle": "2023-10-19T14:39:59.292292Z", - "shell.execute_reply": "2023-10-19T14:39:59.291735Z" + "iopub.execute_input": "2023-10-19T16:27:41.295062Z", + "iopub.status.busy": "2023-10-19T16:27:41.294805Z", + "iopub.status.idle": "2023-10-19T16:27:41.768940Z", + "shell.execute_reply": "2023-10-19T16:27:41.768320Z" } }, "outputs": [ @@ -78,14 +78,16 @@ "mol_hamiltonian = mol_data.hamiltonian\n", "\n", "# Get the Hamiltonian in the double-factorized representation\n", - "df_hamiltonian = ffsim.double_factorized_hamiltonian(mol_hamiltonian)" + "df_hamiltonian = ffsim.DoubleFactorizedHamiltonian.from_molecular_hamiltonian(\n", + " mol_hamiltonian\n", + ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The function `double_factorized_hamiltonian` returns an object of type `DoubleFactorizedHamiltonian` which is just a dataclass that stores the updated one-body-tensor, diagonal Coulomb matrices, and orbital rotations. In the cell below, we print out the tensors describing the original and double-factorized representations." + "Here, `mol_hamiltonian` is an instance of `MolecularHamiltonian`, a dataclass that stores the one- and two-body tensors, and `df_hamiltonian` is an instance of `DoubleFactorizedHamiltonian`, a dataclass that stores the updated one-body-tensor, diagonal Coulomb matrices, and orbital rotations. In the cell below, we print out the tensors describing the original and double-factorized representations." ] }, { @@ -93,10 +95,10 @@ "execution_count": 2, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:59.296046Z", - "iopub.status.busy": "2023-10-19T14:39:59.295505Z", - "iopub.status.idle": "2023-10-19T14:39:59.303680Z", - "shell.execute_reply": "2023-10-19T14:39:59.303208Z" + "iopub.execute_input": "2023-10-19T16:27:41.797788Z", + "iopub.status.busy": "2023-10-19T16:27:41.796959Z", + "iopub.status.idle": "2023-10-19T16:27:41.805806Z", + "shell.execute_reply": "2023-10-19T16:27:41.805115Z" } }, "outputs": [ @@ -111,44 +113,44 @@ " [-3.07220771e-16 -6.77238770e-01]]\n", "\n", "Two-body tensor:\n", - "[[[[5.23173938e-01 1.94289029e-16]\n", - " [1.94289029e-16 5.33545754e-01]]\n", + "[[[[5.23173938e-01 1.57437591e-16]\n", + " [1.57437591e-16 5.33545754e-01]]\n", "\n", - " [[1.94289029e-16 2.48240570e-01]\n", - " [2.48240570e-01 8.32667268e-17]]]\n", + " [[2.12704463e-16 2.48240570e-01]\n", + " [2.48240570e-01 1.61492903e-16]]]\n", "\n", "\n", - " [[[1.94289029e-16 2.48240570e-01]\n", - " [2.48240570e-01 8.32667268e-17]]\n", + " [[[2.12704463e-16 2.48240570e-01]\n", + " [2.48240570e-01 1.61492903e-16]]\n", "\n", - " [[5.33545754e-01 1.11022302e-16]\n", - " [1.11022302e-16 5.53132024e-01]]]]\n", + " [[5.33545754e-01 1.24884750e-16]\n", + " [1.24884750e-16 5.53132024e-01]]]]\n", "\n", "Double-factorized representation\n", "--------------------------------\n", "One-body tensor:\n", - "[[-1.21318608e+00 -4.05183033e-16]\n", - " [-4.59876437e-16 -1.07792507e+00]]\n", + "[[-1.21318608e+00 -4.25870402e-16]\n", + " [-4.76015378e-16 -1.07792507e+00]]\n", "\n", "Diagonal Coulomb matrices:\n", - "[[[ 5.14653029e-001 5.33545754e-001]\n", - " [ 5.33545754e-001 5.53132024e-001]]\n", + "[[[ 5.14653029e-01 5.33545754e-01]\n", + " [ 5.33545754e-01 5.53132024e-01]]\n", "\n", - " [[ 2.48240570e-001 -2.48240570e-001]\n", - " [-2.48240570e-001 2.48240570e-001]]\n", + " [[ 2.48240570e-01 -2.48240570e-01]\n", + " [-2.48240570e-01 2.48240570e-01]]\n", "\n", - " [[ 5.96958401e-121 -7.13206008e-062]\n", - " [-7.13206008e-062 8.52090881e-003]]]\n", + " [[ 1.50800163e-59 -3.58462611e-31]\n", + " [-3.58462611e-31 8.52090881e-03]]]\n", "\n", "Orbital rotations:\n", - "[[[-1.00000000e+00 4.25128053e-15]\n", - " [ 4.25128053e-15 1.00000000e+00]]\n", + "[[[-1.00000000e+00 8.24520980e-15]\n", + " [ 8.24520980e-15 1.00000000e+00]]\n", "\n", - " [[ 7.07106781e-01 -7.07106781e-01]\n", - " [-7.07106781e-01 -7.07106781e-01]]\n", + " [[-7.07106781e-01 -7.07106781e-01]\n", + " [ 7.07106781e-01 -7.07106781e-01]]\n", "\n", - " [[ 2.89310728e-30 -1.00000000e+00]\n", - " [-1.00000000e+00 -2.89310728e-30]]]\n" + " [[ 6.48603030e-15 -1.00000000e+00]\n", + " [-1.00000000e+00 -6.48603030e-15]]]\n" ] } ], @@ -227,10 +229,10 @@ "execution_count": 3, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:59.307553Z", - "iopub.status.busy": "2023-10-19T14:39:59.306455Z", - "iopub.status.idle": "2023-10-19T14:39:59.312345Z", - "shell.execute_reply": "2023-10-19T14:39:59.311867Z" + "iopub.execute_input": "2023-10-19T16:27:41.808878Z", + "iopub.status.busy": "2023-10-19T16:27:41.808498Z", + "iopub.status.idle": "2023-10-19T16:27:41.813796Z", + "shell.execute_reply": "2023-10-19T16:27:41.813248Z" } }, "outputs": [], @@ -285,10 +287,10 @@ "execution_count": 4, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:59.315343Z", - "iopub.status.busy": "2023-10-19T14:39:59.315133Z", - "iopub.status.idle": "2023-10-19T14:39:59.319932Z", - "shell.execute_reply": "2023-10-19T14:39:59.319386Z" + "iopub.execute_input": "2023-10-19T16:27:41.816718Z", + "iopub.status.busy": "2023-10-19T16:27:41.816364Z", + "iopub.status.idle": "2023-10-19T16:27:41.820574Z", + "shell.execute_reply": "2023-10-19T16:27:41.820031Z" } }, "outputs": [], @@ -325,10 +327,10 @@ "execution_count": 5, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:59.322653Z", - "iopub.status.busy": "2023-10-19T14:39:59.322251Z", - "iopub.status.idle": "2023-10-19T14:39:59.327160Z", - "shell.execute_reply": "2023-10-19T14:39:59.326695Z" + "iopub.execute_input": "2023-10-19T16:27:41.823525Z", + "iopub.status.busy": "2023-10-19T16:27:41.823163Z", + "iopub.status.idle": "2023-10-19T16:27:41.828409Z", + "shell.execute_reply": "2023-10-19T16:27:41.827885Z" } }, "outputs": [ @@ -336,7 +338,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Hartree Fock energy: -0.837796382593709\n" + "Hartree Fock energy: -0.8377963825937088\n" ] } ], @@ -367,10 +369,10 @@ "execution_count": 6, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:59.329875Z", - "iopub.status.busy": "2023-10-19T14:39:59.329325Z", - "iopub.status.idle": "2023-10-19T14:39:59.339042Z", - "shell.execute_reply": "2023-10-19T14:39:59.338412Z" + "iopub.execute_input": "2023-10-19T16:27:41.831595Z", + "iopub.status.busy": "2023-10-19T16:27:41.831104Z", + "iopub.status.idle": "2023-10-19T16:27:41.842211Z", + "shell.execute_reply": "2023-10-19T16:27:41.841656Z" } }, "outputs": [ @@ -409,10 +411,10 @@ "execution_count": 7, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:59.341671Z", - "iopub.status.busy": "2023-10-19T14:39:59.341479Z", - "iopub.status.idle": "2023-10-19T14:39:59.349853Z", - "shell.execute_reply": "2023-10-19T14:39:59.349232Z" + "iopub.execute_input": "2023-10-19T16:27:41.845098Z", + "iopub.status.busy": "2023-10-19T16:27:41.844747Z", + "iopub.status.idle": "2023-10-19T16:27:41.853809Z", + "shell.execute_reply": "2023-10-19T16:27:41.853262Z" } }, "outputs": [ @@ -420,7 +422,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Fidelity of Trotter-evolved state with exact state: 0.9990275744083491\n" + "Fidelity of Trotter-evolved state with exact state: 0.999027574408349\n" ] } ], @@ -450,10 +452,10 @@ "execution_count": 8, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:59.353772Z", - "iopub.status.busy": "2023-10-19T14:39:59.353568Z", - "iopub.status.idle": "2023-10-19T14:39:59.390939Z", - "shell.execute_reply": "2023-10-19T14:39:59.389931Z" + "iopub.execute_input": "2023-10-19T16:27:41.856607Z", + "iopub.status.busy": "2023-10-19T16:27:41.856244Z", + "iopub.status.idle": "2023-10-19T16:27:41.899624Z", + "shell.execute_reply": "2023-10-19T16:27:41.898940Z" } }, "outputs": [ @@ -461,7 +463,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Fidelity of Trotter-evolved state with exact state: 0.9999906233109653\n" + "Fidelity of Trotter-evolved state with exact state: 0.9999906233109657\n" ] } ], @@ -493,10 +495,10 @@ "execution_count": 9, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:59.393689Z", - "iopub.status.busy": "2023-10-19T14:39:59.393490Z", - "iopub.status.idle": "2023-10-19T14:39:59.425221Z", - "shell.execute_reply": "2023-10-19T14:39:59.424460Z" + "iopub.execute_input": "2023-10-19T16:27:41.902790Z", + "iopub.status.busy": "2023-10-19T16:27:41.902330Z", + "iopub.status.idle": "2023-10-19T16:27:41.945843Z", + "shell.execute_reply": "2023-10-19T16:27:41.945194Z" } }, "outputs": [ @@ -504,7 +506,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Fidelity of Trotter-evolved state with exact state: 0.9999906233109653\n" + "Fidelity of Trotter-evolved state with exact state: 0.9999906233109657\n" ] } ], @@ -535,10 +537,10 @@ "execution_count": 10, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:59.427658Z", - "iopub.status.busy": "2023-10-19T14:39:59.427469Z", - "iopub.status.idle": "2023-10-19T14:39:59.443022Z", - "shell.execute_reply": "2023-10-19T14:39:59.442331Z" + "iopub.execute_input": "2023-10-19T16:27:41.949120Z", + "iopub.status.busy": "2023-10-19T16:27:41.948837Z", + "iopub.status.idle": "2023-10-19T16:27:41.967055Z", + "shell.execute_reply": "2023-10-19T16:27:41.966238Z" } }, "outputs": [ @@ -546,7 +548,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Fidelity of Trotter-evolved state with exact state: 0.9999999336740059\n" + "Fidelity of Trotter-evolved state with exact state: 0.9999999336740057\n" ] } ], diff --git a/.doctrees/nbsphinx/tutorials/04-lucj.ipynb b/.doctrees/nbsphinx/tutorials/04-lucj.ipynb index 1d8185999..c1e1946d5 100644 --- a/.doctrees/nbsphinx/tutorials/04-lucj.ipynb +++ b/.doctrees/nbsphinx/tutorials/04-lucj.ipynb @@ -14,10 +14,10 @@ "execution_count": 1, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:40:01.376785Z", - "iopub.status.busy": "2023-10-19T14:40:01.376450Z", - "iopub.status.idle": "2023-10-19T14:40:01.984780Z", - "shell.execute_reply": "2023-10-19T14:40:01.984205Z" + "iopub.execute_input": "2023-10-19T16:27:44.173731Z", + "iopub.status.busy": "2023-10-19T16:27:44.173460Z", + "iopub.status.idle": "2023-10-19T16:27:44.890778Z", + "shell.execute_reply": "2023-10-19T16:27:44.890166Z" } }, "outputs": [ @@ -25,14 +25,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "converged SCF energy = -77.4456267643961\n" + "converged SCF energy = -77.4456267643962\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "CASCI E = -77.6290254326717 E(CI) = -3.57322412553863 S^2 = 0.0000000\n" + "CASCI E = -77.6290254326717 E(CI) = -3.57322412553862 S^2 = 0.0000000\n" ] } ], @@ -109,10 +109,10 @@ "execution_count": 2, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:40:01.990201Z", - "iopub.status.busy": "2023-10-19T14:40:01.988624Z", - "iopub.status.idle": "2023-10-19T14:40:02.504800Z", - "shell.execute_reply": "2023-10-19T14:40:02.504249Z" + "iopub.execute_input": "2023-10-19T16:27:44.897251Z", + "iopub.status.busy": "2023-10-19T16:27:44.895577Z", + "iopub.status.idle": "2023-10-19T16:27:45.598357Z", + "shell.execute_reply": "2023-10-19T16:27:45.597692Z" } }, "outputs": [ @@ -120,14 +120,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "E(CCSD) = -77.49387212754462 E_corr = -0.04824536314851573\n" + "E(CCSD) = -77.49387212754473 E_corr = -0.04824536314851328\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Energy at initialialization: -77.46975600021692\n" + "Energy at initialialization: -77.46975600021656\n" ] } ], @@ -177,10 +177,10 @@ "execution_count": 3, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:40:02.507719Z", - "iopub.status.busy": "2023-10-19T14:40:02.507477Z", - "iopub.status.idle": "2023-10-19T14:41:13.658634Z", - "shell.execute_reply": "2023-10-19T14:41:13.658109Z" + "iopub.execute_input": "2023-10-19T16:27:45.601966Z", + "iopub.status.busy": "2023-10-19T16:27:45.601316Z", + "iopub.status.idle": "2023-10-19T16:29:31.891294Z", + "shell.execute_reply": "2023-10-19T16:29:31.890594Z" } }, "outputs": [ @@ -192,12 +192,12 @@ " message: CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH\n", " success: True\n", " status: 0\n", - " fun: -77.62873343946598\n", - " x: [-2.541e-01 -8.978e-02 ... 2.239e-01 -5.438e-01]\n", - " nit: 329\n", - " jac: [ 6.537e-05 3.098e-04 ... 2.956e-04 -1.734e-04]\n", - " nfev: 25696\n", - " njev: 352\n", + " fun: -77.62901334909452\n", + " x: [-4.597e-01 -2.974e-01 ... 3.896e-01 1.161e+00]\n", + " nit: 403\n", + " jac: [ 9.521e-05 2.245e-04 ... 1.236e-04 -4.150e-04]\n", + " nfev: 31682\n", + " njev: 434\n", " hess_inv: <72x72 LbfgsInvHessProduct with dtype=float64>\n" ] } @@ -252,10 +252,10 @@ "execution_count": 4, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:41:13.662631Z", - "iopub.status.busy": "2023-10-19T14:41:13.661664Z", - "iopub.status.idle": "2023-10-19T14:42:35.356542Z", - "shell.execute_reply": "2023-10-19T14:42:35.356016Z" + "iopub.execute_input": "2023-10-19T16:29:31.895316Z", + "iopub.status.busy": "2023-10-19T16:29:31.894949Z", + "iopub.status.idle": "2023-10-19T16:30:19.776632Z", + "shell.execute_reply": "2023-10-19T16:30:19.776089Z" } }, "outputs": [ @@ -267,12 +267,12 @@ " message: CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH\n", " success: True\n", " status: 0\n", - " fun: -77.62881470757267\n", - " x: [-3.795e+00 -1.386e+00 ... -4.020e-01 1.230e-01]\n", - " nit: 585\n", - " jac: [ 4.434e-04 -1.933e-04 ... 4.007e-04 -1.450e-04]\n", - " nfev: 29422\n", - " njev: 626\n", + " fun: -77.62873223663462\n", + " x: [-1.942e+00 3.888e-01 ... 3.479e-01 -8.915e-02]\n", + " nit: 285\n", + " jac: [ 1.563e-05 3.695e-05 ... -1.279e-05 -1.776e-04]\n", + " nfev: 14335\n", + " njev: 305\n", " hess_inv: <46x46 LbfgsInvHessProduct with dtype=float64>\n" ] } diff --git a/.doctrees/nbsphinx/tutorials/05-fermion-operator.ipynb b/.doctrees/nbsphinx/tutorials/05-fermion-operator.ipynb index fa09bcb38..e5cda2ddd 100644 --- a/.doctrees/nbsphinx/tutorials/05-fermion-operator.ipynb +++ b/.doctrees/nbsphinx/tutorials/05-fermion-operator.ipynb @@ -29,10 +29,10 @@ "execution_count": 1, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:42:37.077633Z", - "iopub.status.busy": "2023-10-19T14:42:37.077306Z", - "iopub.status.idle": "2023-10-19T14:42:37.362479Z", - "shell.execute_reply": "2023-10-19T14:42:37.361769Z" + "iopub.execute_input": "2023-10-19T16:30:21.670393Z", + "iopub.status.busy": "2023-10-19T16:30:21.669989Z", + "iopub.status.idle": "2023-10-19T16:30:22.023880Z", + "shell.execute_reply": "2023-10-19T16:30:22.023224Z" } }, "outputs": [ @@ -40,8 +40,8 @@ "data": { "text/plain": [ "FermionOperator({\n", - " (cre_a(0), des_a(3)): 0.5,\n", " (cre_b(1), des_b(5), cre_a(4)): 1+1j,\n", + " (cre_a(0), des_a(3)): 0.5,\n", " (cre_a(3), des_a(0)): -0.25\n", "})" ] @@ -76,17 +76,17 @@ "execution_count": 2, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:42:37.367296Z", - "iopub.status.busy": "2023-10-19T14:42:37.366261Z", - "iopub.status.idle": "2023-10-19T14:42:37.372138Z", - "shell.execute_reply": "2023-10-19T14:42:37.371678Z" + "iopub.execute_input": "2023-10-19T16:30:22.028811Z", + "iopub.status.busy": "2023-10-19T16:30:22.027408Z", + "iopub.status.idle": "2023-10-19T16:30:22.034307Z", + "shell.execute_reply": "2023-10-19T16:30:22.033759Z" } }, "outputs": [ { "data": { "text/plain": [ - "'FermionOperator({((True, False, 0), (False, False, 3)): 0.5+0j, ((True, True, 1), (False, True, 5), (True, False, 4)): 1+1j, ((True, False, 3), (False, False, 0)): -0.25+0j})'" + "'FermionOperator({((True, True, 1), (False, True, 5), (True, False, 4)): 1+1j, ((True, False, 0), (False, False, 3)): 0.5+0j, ((True, False, 3), (False, False, 0)): -0.25+0j})'" ] }, "execution_count": 2, @@ -110,10 +110,10 @@ "execution_count": 3, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:42:37.375800Z", - "iopub.status.busy": "2023-10-19T14:42:37.374921Z", - "iopub.status.idle": "2023-10-19T14:42:37.381567Z", - "shell.execute_reply": "2023-10-19T14:42:37.381116Z" + "iopub.execute_input": "2023-10-19T16:30:22.037944Z", + "iopub.status.busy": "2023-10-19T16:30:22.037568Z", + "iopub.status.idle": "2023-10-19T16:30:22.044977Z", + "shell.execute_reply": "2023-10-19T16:30:22.044445Z" } }, "outputs": [ @@ -122,16 +122,16 @@ "text/plain": [ "FermionOperator({\n", " (des_a(3), des_b(3)): 0.0625,\n", - " (cre_a(0), des_a(3), des_a(3), des_b(3)): -0.125,\n", - " (cre_b(1), des_b(5), cre_a(4), des_a(3), des_b(3)): -0.25-0.25j,\n", - " (cre_a(3), des_a(0)): -0.5,\n", " (cre_a(0), des_a(3), cre_b(2)): 0+0.5j,\n", - " (cre_b(1), des_b(5), cre_a(4), cre_b(2)): -1+1j,\n", - " (cre_a(0), des_a(3)): 1,\n", - " (cre_b(1), des_b(5), cre_a(4)): 2+2j,\n", " (cre_a(3), des_a(0), des_a(3), des_b(3)): 0.0625,\n", + " (cre_a(0), des_a(3)): 1,\n", " (cre_a(3), des_a(0), cre_b(2)): 0-0.25j,\n", - " (cre_b(2)): 0-0.25j\n", + " (cre_a(0), des_a(3), des_a(3), des_b(3)): -0.125,\n", + " (cre_b(1), des_b(5), cre_a(4), cre_b(2)): -1+1j,\n", + " (cre_b(2)): 0-0.25j,\n", + " (cre_b(1), des_b(5), cre_a(4), des_a(3), des_b(3)): -0.25-0.25j,\n", + " (cre_b(1), des_b(5), cre_a(4)): 2+2j,\n", + " (cre_a(3), des_a(0)): -0.5\n", "})" ] }, @@ -169,10 +169,10 @@ "execution_count": 4, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:42:37.385304Z", - "iopub.status.busy": "2023-10-19T14:42:37.384396Z", - "iopub.status.idle": "2023-10-19T14:42:37.390385Z", - "shell.execute_reply": "2023-10-19T14:42:37.389901Z" + "iopub.execute_input": "2023-10-19T16:30:22.049374Z", + "iopub.status.busy": "2023-10-19T16:30:22.048155Z", + "iopub.status.idle": "2023-10-19T16:30:22.054897Z", + "shell.execute_reply": "2023-10-19T16:30:22.054383Z" } }, "outputs": [ @@ -181,16 +181,16 @@ "text/plain": [ "FermionOperator({\n", " (des_a(3), des_b(3)): 0-1.25j,\n", - " (cre_a(0), des_a(3), des_a(3), des_b(3)): 0+0.5j,\n", - " (cre_b(1), des_b(5), cre_a(4), des_a(3), des_b(3)): -1+1j,\n", - " (cre_a(3), des_a(0)): 0+3j,\n", " (cre_a(0), des_a(3), cre_b(2)): 2,\n", - " (cre_b(1), des_b(5), cre_a(4), cre_b(2)): 4+4j,\n", - " (cre_a(0), des_a(3)): 0-6j,\n", - " (cre_b(1), des_b(5), cre_a(4)): 12-12j,\n", " (cre_a(3), des_a(0), des_a(3), des_b(3)): 0-0.25j,\n", + " (cre_a(0), des_a(3)): 0-6j,\n", " (cre_a(3), des_a(0), cre_b(2)): -1,\n", - " (cre_b(2)): -5\n", + " (cre_a(0), des_a(3), des_a(3), des_b(3)): 0+0.5j,\n", + " (cre_b(1), des_b(5), cre_a(4), cre_b(2)): 4+4j,\n", + " (cre_b(2)): -5,\n", + " (cre_b(1), des_b(5), cre_a(4), des_a(3), des_b(3)): -1+1j,\n", + " (cre_b(1), des_b(5), cre_a(4)): 12-12j,\n", + " (cre_a(3), des_a(0)): 0+3j\n", "})" ] }, @@ -219,10 +219,10 @@ "execution_count": 5, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:42:37.394709Z", - "iopub.status.busy": "2023-10-19T14:42:37.393740Z", - "iopub.status.idle": "2023-10-19T14:42:37.399514Z", - "shell.execute_reply": "2023-10-19T14:42:37.399055Z" + "iopub.execute_input": "2023-10-19T16:30:22.058256Z", + "iopub.status.busy": "2023-10-19T16:30:22.057797Z", + "iopub.status.idle": "2023-10-19T16:30:22.064878Z", + "shell.execute_reply": "2023-10-19T16:30:22.064352Z" } }, "outputs": [ @@ -230,16 +230,16 @@ "data": { "text/plain": [ "FermionOperator({\n", - " (cre_a(3), des_a(0)): 0+3j,\n", - " (cre_b(2)): -5,\n", - " (cre_b(1), cre_a(4), des_b(5), des_b(3), des_a(3)): -1+1j,\n", - " (cre_b(2), cre_b(1), cre_a(4), des_b(5)): 4+4j,\n", - " (cre_a(0), des_a(3)): 0-6j,\n", - " (cre_b(2), cre_a(0), des_a(3)): 2,\n", - " (cre_a(3), des_b(3), des_a(3), des_a(0)): 0+0.25j,\n", " (des_b(3), des_a(3)): 0+1.25j,\n", + " (cre_b(2), cre_a(0), des_a(3)): 2,\n", + " (cre_a(0), des_a(3)): 0-6j,\n", " (cre_b(2), cre_a(3), des_a(0)): -1,\n", - " (cre_b(1), cre_a(4), des_b(5)): -12+12j\n", + " (cre_b(1), cre_a(4), des_b(5)): -12+12j,\n", + " (cre_b(2), cre_b(1), cre_a(4), des_b(5)): 4+4j,\n", + " (cre_a(3), des_b(3), des_a(3), des_a(0)): 0+0.25j,\n", + " (cre_a(3), des_a(0)): 0+3j,\n", + " (cre_b(1), cre_a(4), des_b(5), des_b(3), des_a(3)): -1+1j,\n", + " (cre_b(2)): -5\n", "})" ] }, @@ -264,10 +264,10 @@ "execution_count": 6, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:42:37.403183Z", - "iopub.status.busy": "2023-10-19T14:42:37.402262Z", - "iopub.status.idle": "2023-10-19T14:42:37.407487Z", - "shell.execute_reply": "2023-10-19T14:42:37.407040Z" + "iopub.execute_input": "2023-10-19T16:30:22.069240Z", + "iopub.status.busy": "2023-10-19T16:30:22.068020Z", + "iopub.status.idle": "2023-10-19T16:30:22.074090Z", + "shell.execute_reply": "2023-10-19T16:30:22.073516Z" } }, "outputs": [ @@ -297,10 +297,10 @@ "execution_count": 7, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:42:37.411097Z", - "iopub.status.busy": "2023-10-19T14:42:37.410179Z", - "iopub.status.idle": "2023-10-19T14:42:37.416471Z", - "shell.execute_reply": "2023-10-19T14:42:37.416023Z" + "iopub.execute_input": "2023-10-19T16:30:22.078346Z", + "iopub.status.busy": "2023-10-19T16:30:22.077123Z", + "iopub.status.idle": "2023-10-19T16:30:22.084444Z", + "shell.execute_reply": "2023-10-19T16:30:22.083907Z" } }, "outputs": [ @@ -340,21 +340,21 @@ "execution_count": 8, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:42:37.420049Z", - "iopub.status.busy": "2023-10-19T14:42:37.419152Z", - "iopub.status.idle": "2023-10-19T14:42:37.426669Z", - "shell.execute_reply": "2023-10-19T14:42:37.426204Z" + "iopub.execute_input": "2023-10-19T16:30:22.087872Z", + "iopub.status.busy": "2023-10-19T16:30:22.087478Z", + "iopub.status.idle": "2023-10-19T16:30:22.095690Z", + "shell.execute_reply": "2023-10-19T16:30:22.095163Z" } }, "outputs": [ { "data": { "text/plain": [ - "array([0. +0.j , 0. +0.j ,\n", - " 0. +0.j , 0. +0.j ,\n", - " 0.11889056-0.13114645j, 0. +0.j ,\n", - " 0. +0.j , 0. +0.j ,\n", - " 0. +0.j ])" + "array([0. +0.j , 0. +0.j ,\n", + " 0. +0.j , 0. +0.j ,\n", + " 0.14601055-0.2517831j, 0. +0.j ,\n", + " 0. +0.j , 0. +0.j ,\n", + " 0. +0.j ])" ] }, "execution_count": 8, @@ -379,10 +379,10 @@ "execution_count": 9, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:42:37.430250Z", - "iopub.status.busy": "2023-10-19T14:42:37.429345Z", - "iopub.status.idle": "2023-10-19T14:42:37.441262Z", - "shell.execute_reply": "2023-10-19T14:42:37.440811Z" + "iopub.execute_input": "2023-10-19T16:30:22.099160Z", + "iopub.status.busy": "2023-10-19T16:30:22.098684Z", + "iopub.status.idle": "2023-10-19T16:30:22.112817Z", + "shell.execute_reply": "2023-10-19T16:30:22.112282Z" } }, "outputs": [ diff --git a/.doctrees/tutorials/03-double-factorized.doctree b/.doctrees/tutorials/03-double-factorized.doctree index f54f0264cc79b035a48c5c453c4b6dc657f84e03..cce62444806cee70729b7fd9b10a8798bdb51be5 100644 GIT binary patch delta 6618 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 diff --git a/.doctrees/tutorials/04-lucj.doctree b/.doctrees/tutorials/04-lucj.doctree index 58be5e64fe8270151e5826f7410519f24de103c5..56f3e427ca6abcbded5680bc63dfe39aed49d779 100644 GIT binary patch delta 2566 zcmdUvL2DC16vs)tBqf-(0YS7d=tYzrX6DVz?xfnSw_dDKLQ&ct#6~nodPpf1NrTkV z-V`5r_aYQ8!qS6+=+T3pq2j@drylwNI~!h+A3NG99bL-$fN#R{r$7Yw zC8SxU@!M6_Cwk-BM;HA(Gu6E|oIHc8GxL4E6vLN&R1U+7|3;&g*`UM9eGkfheAyMP3Vx#}E#y8Sw(=|{P0 zJu_(TPnRCAtgba%qq_fDa-uj?6C%D)On()~7jD^k{W)km{+CJkb@yv}Q=i7o-F)&uFQA4ys)!yAi9q#oh*PD(F0&j0 zs*T&BVl7YE5s1YU@i_JU7)d=G;u0W{`^_O>3U9W*r#ACBtW@(6JUf>eu!IwCjHm-) zN73H>5N(JGTjQxO0t;IXM0u3k2Lm=FVbSQOVS1=GjFE@6W)purm#=nSq`icwwHp+U E0m`OI;{X5v delta 2482 zcmdUv&ubGw6vs)tBqcO$BjQhZ=tYzrc7E?f?bcf_)~KNl40U-o{5ys7aMiRkYhA#9Dx0Y6`z?tbSo44;+FHl5sZMR7P zPJH7|h}cV6Gb2^J_9)R@IN396-EG{j0+Y(9eY;lE1-N8bs88dE>n}4}epIM8bHmpD zXnuKdWwqTosQynu+VL+gA)>S8?EeMQ*=u%QzYTjG|H~wNzx6r0rC-3uo5kqO+}`PK zK!x_T)J*Aq4soK5Y@GLfuz=u!ilytmCy38{%L@uXEs|o{#~~TWehvwXtC%p(%W$4> z2u7`$?+_(iO5pB|%3)>%V`=gzrtoU_Yldo_##+4?@h2zjpbpjGgbfGP<)eus{9&u3 v(%M)C%f`~014`B_>~7Zo&<>Oyge z@V6pJ9ds2KDx*Lo6eB1qCS6B%(VcYTMG&F(Xbwc|Lfw1waQ@GG{ygXWIOoM%*3V^D z_F&GV$Xxb7A!>sP1f?PfLLw++e0(hQ9H5opu5vpkw(hgn{m&t)=do3#bE4W@ca~JohMQ4;KSn- z5zPdDhY*WiHdbx*D0V9G&@RA*S}vZE92ITEBrSu;uECOnjVVfv1^fMs`E5B@GF7j5 zw};%AVZ4XUjQ7+b<_cxXJxwTi<8(Nem`d@d$whD%W212!H3da$kRawE(Imu0HwT}) z#i*7^2zfyot)u=FEqZ;9K&Db}){4wOIB1!)Wt8$e7>NqEf{DGe@lrsUUOI+~iW|F&FQ8 ztf&er2@o|>OfIIw^;l*au+^B0?_CCrgd_xj1d6V+Xmd-k87?_w4w>&}4nDNaAz{nG ze8hrShiYez7y@A}at2=_QoL@LK@}-LfaYL0Qh{lQ6fdI^B^uxv5r?Qf({`Z-TW}Dq)HqkWM zWft1(a9Yi17^TvGZl4myz&%xc?Rsb3?vNhW5bohSENd2mQ6p+c6i0sUDK&W`?;`~^z$u3!KF delta 2057 zcmcJPUr19?9LIG{H`o5$&AHu8=Wc6SGTrWF?w`&XQFAu0iVs@Q*4%8)urz!y1WWS4 zKgb^ZnqXn}5)l*;BPbG!q$e?b>OmUx(4!LcmZ5f=8WQ2d)cbPI?|1I+dw%D9e!sK! zf%kNt#~;YL_wXhEwhH;Q6lbD*%&8>Uph=Xem1qdb(4{7@sw&xMeF0)N7k#7@vrZja zNX2*^f%|0l|J>I!kM>a#qElzsT-d-d)uHQxgk!43 zbG9(WIN6#9!cM|dZ{#?eL9-=TU~^CwIRRVUF4u!0u+e%p)n06* zHtqN>%}I1#y_I(EeeK2R#wP3?KXq9bg_#){V1^7B8Y0m^2ojualcq8f&= bXyz|e4;LIHJuwy7ee%W*ESBhruPc57@LSGU diff --git a/_modules/ffsim/hamiltonians/double_factorized_hamiltonian.html b/_modules/ffsim/hamiltonians/double_factorized_hamiltonian.html index c59fc37e5..c585f5b4d 100644 --- a/_modules/ffsim/hamiltonians/double_factorized_hamiltonian.html +++ b/_modules/ffsim/hamiltonians/double_factorized_hamiltonian.html @@ -161,6 +161,166 @@

Source code for ffsim.hamiltonians.double_factorized_hamiltonian

constant=self.constant - constant_correction, z_representation=False, )
+ + +
+[docs] + @staticmethod + def from_molecular_hamiltonian( + hamiltonian: MolecularHamiltonian, + *, + z_representation: bool = False, + tol: float = 1e-8, + max_vecs: int | None = None, + optimize: bool = False, + method: str = "L-BFGS-B", + options: dict | None = None, + diag_coulomb_mask: np.ndarray | None = None, + cholesky: bool = True, + ) -> DoubleFactorizedHamiltonian: + r"""Double-factorized decomposition of a molecular Hamiltonian. + + The double-factorized decomposition acts on a Hamiltonian of the form + + .. math:: + + H = \sum_{pq, \sigma} h_{pq} a^\dagger_{p, \sigma} a_{q, \sigma} + + \frac12 \sum_{pqrs, \sigma \tau} h_{pqrs} + a^\dagger_{p, \sigma} a^\dagger_{r, \tau} a_{s, \tau} a_{q, \sigma} + + \text{constant}. + + The Hamiltonian is decomposed into the double-factorized form + + .. math:: + + H = \sum_{pq, \sigma} \kappa_{pq} a^\dagger_{p, \sigma} a_{q, \sigma} + + \frac12 \sum_t \sum_{ij, \sigma\tau} + Z^{(t)}_{ij} n^{(t)}_{i, \sigma} n^{(t)}_{j, \tau} + + \text{constant}'. + + where + + .. math:: + + n^{(t)}_{i, \sigma} = \sum_{pq} U^{(t)}_{pi} + a^\dagger_{p, \sigma} a^\dagger_{q, \sigma} U^{(t)}_{qi}. + + Here :math:`U^{(t)}_{ij}` and :math:`Z^{(t)}_{ij}` are tensors that are output + by the decomposition, and :math:`\kappa_{pq}` is an updated one-body tensor. + Each matrix :math:`U^{(t)}` is guaranteed to be unitary so that the + :math:`n^{(t)}_{i, \sigma}` are number operators in a rotated basis, and + each :math:`Z^{(t)}` is a real symmetric matrix. + The number of terms :math:`t` in the decomposition depends on the allowed + error threshold. A larger error threshold leads to a smaller number of terms. + Furthermore, the `max_rank` parameter specifies an optional upper bound + on :math:`t`. + + The default behavior of this routine is to perform a straightforward + "exact" factorization of the two-body tensor based on a nested + eigenvalue decomposition. Additionally, one can choose to optimize the + coefficients stored in the tensor to achieve a "compressed" factorization. + This option is enabled by setting the `optimize` parameter to `True`. + The optimization attempts to minimize a least-squares objective function + quantifying the error in the low rank decomposition. + It uses `scipy.optimize.minimize`, passing both the objective function + and its gradient. The diagonal coulomb matrices returned by the optimization + can be optionally constrained to have only certain elements allowed to be + nonzero. This is achieved by passing the `diag_coulomb_mask` parameter, which is + an :math:`N \times N` matrix of boolean values where :math:`N` is the number + of orbitals. The nonzero elements of this matrix indicate where the diagonal + Coulomb matrices are allowed to be nonzero. Only the upper triangular part of + the matrix is used because the diagonal Coulomb matrices are symmetric. + + **"Z" representation** + + The "Z" representation of the double factorization is an alternative + representation that sometimes yields simpler quantum circuits. + + Under the Jordan-Wigner transformation, the number operators take the form + + .. math:: + + n^{(t)}_{i, \sigma} = \frac{(1 - z^{(t)}_{i, \sigma})}{2} + + where :math:`z^{(t)}_{i, \sigma}` is the Pauli Z operator in the rotated basis. + The "Z" representation is obtained by rewriting the two-body part in terms + of these Pauli Z operators and updating the one-body term as appropriate: + + .. math:: + + H = \sum_{pq, \sigma} \kappa'_{pq} a^\dagger_{p, \sigma} a_{q, \sigma} + + \frac18 \sum_t \sum_{ij, \sigma\tau}^* + Z^{(t)}_{ij} z^{(t)}_{i, \sigma} z^{(t)}_{j, \tau} + + \text{constant}'' + + where the asterisk denotes summation over indices :math:`ij, \sigma\tau` + where :math:`i \neq j` or :math:`\sigma \neq \tau`. + + Note: Currently, only real-valued two-body tensors are supported. + + Args: + one_body_tensor: The one-body tensor of the Hamiltonian. + two_body_tensor: The two-body tensor of the Hamiltonian. + z_representation: Whether to use the "Z" representation of the + low rank decomposition. + tol: Tolerance for error in the decomposition. + The error is defined as the maximum absolute difference between + an element of the original tensor and the corresponding element of + the reconstructed tensor. + max_vecs: An optional limit on the number of terms to keep in the + decomposition of the two-body tensor. This argument overrides ``tol``. + optimize: Whether to optimize the tensors returned by the decomposition. + method: The optimization method. See the documentation of + `scipy.optimize.minimize`_ for possible values. + callback: Callback function for the optimization. See the documentation of + `scipy.optimize.minimize`_ for usage. + options: Options for the optimization. See the documentation of + `scipy.optimize.minimize`_ for usage. + diag_coulomb_mask: Diagonal Coulomb matrix mask to use in the optimization. + This is a matrix of boolean values where the nonzero elements indicate + where the diagonal Coulomb matrices returned by optimization are allowed + to be nonzero. This parameter is only used if `optimize` is set to + True, and only the upper triangular part of the matrix is used. + cholesky: Whether to perform the factorization using a modified Cholesky + decomposition. If False, a full eigenvalue decomposition is used + instead, which can be much more expensive. This argument is ignored if + ``optimize`` is set to True. + + Returns: + The double-factorized Hamiltonian. + + References: + - `arXiv:1808.02625`_ + - `arXiv:2104.08957`_ + + .. _arXiv:1808.02625: https://arxiv.org/abs/1808.02625 + .. _arXiv:2104.08957: https://arxiv.org/abs/2104.08957 + .. _scipy.optimize.minimize: https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html + """ + one_body_tensor = hamiltonian.one_body_tensor - 0.5 * np.einsum( + "prqr", hamiltonian.two_body_tensor + ) + + diag_coulomb_mats, orbital_rotations = double_factorized( + hamiltonian.two_body_tensor, + tol=tol, + max_vecs=max_vecs, + optimize=optimize, + method=method, + options=options, + diag_coulomb_mask=diag_coulomb_mask, + cholesky=cholesky, + ) + df_hamiltonian = DoubleFactorizedHamiltonian( + one_body_tensor=one_body_tensor, + diag_coulomb_mats=diag_coulomb_mats, + orbital_rotations=orbital_rotations, + ) + + if z_representation: + df_hamiltonian = df_hamiltonian.to_z_representation() + + return df_hamiltonian
@@ -186,165 +346,6 @@

Source code for ffsim.hamiltonians.double_factorized_hamiltonian

diag_coulomb_mats ) return one_body_correction, constant_correction - - -
-[docs] -def double_factorized_hamiltonian( - hamiltonian: MolecularHamiltonian, - *, - z_representation: bool = False, - tol: float = 1e-8, - max_vecs: int | None = None, - optimize: bool = False, - method: str = "L-BFGS-B", - options: dict | None = None, - diag_coulomb_mask: np.ndarray | None = None, - cholesky: bool = True, -) -> DoubleFactorizedHamiltonian: - r"""Double-factorized decomposition of a molecular Hamiltonian. - - The double-factorized decomposition acts on a Hamiltonian of the form - - .. math:: - - H = \sum_{pq, \sigma} h_{pq} a^\dagger_{p, \sigma} a_{q, \sigma} - + \frac12 \sum_{pqrs, \sigma \tau} h_{pqrs} - a^\dagger_{p, \sigma} a^\dagger_{r, \tau} a_{s, \tau} a_{q, \sigma} - + \text{constant}. - - The Hamiltonian is decomposed into the double-factorized form - - .. math:: - - H = \sum_{pq, \sigma} \kappa_{pq} a^\dagger_{p, \sigma} a_{q, \sigma} - + \frac12 \sum_t \sum_{ij, \sigma\tau} - Z^{(t)}_{ij} n^{(t)}_{i, \sigma} n^{(t)}_{j, \tau} - + \text{constant}'. - - where - - .. math:: - - n^{(t)}_{i, \sigma} = \sum_{pq} U^{(t)}_{pi} - a^\dagger_{p, \sigma} a^\dagger_{q, \sigma} U^{(t)}_{qi}. - - Here :math:`U^{(t)}_{ij}` and :math:`Z^{(t)}_{ij}` are tensors that are output by - the decomposition, and :math:`\kappa_{pq}` is an updated one-body tensor. - Each matrix :math:`U^{(t)}` is guaranteed to be unitary so that the - :math:`n^{(t)}_{i, \sigma}` are number operators in a rotated basis, and - each :math:`Z^{(t)}` is a real symmetric matrix. - The number of terms :math:`t` in the decomposition depends on the allowed - error threshold. A larger error threshold leads to a smaller number of terms. - Furthermore, the `max_rank` parameter specifies an optional upper bound - on :math:`t`. - - The default behavior of this routine is to perform a straightforward - "exact" factorization of the two-body tensor based on a nested - eigenvalue decomposition. Additionally, one can choose to optimize the - coefficients stored in the tensor to achieve a "compressed" factorization. - This option is enabled by setting the `optimize` parameter to `True`. - The optimization attempts to minimize a least-squares objective function - quantifying the error in the low rank decomposition. - It uses `scipy.optimize.minimize`, passing both the objective function - and its gradient. The core tensors returned by the optimization can be optionally - constrained to have only certain elements allowed to be nonzero. This is achieved by - passing the `diag_coulomb_mask` parameter, which is an :math:`N \times N` matrix of - boolean values where :math:`N` is the number of orbitals. The nonzero elements of - this matrix indicate where the core tensors are allowed to be nonzero. Only the - upper triangular part of the matrix is used because the core tensors are symmetric. - - **"Z" representation** - - The "Z" representation of the double factorization is an alternative - representation that sometimes yields simpler quantum circuits. - - Under the Jordan-Wigner transformation, the number operators take the form - - .. math:: - - n^{(t)}_{i, \sigma} = \frac{(1 - z^{(t)}_{i, \sigma})}{2} - - where :math:`z^{(t)}_{i, \sigma}` is the Pauli Z operator in the rotated basis. - The "Z" representation is obtained by rewriting the two-body part in terms - of these Pauli Z operators and updating the one-body term as appropriate: - - .. math:: - - H = \sum_{pq, \sigma} \kappa'_{pq} a^\dagger_{p, \sigma} a_{q, \sigma} - + \frac18 \sum_t \sum_{ij, \sigma\tau}^* - Z^{(t)}_{ij} z^{(t)}_{i, \sigma} z^{(t)}_{j, \tau} - + \text{constant}'' - - where the asterisk denotes summation over indices :math:`ij, \sigma\tau` - where :math:`i \neq j` or :math:`\sigma \neq \tau`. - - Note: Currently, only real-valued two-body tensors are supported. - - Args: - one_body_tensor: The one-body tensor of the Hamiltonian. - two_body_tensor: The two-body tensor of the Hamiltonian. - z_representation: Whether to use the "Z" representation of the - low rank decomposition. - tol: Tolerance for error in the decomposition. - The error is defined as the maximum absolute difference between - an element of the original tensor and the corresponding element of - the reconstructed tensor. - max_vecs: An optional limit on the number of terms to keep in the decomposition - of the two-body tensor. This argument overrides ``tol``. - optimize: Whether to optimize the tensors returned by the decomposition. - method: The optimization method. See the documentation of - `scipy.optimize.minimize`_ for possible values. - callback: Callback function for the optimization. See the documentation of - `scipy.optimize.minimize`_ for usage. - options: Options for the optimization. See the documentation of - `scipy.optimize.minimize`_ for usage. - diag_coulomb_mask: Diagonal Coulomb matrix mask to use in the optimization. - This is a matrix of boolean values where the nonzero elements indicate where - the diagonal coulomb matrices returned by optimization are allowed to be - nonzero. This parameter is only used if `optimize` is set to `True`, and - only the upper triangular part of the matrix is used. - cholesky: Whether to perform the factorization using a modified Cholesky - decomposition. If False, a full eigenvalue decomposition is used instead, - which can be much more expensive. This argument is ignored if ``optimize`` - is set to True. - - Returns: - The double-factorized Hamiltonian. - - References: - - `arXiv:1808.02625`_ - - `arXiv:2104.08957`_ - - .. _arXiv:1808.02625: https://arxiv.org/abs/1808.02625 - .. _arXiv:2104.08957: https://arxiv.org/abs/2104.08957 - .. _scipy.optimize.minimize: https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html - """ - one_body_tensor = hamiltonian.one_body_tensor - 0.5 * np.einsum( - "prqr", hamiltonian.two_body_tensor - ) - - diag_coulomb_mats, orbital_rotations = double_factorized( - hamiltonian.two_body_tensor, - tol=tol, - max_vecs=max_vecs, - optimize=optimize, - method=method, - options=options, - diag_coulomb_mask=diag_coulomb_mask, - cholesky=cholesky, - ) - df_hamiltonian = DoubleFactorizedHamiltonian( - one_body_tensor=one_body_tensor, - diag_coulomb_mats=diag_coulomb_mats, - orbital_rotations=orbital_rotations, - ) - - if z_representation: - df_hamiltonian = df_hamiltonian.to_z_representation() - - return df_hamiltonian
-
diff --git a/_sources/tutorials/03-double-factorized.ipynb.txt b/_sources/tutorials/03-double-factorized.ipynb.txt index 935060978..589df6c62 100644 --- a/_sources/tutorials/03-double-factorized.ipynb.txt +++ b/_sources/tutorials/03-double-factorized.ipynb.txt @@ -63,14 +63,16 @@ "mol_hamiltonian = mol_data.hamiltonian\n", "\n", "# Get the Hamiltonian in the double-factorized representation\n", - "df_hamiltonian = ffsim.double_factorized_hamiltonian(mol_hamiltonian)" + "df_hamiltonian = ffsim.DoubleFactorizedHamiltonian.from_molecular_hamiltonian(\n", + " mol_hamiltonian\n", + ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The function `double_factorized_hamiltonian` returns an object of type `DoubleFactorizedHamiltonian` which is just a dataclass that stores the updated one-body-tensor, diagonal Coulomb matrices, and orbital rotations. In the cell below, we print out the tensors describing the original and double-factorized representations." + "Here, `mol_hamiltonian` is an instance of `MolecularHamiltonian`, a dataclass that stores the one- and two-body tensors, and `df_hamiltonian` is an instance of `DoubleFactorizedHamiltonian`, a dataclass that stores the updated one-body-tensor, diagonal Coulomb matrices, and orbital rotations. In the cell below, we print out the tensors describing the original and double-factorized representations." ] }, { @@ -404,7 +406,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.11" + "version": "3.10.13" }, "orig_nbformat": 4 }, diff --git a/api/generated/ffsim.hamiltonians.html b/api/generated/ffsim.hamiltonians.html index ad02c7c7f..ff84fc0fe 100644 --- a/api/generated/ffsim.hamiltonians.html +++ b/api/generated/ffsim.hamiltonians.html @@ -110,39 +110,9 @@

Submodules -
-property norb
-

The number of spatial orbitals.

-
- -
-
-to_number_representation()[source]
-

Return the Hamiltonian in the “number” representation.

-
-
Return type:
-

DoubleFactorizedHamiltonian

-
-
-
-
-
-to_z_representation()[source]
-

Return the Hamiltonian in the “Z” representation.

-
-
Return type:
-

DoubleFactorizedHamiltonian

-
-
-
- - - -
-
-ffsim.hamiltonians.double_factorized_hamiltonian.double_factorized_hamiltonian(hamiltonian, *, z_representation=False, tol=1e-08, max_vecs=None, optimize=False, method='L-BFGS-B', options=None, diag_coulomb_mask=None, cholesky=True)[source]
+
+static from_molecular_hamiltonian(hamiltonian, *, z_representation=False, tol=1e-08, max_vecs=None, optimize=False, method='L-BFGS-B', options=None, diag_coulomb_mask=None, cholesky=True)[source]

Double-factorized decomposition of a molecular Hamiltonian.

The double-factorized decomposition acts on a Hamiltonian of the form

-

Here \(U^{(t)}_{ij}\) and \(Z^{(t)}_{ij}\) are tensors that are output by -the decomposition, and \(\kappa_{pq}\) is an updated one-body tensor. +

Here \(U^{(t)}_{ij}\) and \(Z^{(t)}_{ij}\) are tensors that are output +by the decomposition, and \(\kappa_{pq}\) is an updated one-body tensor. Each matrix \(U^{(t)}\) is guaranteed to be unitary so that the \(n^{(t)}_{i, \sigma}\) are number operators in a rotated basis, and each \(Z^{(t)}\) is a real symmetric matrix. @@ -177,12 +147,13 @@

Submodules\(N \times N\) matrix of -boolean values where \(N\) is the number of orbitals. The nonzero elements of -this matrix indicate where the core tensors are allowed to be nonzero. Only the -upper triangular part of the matrix is used because the core tensors are symmetric.

+and its gradient. The diagonal coulomb matrices returned by the optimization +can be optionally constrained to have only certain elements allowed to be +nonzero. This is achieved by passing the diag_coulomb_mask parameter, which is +an \(N \times N\) matrix of boolean values where \(N\) is the number +of orbitals. The nonzero elements of this matrix indicate where the diagonal +Coulomb matrices are allowed to be nonzero. Only the upper triangular part of +the matrix is used because the diagonal Coulomb matrices are symmetric.

“Z” representation

The “Z” representation of the double factorization is an alternative representation that sometimes yields simpler quantum circuits.

@@ -211,8 +182,8 @@

SubmodulesOptional[int]) – An optional limit on the number of terms to keep in the decomposition -of the two-body tensor. This argument overrides tol.

+
  • max_vecs (Optional[int]) – An optional limit on the number of terms to keep in the +decomposition of the two-body tensor. This argument overrides tol.

  • optimize (bool) – Whether to optimize the tensors returned by the decomposition.

  • method (str) – The optimization method. See the documentation of scipy.optimize.minimize for possible values.

  • @@ -221,14 +192,14 @@

    SubmodulesOptional[dict]) – Options for the optimization. See the documentation of scipy.optimize.minimize for usage.

  • diag_coulomb_mask (Optional[ndarray]) – Diagonal Coulomb matrix mask to use in the optimization. -This is a matrix of boolean values where the nonzero elements indicate where -the diagonal coulomb matrices returned by optimization are allowed to be -nonzero. This parameter is only used if optimize is set to True, and -only the upper triangular part of the matrix is used.

  • +This is a matrix of boolean values where the nonzero elements indicate +where the diagonal Coulomb matrices returned by optimization are allowed +to be nonzero. This parameter is only used if optimize is set to +True, and only the upper triangular part of the matrix is used.

  • cholesky (bool) – Whether to perform the factorization using a modified Cholesky -decomposition. If False, a full eigenvalue decomposition is used instead, -which can be much more expensive. This argument is ignored if optimize -is set to True.

  • +decomposition. If False, a full eigenvalue decomposition is used +instead, which can be much more expensive. This argument is ignored if +optimize is set to True.

    Return type:
    @@ -245,6 +216,36 @@

    Submodules +
    +property norb
    +

    The number of spatial orbitals.

    +

    + +
    +
    +to_number_representation()[source]
    +

    Return the Hamiltonian in the “number” representation.

    +
    +
    Return type:
    +

    DoubleFactorizedHamiltonian

    +
    +
    +
    + +
    +
    +to_z_representation()[source]
    +

    Return the Hamiltonian in the “Z” representation.

    +
    +
    Return type:
    +

    DoubleFactorizedHamiltonian

    +
    +
    +
    + + +

    ffsim.hamiltonians.molecular_hamiltonian module

    diff --git a/api/generated/ffsim.html b/api/generated/ffsim.html index e332543e2..e0148a0d6 100644 --- a/api/generated/ffsim.html +++ b/api/generated/ffsim.html @@ -102,12 +102,12 @@

    SubpackagesDoubleFactorizedHamiltonian.orbital_rotations
  • DoubleFactorizedHamiltonian.constant
  • DoubleFactorizedHamiltonian.z_representation
  • +
  • DoubleFactorizedHamiltonian.from_molecular_hamiltonian()
  • DoubleFactorizedHamiltonian.norb
  • DoubleFactorizedHamiltonian.to_number_representation()
  • DoubleFactorizedHamiltonian.to_z_representation()
  • -
  • double_factorized_hamiltonian()
  • ffsim.hamiltonians.molecular_hamiltonian module
  • final_orbital_rotation (ffsim.variational.lucj.UCJOperator attribute) +
  • +
  • from_molecular_hamiltonian() (ffsim.hamiltonians.double_factorized_hamiltonian.DoubleFactorizedHamiltonian static method)
  • from_parameters() (ffsim.variational.lucj.UCJOperator static method)
  • diff --git a/objects.inv b/objects.inv index 56ad4d828b3945cb2d448f208488f46e8d443996..fc16251cbaccf73a83ca266342d24e9864bc83c5 100644 GIT binary patch delta 4119 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 delta 4105 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 representation of the molecular Hamiltonianmol_hamiltonian = mol_data.hamiltonian # Get the Hamiltonian in the double-factorized representation -df_hamiltonian = ffsim.double_factorized_hamiltonian(mol_hamiltonian) +df_hamiltonian = ffsim.DoubleFactorizedHamiltonian.from_molecular_hamiltonian( + mol_hamiltonian +) @@ -96,7 +98,7 @@

    Double-factorized representation of the molecular Hamiltoniandouble_factorized_hamiltonian returns an object of type DoubleFactorizedHamiltonian which is just a dataclass that stores the updated one-body-tensor, diagonal Coulomb matrices, and orbital rotations. In the cell below, we print out the tensors describing the original and double-factorized representations.

    +

    Here, mol_hamiltonian is an instance of MolecularHamiltonian, a dataclass that stores the one- and two-body tensors, and df_hamiltonian is an instance of DoubleFactorizedHamiltonian, a dataclass that stores the updated one-body-tensor, diagonal Coulomb matrices, and orbital rotations. In the cell below, we print out the tensors describing the original and double-factorized representations.

    Now, we set the evolution time and calculate the exact result of time evolution by directly exponentiating the Hamiltonian using SciPy. Later, we will compare the result of our approximate time evolution with this exact result.

    @@ -352,7 +354,7 @@

    Implementing Trotter simulation of the double-factorized Hamiltonian
    -Fidelity of Trotter-evolved state with exact state: 0.9990275744083491
    +Fidelity of Trotter-evolved state with exact state: 0.999027574408349
     

    The fidelity of the final result can be improved by increasing the number of Trotter steps.

    @@ -379,7 +381,7 @@

    Implementing Trotter simulation of the double-factorized Hamiltonian
    -Fidelity of Trotter-evolved state with exact state: 0.9999906233109653
    +Fidelity of Trotter-evolved state with exact state: 0.9999906233109657
     

    As mentioned above, ffsim already includes functionality for Trotter simulation of double-factorized Hamiltonians. The implementation in ffsim includes higher-order Trotter-Suzuki formulas. The first-order asymmetric formula that we just implemented corresponds to order=0 in ffsim’s implementation. order=1 corresponds to the first-order symmetric (commonly known as the second-order) formula, order=2 corresponds to the second-order symmetric (fourth-order) formula, and so on.

    @@ -408,7 +410,7 @@

    Implementing Trotter simulation of the double-factorized Hamiltonian
    -Fidelity of Trotter-evolved state with exact state: 0.9999906233109653
    +Fidelity of Trotter-evolved state with exact state: 0.9999906233109657
     

    A higher order formula achieves a higher fidelity with fewer Trotter steps:

    @@ -436,7 +438,7 @@

    Implementing Trotter simulation of the double-factorized Hamiltonian
    -Fidelity of Trotter-evolved state with exact state: 0.9999999336740059
    +Fidelity of Trotter-evolved state with exact state: 0.9999999336740057
     

    diff --git a/tutorials/03-double-factorized.ipynb b/tutorials/03-double-factorized.ipynb index 2cb8abca1..09532880c 100644 --- a/tutorials/03-double-factorized.ipynb +++ b/tutorials/03-double-factorized.ipynb @@ -43,10 +43,10 @@ "execution_count": 1, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:58.908837Z", - "iopub.status.busy": "2023-10-19T14:39:58.908499Z", - "iopub.status.idle": "2023-10-19T14:39:59.292292Z", - "shell.execute_reply": "2023-10-19T14:39:59.291735Z" + "iopub.execute_input": "2023-10-19T16:27:41.295062Z", + "iopub.status.busy": "2023-10-19T16:27:41.294805Z", + "iopub.status.idle": "2023-10-19T16:27:41.768940Z", + "shell.execute_reply": "2023-10-19T16:27:41.768320Z" } }, "outputs": [ @@ -78,14 +78,16 @@ "mol_hamiltonian = mol_data.hamiltonian\n", "\n", "# Get the Hamiltonian in the double-factorized representation\n", - "df_hamiltonian = ffsim.double_factorized_hamiltonian(mol_hamiltonian)" + "df_hamiltonian = ffsim.DoubleFactorizedHamiltonian.from_molecular_hamiltonian(\n", + " mol_hamiltonian\n", + ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The function `double_factorized_hamiltonian` returns an object of type `DoubleFactorizedHamiltonian` which is just a dataclass that stores the updated one-body-tensor, diagonal Coulomb matrices, and orbital rotations. In the cell below, we print out the tensors describing the original and double-factorized representations." + "Here, `mol_hamiltonian` is an instance of `MolecularHamiltonian`, a dataclass that stores the one- and two-body tensors, and `df_hamiltonian` is an instance of `DoubleFactorizedHamiltonian`, a dataclass that stores the updated one-body-tensor, diagonal Coulomb matrices, and orbital rotations. In the cell below, we print out the tensors describing the original and double-factorized representations." ] }, { @@ -93,10 +95,10 @@ "execution_count": 2, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:59.296046Z", - "iopub.status.busy": "2023-10-19T14:39:59.295505Z", - "iopub.status.idle": "2023-10-19T14:39:59.303680Z", - "shell.execute_reply": "2023-10-19T14:39:59.303208Z" + "iopub.execute_input": "2023-10-19T16:27:41.797788Z", + "iopub.status.busy": "2023-10-19T16:27:41.796959Z", + "iopub.status.idle": "2023-10-19T16:27:41.805806Z", + "shell.execute_reply": "2023-10-19T16:27:41.805115Z" } }, "outputs": [ @@ -111,44 +113,44 @@ " [-3.07220771e-16 -6.77238770e-01]]\n", "\n", "Two-body tensor:\n", - "[[[[5.23173938e-01 1.94289029e-16]\n", - " [1.94289029e-16 5.33545754e-01]]\n", + "[[[[5.23173938e-01 1.57437591e-16]\n", + " [1.57437591e-16 5.33545754e-01]]\n", "\n", - " [[1.94289029e-16 2.48240570e-01]\n", - " [2.48240570e-01 8.32667268e-17]]]\n", + " [[2.12704463e-16 2.48240570e-01]\n", + " [2.48240570e-01 1.61492903e-16]]]\n", "\n", "\n", - " [[[1.94289029e-16 2.48240570e-01]\n", - " [2.48240570e-01 8.32667268e-17]]\n", + " [[[2.12704463e-16 2.48240570e-01]\n", + " [2.48240570e-01 1.61492903e-16]]\n", "\n", - " [[5.33545754e-01 1.11022302e-16]\n", - " [1.11022302e-16 5.53132024e-01]]]]\n", + " [[5.33545754e-01 1.24884750e-16]\n", + " [1.24884750e-16 5.53132024e-01]]]]\n", "\n", "Double-factorized representation\n", "--------------------------------\n", "One-body tensor:\n", - "[[-1.21318608e+00 -4.05183033e-16]\n", - " [-4.59876437e-16 -1.07792507e+00]]\n", + "[[-1.21318608e+00 -4.25870402e-16]\n", + " [-4.76015378e-16 -1.07792507e+00]]\n", "\n", "Diagonal Coulomb matrices:\n", - "[[[ 5.14653029e-001 5.33545754e-001]\n", - " [ 5.33545754e-001 5.53132024e-001]]\n", + "[[[ 5.14653029e-01 5.33545754e-01]\n", + " [ 5.33545754e-01 5.53132024e-01]]\n", "\n", - " [[ 2.48240570e-001 -2.48240570e-001]\n", - " [-2.48240570e-001 2.48240570e-001]]\n", + " [[ 2.48240570e-01 -2.48240570e-01]\n", + " [-2.48240570e-01 2.48240570e-01]]\n", "\n", - " [[ 5.96958401e-121 -7.13206008e-062]\n", - " [-7.13206008e-062 8.52090881e-003]]]\n", + " [[ 1.50800163e-59 -3.58462611e-31]\n", + " [-3.58462611e-31 8.52090881e-03]]]\n", "\n", "Orbital rotations:\n", - "[[[-1.00000000e+00 4.25128053e-15]\n", - " [ 4.25128053e-15 1.00000000e+00]]\n", + "[[[-1.00000000e+00 8.24520980e-15]\n", + " [ 8.24520980e-15 1.00000000e+00]]\n", "\n", - " [[ 7.07106781e-01 -7.07106781e-01]\n", - " [-7.07106781e-01 -7.07106781e-01]]\n", + " [[-7.07106781e-01 -7.07106781e-01]\n", + " [ 7.07106781e-01 -7.07106781e-01]]\n", "\n", - " [[ 2.89310728e-30 -1.00000000e+00]\n", - " [-1.00000000e+00 -2.89310728e-30]]]\n" + " [[ 6.48603030e-15 -1.00000000e+00]\n", + " [-1.00000000e+00 -6.48603030e-15]]]\n" ] } ], @@ -227,10 +229,10 @@ "execution_count": 3, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:59.307553Z", - "iopub.status.busy": "2023-10-19T14:39:59.306455Z", - "iopub.status.idle": "2023-10-19T14:39:59.312345Z", - "shell.execute_reply": "2023-10-19T14:39:59.311867Z" + "iopub.execute_input": "2023-10-19T16:27:41.808878Z", + "iopub.status.busy": "2023-10-19T16:27:41.808498Z", + "iopub.status.idle": "2023-10-19T16:27:41.813796Z", + "shell.execute_reply": "2023-10-19T16:27:41.813248Z" } }, "outputs": [], @@ -285,10 +287,10 @@ "execution_count": 4, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:59.315343Z", - "iopub.status.busy": "2023-10-19T14:39:59.315133Z", - "iopub.status.idle": "2023-10-19T14:39:59.319932Z", - "shell.execute_reply": "2023-10-19T14:39:59.319386Z" + "iopub.execute_input": "2023-10-19T16:27:41.816718Z", + "iopub.status.busy": "2023-10-19T16:27:41.816364Z", + "iopub.status.idle": "2023-10-19T16:27:41.820574Z", + "shell.execute_reply": "2023-10-19T16:27:41.820031Z" } }, "outputs": [], @@ -325,10 +327,10 @@ "execution_count": 5, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:59.322653Z", - "iopub.status.busy": "2023-10-19T14:39:59.322251Z", - "iopub.status.idle": "2023-10-19T14:39:59.327160Z", - "shell.execute_reply": "2023-10-19T14:39:59.326695Z" + "iopub.execute_input": "2023-10-19T16:27:41.823525Z", + "iopub.status.busy": "2023-10-19T16:27:41.823163Z", + "iopub.status.idle": "2023-10-19T16:27:41.828409Z", + "shell.execute_reply": "2023-10-19T16:27:41.827885Z" } }, "outputs": [ @@ -336,7 +338,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Hartree Fock energy: -0.837796382593709\n" + "Hartree Fock energy: -0.8377963825937088\n" ] } ], @@ -367,10 +369,10 @@ "execution_count": 6, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:59.329875Z", - "iopub.status.busy": "2023-10-19T14:39:59.329325Z", - "iopub.status.idle": "2023-10-19T14:39:59.339042Z", - "shell.execute_reply": "2023-10-19T14:39:59.338412Z" + "iopub.execute_input": "2023-10-19T16:27:41.831595Z", + "iopub.status.busy": "2023-10-19T16:27:41.831104Z", + "iopub.status.idle": "2023-10-19T16:27:41.842211Z", + "shell.execute_reply": "2023-10-19T16:27:41.841656Z" } }, "outputs": [ @@ -409,10 +411,10 @@ "execution_count": 7, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:59.341671Z", - "iopub.status.busy": "2023-10-19T14:39:59.341479Z", - "iopub.status.idle": "2023-10-19T14:39:59.349853Z", - "shell.execute_reply": "2023-10-19T14:39:59.349232Z" + "iopub.execute_input": "2023-10-19T16:27:41.845098Z", + "iopub.status.busy": "2023-10-19T16:27:41.844747Z", + "iopub.status.idle": "2023-10-19T16:27:41.853809Z", + "shell.execute_reply": "2023-10-19T16:27:41.853262Z" } }, "outputs": [ @@ -420,7 +422,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Fidelity of Trotter-evolved state with exact state: 0.9990275744083491\n" + "Fidelity of Trotter-evolved state with exact state: 0.999027574408349\n" ] } ], @@ -450,10 +452,10 @@ "execution_count": 8, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:59.353772Z", - "iopub.status.busy": "2023-10-19T14:39:59.353568Z", - "iopub.status.idle": "2023-10-19T14:39:59.390939Z", - "shell.execute_reply": "2023-10-19T14:39:59.389931Z" + "iopub.execute_input": "2023-10-19T16:27:41.856607Z", + "iopub.status.busy": "2023-10-19T16:27:41.856244Z", + "iopub.status.idle": "2023-10-19T16:27:41.899624Z", + "shell.execute_reply": "2023-10-19T16:27:41.898940Z" } }, "outputs": [ @@ -461,7 +463,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Fidelity of Trotter-evolved state with exact state: 0.9999906233109653\n" + "Fidelity of Trotter-evolved state with exact state: 0.9999906233109657\n" ] } ], @@ -493,10 +495,10 @@ "execution_count": 9, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:59.393689Z", - "iopub.status.busy": "2023-10-19T14:39:59.393490Z", - "iopub.status.idle": "2023-10-19T14:39:59.425221Z", - "shell.execute_reply": "2023-10-19T14:39:59.424460Z" + "iopub.execute_input": "2023-10-19T16:27:41.902790Z", + "iopub.status.busy": "2023-10-19T16:27:41.902330Z", + "iopub.status.idle": "2023-10-19T16:27:41.945843Z", + "shell.execute_reply": "2023-10-19T16:27:41.945194Z" } }, "outputs": [ @@ -504,7 +506,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Fidelity of Trotter-evolved state with exact state: 0.9999906233109653\n" + "Fidelity of Trotter-evolved state with exact state: 0.9999906233109657\n" ] } ], @@ -535,10 +537,10 @@ "execution_count": 10, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:39:59.427658Z", - "iopub.status.busy": "2023-10-19T14:39:59.427469Z", - "iopub.status.idle": "2023-10-19T14:39:59.443022Z", - "shell.execute_reply": "2023-10-19T14:39:59.442331Z" + "iopub.execute_input": "2023-10-19T16:27:41.949120Z", + "iopub.status.busy": "2023-10-19T16:27:41.948837Z", + "iopub.status.idle": "2023-10-19T16:27:41.967055Z", + "shell.execute_reply": "2023-10-19T16:27:41.966238Z" } }, "outputs": [ @@ -546,7 +548,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Fidelity of Trotter-evolved state with exact state: 0.9999999336740059\n" + "Fidelity of Trotter-evolved state with exact state: 0.9999999336740057\n" ] } ], diff --git a/tutorials/04-lucj.html b/tutorials/04-lucj.html index 4c09e8dcc..90fc1c8d4 100644 --- a/tutorials/04-lucj.html +++ b/tutorials/04-lucj.html @@ -94,8 +94,8 @@

    The local unitary cluster Jastrow (LUCJ) ansatz
    -converged SCF energy = -77.4456267643961
    -CASCI E = -77.6290254326717  E(CI) = -3.57322412553863  S^2 = 0.0000000
    +converged SCF energy = -77.4456267643962
    +CASCI E = -77.6290254326717  E(CI) = -3.57322412553862  S^2 = 0.0000000
     
    @@ -151,8 +151,8 @@

    The unitary cluster Jastrow (UCJ) ansatz
    -E(CCSD) = -77.49387212754462  E_corr = -0.04824536314851573
    -Energy at initialialization: -77.46975600021692
    +E(CCSD) = -77.49387212754473  E_corr = -0.04824536314851328
    +Energy at initialialization: -77.46975600021656
     

    To facilitate variational optimization of the ansatz, UCJOperator implements methods for conversion to and from a vector of real-valued parameters. The precise relation between a parameter vector and the matrices of the UCJ operator is somewhat complicated. In short, the parameter vector stores the entries of the UCJ matrices in a non-redundant way (for the orbital rotations, the parameter vector actually stores the entries of their generators.)

    @@ -193,12 +193,12 @@

    The unitary cluster Jastrow (UCJ) ansatz\n" ] } @@ -252,10 +252,10 @@ "execution_count": 4, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:41:13.662631Z", - "iopub.status.busy": "2023-10-19T14:41:13.661664Z", - "iopub.status.idle": "2023-10-19T14:42:35.356542Z", - "shell.execute_reply": "2023-10-19T14:42:35.356016Z" + "iopub.execute_input": "2023-10-19T16:29:31.895316Z", + "iopub.status.busy": "2023-10-19T16:29:31.894949Z", + "iopub.status.idle": "2023-10-19T16:30:19.776632Z", + "shell.execute_reply": "2023-10-19T16:30:19.776089Z" } }, "outputs": [ @@ -267,12 +267,12 @@ " message: CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH\n", " success: True\n", " status: 0\n", - " fun: -77.62881470757267\n", - " x: [-3.795e+00 -1.386e+00 ... -4.020e-01 1.230e-01]\n", - " nit: 585\n", - " jac: [ 4.434e-04 -1.933e-04 ... 4.007e-04 -1.450e-04]\n", - " nfev: 29422\n", - " njev: 626\n", + " fun: -77.62873223663462\n", + " x: [-1.942e+00 3.888e-01 ... 3.479e-01 -8.915e-02]\n", + " nit: 285\n", + " jac: [ 1.563e-05 3.695e-05 ... -1.279e-05 -1.776e-04]\n", + " nfev: 14335\n", + " njev: 305\n", " hess_inv: <46x46 LbfgsInvHessProduct with dtype=float64>\n" ] } diff --git a/tutorials/05-fermion-operator.html b/tutorials/05-fermion-operator.html index 95315f332..f8a4dd5b1 100644 --- a/tutorials/05-fermion-operator.html +++ b/tutorials/05-fermion-operator.html @@ -78,8 +78,8 @@

    The FermionOperator class
     FermionOperator({
    -    (cre_a(0), des_a(3)): 0.5,
         (cre_b(1), des_b(5), cre_a(4)): 1+1j,
    +    (cre_a(0), des_a(3)): 0.5,
         (cre_a(3), des_a(0)): -0.25
     })
     
    @@ -99,7 +99,7 @@

    The FermionOperator class
    -'FermionOperator({((True, False, 0), (False, False, 3)): 0.5+0j, ((True, True, 1), (False, True, 5), (True, False, 4)): 1+1j, ((True, False, 3), (False, False, 0)): -0.25+0j})'
    +'FermionOperator({((True, True, 1), (False, True, 5), (True, False, 4)): 1+1j, ((True, False, 0), (False, False, 3)): 0.5+0j, ((True, False, 3), (False, False, 0)): -0.25+0j})'
     

    FermionOperators support arithmetic operations. Note that when multiplying a FermionOperator by a scalar, the scalar must go on the left, i.e. 2 * op and not op * 2.

    @@ -128,16 +128,16 @@

    The FermionOperator class
     FermionOperator({
         (des_a(3), des_b(3)): 0.0625,
    -    (cre_a(0), des_a(3), des_a(3), des_b(3)): -0.125,
    -    (cre_b(1), des_b(5), cre_a(4), des_a(3), des_b(3)): -0.25-0.25j,
    -    (cre_a(3), des_a(0)): -0.5,
         (cre_a(0), des_a(3), cre_b(2)): 0+0.5j,
    -    (cre_b(1), des_b(5), cre_a(4), cre_b(2)): -1+1j,
    -    (cre_a(0), des_a(3)): 1,
    -    (cre_b(1), des_b(5), cre_a(4)): 2+2j,
         (cre_a(3), des_a(0), des_a(3), des_b(3)): 0.0625,
    +    (cre_a(0), des_a(3)): 1,
         (cre_a(3), des_a(0), cre_b(2)): 0-0.25j,
    -    (cre_b(2)): 0-0.25j
    +    (cre_a(0), des_a(3), des_a(3), des_b(3)): -0.125,
    +    (cre_b(1), des_b(5), cre_a(4), cre_b(2)): -1+1j,
    +    (cre_b(2)): 0-0.25j,
    +    (cre_b(1), des_b(5), cre_a(4), des_a(3), des_b(3)): -0.25-0.25j,
    +    (cre_b(1), des_b(5), cre_a(4)): 2+2j,
    +    (cre_a(3), des_a(0)): -0.5
     })
     
    @@ -163,16 +163,16 @@

    The FermionOperator class
     FermionOperator({
         (des_a(3), des_b(3)): 0-1.25j,
    -    (cre_a(0), des_a(3), des_a(3), des_b(3)): 0+0.5j,
    -    (cre_b(1), des_b(5), cre_a(4), des_a(3), des_b(3)): -1+1j,
    -    (cre_a(3), des_a(0)): 0+3j,
         (cre_a(0), des_a(3), cre_b(2)): 2,
    -    (cre_b(1), des_b(5), cre_a(4), cre_b(2)): 4+4j,
    -    (cre_a(0), des_a(3)): 0-6j,
    -    (cre_b(1), des_b(5), cre_a(4)): 12-12j,
         (cre_a(3), des_a(0), des_a(3), des_b(3)): 0-0.25j,
    +    (cre_a(0), des_a(3)): 0-6j,
         (cre_a(3), des_a(0), cre_b(2)): -1,
    -    (cre_b(2)): -5
    +    (cre_a(0), des_a(3), des_a(3), des_b(3)): 0+0.5j,
    +    (cre_b(1), des_b(5), cre_a(4), cre_b(2)): 4+4j,
    +    (cre_b(2)): -5,
    +    (cre_b(1), des_b(5), cre_a(4), des_a(3), des_b(3)): -1+1j,
    +    (cre_b(1), des_b(5), cre_a(4)): 12-12j,
    +    (cre_a(3), des_a(0)): 0+3j
     })
     
    @@ -193,16 +193,16 @@

    The FermionOperator class
     FermionOperator({
    -    (cre_a(3), des_a(0)): 0+3j,
    -    (cre_b(2)): -5,
    -    (cre_b(1), cre_a(4), des_b(5), des_b(3), des_a(3)): -1+1j,
    -    (cre_b(2), cre_b(1), cre_a(4), des_b(5)): 4+4j,
    -    (cre_a(0), des_a(3)): 0-6j,
    -    (cre_b(2), cre_a(0), des_a(3)): 2,
    -    (cre_a(3), des_b(3), des_a(3), des_a(0)): 0+0.25j,
         (des_b(3), des_a(3)): 0+1.25j,
    +    (cre_b(2), cre_a(0), des_a(3)): 2,
    +    (cre_a(0), des_a(3)): 0-6j,
         (cre_b(2), cre_a(3), des_a(0)): -1,
    -    (cre_b(1), cre_a(4), des_b(5)): -12+12j
    +    (cre_b(1), cre_a(4), des_b(5)): -12+12j,
    +    (cre_b(2), cre_b(1), cre_a(4), des_b(5)): 4+4j,
    +    (cre_a(3), des_b(3), des_a(3), des_a(0)): 0+0.25j,
    +    (cre_a(3), des_a(0)): 0+3j,
    +    (cre_b(1), cre_a(4), des_b(5), des_b(3), des_a(3)): -1+1j,
    +    (cre_b(2)): -5
     })
     
    @@ -271,11 +271,11 @@

    The FermionOperator class
    -array([0.        +0.j        , 0.        +0.j        ,
    -       0.        +0.j        , 0.        +0.j        ,
    -       0.11889056-0.13114645j, 0.        +0.j        ,
    -       0.        +0.j        , 0.        +0.j        ,
    -       0.        +0.j        ])
    +array([0.        +0.j       , 0.        +0.j       ,
    +       0.        +0.j       , 0.        +0.j       ,
    +       0.14601055-0.2517831j, 0.        +0.j       ,
    +       0.        +0.j       , 0.        +0.j       ,
    +       0.        +0.j       ])
     

    It can also be passed into most linear algebra routines in scipy.sparse.linalg.

    diff --git a/tutorials/05-fermion-operator.ipynb b/tutorials/05-fermion-operator.ipynb index fa09bcb38..e5cda2ddd 100644 --- a/tutorials/05-fermion-operator.ipynb +++ b/tutorials/05-fermion-operator.ipynb @@ -29,10 +29,10 @@ "execution_count": 1, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:42:37.077633Z", - "iopub.status.busy": "2023-10-19T14:42:37.077306Z", - "iopub.status.idle": "2023-10-19T14:42:37.362479Z", - "shell.execute_reply": "2023-10-19T14:42:37.361769Z" + "iopub.execute_input": "2023-10-19T16:30:21.670393Z", + "iopub.status.busy": "2023-10-19T16:30:21.669989Z", + "iopub.status.idle": "2023-10-19T16:30:22.023880Z", + "shell.execute_reply": "2023-10-19T16:30:22.023224Z" } }, "outputs": [ @@ -40,8 +40,8 @@ "data": { "text/plain": [ "FermionOperator({\n", - " (cre_a(0), des_a(3)): 0.5,\n", " (cre_b(1), des_b(5), cre_a(4)): 1+1j,\n", + " (cre_a(0), des_a(3)): 0.5,\n", " (cre_a(3), des_a(0)): -0.25\n", "})" ] @@ -76,17 +76,17 @@ "execution_count": 2, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:42:37.367296Z", - "iopub.status.busy": "2023-10-19T14:42:37.366261Z", - "iopub.status.idle": "2023-10-19T14:42:37.372138Z", - "shell.execute_reply": "2023-10-19T14:42:37.371678Z" + "iopub.execute_input": "2023-10-19T16:30:22.028811Z", + "iopub.status.busy": "2023-10-19T16:30:22.027408Z", + "iopub.status.idle": "2023-10-19T16:30:22.034307Z", + "shell.execute_reply": "2023-10-19T16:30:22.033759Z" } }, "outputs": [ { "data": { "text/plain": [ - "'FermionOperator({((True, False, 0), (False, False, 3)): 0.5+0j, ((True, True, 1), (False, True, 5), (True, False, 4)): 1+1j, ((True, False, 3), (False, False, 0)): -0.25+0j})'" + "'FermionOperator({((True, True, 1), (False, True, 5), (True, False, 4)): 1+1j, ((True, False, 0), (False, False, 3)): 0.5+0j, ((True, False, 3), (False, False, 0)): -0.25+0j})'" ] }, "execution_count": 2, @@ -110,10 +110,10 @@ "execution_count": 3, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:42:37.375800Z", - "iopub.status.busy": "2023-10-19T14:42:37.374921Z", - "iopub.status.idle": "2023-10-19T14:42:37.381567Z", - "shell.execute_reply": "2023-10-19T14:42:37.381116Z" + "iopub.execute_input": "2023-10-19T16:30:22.037944Z", + "iopub.status.busy": "2023-10-19T16:30:22.037568Z", + "iopub.status.idle": "2023-10-19T16:30:22.044977Z", + "shell.execute_reply": "2023-10-19T16:30:22.044445Z" } }, "outputs": [ @@ -122,16 +122,16 @@ "text/plain": [ "FermionOperator({\n", " (des_a(3), des_b(3)): 0.0625,\n", - " (cre_a(0), des_a(3), des_a(3), des_b(3)): -0.125,\n", - " (cre_b(1), des_b(5), cre_a(4), des_a(3), des_b(3)): -0.25-0.25j,\n", - " (cre_a(3), des_a(0)): -0.5,\n", " (cre_a(0), des_a(3), cre_b(2)): 0+0.5j,\n", - " (cre_b(1), des_b(5), cre_a(4), cre_b(2)): -1+1j,\n", - " (cre_a(0), des_a(3)): 1,\n", - " (cre_b(1), des_b(5), cre_a(4)): 2+2j,\n", " (cre_a(3), des_a(0), des_a(3), des_b(3)): 0.0625,\n", + " (cre_a(0), des_a(3)): 1,\n", " (cre_a(3), des_a(0), cre_b(2)): 0-0.25j,\n", - " (cre_b(2)): 0-0.25j\n", + " (cre_a(0), des_a(3), des_a(3), des_b(3)): -0.125,\n", + " (cre_b(1), des_b(5), cre_a(4), cre_b(2)): -1+1j,\n", + " (cre_b(2)): 0-0.25j,\n", + " (cre_b(1), des_b(5), cre_a(4), des_a(3), des_b(3)): -0.25-0.25j,\n", + " (cre_b(1), des_b(5), cre_a(4)): 2+2j,\n", + " (cre_a(3), des_a(0)): -0.5\n", "})" ] }, @@ -169,10 +169,10 @@ "execution_count": 4, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:42:37.385304Z", - "iopub.status.busy": "2023-10-19T14:42:37.384396Z", - "iopub.status.idle": "2023-10-19T14:42:37.390385Z", - "shell.execute_reply": "2023-10-19T14:42:37.389901Z" + "iopub.execute_input": "2023-10-19T16:30:22.049374Z", + "iopub.status.busy": "2023-10-19T16:30:22.048155Z", + "iopub.status.idle": "2023-10-19T16:30:22.054897Z", + "shell.execute_reply": "2023-10-19T16:30:22.054383Z" } }, "outputs": [ @@ -181,16 +181,16 @@ "text/plain": [ "FermionOperator({\n", " (des_a(3), des_b(3)): 0-1.25j,\n", - " (cre_a(0), des_a(3), des_a(3), des_b(3)): 0+0.5j,\n", - " (cre_b(1), des_b(5), cre_a(4), des_a(3), des_b(3)): -1+1j,\n", - " (cre_a(3), des_a(0)): 0+3j,\n", " (cre_a(0), des_a(3), cre_b(2)): 2,\n", - " (cre_b(1), des_b(5), cre_a(4), cre_b(2)): 4+4j,\n", - " (cre_a(0), des_a(3)): 0-6j,\n", - " (cre_b(1), des_b(5), cre_a(4)): 12-12j,\n", " (cre_a(3), des_a(0), des_a(3), des_b(3)): 0-0.25j,\n", + " (cre_a(0), des_a(3)): 0-6j,\n", " (cre_a(3), des_a(0), cre_b(2)): -1,\n", - " (cre_b(2)): -5\n", + " (cre_a(0), des_a(3), des_a(3), des_b(3)): 0+0.5j,\n", + " (cre_b(1), des_b(5), cre_a(4), cre_b(2)): 4+4j,\n", + " (cre_b(2)): -5,\n", + " (cre_b(1), des_b(5), cre_a(4), des_a(3), des_b(3)): -1+1j,\n", + " (cre_b(1), des_b(5), cre_a(4)): 12-12j,\n", + " (cre_a(3), des_a(0)): 0+3j\n", "})" ] }, @@ -219,10 +219,10 @@ "execution_count": 5, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:42:37.394709Z", - "iopub.status.busy": "2023-10-19T14:42:37.393740Z", - "iopub.status.idle": "2023-10-19T14:42:37.399514Z", - "shell.execute_reply": "2023-10-19T14:42:37.399055Z" + "iopub.execute_input": "2023-10-19T16:30:22.058256Z", + "iopub.status.busy": "2023-10-19T16:30:22.057797Z", + "iopub.status.idle": "2023-10-19T16:30:22.064878Z", + "shell.execute_reply": "2023-10-19T16:30:22.064352Z" } }, "outputs": [ @@ -230,16 +230,16 @@ "data": { "text/plain": [ "FermionOperator({\n", - " (cre_a(3), des_a(0)): 0+3j,\n", - " (cre_b(2)): -5,\n", - " (cre_b(1), cre_a(4), des_b(5), des_b(3), des_a(3)): -1+1j,\n", - " (cre_b(2), cre_b(1), cre_a(4), des_b(5)): 4+4j,\n", - " (cre_a(0), des_a(3)): 0-6j,\n", - " (cre_b(2), cre_a(0), des_a(3)): 2,\n", - " (cre_a(3), des_b(3), des_a(3), des_a(0)): 0+0.25j,\n", " (des_b(3), des_a(3)): 0+1.25j,\n", + " (cre_b(2), cre_a(0), des_a(3)): 2,\n", + " (cre_a(0), des_a(3)): 0-6j,\n", " (cre_b(2), cre_a(3), des_a(0)): -1,\n", - " (cre_b(1), cre_a(4), des_b(5)): -12+12j\n", + " (cre_b(1), cre_a(4), des_b(5)): -12+12j,\n", + " (cre_b(2), cre_b(1), cre_a(4), des_b(5)): 4+4j,\n", + " (cre_a(3), des_b(3), des_a(3), des_a(0)): 0+0.25j,\n", + " (cre_a(3), des_a(0)): 0+3j,\n", + " (cre_b(1), cre_a(4), des_b(5), des_b(3), des_a(3)): -1+1j,\n", + " (cre_b(2)): -5\n", "})" ] }, @@ -264,10 +264,10 @@ "execution_count": 6, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:42:37.403183Z", - "iopub.status.busy": "2023-10-19T14:42:37.402262Z", - "iopub.status.idle": "2023-10-19T14:42:37.407487Z", - "shell.execute_reply": "2023-10-19T14:42:37.407040Z" + "iopub.execute_input": "2023-10-19T16:30:22.069240Z", + "iopub.status.busy": "2023-10-19T16:30:22.068020Z", + "iopub.status.idle": "2023-10-19T16:30:22.074090Z", + "shell.execute_reply": "2023-10-19T16:30:22.073516Z" } }, "outputs": [ @@ -297,10 +297,10 @@ "execution_count": 7, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:42:37.411097Z", - "iopub.status.busy": "2023-10-19T14:42:37.410179Z", - "iopub.status.idle": "2023-10-19T14:42:37.416471Z", - "shell.execute_reply": "2023-10-19T14:42:37.416023Z" + "iopub.execute_input": "2023-10-19T16:30:22.078346Z", + "iopub.status.busy": "2023-10-19T16:30:22.077123Z", + "iopub.status.idle": "2023-10-19T16:30:22.084444Z", + "shell.execute_reply": "2023-10-19T16:30:22.083907Z" } }, "outputs": [ @@ -340,21 +340,21 @@ "execution_count": 8, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:42:37.420049Z", - "iopub.status.busy": "2023-10-19T14:42:37.419152Z", - "iopub.status.idle": "2023-10-19T14:42:37.426669Z", - "shell.execute_reply": "2023-10-19T14:42:37.426204Z" + "iopub.execute_input": "2023-10-19T16:30:22.087872Z", + "iopub.status.busy": "2023-10-19T16:30:22.087478Z", + "iopub.status.idle": "2023-10-19T16:30:22.095690Z", + "shell.execute_reply": "2023-10-19T16:30:22.095163Z" } }, "outputs": [ { "data": { "text/plain": [ - "array([0. +0.j , 0. +0.j ,\n", - " 0. +0.j , 0. +0.j ,\n", - " 0.11889056-0.13114645j, 0. +0.j ,\n", - " 0. +0.j , 0. +0.j ,\n", - " 0. +0.j ])" + "array([0. +0.j , 0. +0.j ,\n", + " 0. +0.j , 0. +0.j ,\n", + " 0.14601055-0.2517831j, 0. +0.j ,\n", + " 0. +0.j , 0. +0.j ,\n", + " 0. +0.j ])" ] }, "execution_count": 8, @@ -379,10 +379,10 @@ "execution_count": 9, "metadata": { "execution": { - "iopub.execute_input": "2023-10-19T14:42:37.430250Z", - "iopub.status.busy": "2023-10-19T14:42:37.429345Z", - "iopub.status.idle": "2023-10-19T14:42:37.441262Z", - "shell.execute_reply": "2023-10-19T14:42:37.440811Z" + "iopub.execute_input": "2023-10-19T16:30:22.099160Z", + "iopub.status.busy": "2023-10-19T16:30:22.098684Z", + "iopub.status.idle": "2023-10-19T16:30:22.112817Z", + "shell.execute_reply": "2023-10-19T16:30:22.112282Z" } }, "outputs": [