|
115 | 115 | },
|
116 | 116 | {
|
117 | 117 | "cell_type": "code",
|
118 |
| - "execution_count": 6, |
| 118 | + "execution_count": 22, |
119 | 119 | "id": "b1cb8ad4",
|
120 | 120 | "metadata": {},
|
121 | 121 | "outputs": [
|
122 | 122 | {
|
123 | 123 | "name": "stdout",
|
124 | 124 | "output_type": "stream",
|
125 | 125 | "text": [
|
126 |
| - "Result: ATOSDevice, MYQLM_PYLINALG\n", |
127 |
| - " Expectation value: -3.5935083233096687\n", |
| 126 | + "BatchResult: 2 results\n", |
| 127 | + "Result: circuit 1, ATOSDevice, MYQLM_PYLINALG\n", |
| 128 | + " Expectation value: -0.12200000000000011\n", |
| 129 | + " Error/Variance: 0.09998468351171062\n", |
| 130 | + "Result: circuit 1, IBMDevice, AER_SIMULATOR\n", |
| 131 | + " Expectation value: 1.9081958235744878e-17\n", |
128 | 132 | " Error/Variance: 0.0\n",
|
129 |
| - "-3.5935083233096687\n" |
| 133 | + "expectation_value: -0.12200000000000011\n", |
| 134 | + "expectation_value: 1.9081958235744878e-17\n" |
130 | 135 | ]
|
131 | 136 | }
|
132 | 137 | ],
|
133 | 138 | "source": [
|
134 | 139 | "from mpqp.execution import run, ATOSDevice, IBMDevice\n",
|
135 |
| - "result = run(circuit, ATOSDevice.MYQLM_PYLINALG)\n", |
136 |
| - "print(result)\n", |
137 |
| - "print(result.expectation_value)" |
| 140 | + "results = run(circuit, [ATOSDevice.MYQLM_PYLINALG, IBMDevice.AER_SIMULATOR])\n", |
| 141 | + "print(results)\n", |
| 142 | + "for result in results:\n", |
| 143 | + " print(f\"expectation_value:\", result.expectation_value)" |
138 | 144 | ]
|
139 | 145 | },
|
140 | 146 | {
|
|
159 | 165 | "output_type": "stream",
|
160 | 166 | "text": [
|
161 | 167 | "BatchResult: 2 results\n",
|
162 |
| - "Result: ATOSDevice, MYQLM_PYLINALG\n", |
163 |
| - " Expectation value: -3.6279999999999997\n", |
164 |
| - " Error/Variance: 0.10472127540648739\n", |
165 |
| - "Result: IBMDevice, AER_SIMULATOR\n", |
166 |
| - " Expectation value: -3.2729999999999992\n", |
167 |
| - " Error/Variance: 22.060085000000004\n" |
| 168 | + "Result: circuit 1, ATOSDevice, MYQLM_PYLINALG\n", |
| 169 | + " Expectation value: -3.722\n", |
| 170 | + " Error/Variance: 0.10571682351161849\n", |
| 171 | + "Result: circuit 1, IBMDevice, AER_SIMULATOR\n", |
| 172 | + " Expectation value: -3.5935083233096723\n", |
| 173 | + " Error/Variance: 0.0\n" |
168 | 174 | ]
|
169 | 175 | }
|
170 | 176 | ],
|
|
231 | 237 | "everything in term of expression based on the fundamental atoms. Let's see how."
|
232 | 238 | ]
|
233 | 239 | },
|
234 |
| - { |
235 |
| - "cell_type": "markdown", |
236 |
| - "id": "9ab10e2e", |
237 |
| - "metadata": {}, |
238 |
| - "source": [] |
239 |
| - }, |
240 | 240 | {
|
241 | 241 | "cell_type": "markdown",
|
242 | 242 | "id": "7d07ec4b",
|
|
257 | 257 | "name": "stdout",
|
258 | 258 | "output_type": "stream",
|
259 | 259 | "text": [
|
260 |
| - "ps_1=1*I@Z + -3*X@Y\n" |
| 260 | + "ps_1=1*I@Z - 3*X@Y\n" |
261 | 261 | ]
|
262 | 262 | }
|
263 | 263 | ],
|
|
266 | 266 | "print(f\"{ps_1=}\")"
|
267 | 267 | ]
|
268 | 268 | },
|
| 269 | + { |
| 270 | + "cell_type": "markdown", |
| 271 | + "id": "937f1a84", |
| 272 | + "metadata": {}, |
| 273 | + "source": [ |
| 274 | + "#### Using Symbolic Variables in a PauliString\n", |
| 275 | + "\n", |
| 276 | + "We can also define `PauliString` objects with symbolic coefficients using `sympy`:" |
| 277 | + ] |
| 278 | + }, |
| 279 | + { |
| 280 | + "cell_type": "code", |
| 281 | + "execution_count": 11, |
| 282 | + "id": "032ff198", |
| 283 | + "metadata": {}, |
| 284 | + "outputs": [ |
| 285 | + { |
| 286 | + "name": "stdout", |
| 287 | + "output_type": "stream", |
| 288 | + "text": [ |
| 289 | + "(θ)*I@X + (k)*Z@Y\n" |
| 290 | + ] |
| 291 | + } |
| 292 | + ], |
| 293 | + "source": [ |
| 294 | + "from sympy import symbols\n", |
| 295 | + "\n", |
| 296 | + "theta, k = symbols(\"θ k\")\n", |
| 297 | + "ps_symbol = theta * I @ X + k * Z @ Y\n", |
| 298 | + "print(ps_symbol)" |
| 299 | + ] |
| 300 | + }, |
| 301 | + { |
| 302 | + "cell_type": "markdown", |
| 303 | + "id": "d153fda4", |
| 304 | + "metadata": {}, |
| 305 | + "source": [ |
| 306 | + "We can substitute numerical values for the symbolic coefficients:" |
| 307 | + ] |
| 308 | + }, |
| 309 | + { |
| 310 | + "cell_type": "code", |
| 311 | + "execution_count": 12, |
| 312 | + "id": "5dd3c74b", |
| 313 | + "metadata": {}, |
| 314 | + "outputs": [ |
| 315 | + { |
| 316 | + "name": "stdout", |
| 317 | + "output_type": "stream", |
| 318 | + "text": [ |
| 319 | + "3.1416*I@X - 1*Z@Y\n" |
| 320 | + ] |
| 321 | + } |
| 322 | + ], |
| 323 | + "source": [ |
| 324 | + "ps_symbol = ps_symbol.subs({theta: np.pi, k: -1})\n", |
| 325 | + "print(ps_symbol)" |
| 326 | + ] |
| 327 | + }, |
269 | 328 | {
|
270 | 329 | "cell_type": "markdown",
|
271 | 330 | "id": "7824baf5",
|
|
283 | 342 | },
|
284 | 343 | {
|
285 | 344 | "cell_type": "code",
|
286 |
| - "execution_count": 11, |
| 345 | + "execution_count": 13, |
287 | 346 | "id": "06784ef3",
|
288 | 347 | "metadata": {},
|
289 | 348 | "outputs": [
|
290 | 349 | {
|
291 | 350 | "name": "stdout",
|
292 | 351 | "output_type": "stream",
|
293 | 352 | "text": [
|
294 |
| - "ps_2 = 1*I@Z + 2.555555555*Y@I + 1*X@Z + -1*X@Z\n", |
295 |
| - " = 2.555555555*Y@I + 1*I@Z\n", |
296 |
| - " ~= 1*I@Z + 2.6*Y@I + 1*X@Z + -1*X@Z\n", |
| 353 | + "ps_2 = 1*I@Z + 2.555555555*Y@I + 1*X@Z - 1*X@Z\n", |
| 354 | + " = 1*I@Z + 2.555555555*Y@I\n", |
| 355 | + " ~= 1*I@Z + 2.6*Y@I + 1*X@Z - 1*X@Z\n", |
297 | 356 | " ~= 1*I@Z + 2.5556*Y@I\n"
|
298 | 357 | ]
|
299 | 358 | }
|
|
318 | 377 | },
|
319 | 378 | {
|
320 | 379 | "cell_type": "code",
|
321 |
| - "execution_count": 12, |
| 380 | + "execution_count": 14, |
322 | 381 | "id": "b9cadb08",
|
323 | 382 | "metadata": {},
|
324 | 383 | "outputs": [
|
|
327 | 386 | "output_type": "stream",
|
328 | 387 | "text": [
|
329 | 388 | "Addition:\n",
|
330 |
| - "(1*I@Z + -3*X@Y) + (1*I@Z + 2.6*Y@I) = 2*I@Z + -3*X@Y + 2.6*Y@I\n", |
| 389 | + "(1*I@Z - 3*X@Y) + (1*I@Z + 2.6*Y@I) = 2*I@Z - 3*X@Y + 2.6*Y@I\n", |
331 | 390 | "\n",
|
332 | 391 | "Subtraction:\n",
|
333 |
| - "(1*I@Z + -3*X@Y) - (1*I@Z + 2.6*Y@I) = -3*X@Y + -2.6*Y@I\n", |
| 392 | + "(1*I@Z - 3*X@Y) - (1*I@Z + 2.6*Y@I) = -3*X@Y - 2.6*Y@I\n", |
334 | 393 | "\n",
|
335 | 394 | "Scalar product:\n",
|
336 |
| - "2 * (1*I@Z + -3*X@Y) = 2*I@Z + -6*X@Y\n", |
| 395 | + "2 * (1*I@Z - 3*X@Y) = 2*I@Z - 6*X@Y\n", |
337 | 396 | "\n",
|
338 | 397 | "Scalar division:\n",
|
339 | 398 | "(1*I@Z + 2.6*Y@I) / 3 ~= 0.3333*I@Z + 0.8667*Y@I\n",
|
340 | 399 | "\n",
|
341 | 400 | "Tensor product:\n",
|
342 |
| - "(1*I@Z + -3*X@Y) @ Z = 1*I@Z@Z + -3*X@Y@Z\n", |
343 |
| - "(1*I@Z + -3*X@Y) @ (1*I@Z + 2.6*Y@I) = 1*I@Z@I@Z + -3*I@Z@X@Y + 2.6*Y@I@I@Z + -7.8*Y@I@X@Y\n" |
| 401 | + "(1*I@Z - 3*X@Y) @ Z = 1*I@Z@Z - 3*X@Y@Z\n", |
| 402 | + "(1*I@Z - 3*X@Y) @ (1*I@Z + 2.6*Y@I) = 1*I@Z@I@Z + 2.6*I@Z@Y@I - 3*X@Y@I@Z - 7.8*X@Y@Y@I\n" |
344 | 403 | ]
|
345 | 404 | }
|
346 | 405 | ],
|
|
373 | 432 | },
|
374 | 433 | {
|
375 | 434 | "cell_type": "code",
|
376 |
| - "execution_count": 13, |
| 435 | + "execution_count": 15, |
377 | 436 | "id": "5b0537a1",
|
378 | 437 | "metadata": {},
|
379 | 438 | "outputs": [],
|
|
393 | 452 | },
|
394 | 453 | {
|
395 | 454 | "cell_type": "code",
|
396 |
| - "execution_count": 14, |
| 455 | + "execution_count": 23, |
397 | 456 | "id": "1732e099",
|
398 | 457 | "metadata": {},
|
399 | 458 | "outputs": [
|
|
403 | 462 | "text": [
|
404 | 463 | "`obs` created with matrix:\n",
|
405 | 464 | "matrix:\n",
|
406 |
| - "[[ 4.+0.j 2.+0.j 3.+0.j 8.+0.j]\n", |
407 |
| - " [ 2.+0.j -3.+0.j 1.+0.j 0.+0.j]\n", |
408 |
| - " [ 3.+0.j 1.+0.j -1.+0.j 5.+0.j]\n", |
409 |
| - " [ 8.+0.j 0.+0.j 5.+0.j 2.+0.j]]\n", |
| 465 | + "[[4, 2 , 3 , 8],\n", |
| 466 | + " [2, -3, 1 , 0],\n", |
| 467 | + " [3, 1 , -1, 5],\n", |
| 468 | + " [8, 0 , 5 , 2]]\n", |
410 | 469 | "Pauli string:\n",
|
411 |
| - "0.5*I@I + 3.5*I@X + 1*I@Z + 1.5*X@I + 4.5*X@X + 1.5*X@Z + -3.5*Y@Y + -1.5*Z@X + 2.5*Z@Z\n", |
| 470 | + "0.5*I@I + 3.5*I@X + 1*I@Z + 1.5*X@I + 4.5*X@X + 1.5*X@Z - 3.5*Y@Y - 1.5*Z@X + 2.5*Z@Z\n", |
412 | 471 | "\n",
|
413 | 472 | "\n",
|
414 | 473 | "`obs1` created with Pauli string:\n",
|
415 | 474 | "Pauli string:\n",
|
416 |
| - "1*I@Z + -3*X@Y\n", |
| 475 | + "1*I@Z - 3*X@Y\n", |
417 | 476 | "matrix:\n",
|
418 |
| - "[[ 1.+0.j 0.+0.j 0.+0.j 0.-3.j]\n", |
419 |
| - " [ 0.+0.j -1.+0.j 0.+3.j 0.+0.j]\n", |
420 |
| - " [ 0.+0.j 0.-3.j 1.+0.j 0.+0.j]\n", |
421 |
| - " [ 0.+3.j 0.+0.j 0.+0.j -1.+0.j]]\n" |
| 477 | + "[[1 , 0 , 0 , -3j],\n", |
| 478 | + " [0 , -1 , 3j, 0 ],\n", |
| 479 | + " [0 , -3j, 1 , 0 ],\n", |
| 480 | + " [3j, 0 , 0 , -1 ]]\n" |
422 | 481 | ]
|
423 | 482 | }
|
424 | 483 | ],
|
425 | 484 | "source": [
|
| 485 | + "from mpqp.tools import pprint\n", |
| 486 | + "\n", |
| 487 | + "\n", |
426 | 488 | "print(\"`obs` created with matrix:\")\n",
|
427 | 489 | "print(\"matrix:\")\n",
|
428 |
| - "print(obs.matrix)\n", |
| 490 | + "pprint(obs.matrix)\n", |
429 | 491 | "print(\"Pauli string:\")\n",
|
430 | 492 | "print(obs.pauli_string)\n",
|
431 | 493 | "\n",
|
|
434 | 496 | "print(\"Pauli string:\")\n",
|
435 | 497 | "print(obs1.pauli_string)\n",
|
436 | 498 | "print(\"matrix:\")\n",
|
437 |
| - "print(obs1.matrix)" |
| 499 | + "pprint(obs1.matrix)" |
438 | 500 | ]
|
439 | 501 | },
|
440 | 502 | {
|
|
449 | 511 | },
|
450 | 512 | {
|
451 | 513 | "cell_type": "code",
|
452 |
| - "execution_count": 15, |
| 514 | + "execution_count": 17, |
453 | 515 | "id": "892f0b6e",
|
454 | 516 | "metadata": {},
|
455 | 517 | "outputs": [],
|
|
460 | 522 | },
|
461 | 523 | {
|
462 | 524 | "cell_type": "code",
|
463 |
| - "execution_count": 16, |
| 525 | + "execution_count": 18, |
464 | 526 | "id": "745aa999",
|
465 | 527 | "metadata": {},
|
466 | 528 | "outputs": [
|
|
469 | 531 | "output_type": "stream",
|
470 | 532 | "text": [
|
471 | 533 | "BatchResult: 3 results\n",
|
472 |
| - "Result: ATOSDevice, MYQLM_CLINALG\n", |
473 |
| - " Expectation value: 0.08200000000000007\n", |
474 |
| - " Error/Variance: 0.10000294289963965\n", |
475 |
| - "Result: ATOSDevice, MYQLM_PYLINALG\n", |
476 |
| - " Expectation value: 0.12600000000000006\n", |
477 |
| - " Error/Variance: 0.10000590573151757\n", |
478 |
| - "Result: IBMDevice, AER_SIMULATOR\n", |
479 |
| - " Expectation value: 0.14800000000000002\n", |
480 |
| - " Error/Variance: 9.987479999999998\n" |
| 534 | + "Result: circuit 1, ATOSDevice, MYQLM_PYLINALG\n", |
| 535 | + " Expectation value: -0.031999999999999945\n", |
| 536 | + " Error/Variance: 0.100047316133245\n", |
| 537 | + "Result: circuit 1, IBMDevice, AER_SIMULATOR\n", |
| 538 | + " Expectation value: 1.9081958235744878e-17\n", |
| 539 | + " Error/Variance: 0.0\n", |
| 540 | + "Result: circuit 1, ATOSDevice, MYQLM_CLINALG\n", |
| 541 | + " Expectation value: -0.29800000000000015\n", |
| 542 | + " Error/Variance: 0.0996658079447173\n" |
481 | 543 | ]
|
482 | 544 | }
|
483 | 545 | ],
|
|
510 | 572 | "name": "python",
|
511 | 573 | "nbconvert_exporter": "python",
|
512 | 574 | "pygments_lexer": "ipython3",
|
513 |
| - "version": "3.9.12" |
| 575 | + "version": "3.9.5" |
514 | 576 | }
|
515 | 577 | },
|
516 | 578 | "nbformat": 4,
|
|
0 commit comments