├── requirements.txt
├── qpde-benchmark
├── __init__.py
├── utils.py
└── VQLS
│ └── VQLS-Tutorial.ipynb
├── setup.py
├── Updates
└── progress.md
├── .gitignore
├── README.md
├── LICENSE
└── tutorials
└── 1D_Poisson.ipynb
/requirements.txt:
--------------------------------------------------------------------------------
1 | scipy
2 | networkx>=2.5
3 | matplotlib
4 | interval
5 | tqdm
--------------------------------------------------------------------------------
/qpde-benchmark/__init__.py:
--------------------------------------------------------------------------------
1 | # Licensed under the Apache License, Version 2.0 (the "License");
2 | # you may not use this file except in compliance with the License.
3 | # You may obtain a copy of the License at
4 | #
5 | # http://www.apache.org/licenses/LICENSE-2.0
6 | #
7 | # Unless required by applicable law or agreed to in writing, software
8 | # distributed under the License is distributed on an "AS IS" BASIS,
9 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10 | # See the License for the specific language governing permissions and
11 | # limitations under the License.
12 |
13 | r"""
14 | Quantum PDE Library
15 | """
16 |
17 | name = "qpde_benchmark"
18 | __version__ = "0.0.1"
19 |
--------------------------------------------------------------------------------
/setup.py:
--------------------------------------------------------------------------------
1 | # Licensed under the Apache License, Version 2.0 (the "License");
2 | # you may not use this file except in compliance with the License.
3 | # You may obtain a copy of the License at
4 | #
5 | # http://www.apache.org/licenses/LICENSE-2.0
6 | #
7 | # Unless required by applicable law or agreed to in writing, software
8 | # distributed under the License is distributed on an "AS IS" BASIS,
9 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10 | # See the License for the specific language governing permissions and
11 | # limitations under the License.
12 |
13 | """
14 | Install library to site-packages
15 | """
16 |
17 | import setuptools
18 |
19 | with open("README.md", "r", encoding="utf-8") as fh:
20 | long_description = fh.read()
21 |
22 | setuptools.setup(
23 | name='qpde-benchmark',
24 | version='0.0.1',
25 | author='Zhixin(Jack) Song',
26 | author_email='zsong300@gatech.edu',
27 | description='Benchmark quantum solutions to solve PDE.',
28 | long_description=long_description,
29 | long_description_content_type="text/markdown",
30 | url='',
31 | packages=[],
32 | install_requires=['scipy', 'networkx>=2.5', 'matplotlib', 'interval', 'tqdm'],
33 | python_requires='>=3.6, <4',
34 | classifiers=[
35 | 'Programming Language :: Python :: 3',
36 | 'License :: OSI Approved :: Apache Software License',
37 | 'Operating System :: OS Independent',
38 | ],
39 | project_urls={
40 | 'Documentation': '',
41 | 'Source': '',
42 | 'Tracker': ''},)
43 |
--------------------------------------------------------------------------------
/qpde-benchmark/utils.py:
--------------------------------------------------------------------------------
1 | # Licensed under the Apache License, Version 2.0 (the "License");
2 | # you may not use this file except in compliance with the License.
3 | # You may obtain a copy of the License at
4 | #
5 | # http://www.apache.org/licenses/LICENSE-2.0
6 | #
7 | # Unless required by applicable law or agreed to in writing, software
8 | # distributed under the License is distributed on an "AS IS" BASIS,
9 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10 | # See the License for the specific language governing permissions and
11 | # limitations under the License.
12 |
13 | from functools import reduce
14 | from math import log2
15 | import numpy as np
16 | import paddle
17 | from paddle import add, to_tensor
18 | from paddle import kron as kron
19 | from paddle import matmul
20 | from paddle import transpose
21 | from paddle import concat, ones
22 | from paddle import zeros
23 |
24 | __all__ = [
25 | "partial_trace"
26 | ]
27 |
28 |
29 | def partial_trace(rho_AB, dim1, dim2, A_or_B):
30 | if A_or_B == 2:
31 | dim1, dim2 = dim2, dim1
32 |
33 | idty_np = np.identity(dim2).astype("complex128")
34 | idty_B = to_tensor(idty_np)
35 |
36 | zero_np = np.zeros([dim2, dim2], "complex128")
37 | res = to_tensor(zero_np)
38 |
39 | for dim_j in range(dim1):
40 | row_top = zeros([1, dim_j], dtype="float64")
41 | row_mid = ones([1, 1], dtype="float64")
42 | row_bot = zeros([1, dim1 - dim_j - 1], dtype="float64")
43 | bra_j = concat([row_top, row_mid, row_bot], axis=1)
44 | bra_j = paddle.cast(bra_j, 'complex128')
45 |
46 | if A_or_B == 1:
47 | row_tmp = kron(bra_j, idty_B)
48 | row_tmp_conj = paddle.conj(row_tmp)
49 | res = add(res, matmul(matmul(row_tmp, rho_AB), transpose(row_tmp_conj, perm=[1, 0]), ), )
50 |
51 | if A_or_B == 2:
52 | row_tmp = kron(idty_B, bra_j)
53 | row_tmp_conj = paddle.conj(row_tmp)
54 | res = add(res, matmul(matmul(row_tmp, rho_AB), transpose(row_tmp_conj, perm=[1, 0]), ), )
55 |
56 | return res
57 |
--------------------------------------------------------------------------------
/Updates/progress.md:
--------------------------------------------------------------------------------
1 | # Upgrade plans
2 |
3 |
4 | ```mermaid
5 | gantt
6 | dateFormat YYYY-MM-DD
7 | title QPDE-Bench Upgrade Plan (6 months cycle)
8 | %% excludes weekends
9 | %% (`excludes` accepts specific dates in YYYY-MM-DD format, days of the week ("sunday") or "weekends", but not the word "weekdays".)
10 |
11 | section Preliminary
12 | Select PDEs :active, pre1, 2024-06-01,2024-06-10
13 | Search existing code :active, pre2, 2024-06-10,2024-07-30
14 | Survey quantum algorithms : pre3, 2024-06-30,2024-07-30
15 | Review quantum algorithms : pre4, 2024-08-01,2024-10-01
16 |
17 | section Tasks
18 | Collect papers and reviews :crit, active, task1, 2024-06-01,2024-07-30
19 | Develop code on Hamiltonian simulation :crit, task2, 2024-07-01,2024-08-15
20 | Develop code on linear solvers : task3, 2024-07-15,2024-09-01
21 | Solver added :milestone, m1, 2024-09-01, 0d
22 | Benchmark linear PDEs on IBMQ :crit, task4, 2024-09-01,2024-10-01
23 | Benchmark nonlinear PDEs :crit, task5, 2024-10-01,2024-11-01
24 | Benchmark done :milestone, m2, 2024-11-01, 0d
25 | Benchmark trapped-ion systems : task6, 2024-11-01,2024-12-01
26 |
27 | section Writing
28 | Introduction :active, doc1, after pre1, 20d
29 | Benchmark methods : doc2, after doc1, 60d
30 | Results : doc3, after doc2, 90d
31 | Conclusion & Outlook : doc4, after doc3, 10d
32 | Appendices : doc5, after doc4, 5d
33 |
34 | section Code release
35 | Upgrade plan :done, code1, 2024-06-01,2024-06-06
36 | Upgrade to Qiskit 1.0.2 :active, code2, after code1, 10d
37 | Integrate existing quantum solvers :active, code3, after code1, 60d
38 | Add latest quantum solvers : code4, after code3, 90d
39 | Add tutorials : code5, after code4, 30d
40 | ```
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | .idea
3 | .DS_Store
4 | .vscode/
5 | __pycache__/
6 | *.py[cod]
7 | *$py.class
8 |
9 | # C extensions
10 | *.so
11 |
12 | # Distribution / packaging
13 | .Python
14 | build/
15 | develop-eggs/
16 | dist/
17 | downloads/
18 | eggs/
19 | .eggs/
20 | lib/
21 | lib64/
22 | parts/
23 | sdist/
24 | var/
25 | wheels/
26 | pip-wheel-metadata/
27 | share/python-wheels/
28 | *.egg-info/
29 | .installed.cfg
30 | *.egg
31 | MANIFEST
32 |
33 | # PyInstaller
34 | # Usually these files are written by a python script from a template
35 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
36 | *.manifest
37 | *.spec
38 |
39 | # Installer logs
40 | pip-log.txt
41 | pip-delete-this-directory.txt
42 |
43 | # Unit test / coverage reports
44 | htmlcov/
45 | .tox/
46 | .nox/
47 | .coverage
48 | .coverage.*
49 | .cache
50 | nosetests.xml
51 | coverage.xml
52 | *.cover
53 | *.py,cover
54 | .hypothesis/
55 | .pytest_cache/
56 |
57 | # Translations
58 | *.mo
59 | *.pot
60 |
61 | # Django stuff:
62 | *.log
63 | local_settings.py
64 | db.sqlite3
65 | db.sqlite3-journal
66 |
67 | # Flask stuff:
68 | instance/
69 | .webassets-cache
70 |
71 | # Scrapy stuff:
72 | .scrapy
73 |
74 | # Sphinx documentation
75 | docs/_build/
76 |
77 | # PyBuilder
78 | target/
79 |
80 | # Jupyter Notebook
81 | .ipynb_checkpoints
82 |
83 | # IPython
84 | profile_default/
85 | ipython_config.py
86 |
87 | # pyenv
88 | .python-version
89 |
90 | # pipenv
91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
94 | # install all needed dependencies.
95 | #Pipfile.lock
96 |
97 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow
98 | __pypackages__/
99 |
100 | # Celery stuff
101 | celerybeat-schedule
102 | celerybeat.pid
103 |
104 | # SageMath parsed files
105 | *.sage.py
106 |
107 | # Environments
108 | .env
109 | .venv
110 | env/
111 | venv/
112 | ENV/
113 | env.bak/
114 | venv.bak/
115 |
116 | # .dat file
117 | *.dat
118 |
119 | # Spyder project settings
120 | .spyderproject
121 | .spyproject
122 |
123 | # Rope project settings
124 | .ropeproject
125 |
126 | # mkdocs documentation
127 | /site
128 |
129 | # mypy
130 | .mypy_cache/
131 | .dmypy.json
132 | dmypy.json
133 |
134 | # Pyre type checker
135 | .pyre/
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Quantum-PDE-Benchmark
2 |
3 | Benchmark near-term quantum algorithms for Partial Differential Equations (PDEs).
4 |
5 | Solving PDE efficiently is important in scientific research and engineering.
6 | Many quantum algorithms have been proposed to solve PDE on near-term quantum computers.
7 | However, most algorithms are verified on simulators, ignoring the effect of quantum hardware noise.
8 | This leaves the practical performance and utility of those algorithms an open question.
9 | We propose an effort toward filling this gap via extensive benchmarks.
10 |
11 |
12 |
13 | Also, see this [website](https://qppqlivingreview.github.io/review/) for a brief survey of solving various PDEs with quantum algorithms.
14 |
15 | ## Install
16 |
17 | Download all the files and finish the installation locally,
18 |
19 | ```bash
20 | git clone https://github.com/comp-physics/Quantum-PDE-Benchmark
21 | cd qpde-benchmark
22 | pip install -e.
23 | ```
24 |
25 | ## Introduction
26 |
27 | We consider the following PDEs in this benchmark with various boundary conditions.
28 |
29 |
30 | ### PDE Library
31 |
32 | The Poisson equation (elliptic)
33 |
34 | $$
35 | \Delta \phi = f,
36 | $$
37 |
38 | wave equation (hyperbolic)
39 |
40 | $$
41 | \partial_t^2 \phi = c^2 \Delta \phi,
42 | $$
43 |
44 | heat equation (parabolic)
45 |
46 | $$
47 | \partial_t \phi = \Delta \phi,
48 | $$
49 |
50 | 1D Reaction-diffusion equation (linear, mixed)
51 |
52 | $$
53 | \partial_t \phi = D\partial_x^2\phi + f(\phi).
54 | $$
55 |
56 | and 1D Burgers Equation (nonlinear, mixed)
57 |
58 | $$
59 | \partial_t \phi = \nu \partial_x^2\phi - \phi \partial_x \phi + f.
60 | $$
61 |
62 | ### Quantum Solvers
63 |
64 | 1. Variational Quantum Eigensolver (VQE)
65 |
66 | 2. Variational Quantum Linear Solver (VQLS)
67 |
68 | 3. Hamiltonian Simulation
69 |
70 | 4. Quantum Spectral Method
71 |
72 | ### Quantum Hardware
73 |
74 | |Hardware | qubits | Quantum Volume | Speed | 1q gate error | 2q gate error| Measurement error | Vendor|
75 | | ----------- | :-----------: |:-----------: |:-----------: |:-----------: |:-----------: |:-----------: |----------- |
76 | |ibmq-guadalupe| 16 | 32 | 2.4k CLOPS | 3.176e-4 | 1.037e-2 | 1.795e-2 | IBM |
77 | |ibmq-toronto | 27 | 32 | 1.8k CLOPS | 3.064e-4 | 1.191e-2 | 2.930e-2 | IBM |
78 | |ibmq-montreal | 27 | 128 | 2k CLOPS | 2.986e-4 | 1.168e-2 | 1.569e-2 | IBM |
79 | |ibmq-washington| 127 | 64 | 850 CLOPS | 2.923e-4 | 1.305e-2 | 1.170e-2 | IBM |
80 |
81 | ### Tutorials
82 |
83 | We provide tutorials to solve PDEs on IBM's superconducting quantum hardware:
84 | 1. [1D Poisson Equation using VQE](https://github.com/comp-physics/Quantum-PDE-Benchmark/blob/master/tutorials/1D_Poisson.ipynb)
85 | 2. 1D Poisson Equation using VQLS
86 |
87 |
88 |
89 |
90 | ## Copyright and License
91 | Quantum PDE Benchmark uses Apache-2.0 license.
92 |
93 |
94 |
95 | ## Reference
96 | [1] Peruzzo, Alberto, et al. "A variational eigenvalue solver on a photonic quantum processor." *Nature communications* 5.1 (2014): 1-7.
97 | [2] Bravo-Prieto, Carlos, et al. "Variational quantum linear solver." *arXiv preprint arXiv:1909.05820* (2019).
98 | [3] Huang, Hsin-Yuan, Kishor Bharti, and Patrick Rebentrost. "Near-term quantum algorithms for linear systems of equations." *arXiv preprint arXiv:1909.07344* (2019).
99 |
100 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/tutorials/1D_Poisson.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "# Solving the Poisson's equation using VQE\n",
8 | "\n",
9 | "Author: Zhixin Song \\\n",
10 | "Last update: 01/12/2023"
11 | ]
12 | },
13 | {
14 | "cell_type": "markdown",
15 | "metadata": {},
16 | "source": [
17 | "## 1. Introduction\n",
18 | "\n",
19 | "Poisson's equation is $\\Delta \\phi = f$, where $\\Delta = \\nabla^2$ is the Laplace operator. It is widely used in theoretical physics, including electrostatistics and gravitational field. In Cartesian coordinates, it takes the form\n",
20 | "\n",
21 | "$$\n",
22 | "\\bigg(\\frac{\\partial^2}{\\partial x^2} +\\frac{\\partial^2}{\\partial y^2} + \\frac{\\partial^2}{\\partial z^2}\\bigg)\\phi(x,y,z) = f(x,y,z).\n",
23 | "$$\n",
24 | "\n",
25 | "Here, we only consider the 1D case for simplicity. We will disscuss how to generalize it to higher dimensions in a different tutorial. Also, we consider the Dirichlet boundary conditions (B.C.s) in domain $[a,b]$.\n",
26 | "\n",
27 | "$$\n",
28 | "\\Delta \\phi(x)= \\frac{\\partial^2 \\phi(x)}{\\partial x^2} = f(x), \\text{ with } \\phi(a) = \\phi_a, \\phi(b) = \\phi_b.\n",
29 | "$$\n",
30 | "\n",
31 | "The classical approach to solve this type of PDE is discretizing the spatial domain into a grid mesh of $m$ points such that we can approximate the differential operator with a difference operator\n",
32 | "\n",
33 | "$$\n",
34 | "\\Delta \\phi(x) \\approx \\frac{\\phi_{i-1} - 2 \\phi_i + \\phi_{i+1}}{h^2},\n",
35 | "$$\n",
36 | "\n",
37 | "where $h = (b-a)/(m-1)$ is the separation between each grid point. Then, we can tramsform the orginal problem of solving PDE into a linear system $Ax=b$ where\n",
38 | "\n",
39 | "$$\n",
40 | "A = \n",
41 | "\\begin{bmatrix}\n",
42 | " -2 &1 &0 &\\cdots &0 &0 &0\\\\\n",
43 | " 1 &-2 &1 &\\cdots &0 &0 &0\\\\\n",
44 | " \\vdots &\\vdots &\\vdots &\\ddots &\\vdots &\\vdots &\\vdots\\\\\n",
45 | " 0 &0 &0 &\\cdots &1 &-2 &1\\\\\n",
46 | " 0 &0 &0 &\\cdots &0 &1 &-2\n",
47 | "\\end{bmatrix},\n",
48 | "b = \n",
49 | "\\begin{bmatrix}\n",
50 | " h^2f_1 - \\phi_a \\\\\n",
51 | " h^2 f_2 \\\\\n",
52 | " \\vdots \\\\\n",
53 | " h^2 f_{m-1} \\\\\n",
54 | " h^2 f_m - \\phi_b\n",
55 | "\\end{bmatrix}.\n",
56 | "$$\n",
57 | "\n",
58 | "The error from such an discretization procedure decreases exponentially with the size of grid. On a classical computer, one can solve this linear system using Gaussian elimination with Matlab when the problem size is small. "
59 | ]
60 | },
61 | {
62 | "cell_type": "markdown",
63 | "metadata": {},
64 | "source": [
65 | "## 2. Quantum Solution\n",
66 | "\n",
67 | "Notice that a quantum state actually maps to an **exponential** grid size. Therefore the amount of quantum resources is linear in number of qubits $n$ and the discretization error decreases exponentially $\\mathcal{O}(1/2^n)$. There are multiple routes to solve this linear system. For the long-term view, one would use the HHL algorithm for speedup. On NISQ machines, we consider the Variational Quantum Eigensolver (VQE).\n",
68 | "\n",
69 | "First of all, we need to transfer the problem into a Hamiltonian $H$ where\n",
70 | "\n",
71 | "$$\n",
72 | "H = A^\\dagger(I - |b\\rangle\\langle b|) A\n",
73 | "$$\n",
74 | "\n",
75 | "In order to see how this works, we can try to plug into the solution $|x\\rangle$\n",
76 | "\n",
77 | "$$\n",
78 | "H |x\\rangle = A^\\dagger(I - |b\\rangle\\langle b|) A |x\\rangle = A^\\dagger(I - |b\\rangle\\langle b|) |b\\rangle\n",
79 | "= A^\\dagger(|b\\rangle - |b\\rangle) = 0 |x\\rangle. \n",
80 | "$$\n",
81 | "\n",
82 | "One can see that the solution is encoded in the ground state of $H$ with an eigenvalue of $0$. Then, we can use VQE to find the ground state.\n",
83 | "\n",
84 | "**Note**: Quantum solvers uaually find a normalized solution $|x\\rangle/||x||$."
85 | ]
86 | },
87 | {
88 | "cell_type": "markdown",
89 | "metadata": {},
90 | "source": [
91 | "## 3. Numerics\n",
92 | "\n",
93 | "Consider the driving function $f(x)=x$, boundary $[a,b]= [0,1]$ and boundary conditions $\\phi_a = \\phi_b=0$. Then, the analytical solution is $\\phi(x)=(x^3-x)/6$."
94 | ]
95 | },
96 | {
97 | "cell_type": "code",
98 | "execution_count": 1,
99 | "metadata": {},
100 | "outputs": [],
101 | "source": [
102 | "from IPython.display import clear_output\n",
103 | "!pip install qiskit==0.39.0\n",
104 | "clear_output()"
105 | ]
106 | },
107 | {
108 | "cell_type": "markdown",
109 | "metadata": {},
110 | "source": [
111 | "### 3.0 Setup backend"
112 | ]
113 | },
114 | {
115 | "cell_type": "code",
116 | "execution_count": 2,
117 | "metadata": {},
118 | "outputs": [],
119 | "source": [
120 | "from qiskit import QuantumCircuit, transpile\n",
121 | "from qiskit.circuit import Parameter\n",
122 | "\n",
123 | "from qiskit import IBMQ\n",
124 | "# IBMQ.save_account(TOKEN)\n",
125 | "IBMQ.load_account() # Load account from disk\n",
126 | "IBMQ.providers() # List all available providers\n",
127 | "provider = IBMQ.get_provider(hub='ibm-q-community', group='ibmquantumawards', project='open-science-22')\n",
128 | "guadalupe = provider.get_backend(\"ibmq_guadalupe\")\n",
129 | "\n",
130 | "\n",
131 | "from qiskit.providers.fake_provider import FakeGuadalupe\n",
132 | "\n",
133 | "# Noisy simulator backend\n",
134 | "noisy_sim = FakeGuadalupe()\n",
135 | "\n",
136 | "from qiskit import Aer\n",
137 | "backend = Aer.get_backend('statevector_simulator')"
138 | ]
139 | },
140 | {
141 | "cell_type": "markdown",
142 | "metadata": {},
143 | "source": [
144 | "### 3.1 Encode the problem Hamiltonian"
145 | ]
146 | },
147 | {
148 | "cell_type": "code",
149 | "execution_count": 3,
150 | "metadata": {},
151 | "outputs": [],
152 | "source": [
153 | "import numpy as np\n",
154 | "from scipy import sparse\n",
155 | "from scipy.sparse import diags\n",
156 | "from scipy.sparse.linalg import eigs\n",
157 | "import matplotlib.pyplot as plt\n",
158 | "plt.rcParams.update({\"font.size\": 16}) # enlarge matplotlib fonts\n",
159 | "\n",
160 | "from qiskit.opflow import MatrixOp"
161 | ]
162 | },
163 | {
164 | "cell_type": "code",
165 | "execution_count": 47,
166 | "metadata": {
167 | "colab": {
168 | "base_uri": "https://localhost:8080/"
169 | },
170 | "id": "tG1j2d1-PP3O",
171 | "outputId": "c3af297d-5d30-4f13-a56f-ba76ebf8d131",
172 | "scrolled": true
173 | },
174 | "outputs": [
175 | {
176 | "name": "stdout",
177 | "output_type": "stream",
178 | "text": [
179 | "Classical solution:\n",
180 | " [-0.04853869 -0.09707737 -0.14440259 -0.18930087 -0.23055876 -0.26696277\n",
181 | " -0.29729945 -0.32035532 -0.33491693 -0.3397708 -0.33370346 -0.31550146\n",
182 | " -0.28395131 -0.23783956 -0.17595273 -0.09707737]\n",
183 | "Eigenvector:\n",
184 | " [-0.04853869 -0.09707737 -0.14440259 -0.18930087 -0.23055876 -0.26696277\n",
185 | " -0.29729945 -0.32035532 -0.33491693 -0.3397708 -0.33370346 -0.31550146\n",
186 | " -0.28395131 -0.23783956 -0.17595273 -0.09707737]\n",
187 | "Lenth of Pauli String: 38\n"
188 | ]
189 | }
190 | ],
191 | "source": [
192 | "total_res = {}\n",
193 | "\n",
194 | "N = 4 # number of qubits\n",
195 | "dim = 2**N # dimension of the operator A\n",
196 | "\n",
197 | "# Setup a tridiagonal matrix\n",
198 | "k = [np.ones(dim-1), -2*np.ones(dim), np.ones(dim-1)]\n",
199 | "offset = [-1, 0, 1]\n",
200 | "A = diags(k,offset).toarray()\n",
201 | "\n",
202 | "# Setup the driving term f(x) = x\n",
203 | "b = np.linspace(0, 1, dim)\n",
204 | "h = 1/(dim-1)\n",
205 | "sampled_b = b*(h**2)\n",
206 | "bt = np.linspace(0, 1, dim)\n",
207 | "\n",
208 | "# Setup the Dirichlet B.C.s\n",
209 | "phi_a, phi_b = 0, 0\n",
210 | "sampled_b[0] -= phi_a\n",
211 | "sampled_b[dim-1] -= phi_b\n",
212 | "norm = np.linalg.norm(sampled_b)\n",
213 | "sampled_b = sampled_b/norm\n",
214 | "\n",
215 | "# Solve the linear system of equations\n",
216 | "x = np.linalg.solve(A, sampled_b)\n",
217 | "f = np.linalg.norm(x)\n",
218 | "x = x/f\n",
219 | "\n",
220 | "# Build Hamiltonian\n",
221 | "sampled_b = sampled_b.reshape([dim, 1])\n",
222 | "Hamiltonian = A@(np.eye(dim)- sampled_b@sampled_b.T)@A\n",
223 | "# print(Hamiltonian)\n",
224 | "\n",
225 | "print(\"Classical solution:\\n\", x)\n",
226 | "eig_val, eig_state = np.linalg.eig(Hamiltonian)\n",
227 | "# print(\"Eigenvalues:\\n\", eig_val)\n",
228 | "# print(min(eig_val))\n",
229 | "vec = eig_state[:,-1]\n",
230 | "# print(eig_state)\n",
231 | "print(\"Eigenvector:\\n\", -vec)\n",
232 | "\n",
233 | "# Transform into Pauli operators\n",
234 | "H_op = MatrixOp(Hamiltonian).to_pauli_op()\n",
235 | "print(\"Lenth of Pauli String:\",len(H_op))\n",
236 | "# print(H_op)"
237 | ]
238 | },
239 | {
240 | "cell_type": "markdown",
241 | "metadata": {},
242 | "source": [
243 | "### 3.2 Ansatz design"
244 | ]
245 | },
246 | {
247 | "cell_type": "code",
248 | "execution_count": 54,
249 | "metadata": {},
250 | "outputs": [
251 | {
252 | "data": {
253 | "text/html": [
254 | "
┌──────────┐┌──────────┐ ┌──────────┐┌───────────┐ ┌───────────┐┌───────────┐ ┌───────────┐┌───────────┐ ┌───────────┐┌───────────┐ \n",
255 | "q_0: ┤ Ry(θ[0]) ├┤ Rz(θ[4]) ├──■──┤ Ry(θ[8]) ├┤ Rz(θ[12]) ├───────────────────■──────┤ Ry(θ[16]) ├┤ Rz(θ[20]) ├───────────────────■──────┤ Ry(θ[24]) ├┤ Rz(θ[28]) ├───────────────────■──────┤ Ry(θ[32]) ├┤ Rz(θ[36]) ├───────────────────■────────────────\n",
256 | " ├──────────┤├──────────┤┌─┴─┐└──────────┘└┬──────────┤┌───────────┐ ┌─┴─┐ └───────────┘├───────────┤┌───────────┐ ┌─┴─┐ └───────────┘├───────────┤┌───────────┐ ┌─┴─┐ └───────────┘├───────────┤┌───────────┐ ┌─┴─┐ \n",
257 | "q_1: ┤ Ry(θ[1]) ├┤ Rz(θ[5]) ├┤ X ├─────■───────┤ Ry(θ[9]) ├┤ Rz(θ[13]) ├────┤ X ├──────────■──────┤ Ry(θ[17]) ├┤ Rz(θ[21]) ├────┤ X ├──────────■──────┤ Ry(θ[25]) ├┤ Rz(θ[29]) ├────┤ X ├──────────■──────┤ Ry(θ[33]) ├┤ Rz(θ[37]) ├────┤ X ├──────■───────\n",
258 | " ├──────────┤├──────────┤└───┘ ┌─┴─┐ └──────────┘├───────────┤┌───┴───┴───┐ ┌─┴─┐ └───────────┘├───────────┤┌───┴───┴───┐ ┌─┴─┐ └───────────┘├───────────┤┌───┴───┴───┐ ┌─┴─┐ └───────────┘├───────────┤┌───┴───┴───┐┌─┴─┐ \n",
259 | "q_2: ┤ Ry(θ[2]) ├┤ Rz(θ[6]) ├────────┤ X ├──────────■──────┤ Ry(θ[10]) ├┤ Rz(θ[14]) ├────┤ X ├──────────■──────┤ Ry(θ[18]) ├┤ Rz(θ[22]) ├────┤ X ├──────────■──────┤ Ry(θ[26]) ├┤ Rz(θ[30]) ├────┤ X ├──────────■──────┤ Ry(θ[34]) ├┤ Rz(θ[38]) ├┤ X ├──■──\n",
260 | " ├──────────┤├──────────┤ └───┘ ┌─┴─┐ ├───────────┤├───────────┤ └───┘ ┌─┴─┐ ├───────────┤├───────────┤ └───┘ ┌─┴─┐ ├───────────┤├───────────┤ └───┘ ┌─┴─┐ ├───────────┤├───────────┤└───┘┌─┴─┐\n",
261 | "q_3: ┤ Ry(θ[3]) ├┤ Rz(θ[7]) ├─────────────────────┤ X ├────┤ Ry(θ[11]) ├┤ Rz(θ[15]) ├─────────────────┤ X ├────┤ Ry(θ[19]) ├┤ Rz(θ[23]) ├─────────────────┤ X ├────┤ Ry(θ[27]) ├┤ Rz(θ[31]) ├─────────────────┤ X ├────┤ Ry(θ[35]) ├┤ Rz(θ[39]) ├─────┤ X ├\n",
262 | " └──────────┘└──────────┘ └───┘ └───────────┘└───────────┘ └───┘ └───────────┘└───────────┘ └───┘ └───────────┘└───────────┘ └───┘ └───────────┘└───────────┘ └───┘ "
263 | ],
264 | "text/plain": [
265 | " ┌──────────┐┌──────────┐ ┌──────────┐┌───────────┐ ┌───────────┐┌───────────┐ ┌───────────┐┌───────────┐ ┌───────────┐┌───────────┐ \n",
266 | "q_0: ┤ Ry(θ[0]) ├┤ Rz(θ[4]) ├──■──┤ Ry(θ[8]) ├┤ Rz(θ[12]) ├───────────────────■──────┤ Ry(θ[16]) ├┤ Rz(θ[20]) ├───────────────────■──────┤ Ry(θ[24]) ├┤ Rz(θ[28]) ├───────────────────■──────┤ Ry(θ[32]) ├┤ Rz(θ[36]) ├───────────────────■────────────────\n",
267 | " ├──────────┤├──────────┤┌─┴─┐└──────────┘└┬──────────┤┌───────────┐ ┌─┴─┐ └───────────┘├───────────┤┌───────────┐ ┌─┴─┐ └───────────┘├───────────┤┌───────────┐ ┌─┴─┐ └───────────┘├───────────┤┌───────────┐ ┌─┴─┐ \n",
268 | "q_1: ┤ Ry(θ[1]) ├┤ Rz(θ[5]) ├┤ X ├─────■───────┤ Ry(θ[9]) ├┤ Rz(θ[13]) ├────┤ X ├──────────■──────┤ Ry(θ[17]) ├┤ Rz(θ[21]) ├────┤ X ├──────────■──────┤ Ry(θ[25]) ├┤ Rz(θ[29]) ├────┤ X ├──────────■──────┤ Ry(θ[33]) ├┤ Rz(θ[37]) ├────┤ X ├──────■───────\n",
269 | " ├──────────┤├──────────┤└───┘ ┌─┴─┐ └──────────┘├───────────┤┌───┴───┴───┐ ┌─┴─┐ └───────────┘├───────────┤┌───┴───┴───┐ ┌─┴─┐ └───────────┘├───────────┤┌───┴───┴───┐ ┌─┴─┐ └───────────┘├───────────┤┌───┴───┴───┐┌─┴─┐ \n",
270 | "q_2: ┤ Ry(θ[2]) ├┤ Rz(θ[6]) ├────────┤ X ├──────────■──────┤ Ry(θ[10]) ├┤ Rz(θ[14]) ├────┤ X ├──────────■──────┤ Ry(θ[18]) ├┤ Rz(θ[22]) ├────┤ X ├──────────■──────┤ Ry(θ[26]) ├┤ Rz(θ[30]) ├────┤ X ├──────────■──────┤ Ry(θ[34]) ├┤ Rz(θ[38]) ├┤ X ├──■──\n",
271 | " ├──────────┤├──────────┤ └───┘ ┌─┴─┐ ├───────────┤├───────────┤ └───┘ ┌─┴─┐ ├───────────┤├───────────┤ └───┘ ┌─┴─┐ ├───────────┤├───────────┤ └───┘ ┌─┴─┐ ├───────────┤├───────────┤└───┘┌─┴─┐\n",
272 | "q_3: ┤ Ry(θ[3]) ├┤ Rz(θ[7]) ├─────────────────────┤ X ├────┤ Ry(θ[11]) ├┤ Rz(θ[15]) ├─────────────────┤ X ├────┤ Ry(θ[19]) ├┤ Rz(θ[23]) ├─────────────────┤ X ├────┤ Ry(θ[27]) ├┤ Rz(θ[31]) ├─────────────────┤ X ├────┤ Ry(θ[35]) ├┤ Rz(θ[39]) ├─────┤ X ├\n",
273 | " └──────────┘└──────────┘ └───┘ └───────────┘└───────────┘ └───┘ └───────────┘└───────────┘ └───┘ └───────────┘└───────────┘ └───┘ └───────────┘└───────────┘ └───┘"
274 | ]
275 | },
276 | "execution_count": 54,
277 | "metadata": {},
278 | "output_type": "execute_result"
279 | }
280 | ],
281 | "source": [
282 | "from qiskit.circuit.library import EfficientSU2\n",
283 | "\n",
284 | "depth = 5 # depth of ansatz\n",
285 | "ansatz = EfficientSU2(N, entanglement='linear', reps=depth, skip_final_rotation_layer=True).decompose()\n",
286 | "ansatz.draw(fold=300)"
287 | ]
288 | },
289 | {
290 | "cell_type": "markdown",
291 | "metadata": {},
292 | "source": [
293 | "### 3.3 Transpile"
294 | ]
295 | },
296 | {
297 | "cell_type": "code",
298 | "execution_count": 55,
299 | "metadata": {
300 | "scrolled": false
301 | },
302 | "outputs": [
303 | {
304 | "name": "stdout",
305 | "output_type": "stream",
306 | "text": [
307 | "number and type of gates in the cirucit: OrderedDict([('ry', 20), ('rz', 20), ('cx', 15)])\n",
308 | "number of parameters in the circuit: 40\n"
309 | ]
310 | },
311 | {
312 | "data": {
313 | "text/html": [
314 | " ┌──────────┐┌──────────┐ ┌──────────┐┌───────────┐ ┌───────────┐┌───────────┐ ┌───────────┐┌───────────┐ ┌───────────┐┌───────────┐ \n",
315 | "q_0: ┤ Ry(θ[0]) ├┤ Rz(θ[4]) ├──■──┤ Ry(θ[8]) ├┤ Rz(θ[12]) ├───────────────────■──────┤ Ry(θ[16]) ├┤ Rz(θ[20]) ├───────────────────■──────┤ Ry(θ[24]) ├┤ Rz(θ[28]) ├───────────────────■──────┤ Ry(θ[32]) ├┤ Rz(θ[36]) ├───────────────────■────────────────\n",
316 | " ├──────────┤├──────────┤┌─┴─┐└──────────┘└┬──────────┤┌───────────┐ ┌─┴─┐ └───────────┘├───────────┤┌───────────┐ ┌─┴─┐ └───────────┘├───────────┤┌───────────┐ ┌─┴─┐ └───────────┘├───────────┤┌───────────┐ ┌─┴─┐ \n",
317 | "q_1: ┤ Ry(θ[1]) ├┤ Rz(θ[5]) ├┤ X ├─────■───────┤ Ry(θ[9]) ├┤ Rz(θ[13]) ├────┤ X ├──────────■──────┤ Ry(θ[17]) ├┤ Rz(θ[21]) ├────┤ X ├──────────■──────┤ Ry(θ[25]) ├┤ Rz(θ[29]) ├────┤ X ├──────────■──────┤ Ry(θ[33]) ├┤ Rz(θ[37]) ├────┤ X ├──────■───────\n",
318 | " ├──────────┤├──────────┤└───┘ ┌─┴─┐ └──────────┘├───────────┤┌───┴───┴───┐ ┌─┴─┐ └───────────┘├───────────┤┌───┴───┴───┐ ┌─┴─┐ └───────────┘├───────────┤┌───┴───┴───┐ ┌─┴─┐ └───────────┘├───────────┤┌───┴───┴───┐┌─┴─┐ \n",
319 | "q_2: ┤ Ry(θ[2]) ├┤ Rz(θ[6]) ├────────┤ X ├──────────■──────┤ Ry(θ[10]) ├┤ Rz(θ[14]) ├────┤ X ├──────────■──────┤ Ry(θ[18]) ├┤ Rz(θ[22]) ├────┤ X ├──────────■──────┤ Ry(θ[26]) ├┤ Rz(θ[30]) ├────┤ X ├──────────■──────┤ Ry(θ[34]) ├┤ Rz(θ[38]) ├┤ X ├──■──\n",
320 | " ├──────────┤├──────────┤ └───┘ ┌─┴─┐ ├───────────┤├───────────┤ └───┘ ┌─┴─┐ ├───────────┤├───────────┤ └───┘ ┌─┴─┐ ├───────────┤├───────────┤ └───┘ ┌─┴─┐ ├───────────┤├───────────┤└───┘┌─┴─┐\n",
321 | "q_3: ┤ Ry(θ[3]) ├┤ Rz(θ[7]) ├─────────────────────┤ X ├────┤ Ry(θ[11]) ├┤ Rz(θ[15]) ├─────────────────┤ X ├────┤ Ry(θ[19]) ├┤ Rz(θ[23]) ├─────────────────┤ X ├────┤ Ry(θ[27]) ├┤ Rz(θ[31]) ├─────────────────┤ X ├────┤ Ry(θ[35]) ├┤ Rz(θ[39]) ├─────┤ X ├\n",
322 | " └──────────┘└──────────┘ └───┘ └───────────┘└───────────┘ └───┘ └───────────┘└───────────┘ └───┘ └───────────┘└───────────┘ └───┘ └───────────┘└───────────┘ └───┘ "
323 | ],
324 | "text/plain": [
325 | " ┌──────────┐┌──────────┐ ┌──────────┐┌───────────┐ ┌───────────┐┌───────────┐ ┌───────────┐┌───────────┐ ┌───────────┐┌───────────┐ \n",
326 | "q_0: ┤ Ry(θ[0]) ├┤ Rz(θ[4]) ├──■──┤ Ry(θ[8]) ├┤ Rz(θ[12]) ├───────────────────■──────┤ Ry(θ[16]) ├┤ Rz(θ[20]) ├───────────────────■──────┤ Ry(θ[24]) ├┤ Rz(θ[28]) ├───────────────────■──────┤ Ry(θ[32]) ├┤ Rz(θ[36]) ├───────────────────■────────────────\n",
327 | " ├──────────┤├──────────┤┌─┴─┐└──────────┘└┬──────────┤┌───────────┐ ┌─┴─┐ └───────────┘├───────────┤┌───────────┐ ┌─┴─┐ └───────────┘├───────────┤┌───────────┐ ┌─┴─┐ └───────────┘├───────────┤┌───────────┐ ┌─┴─┐ \n",
328 | "q_1: ┤ Ry(θ[1]) ├┤ Rz(θ[5]) ├┤ X ├─────■───────┤ Ry(θ[9]) ├┤ Rz(θ[13]) ├────┤ X ├──────────■──────┤ Ry(θ[17]) ├┤ Rz(θ[21]) ├────┤ X ├──────────■──────┤ Ry(θ[25]) ├┤ Rz(θ[29]) ├────┤ X ├──────────■──────┤ Ry(θ[33]) ├┤ Rz(θ[37]) ├────┤ X ├──────■───────\n",
329 | " ├──────────┤├──────────┤└───┘ ┌─┴─┐ └──────────┘├───────────┤┌───┴───┴───┐ ┌─┴─┐ └───────────┘├───────────┤┌───┴───┴───┐ ┌─┴─┐ └───────────┘├───────────┤┌───┴───┴───┐ ┌─┴─┐ └───────────┘├───────────┤┌───┴───┴───┐┌─┴─┐ \n",
330 | "q_2: ┤ Ry(θ[2]) ├┤ Rz(θ[6]) ├────────┤ X ├──────────■──────┤ Ry(θ[10]) ├┤ Rz(θ[14]) ├────┤ X ├──────────■──────┤ Ry(θ[18]) ├┤ Rz(θ[22]) ├────┤ X ├──────────■──────┤ Ry(θ[26]) ├┤ Rz(θ[30]) ├────┤ X ├──────────■──────┤ Ry(θ[34]) ├┤ Rz(θ[38]) ├┤ X ├──■──\n",
331 | " ├──────────┤├──────────┤ └───┘ ┌─┴─┐ ├───────────┤├───────────┤ └───┘ ┌─┴─┐ ├───────────┤├───────────┤ └───┘ ┌─┴─┐ ├───────────┤├───────────┤ └───┘ ┌─┴─┐ ├───────────┤├───────────┤└───┘┌─┴─┐\n",
332 | "q_3: ┤ Ry(θ[3]) ├┤ Rz(θ[7]) ├─────────────────────┤ X ├────┤ Ry(θ[11]) ├┤ Rz(θ[15]) ├─────────────────┤ X ├────┤ Ry(θ[19]) ├┤ Rz(θ[23]) ├─────────────────┤ X ├────┤ Ry(θ[27]) ├┤ Rz(θ[31]) ├─────────────────┤ X ├────┤ Ry(θ[35]) ├┤ Rz(θ[39]) ├─────┤ X ├\n",
333 | " └──────────┘└──────────┘ └───┘ └───────────┘└───────────┘ └───┘ └───────────┘└───────────┘ └───┘ └───────────┘└───────────┘ └───┘ └───────────┘└───────────┘ └───┘"
334 | ]
335 | },
336 | "execution_count": 55,
337 | "metadata": {},
338 | "output_type": "execute_result"
339 | }
340 | ],
341 | "source": [
342 | "ansatz_opt = transpile(ansatz, backend=backend, optimization_level=3)\n",
343 | "\n",
344 | "print('number and type of gates in the cirucit:', ansatz_opt.count_ops())\n",
345 | "print('number of parameters in the circuit:', ansatz_opt.num_parameters)\n",
346 | "ansatz_opt.draw(fold=300)"
347 | ]
348 | },
349 | {
350 | "cell_type": "markdown",
351 | "metadata": {},
352 | "source": [
353 | "### 3.4 Optimizer"
354 | ]
355 | },
356 | {
357 | "cell_type": "code",
358 | "execution_count": 56,
359 | "metadata": {},
360 | "outputs": [],
361 | "source": [
362 | "from qiskit.algorithms.optimizers import SPSA, COBYLA, L_BFGS_B, NELDER_MEAD, SLSQP, ADAM, AQGD, CG, POWELL, QNSPSA\n",
363 | "\n",
364 | "# optimizer = SPSA(maxiter=500)\n",
365 | "optimizer = L_BFGS_B(maxiter=5000)\n",
366 | "# optimizer = ADAM(maxiter=200, lr=0.2)\n",
367 | "# optimizer = AQGD(maxiter=1000, eta=1.0, tol=1e-06, momentum=0.25, param_tol=1e-06, averaging=10)\n",
368 | "# optimizer = POWELL()\n",
369 | "# optimizer = COBYLA(maxiter=10000)\n",
370 | "# optimizer = SLSQP(maxiter=10000)"
371 | ]
372 | },
373 | {
374 | "cell_type": "markdown",
375 | "metadata": {},
376 | "source": [
377 | "### 3.5 Define VQE program"
378 | ]
379 | },
380 | {
381 | "cell_type": "code",
382 | "execution_count": 57,
383 | "metadata": {},
384 | "outputs": [],
385 | "source": [
386 | "from qiskit.utils import QuantumInstance\n",
387 | "from qiskit.algorithms import VQE\n",
388 | "\n",
389 | "quantum_instance = QuantumInstance(backend=backend, seed_simulator=28, seed_transpiler=28,\n",
390 | " basis_gates=None,\n",
391 | " optimization_level=3)"
392 | ]
393 | },
394 | {
395 | "cell_type": "code",
396 | "execution_count": 58,
397 | "metadata": {},
398 | "outputs": [
399 | {
400 | "name": "stdout",
401 | "output_type": "stream",
402 | "text": [
403 | "[-0.04970883 -0.09922035 -0.14737069 -0.19288916 -0.23456106 -0.27113955\n",
404 | " -0.30067831 -0.32170144 -0.33380658 -0.33663297 -0.32987386 -0.31216645\n",
405 | " -0.28149713 -0.2364521 -0.17541169 -0.09691468]\n",
406 | "Current round using ansatz TwoLocal with depth 5, found eigenvalue 1.172034253425e-05. Best so far 1.172034253425e-05\n"
407 | ]
408 | }
409 | ],
410 | "source": [
411 | "best_result = 99999\n",
412 | "\n",
413 | "vqe = VQE(ansatz_opt, optimizer,quantum_instance=quantum_instance,initial_point=2*np.pi*np.random.rand(ansatz_opt.num_parameters))\n",
414 | "result = vqe.compute_minimum_eigenvalue(H_op)\n",
415 | "quantum_solution = -1*np.abs(result.eigenstate).real\n",
416 | "print(quantum_solution)\n",
417 | "\n",
418 | "if result.eigenvalue.real < best_result:\n",
419 | " best_result = result.eigenvalue.real\n",
420 | " kept_result = result\n",
421 | "print(\"Current round using ansatz TwoLocal with depth {}, found eigenvalue {}. Best so far {}\".format(depth, result.eigenvalue.real,best_result))\n",
422 | "total_res.update({(N, depth):kept_result})"
423 | ]
424 | },
425 | {
426 | "cell_type": "markdown",
427 | "metadata": {
428 | "id": "WM5IzuTgLOTz"
429 | },
430 | "source": [
431 | "### 3.6 Convergence Analysis"
432 | ]
433 | },
434 | {
435 | "cell_type": "markdown",
436 | "metadata": {
437 | "id": "QYVEEusrcJny"
438 | },
439 | "source": [
440 | "### 3.7 Benchmark with analytical solution"
441 | ]
442 | },
443 | {
444 | "cell_type": "code",
445 | "execution_count": 59,
446 | "metadata": {
447 | "colab": {
448 | "base_uri": "https://localhost:8080/",
449 | "height": 295
450 | },
451 | "id": "qkxcXsCsN-oH",
452 | "outputId": "dd1ef506-0ab1-428b-bd66-ac76b0954c70"
453 | },
454 | "outputs": [
455 | {
456 | "data": {
457 | "image/png": "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\n",
458 | "text/plain": [
459 | ""
460 | ]
461 | },
462 | "metadata": {
463 | "needs_background": "light"
464 | },
465 | "output_type": "display_data"
466 | }
467 | ],
468 | "source": [
469 | "t = np.arange(0., 1., 0.02)\n",
470 | "res = (t**3-t)/6\n",
471 | "norm_res = np.linalg.norm(res)\n",
472 | "res_norm = res/norm_res\n",
473 | "\n",
474 | "xt = np.arange(0,1,1/dim)\n",
475 | "exact = [1/6*(x**3-x) for x in np.arange(0,1,1/dim)]\n",
476 | "norm = np.linalg.norm(exact)\n",
477 | "exact = exact/norm\n",
478 | "\n",
479 | "# red dashes, blue squares and green triangles\n",
480 | "plt.plot(t, res_norm, 'r-', label='analytical')\n",
481 | "plt.plot(bt, x, 'o-.', label='classical')\n",
482 | "plt.plot(bt, quantum_solution, 'gx--', label='quantum')\n",
483 | "# plt.legend()\n",
484 | "plt.legend(loc=\"lower left\")\n",
485 | "plt.xlabel('Boundary [0,1]')\n",
486 | "plt.ylabel('Solution Profile')\n",
487 | "plt.title(\"4-qubit VQE for Poisson Eqn, TwoLocal, BFGS\")\n",
488 | "plt.grid(linestyle = '--', linewidth = 0.5)\n",
489 | "# plt.show()\n",
490 | "# plt.savefig(\"Poisson.png\", bbox_inches='tight', dpi=300)"
491 | ]
492 | },
493 | {
494 | "cell_type": "code",
495 | "execution_count": 27,
496 | "metadata": {
497 | "id": "cGJ8L6j6YScY"
498 | },
499 | "outputs": [
500 | {
501 | "data": {
502 | "text/html": [
503 | "Version Information Qiskit Software Version qiskit-terra0.22.0 qiskit-aer0.11.0 qiskit-ignis0.4.0 qiskit-ibmq-provider0.19.2 qiskit0.39.0 System information Python version 3.8.13 Python compiler Clang 12.0.0 Python build default, Mar 28 2022 06:16:26 OS Darwin CPUs 2 Memory (Gb) 8.0 Fri Jan 13 04:21:09 2023 EST
"
504 | ],
505 | "text/plain": [
506 | ""
507 | ]
508 | },
509 | "metadata": {},
510 | "output_type": "display_data"
511 | }
512 | ],
513 | "source": [
514 | "import qiskit.tools.jupyter\n",
515 | "%qiskit_version_table"
516 | ]
517 | },
518 | {
519 | "cell_type": "code",
520 | "execution_count": null,
521 | "metadata": {},
522 | "outputs": [],
523 | "source": []
524 | }
525 | ],
526 | "metadata": {
527 | "colab": {
528 | "provenance": []
529 | },
530 | "gpuClass": "standard",
531 | "kernelspec": {
532 | "display_name": "Python 3 (ipykernel)",
533 | "language": "python",
534 | "name": "python3"
535 | },
536 | "language_info": {
537 | "codemirror_mode": {
538 | "name": "ipython",
539 | "version": 3
540 | },
541 | "file_extension": ".py",
542 | "mimetype": "text/x-python",
543 | "name": "python",
544 | "nbconvert_exporter": "python",
545 | "pygments_lexer": "ipython3",
546 | "version": "3.8.17"
547 | },
548 | "toc": {
549 | "base_numbering": 1,
550 | "nav_menu": {},
551 | "number_sections": true,
552 | "sideBar": true,
553 | "skip_h1_title": false,
554 | "title_cell": "Table of Contents",
555 | "title_sidebar": "Contents",
556 | "toc_cell": false,
557 | "toc_position": {},
558 | "toc_section_display": true,
559 | "toc_window_display": false
560 | },
561 | "varInspector": {
562 | "cols": {
563 | "lenName": 16,
564 | "lenType": 16,
565 | "lenVar": 40
566 | },
567 | "kernels_config": {
568 | "python": {
569 | "delete_cmd_postfix": "",
570 | "delete_cmd_prefix": "del ",
571 | "library": "var_list.py",
572 | "varRefreshCmd": "print(var_dic_list())"
573 | },
574 | "r": {
575 | "delete_cmd_postfix": ") ",
576 | "delete_cmd_prefix": "rm(",
577 | "library": "var_list.r",
578 | "varRefreshCmd": "cat(var_dic_list()) "
579 | }
580 | },
581 | "types_to_exclude": [
582 | "module",
583 | "function",
584 | "builtin_function_or_method",
585 | "instance",
586 | "_Feature"
587 | ],
588 | "window_display": false
589 | }
590 | },
591 | "nbformat": 4,
592 | "nbformat_minor": 1
593 | }
594 |
--------------------------------------------------------------------------------
/qpde-benchmark/VQLS/VQLS-Tutorial.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 2,
6 | "id": "a810f26f",
7 | "metadata": {
8 | "ExecuteTime": {
9 | "end_time": "2023-03-27T08:15:34.788450Z",
10 | "start_time": "2023-03-27T08:15:34.767467Z"
11 | }
12 | },
13 | "outputs": [],
14 | "source": [
15 | "import numpy\n",
16 | "import paddle\n",
17 | "\n",
18 | "import paddle_quantum\n",
19 | "from paddle_quantum.ansatz import Circuit\n",
20 | "from paddle_quantum.linalg import dagger\n",
21 | "from paddle_quantum.state import zero_state\n",
22 | "from paddle import matmul, trace\n",
23 | "\n",
24 | "\n",
25 | "def Paddle_VQLS(A, b, x, N=5, ITR=4000, LR=0.001, DEPTH=8):\n",
26 | " r\"\"\"Paddle_VQLS\n",
27 | " \n",
28 | " Args:\n",
29 | " A: differential operator discretized into a matrix \n",
30 | " b: driving term\n",
31 | " N: Width of QNN\n",
32 | " ITR: Number of iterations\n",
33 | " LR: Learning rate\n",
34 | " \n",
35 | " Returns: \n",
36 | " x: Solution of the linear system Ax=b\n",
37 | " \"\"\"\n",
38 | " paddle_quantum.set_backend(\"state_vector\")\n",
39 | " \n",
40 | " summary_iter, summary_loss = [], []\n",
41 | " \n",
42 | " A = paddle.to_tensor(A, dtype=paddle_quantum.get_dtype())\n",
43 | " b = paddle.to_tensor(b, dtype=paddle_quantum.get_dtype())\n",
44 | " x = paddle.to_tensor(x, dtype=paddle_quantum.get_dtype())\n",
45 | " \n",
46 | " # Fix the dimensions of network\n",
47 | " net = Circuit(N)\n",
48 | "# net.universal_two_qubits([0, 1])\n",
49 | " net.complex_entangled_layer(depth=DEPTH)\n",
50 | " net.ry(qubits_idx='full')\n",
51 | "\n",
52 | " # Use Adagrad optimizer\n",
53 | " opt = paddle.optimizer.Adam(learning_rate=LR, parameters=net.parameters())\n",
54 | "\n",
55 | " # Optimization iterations\n",
56 | " for itr in range(ITR+10):\n",
57 | " U = net.unitary_matrix()\n",
58 | "# print(\"U=\", U)\n",
59 | " # Run forward propagation to calculate loss function and obtain energy spectrum\n",
60 | "# psi = paddle.to_tensor(psi.numpy(), dtype = paddle_quantum.get_dtype())\n",
61 | " basis = paddle.eye(2**N, 1)\n",
62 | "# print(\"basis =\", basis)\n",
63 | " vec = U @ basis \n",
64 | "# print(\"vec=\", vec)\n",
65 | " psi_fin = matmul(A, vec) \n",
66 | "# print(\"psi=\", psi_fin)\n",
67 | "# print(\"b\", b)\n",
68 | "# print(\"fid=\", matmul(b, psi_fin).numpy()**2)\n",
69 | " \n",
70 | " # Calculate loss function\n",
71 | " fid = paddle.abs(matmul(x, psi_fin)) @ paddle.abs(matmul(x, psi_fin))\n",
72 | " psi_norm = paddle.abs(matmul(psi_fin.conj().t(), psi_fin)) \n",
73 | " loss = 1 - fid/psi_norm\n",
74 | " x_np = psi_fin.numpy()\n",
75 | "\n",
76 | " # In dynamic graph, run backward propagation to minimize loss function\n",
77 | " loss.backward()\n",
78 | " opt.minimize(loss)\n",
79 | " opt.clear_grad()\n",
80 | " \n",
81 | " summary_loss.append(loss.numpy()[0])\n",
82 | " summary_iter.append(itr)\n",
83 | "\n",
84 | " # Print results\n",
85 | " if itr % 10 == 0:\n",
86 | " print('iter:', itr, 'loss:', loss.numpy()[0])\n",
87 | "\n",
88 | " return x_np, summary_loss, summary_iter"
89 | ]
90 | },
91 | {
92 | "cell_type": "code",
93 | "execution_count": 3,
94 | "id": "05bf5b04",
95 | "metadata": {
96 | "ExecuteTime": {
97 | "end_time": "2023-03-27T08:15:35.427964Z",
98 | "start_time": "2023-03-27T08:15:35.414339Z"
99 | }
100 | },
101 | "outputs": [],
102 | "source": [
103 | "import numpy as np\n",
104 | "from scipy import sparse\n",
105 | "from scipy.sparse import diags\n",
106 | "from scipy.sparse.linalg import eigs\n",
107 | "import matplotlib.pyplot as plt\n",
108 | "\n",
109 | "N = 5 # number of qubits\n",
110 | "dim = 2**N # dimension of the operator A\n",
111 | "\n",
112 | "# Setup a tridiagonal matrix\n",
113 | "k = [np.ones(dim-1), -2*np.ones(dim), np.ones(dim-1)]\n",
114 | "offset = [-1, 0, 1]\n",
115 | "A = diags(k,offset).toarray()\n",
116 | "\n",
117 | "# Setup the driving term f(x) = x\n",
118 | "b = np.linspace(0, 1, dim)\n",
119 | "h = 1/(dim-1)\n",
120 | "sampled_b = b*(h**2)\n",
121 | "bt = np.linspace(0, 1, dim)\n",
122 | "\n",
123 | "# Setup the Dirichlet B.C.s\n",
124 | "phi_a, phi_b = 0, 0\n",
125 | "sampled_b[0] -= phi_a\n",
126 | "sampled_b[dim-1] -= phi_b\n",
127 | "norm = np.linalg.norm(sampled_b)\n",
128 | "sampled_b = sampled_b/norm\n",
129 | "\n",
130 | "# Solve the linear system of equations\n",
131 | "x = np.linalg.solve(A, sampled_b)\n",
132 | "f = np.linalg.norm(x)\n",
133 | "x = x/f\n",
134 | "\n",
135 | "# Build Hamiltonian\n",
136 | "# sampled_b = sampled_b.reshape([dim, 1])\n",
137 | "Hamiltonian = A@(np.eye(dim)- sampled_b@sampled_b.T)@A"
138 | ]
139 | },
140 | {
141 | "cell_type": "code",
142 | "execution_count": 4,
143 | "id": "ed5c7630",
144 | "metadata": {
145 | "ExecuteTime": {
146 | "end_time": "2023-03-27T08:18:30.960304Z",
147 | "start_time": "2023-03-27T08:15:38.215981Z"
148 | }
149 | },
150 | "outputs": [
151 | {
152 | "name": "stderr",
153 | "output_type": "stream",
154 | "text": [
155 | "/Users/jacksong/opt/anaconda3/envs/paddle_quantum_env/lib/python3.8/site-packages/paddle/fluid/framework.py:1104: DeprecationWarning: `np.bool` is a deprecated alias for the builtin `bool`. To silence this warning, use `bool` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.bool_` here.\n",
156 | "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
157 | " elif dtype == np.bool:\n"
158 | ]
159 | },
160 | {
161 | "name": "stdout",
162 | "output_type": "stream",
163 | "text": [
164 | "iter: 0 loss: [0.9999995]\n",
165 | "iter: 10 loss: [0.9999991]\n",
166 | "iter: 20 loss: [0.9999985]\n",
167 | "iter: 30 loss: [0.9999977]\n",
168 | "iter: 40 loss: [0.9999965]\n",
169 | "iter: 50 loss: [0.9999948]\n",
170 | "iter: 60 loss: [0.9999925]\n",
171 | "iter: 70 loss: [0.9999892]\n",
172 | "iter: 80 loss: [0.99998426]\n",
173 | "iter: 90 loss: [0.99997634]\n",
174 | "iter: 100 loss: [0.999962]\n",
175 | "iter: 110 loss: [0.99993265]\n",
176 | "iter: 120 loss: [0.9998726]\n",
177 | "iter: 130 loss: [0.99977803]\n",
178 | "iter: 140 loss: [0.99965733]\n",
179 | "iter: 150 loss: [0.9994706]\n",
180 | "iter: 160 loss: [0.9991335]\n",
181 | "iter: 170 loss: [0.9984423]\n",
182 | "iter: 180 loss: [0.9970362]\n",
183 | "iter: 190 loss: [0.99430317]\n",
184 | "iter: 200 loss: [0.9902112]\n",
185 | "iter: 210 loss: [0.9850643]\n",
186 | "iter: 220 loss: [0.97837627]\n",
187 | "iter: 230 loss: [0.9694928]\n",
188 | "iter: 240 loss: [0.958785]\n",
189 | "iter: 250 loss: [0.94623595]\n",
190 | "iter: 260 loss: [0.9322535]\n",
191 | "iter: 270 loss: [0.9173437]\n",
192 | "iter: 280 loss: [0.901759]\n",
193 | "iter: 290 loss: [0.8869754]\n",
194 | "iter: 300 loss: [0.8739699]\n",
195 | "iter: 310 loss: [0.85703385]\n",
196 | "iter: 320 loss: [0.8469851]\n",
197 | "iter: 330 loss: [0.82984984]\n",
198 | "iter: 340 loss: [0.8195445]\n",
199 | "iter: 350 loss: [0.80917805]\n",
200 | "iter: 360 loss: [0.7968323]\n",
201 | "iter: 370 loss: [0.78711903]\n",
202 | "iter: 380 loss: [0.77340925]\n",
203 | "iter: 390 loss: [0.7590636]\n",
204 | "iter: 400 loss: [0.74884534]\n",
205 | "iter: 410 loss: [0.7315618]\n",
206 | "iter: 420 loss: [0.7201997]\n",
207 | "iter: 430 loss: [0.7066922]\n",
208 | "iter: 440 loss: [0.69152725]\n",
209 | "iter: 450 loss: [0.6851569]\n",
210 | "iter: 460 loss: [0.66842115]\n",
211 | "iter: 470 loss: [0.6527851]\n",
212 | "iter: 480 loss: [0.63085014]\n",
213 | "iter: 490 loss: [0.62646985]\n",
214 | "iter: 500 loss: [0.60149336]\n",
215 | "iter: 510 loss: [0.5901969]\n",
216 | "iter: 520 loss: [0.5722723]\n",
217 | "iter: 530 loss: [0.55932933]\n",
218 | "iter: 540 loss: [0.5453533]\n",
219 | "iter: 550 loss: [0.52357626]\n",
220 | "iter: 560 loss: [0.51321125]\n",
221 | "iter: 570 loss: [0.5068854]\n",
222 | "iter: 580 loss: [0.4888698]\n",
223 | "iter: 590 loss: [0.46799725]\n",
224 | "iter: 600 loss: [0.4596097]\n",
225 | "iter: 610 loss: [0.43746412]\n",
226 | "iter: 620 loss: [0.44396937]\n",
227 | "iter: 630 loss: [0.4189999]\n",
228 | "iter: 640 loss: [0.4067816]\n",
229 | "iter: 650 loss: [0.40177655]\n",
230 | "iter: 660 loss: [0.36616606]\n",
231 | "iter: 670 loss: [0.36820787]\n",
232 | "iter: 680 loss: [0.36050946]\n",
233 | "iter: 690 loss: [0.36608732]\n",
234 | "iter: 700 loss: [0.34251112]\n",
235 | "iter: 710 loss: [0.34239078]\n",
236 | "iter: 720 loss: [0.31841183]\n",
237 | "iter: 730 loss: [0.3148833]\n",
238 | "iter: 740 loss: [0.28842318]\n",
239 | "iter: 750 loss: [0.30083483]\n",
240 | "iter: 760 loss: [0.29148632]\n",
241 | "iter: 770 loss: [0.26642507]\n",
242 | "iter: 780 loss: [0.30920094]\n",
243 | "iter: 790 loss: [0.27067554]\n",
244 | "iter: 800 loss: [0.28038377]\n",
245 | "iter: 810 loss: [0.2538488]\n",
246 | "iter: 820 loss: [0.24996263]\n",
247 | "iter: 830 loss: [0.23614722]\n",
248 | "iter: 840 loss: [0.23900175]\n",
249 | "iter: 850 loss: [0.2292344]\n",
250 | "iter: 860 loss: [0.22034258]\n",
251 | "iter: 870 loss: [0.22441715]\n",
252 | "iter: 880 loss: [0.21848476]\n",
253 | "iter: 890 loss: [0.20443988]\n",
254 | "iter: 900 loss: [0.21340084]\n",
255 | "iter: 910 loss: [0.20026034]\n",
256 | "iter: 920 loss: [0.21875525]\n",
257 | "iter: 930 loss: [0.19664842]\n",
258 | "iter: 940 loss: [0.19506437]\n",
259 | "iter: 950 loss: [0.18456888]\n",
260 | "iter: 960 loss: [0.19005966]\n",
261 | "iter: 970 loss: [0.18119103]\n",
262 | "iter: 980 loss: [0.17022526]\n",
263 | "iter: 990 loss: [0.17429882]\n",
264 | "iter: 1000 loss: [0.16893113]\n",
265 | "iter: 1010 loss: [0.17068529]\n",
266 | "iter: 1020 loss: [0.17144758]\n",
267 | "iter: 1030 loss: [0.17124295]\n",
268 | "iter: 1040 loss: [0.15699756]\n",
269 | "iter: 1050 loss: [0.15461981]\n",
270 | "iter: 1060 loss: [0.15773368]\n",
271 | "iter: 1070 loss: [0.15090787]\n",
272 | "iter: 1080 loss: [0.15091127]\n",
273 | "iter: 1090 loss: [0.15812343]\n",
274 | "iter: 1100 loss: [0.14090383]\n",
275 | "iter: 1110 loss: [0.13684046]\n",
276 | "iter: 1120 loss: [0.13892597]\n",
277 | "iter: 1130 loss: [0.13894719]\n",
278 | "iter: 1140 loss: [0.13543397]\n",
279 | "iter: 1150 loss: [0.13445705]\n",
280 | "iter: 1160 loss: [0.12495315]\n",
281 | "iter: 1170 loss: [0.13113385]\n",
282 | "iter: 1180 loss: [0.13106096]\n",
283 | "iter: 1190 loss: [0.13163579]\n",
284 | "iter: 1200 loss: [0.12128776]\n",
285 | "iter: 1210 loss: [0.119528]\n",
286 | "iter: 1220 loss: [0.12667644]\n",
287 | "iter: 1230 loss: [0.13259965]\n",
288 | "iter: 1240 loss: [0.1152665]\n",
289 | "iter: 1250 loss: [0.12239945]\n",
290 | "iter: 1260 loss: [0.12036973]\n",
291 | "iter: 1270 loss: [0.11065847]\n",
292 | "iter: 1280 loss: [0.11087608]\n",
293 | "iter: 1290 loss: [0.1124869]\n",
294 | "iter: 1300 loss: [0.10936433]\n",
295 | "iter: 1310 loss: [0.10066783]\n",
296 | "iter: 1320 loss: [0.09974813]\n",
297 | "iter: 1330 loss: [0.10018587]\n",
298 | "iter: 1340 loss: [0.10262644]\n",
299 | "iter: 1350 loss: [0.09437436]\n",
300 | "iter: 1360 loss: [0.09895128]\n",
301 | "iter: 1370 loss: [0.09120196]\n",
302 | "iter: 1380 loss: [0.09399396]\n",
303 | "iter: 1390 loss: [0.09099567]\n",
304 | "iter: 1400 loss: [0.09314716]\n",
305 | "iter: 1410 loss: [0.09045863]\n",
306 | "iter: 1420 loss: [0.08411175]\n",
307 | "iter: 1430 loss: [0.0844503]\n",
308 | "iter: 1440 loss: [0.08485097]\n",
309 | "iter: 1450 loss: [0.08231288]\n",
310 | "iter: 1460 loss: [0.07887423]\n",
311 | "iter: 1470 loss: [0.08607358]\n",
312 | "iter: 1480 loss: [0.07465452]\n",
313 | "iter: 1490 loss: [0.08200842]\n",
314 | "iter: 1500 loss: [0.08296376]\n",
315 | "iter: 1510 loss: [0.07211596]\n",
316 | "iter: 1520 loss: [0.07719404]\n",
317 | "iter: 1530 loss: [0.07320249]\n",
318 | "iter: 1540 loss: [0.07101089]\n",
319 | "iter: 1550 loss: [0.07577777]\n",
320 | "iter: 1560 loss: [0.0737434]\n",
321 | "iter: 1570 loss: [0.06788176]\n",
322 | "iter: 1580 loss: [0.07095248]\n",
323 | "iter: 1590 loss: [0.06650239]\n",
324 | "iter: 1600 loss: [0.06891835]\n",
325 | "iter: 1610 loss: [0.06357455]\n",
326 | "iter: 1620 loss: [0.0688197]\n",
327 | "iter: 1630 loss: [0.06454271]\n",
328 | "iter: 1640 loss: [0.06393564]\n",
329 | "iter: 1650 loss: [0.06102061]\n",
330 | "iter: 1660 loss: [0.06610787]\n",
331 | "iter: 1670 loss: [0.05390555]\n",
332 | "iter: 1680 loss: [0.0661335]\n",
333 | "iter: 1690 loss: [0.0634191]\n",
334 | "iter: 1700 loss: [0.05622768]\n",
335 | "iter: 1710 loss: [0.06028748]\n",
336 | "iter: 1720 loss: [0.05708498]\n",
337 | "iter: 1730 loss: [0.05420136]\n",
338 | "iter: 1740 loss: [0.05803156]\n",
339 | "iter: 1750 loss: [0.05898595]\n",
340 | "iter: 1760 loss: [0.05139607]\n",
341 | "iter: 1770 loss: [0.05194801]\n",
342 | "iter: 1780 loss: [0.05207884]\n",
343 | "iter: 1790 loss: [0.05020285]\n",
344 | "iter: 1800 loss: [0.05043536]\n",
345 | "iter: 1810 loss: [0.05492258]\n",
346 | "iter: 1820 loss: [0.04834485]\n",
347 | "iter: 1830 loss: [0.04966044]\n",
348 | "iter: 1840 loss: [0.04275203]\n",
349 | "iter: 1850 loss: [0.05322564]\n",
350 | "iter: 1860 loss: [0.04672706]\n",
351 | "iter: 1870 loss: [0.04994172]\n",
352 | "iter: 1880 loss: [0.04101992]\n",
353 | "iter: 1890 loss: [0.04677039]\n",
354 | "iter: 1900 loss: [0.04555911]\n",
355 | "iter: 1910 loss: [0.04104382]\n",
356 | "iter: 1920 loss: [0.0481295]\n",
357 | "iter: 1930 loss: [0.04118884]\n",
358 | "iter: 1940 loss: [0.04040253]\n",
359 | "iter: 1950 loss: [0.04112786]\n",
360 | "iter: 1960 loss: [0.04129499]\n",
361 | "iter: 1970 loss: [0.0430429]\n",
362 | "iter: 1980 loss: [0.04080677]\n",
363 | "iter: 1990 loss: [0.04122531]\n",
364 | "iter: 2000 loss: [0.04282337]\n",
365 | "iter: 2010 loss: [0.03707278]\n",
366 | "iter: 2020 loss: [0.03707516]\n",
367 | "iter: 2030 loss: [0.03718376]\n",
368 | "iter: 2040 loss: [0.03821832]\n",
369 | "iter: 2050 loss: [0.03526342]\n",
370 | "iter: 2060 loss: [0.03629172]\n",
371 | "iter: 2070 loss: [0.03479308]\n",
372 | "iter: 2080 loss: [0.03714341]\n",
373 | "iter: 2090 loss: [0.03444552]\n",
374 | "iter: 2100 loss: [0.0351963]\n",
375 | "iter: 2110 loss: [0.03304195]\n",
376 | "iter: 2120 loss: [0.03575552]\n",
377 | "iter: 2130 loss: [0.02890271]\n",
378 | "iter: 2140 loss: [0.03336972]\n",
379 | "iter: 2150 loss: [0.03245562]\n",
380 | "iter: 2160 loss: [0.03537172]\n",
381 | "iter: 2170 loss: [0.0330472]\n",
382 | "iter: 2180 loss: [0.02976841]\n",
383 | "iter: 2190 loss: [0.03253967]\n",
384 | "iter: 2200 loss: [0.03063011]\n",
385 | "iter: 2210 loss: [0.02916819]\n",
386 | "iter: 2220 loss: [0.03046489]\n",
387 | "iter: 2230 loss: [0.03003293]\n",
388 | "iter: 2240 loss: [0.02766126]\n",
389 | "iter: 2250 loss: [0.02934003]\n",
390 | "iter: 2260 loss: [0.02784395]\n",
391 | "iter: 2270 loss: [0.02670693]\n",
392 | "iter: 2280 loss: [0.02802896]\n",
393 | "iter: 2290 loss: [0.0300979]\n",
394 | "iter: 2300 loss: [0.02513164]\n",
395 | "iter: 2310 loss: [0.03008884]\n",
396 | "iter: 2320 loss: [0.029024]\n",
397 | "iter: 2330 loss: [0.02263224]\n",
398 | "iter: 2340 loss: [0.02519315]\n",
399 | "iter: 2350 loss: [0.02944547]\n",
400 | "iter: 2360 loss: [0.02634531]\n",
401 | "iter: 2370 loss: [0.02335167]\n",
402 | "iter: 2380 loss: [0.02372485]\n",
403 | "iter: 2390 loss: [0.02727032]\n",
404 | "iter: 2400 loss: [0.02472723]\n",
405 | "iter: 2410 loss: [0.02386069]\n",
406 | "iter: 2420 loss: [0.02141368]\n",
407 | "iter: 2430 loss: [0.02790368]\n",
408 | "iter: 2440 loss: [0.02348369]\n",
409 | "iter: 2450 loss: [0.019835]\n",
410 | "iter: 2460 loss: [0.02585107]\n",
411 | "iter: 2470 loss: [0.02184409]\n",
412 | "iter: 2480 loss: [0.0205099]\n",
413 | "iter: 2490 loss: [0.02268714]\n",
414 | "iter: 2500 loss: [0.02154869]\n",
415 | "iter: 2510 loss: [0.02330291]\n",
416 | "iter: 2520 loss: [0.02659762]\n",
417 | "iter: 2530 loss: [0.02395034]\n",
418 | "iter: 2540 loss: [0.0181821]\n",
419 | "iter: 2550 loss: [0.02396744]\n",
420 | "iter: 2560 loss: [0.01962286]\n",
421 | "iter: 2570 loss: [0.01958615]\n",
422 | "iter: 2580 loss: [0.0230816]\n",
423 | "iter: 2590 loss: [0.02186877]\n",
424 | "iter: 2600 loss: [0.01786339]\n",
425 | "iter: 2610 loss: [0.02096528]\n",
426 | "iter: 2620 loss: [0.01776052]\n",
427 | "iter: 2630 loss: [0.01907885]\n",
428 | "iter: 2640 loss: [0.0185343]\n",
429 | "iter: 2650 loss: [0.01427478]\n",
430 | "iter: 2660 loss: [0.02575791]\n",
431 | "iter: 2670 loss: [0.01894706]\n",
432 | "iter: 2680 loss: [0.02132595]\n",
433 | "iter: 2690 loss: [0.01767021]\n",
434 | "iter: 2700 loss: [0.02059817]\n",
435 | "iter: 2710 loss: [0.01784259]\n",
436 | "iter: 2720 loss: [0.01663983]\n",
437 | "iter: 2730 loss: [0.02369821]\n",
438 | "iter: 2740 loss: [0.01658016]\n",
439 | "iter: 2750 loss: [0.01957369]\n",
440 | "iter: 2760 loss: [0.01728761]\n",
441 | "iter: 2770 loss: [0.01633668]\n",
442 | "iter: 2780 loss: [0.01781732]\n",
443 | "iter: 2790 loss: [0.01999861]\n"
444 | ]
445 | },
446 | {
447 | "name": "stdout",
448 | "output_type": "stream",
449 | "text": [
450 | "iter: 2800 loss: [0.01478648]\n",
451 | "iter: 2810 loss: [0.01100659]\n",
452 | "iter: 2820 loss: [0.01861829]\n",
453 | "iter: 2830 loss: [0.01977551]\n",
454 | "iter: 2840 loss: [0.01463562]\n",
455 | "iter: 2850 loss: [0.01670855]\n",
456 | "iter: 2860 loss: [0.0165444]\n",
457 | "iter: 2870 loss: [0.01510918]\n",
458 | "iter: 2880 loss: [0.01711935]\n",
459 | "iter: 2890 loss: [0.0151841]\n",
460 | "iter: 2900 loss: [0.01839]\n",
461 | "iter: 2910 loss: [0.01604778]\n",
462 | "iter: 2920 loss: [0.01566982]\n",
463 | "iter: 2930 loss: [0.01575792]\n",
464 | "iter: 2940 loss: [0.01458544]\n",
465 | "iter: 2950 loss: [0.01375341]\n",
466 | "iter: 2960 loss: [0.01371062]\n",
467 | "iter: 2970 loss: [0.01812452]\n",
468 | "iter: 2980 loss: [0.01637954]\n",
469 | "iter: 2990 loss: [0.01561213]\n",
470 | "iter: 3000 loss: [0.01496708]\n"
471 | ]
472 | }
473 | ],
474 | "source": [
475 | "quantum_solution, summary_loss, summary_iter = Paddle_VQLS(A, sampled_b, x)"
476 | ]
477 | },
478 | {
479 | "cell_type": "code",
480 | "execution_count": 5,
481 | "id": "a0e143e4",
482 | "metadata": {
483 | "ExecuteTime": {
484 | "end_time": "2023-03-27T08:18:33.164336Z",
485 | "start_time": "2023-03-27T08:18:33.150232Z"
486 | }
487 | },
488 | "outputs": [
489 | {
490 | "name": "stdout",
491 | "output_type": "stream",
492 | "text": [
493 | "[[ 0.02701115-0.00118657j]\n",
494 | " [-0.00018292-0.03868385j]\n",
495 | " [ 0.04813354-0.04406511j]\n",
496 | " [ 0.05026792-0.05389684j]\n",
497 | " [ 0.05646506-0.08196507j]\n",
498 | " [ 0.05986209-0.08330461j]\n",
499 | " [ 0.06919847-0.10666863j]\n",
500 | " [ 0.11077469-0.1088718j ]\n",
501 | " [ 0.0771783 -0.1340521j ]\n",
502 | " [ 0.08302294-0.1495326j ]\n",
503 | " [ 0.11091391-0.14359488j]\n",
504 | " [ 0.10933397-0.17662631j]\n",
505 | " [ 0.0988782 -0.1804677j ]\n",
506 | " [ 0.09917524-0.1888498j ]\n",
507 | " [ 0.1101555 -0.1918219j ]\n",
508 | " [ 0.1188476 -0.22569025j]\n",
509 | " [ 0.10442903-0.17897193j]\n",
510 | " [ 0.10261679-0.23118928j]\n",
511 | " [ 0.103703 -0.21275611j]\n",
512 | " [ 0.10371757-0.20618868j]\n",
513 | " [ 0.11776382-0.22833374j]\n",
514 | " [ 0.0750334 -0.19854312j]\n",
515 | " [ 0.09901012-0.21457401j]\n",
516 | " [ 0.09554348-0.19975236j]\n",
517 | " [ 0.08163321-0.16457765j]\n",
518 | " [ 0.06564846-0.19324806j]\n",
519 | " [ 0.07206292-0.16123565j]\n",
520 | " [ 0.07128711-0.1193899j ]\n",
521 | " [ 0.03478539-0.14262764j]\n",
522 | " [ 0.05078613-0.07066186j]\n",
523 | " [ 0.02230998-0.08834411j]\n",
524 | " [ 0.02307648-0.01580628j]]\n"
525 | ]
526 | }
527 | ],
528 | "source": [
529 | "qnorm = np.linalg.norm(quantum_solution)\n",
530 | "quantum_solution = quantum_solution/qnorm\n",
531 | "print(quantum_solution)"
532 | ]
533 | },
534 | {
535 | "cell_type": "code",
536 | "execution_count": 6,
537 | "id": "f2700b64",
538 | "metadata": {
539 | "ExecuteTime": {
540 | "end_time": "2023-03-27T08:18:35.511732Z",
541 | "start_time": "2023-03-27T08:18:35.380994Z"
542 | }
543 | },
544 | "outputs": [
545 | {
546 | "data": {
547 | "text/plain": [
548 | "[]"
549 | ]
550 | },
551 | "execution_count": 6,
552 | "metadata": {},
553 | "output_type": "execute_result"
554 | },
555 | {
556 | "data": {
557 | "image/png": "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\n",
558 | "text/plain": [
559 | ""
560 | ]
561 | },
562 | "metadata": {},
563 | "output_type": "display_data"
564 | }
565 | ],
566 | "source": [
567 | "plt.plot(summary_iter, summary_loss)\n",
568 | "plt.plot(summary_iter, np.zeros(len(summary_iter))) "
569 | ]
570 | },
571 | {
572 | "cell_type": "code",
573 | "execution_count": 8,
574 | "id": "f5430b26",
575 | "metadata": {
576 | "ExecuteTime": {
577 | "end_time": "2023-03-27T08:18:42.541408Z",
578 | "start_time": "2023-03-27T08:18:42.378713Z"
579 | }
580 | },
581 | "outputs": [
582 | {
583 | "data": {
584 | "image/png": "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\n",
585 | "text/plain": [
586 | ""
587 | ]
588 | },
589 | "metadata": {},
590 | "output_type": "display_data"
591 | }
592 | ],
593 | "source": [
594 | "t = np.arange(0., 1., 0.02)\n",
595 | "res = (t**3-t)/6\n",
596 | "norm_res = np.linalg.norm(res)\n",
597 | "res_norm = res/norm_res\n",
598 | "\n",
599 | "xt = np.arange(0,1,1/dim)\n",
600 | "exact = [1/6*(x**3-x) for x in np.arange(0,1,1/dim)]\n",
601 | "norm = np.linalg.norm(exact)\n",
602 | "exact = exact/norm\n",
603 | "\n",
604 | "# red dashes, blue squares and green triangles\n",
605 | "plt.plot(t, res_norm, 'r-', label='analytical')\n",
606 | "plt.plot(bt, x, 'o-.', label='classical')\n",
607 | "plt.plot(bt, quantum_solution, 'gx--', label='quantum')\n",
608 | "# plt.legend()\n",
609 | "plt.legend(loc=\"lower left\")\n",
610 | "plt.xlabel('Boundary [0,1]')\n",
611 | "plt.ylabel('Solution Profile')\n",
612 | "plt.title(\"qubit VQLS for Poisson Eqn, TwoLocal, BFGS\")\n",
613 | "plt.grid(linestyle = '--', linewidth = 0.5)\n",
614 | "# plt.show()\n",
615 | "# plt.savefig(\"Poisson.png\", bbox_inches='tight', dpi=300)"
616 | ]
617 | },
618 | {
619 | "cell_type": "code",
620 | "execution_count": null,
621 | "id": "b6410361",
622 | "metadata": {},
623 | "outputs": [],
624 | "source": []
625 | },
626 | {
627 | "cell_type": "code",
628 | "execution_count": null,
629 | "id": "f1d2a68d",
630 | "metadata": {},
631 | "outputs": [],
632 | "source": []
633 | }
634 | ],
635 | "metadata": {
636 | "kernelspec": {
637 | "display_name": "Python 3 (ipykernel)",
638 | "language": "python",
639 | "name": "python3"
640 | },
641 | "language_info": {
642 | "codemirror_mode": {
643 | "name": "ipython",
644 | "version": 3
645 | },
646 | "file_extension": ".py",
647 | "mimetype": "text/x-python",
648 | "name": "python",
649 | "nbconvert_exporter": "python",
650 | "pygments_lexer": "ipython3",
651 | "version": "3.8.16"
652 | },
653 | "toc": {
654 | "base_numbering": 1,
655 | "nav_menu": {},
656 | "number_sections": true,
657 | "sideBar": true,
658 | "skip_h1_title": false,
659 | "title_cell": "Table of Contents",
660 | "title_sidebar": "Contents",
661 | "toc_cell": false,
662 | "toc_position": {},
663 | "toc_section_display": true,
664 | "toc_window_display": false
665 | },
666 | "varInspector": {
667 | "cols": {
668 | "lenName": 16,
669 | "lenType": 16,
670 | "lenVar": 40
671 | },
672 | "kernels_config": {
673 | "python": {
674 | "delete_cmd_postfix": "",
675 | "delete_cmd_prefix": "del ",
676 | "library": "var_list.py",
677 | "varRefreshCmd": "print(var_dic_list())"
678 | },
679 | "r": {
680 | "delete_cmd_postfix": ") ",
681 | "delete_cmd_prefix": "rm(",
682 | "library": "var_list.r",
683 | "varRefreshCmd": "cat(var_dic_list()) "
684 | }
685 | },
686 | "types_to_exclude": [
687 | "module",
688 | "function",
689 | "builtin_function_or_method",
690 | "instance",
691 | "_Feature"
692 | ],
693 | "window_display": false
694 | }
695 | },
696 | "nbformat": 4,
697 | "nbformat_minor": 5
698 | }
699 |
--------------------------------------------------------------------------------