{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Tequila Basic Usage" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Install Tequila\n", "\n", "You can install tequila with minimal dependencies over PyPi via `pip install tequila-basic`. \n", "It is advised to also install a quantum backend (that can act as simulator or interface to hardware). \n", "The recommended backend for simulation is Qulacs and with Qiskit you have access to IBM's cloud computers. \n", "For some operating systems (windows) installing qulacs can become a bit challenging. \n", "In this case: Just install another backend (see the cells below on an overview of what is supported)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# If you execute this cell it will install tequila\n", "# we however recommend to install it by yourself and not over jupyter\n", "\n", "do_install = False # set to True if you want to install from jupyter\n", "i_am_using_windows = False # set to true if you can not install Jax/Jaxlib, necessary in windows OS\n", "i_want_the_development_version = False\n", "if do_install:\n", " import sys\n", " if i_am_using_windows:\n", " # install\n", " !{sys.executable} -m pip install git+https://github.com/aspuru-guzik-group/tequila.git@windows\n", " # install a simulator (replace qulacs with something else (qibo, cirq, qiskit, pyquil) if you have trouble)\n", " # in order to install it on windows you need c++ compilers (install for example over VisualStudio)\n", " !{sys.executable} -m pip install --upgrade qulacs\n", " if i_want_the_development_version:\n", " !{sys.executable} -m pip install git+https://github.com/aspuru-guzik-group/tequila.git@devel\n", " else:\n", " # install basic tequila\n", " !{sys.executable} -m pip install tequila-basic\n", " # install a simulator (replace qulacs with something else (qibo, cirq, qiskit, pyquil) if you have trouble)\n", " !{sys.executable} -m pip install --upgrade qulacs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create and Simulate Quantum Circuits\n", "\n", "Tequila operators on abstract data types which can be translated and executed on various backends. \n", "In this part of the tutorial we show how to initialize and execute those.\n", "\n", "First import tequila and check which backends are installed on your system. \n", "If supported backends are not installed you can for most of them just install them with\n", "`pip install --upgrade name` in your command line \n", "If you have old versions of supported backends installed that might get you in trouble. \n", "You can upgrade them with the same command." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "backend | wfn | sampling | noise | installed \n", "--------------------------------------------------------------------\n", "qulacs_gpu | False | False | False | False \n", "qulacs | True | True | True | True \n", "qibo | False | False | False | False \n", "qiskit | True | True | True | True \n", "cirq | True | True | True | True \n", "pyquil | False | False | False | False \n", "symbolic | True | False | False | True \n" ] } ], "source": [ "import tequila as tq\n", "import numpy\n", "from numpy import pi\n", "tq.show_available_simulators()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Create Simple Circuits" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets create some simple unparametrized circutis. \n", "With unparametrized we mean here, that possible angles in the circuits are fixed. \n", "You can create tequila circuits and gates over the `tq.gates` module. \n", "Gates and circuits can be glued together with the `+` operation. \n", "\n", "Gates can receive the keyword arguments `target` and `control` which defines qubit(s) on which the gates act" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "circuit = tq.gates.H(target=0) + tq.gates.CNOT(target=1,control=0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Circuits can be printed out in list-type form or can be drawn by the backends. \n", "The result of tq.draw will depend which backends you have installed. \n", "If you want to draw with a specific backend, just pass the `backend` keyword, e.g. tq.draw(circuit,`backend='cirq'`)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "circuit: \n", "H(target=(0,))\n", "X(target=(1,), control=(0,))\n", "\n" ] } ], "source": [ "print(circuit)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "tq.draw(circuit)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets do the same with a list of qubits and see what happens" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "circuit = tq.gates.H(target=[0,1]) + tq.gates.X(target=1, control=0)\n", "tq.draw(circuit)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Some gates have to be parametrized by `angle` and some can be parametrized by `power`. \n", "Note that if you use cirq to draw circuits, it will display those in different units. This does not affect the simulation.\n", "\n", "Tequila uses the standard convention for qubit rotations:\n", "$$\n", "R_i(\\theta) = e^{-i\\frac{\\theta}{2} \\sigma_i}, \\qquad i \\in \\left\\{ X, Y, Z \\right\\}\n", "$$\n", "\n", "which is carried over for multi-qubit rotations\n", "$$\n", "R_P(\\theta) = e^{-i\\frac{\\theta}{2} P}\n", "$$\n", "where $P$ is a paulistring like e.g. $X(0)Y(1)$" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Some further examples\n", "circuit0 = tq.gates.Ry(angle=1.0, target=0) + tq.gates.X(target=1, control=0)\n", "circuit1 = tq.gates.Y(power=0.5, target=0) + tq.gates.Ry(angle=1.0, target=1, control=0)\n", "circuit2 = tq.gates.Rp(angle=1.0, paulistring=\"Y(0)\") + tq.gates.X(target=1, control=0) # acts the same as circuit0\n", "circuit3 = tq.gates.Rp(angle=1.0, paulistring=\"X(0)Y(1)\")\n", "\n", "generator = tq.paulis.Y(0)\n", "circuit4 = tq.gates.Trotterized(generators=[generator], angles=[1.0], steps=1) # acts the same as circuit0\n", "generator = tq.paulis.X(0)*tq.paulis.Y(1)\n", "circuit5 = tq.gates.Trotterized(generators=[generator], angles=[1.0], steps=1) # acts the same as circuit3\n", "\n", "tq.draw(circuit3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Simulate and Sample Simple Circuits" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets simulate our last created circuit. \n", "This can be done by the `tq.simulate` function. \n", "The return type is a `QubitWaveFunction`" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+0.5000|00> +0.5000|10> +0.5000|01> +0.5000|11> \n" ] } ], "source": [ "wfn = tq.simulate(circuit)\n", "print(wfn)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can control on which backend the simulation is executed with the `backend=name` keyword where name is one of the backends that are installed on your system (see first cell) " ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+0.5000|00> +0.5000|10> +0.5000|01> +0.5000|11> \n" ] } ], "source": [ "# simulate on 'qulacs' backend (which is the default)\n", "# Note that this cell will crash if qulacs is not installed\n", "# just switch the name with something that is installed on your system (check the first cell)\n", "wfn = tq.simulate(circuit, backend='qulacs')\n", "print(wfn)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you don't want to simulate a full wavefunction but rather simulate individual samples from it you can pass down the `samples=integer` keyword" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+4.0000|00> +1.0000|10> +2.0000|01> +3.0000|11> \n" ] } ], "source": [ "measurements = tq.simulate(circuit, samples=10)\n", "print(measurements)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can access the individual measurements either by integers in binary notation or by binary strings" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4\n", "4\n", "1\n", "1\n" ] } ], "source": [ "print(measurements(0))\n", "print(measurements(\"00\"))\n", "print(measurements(2))\n", "print(measurements(\"10\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Individual measurement instructions can be added over the `read_out_qubits` keyword" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "+5.0000|0> +5.0000|1> " ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "compiled_circuit = tq.compile(circuit, samples=10, backend=\"qulacs\")\n", "\n", "compiled_circuit(samples=10, read_out_qubits=[0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Create Parametrized Circuits\n", "\n", "Now we will explore how to create parametrized circuits. \n", "This works analogue to the simple circuits before, just that `angle` and `power` can be set to hashable types. \n", "You can either initialize the variable directly or you can create a tequila variable object and use that. \n", "The latter is only important if you intend to pass down a manipulated variable (like for example $a^2$ instead of just $a$)\n", "\n", "Lets start with something simple: A parametrized rotation on a single qubit. \n", "We will call the variable $a$. \n", "If the circuit gets simulated the value of the variable has to be specified. \n", "This is done by passing down a dictionary holding the names and values of all variables." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+0.2206|0> -0.9754|1> \n" ] } ], "source": [ "# initialize the parametrized circuit\n", "circuit = tq.gates.Ry(angle=\"a\", target=0)\n", "pi = tq.numpy.pi\n", "# set the value we want to simulate\n", "variables = {\"a\" : pi**2}\n", "wfn = tq.simulate(circuit, variables=variables)\n", "print(wfn)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can see if a circuit is parametrized by calling `extract_variables` from the circuit. \n", "Note that if you use the cirq backend to draw the circuit" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "circuit has variables: [a]\n" ] } ], "source": [ "print(\"circuit has variables: \", circuit.extract_variables())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now the same thing a little more sophisticated. \n", "We will parametrized the gate by $a^2$ and also we want the $a$ to be in units of $\\pi$ " ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+0.2206|0> -0.9754|1> \n" ] } ], "source": [ "a = tq.Variable(\"a\")\n", "\n", "circuit = tq.gates.Ry(angle=(a*pi)**2, target=0)\n", "\n", "# set the value we want to simulate\n", "variables = {\"a\" : 1.0}\n", "wfn = tq.simulate(circuit, variables=variables)\n", "print(wfn)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now the same again with a stronger transformation on the variables: \n", "In general, if you want to apply transformations on Variables (and later on Objectives) this can be done with \n", "`variable.apply(your_function)`. \n", "Here we will take the exponential function of numpy. Note that it is adviced to take those functions from `tq.numpy` since this will be the `jax` numpy used for automaticl differentiation. \n", "By doing so consistently you will avoid potential problems with gradients later." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-0.9856|0> -0.1692|1> \n" ] } ], "source": [ "a = tq.Variable(\"a\")\n", "\n", "circuit = tq.gates.Ry(angle=((a*pi)**2).apply(tq.numpy.exp), target=0)\n", "\n", "# set the value we want to simulate\n", "variables = {\"a\" : 1.0}\n", "wfn = tq.simulate(circuit, variables=variables)\n", "print(wfn)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets do the same thing once more, but this time with a customized transformation (which will do the same as in the last cell)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-0.9856|0> -0.1692|1> \n" ] } ], "source": [ "# define your own transformation\n", "def my_trafo(x):\n", " return tq.numpy.exp(x**2)\n", "\n", "a = tq.Variable(\"a\")\n", "\n", "# we will put the variable manipulation here for more overview\n", "a = a*pi # a is now in a*pi\n", "a = a.apply(my_trafo) # a is now exp((a*pi)**2)\n", "\n", "circuit = tq.gates.Ry(angle=a, target=0)\n", "\n", "# set the value we want to simulate\n", "variables = {\"a\" : 1.0}\n", "wfn = tq.simulate(circuit, variables=variables)\n", "print(wfn)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that you don't have to use strings as variable names. \n", "You can use any hashable type except numeric types since those will be interpeted as fixed numbers.\n", "Here is one example using a combination of strings and tuples" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[(1, 'a', 'its a stupid example')]\n", "[(1, 2, 3)]\n" ] } ], "source": [ "circuit = tq.gates.Ry(angle=(1,\"a\", \"its a stupid example\"), target=0)\n", "print(circuit.extract_variables())\n", "circuit = tq.gates.Ry(angle=(1,2,3), target=0)\n", "print(circuit.extract_variables())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create and Simulate Objectives/Expectationvalues" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Within tequila you can define qubit operators which can either be used to generate gates and circuits over `tq.gates.Rp`, `tq.gates.Trotterized` or `tq.gates.GeneralizedRotation` or as Hamiltonians defining the measurements on the quantum experiments. \n", "\n", "`QCircuit` and `QubitHamiltonian` objects can be combined to expectation values which can be combined and transformed to become more general `Objectives` (in tequila an expectation value is already objective in its simplest form).\n", "\n", "We will start by demonstrating this with a simple one qubit example. \n", "We will take the one qubit rotation gate from previous sections and use a simple pauli operator as hamiltonian.\n", "So our expectation value will be: \n", "\n", "$$\n", "E = \\langle\\Psi(a)\\rvert H \\lvert\\Psi(a) \\rangle = \\langle0\\rvert U^\\dagger\\left(a\\right) H U\\left(a\\right) \\lvert 0\\rangle = \\langle H \\rangle_{ U\\left(a\\right)}\n", "$$ \n", " \n", "where $H = \\sigma_x = X $ and $ U\\left(a\\right) = Ry(a)$" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hamiltonian +1.0000X(0)\n", "Objective with 1 unique expectation values\n", "total measurements = 1\n", "variables = [a]\n", "types = not compiled\n" ] } ], "source": [ "# the circuit\n", "U = tq.gates.Ry(angle=\"a\", target=0)\n", "# the Hamiltonian\n", "H = tq.paulis.X(0)\n", "# the Objective (a single expectation value)\n", "E = tq.ExpectationValue(H=H, U=U)\n", "print(\"Hamiltonian \", H)\n", "print(E)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Objective with 1 unique expectation values\n", "total measurements = 1\n", "variables = [a]\n", "types = not compiled\n", "\n", "Expectation Value 0:\n", "total measurements = 1\n", "variables = 1\n", "circuit = 5939538847903336889_0.png\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# better not use it for large objectives\n", "tq.draw(E)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets simulate the objective for some choices of our variable. \n", "Note that the simulate function is the same as before for the circuits, you can use the `backend` and `sample` key in the same way. \n", "\n", "Since the objective is defined with parametrized quantum circuits, the values of the variables have to be passed down in the same way as before. \n", "\n", "Note that not all expectationvalues in the objective need to be parametrized and that the parameters don't need to be the same. " ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Objective(1.0) = 0.8414709848078965\n" ] } ], "source": [ "variables = {\"a\": 1.0}\n", "value = tq.simulate(E, variables=variables)\n", "print(\"Objective({}) = {}\".format(variables[\"a\"], value))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are some more intuitive examples of Hamiltonians. \n", "Note that those operators are not automatically hermitian. \n", "You can use the `split` function to get the hermitian and/or antihermitian part \n", "Check also the `FAQ` notebook for some more information." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+1.0000X(0)X(1)X(2)X(3)+1.0000Y(2)+1.0000Z(0)Z(1)X(2) is hermitian = True\n", "+1.4142e^(-0.2500πi)X(0) is hermitian = False\n", "hermitian part = +1.0000X(0)\n", "anti-hermitian part = -1.0000iX(0)\n", "+0.2500+0.2500Z(1)+0.2500Z(0)+0.2500Z(0)Z(1) is hermitian = True\n", "+0.5000+0.5000Z(0)Z(1)+0.5000X(0)X(1)-0.5000Y(0)Y(1) is hermitian = True\n" ] } ], "source": [ "# Pauli Operators can be initialilzed and added/multipled \n", "H = tq.paulis.X(qubit=[0,1,2,3]) + tq.paulis.Y(2) + tq.paulis.Z(qubit=[0,1])*tq.paulis.X(2)\n", "print(H, \" is hermitian = \", H.is_hermitian())\n", "\n", "H = tq.paulis.Z(0)*tq.paulis.Y(0) + tq.paulis.X(0)\n", "print(H, \" is hermitian = \", H.is_hermitian())\n", "\n", "hermitian_part, anti_hermitian_part = H.split()\n", "print(\"hermitian part = \", hermitian_part)\n", "print(\"anti-hermitian part = \", anti_hermitian_part)\n", "\n", "H = tq.paulis.Projector(\"|00>\")\n", "print(H, \" is hermitian = \", H.is_hermitian())\n", "\n", "H = tq.paulis.Projector(\"1.0*|00> + 1.0*|11>\")\n", "print(H, \" is hermitian = \", H.is_hermitian())\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets proceed with our previous simple example of a single qubit rotation and a single X as Hamiltonian.\n", "\n", "If you intent to evaluate the objective with lots of different choices of the variables it is useful to compile it. A compiled objective is tied to a specific backend and can be used like a function taking a dictionary of variables.\n", "\n", "The compile function takes also the `backend` and `sample` keyword. If no backend is chosen tequila will pick automatically from the installed ones. If you intent to sample your objective instead of fully simulate it you can give a dummy integer of samples to `compile`. This will help tequila pick the best available backend but will not fix the number of samples for future evaluations.\n", "\n", "Compiling first will make your code faster since then the abstract circuits do not need to be re-translated to the backend every time." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "objective(0.0) = 0.0\n", "objective(0.5) = 0.479425538604203\n", "objective(1.0) = 0.8414709848078965\n" ] } ], "source": [ "compiled_objective = tq.compile(E)\n", "\n", "# the compiled objective can now be used like a function\n", "for value in [0.0, 0.5, 1.0]:\n", " evaluated = compiled_objective(variables={\"a\": value})\n", " print(\"objective({}) = {}\".format(value, evaluated))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets simulate our compiled objetive and plot the results" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def compile_and_evaluate(objective, steps=25, samples=None, start=0, stop=2*pi):\n", " from matplotlib import pyplot as plt\n", " plt.figure()\n", " \n", " compiled_objective = tq.compile(objective, samples=samples)\n", " values = [start + (stop-start)*step/steps for step in range(steps)]\n", " evaluated = [compiled_objective(variables={\"a\": value}, samples=samples) for value in values]\n", "\n", " plt.plot(values, evaluated)\n", " plt.show()\n", " return values, evaluated\n", "\n", "compile_and_evaluate(E);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets do the same again with a more complicated objective. \n", "Lets take the square of our original expectation value and shift it by 1\n", "\n", "$$\n", "L = E^2 + 1\n", "$$" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# this is the new objective\n", "L = E**2 + 1\n", "\n", "compile_and_evaluate(L);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And the same, but shifted by $e^{-a^2}$, so the shift is not constant and will only affect $L$ for small values of $a$.\n", "\n", "$$\n", "L = E^2 + e^{-a^2}\n", "$$" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# For completeness we initialize the variable again here\n", "a = tq.Variable(\"a\")\n", "# to be sure that the variable is the same as the one from the objective we could also do\n", "# a = objective.extract_variables()[0]\n", "\n", "# this is the new objective\n", "L = E**2 + (-a**2).apply(tq.numpy.exp)\n", "\n", "compile_and_evaluate(L);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we also transform the expectation value in a more complicated way. It works the same way as it works for variables\n", "\n", "$$\n", "L = exp(-E^2) + exp(-a^2)E\n", "$$\n", "\n", "Note that the original expectation value now enters two times into the objective. \n", "But tequila will only evaluate it once per run." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD4CAYAAAD8Zh1EAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAywElEQVR4nO3deXhT55U/8O/RZnk3tiTbeAXvNqtjzBoMGAgJGdLSpg1p0qTtNF2STjuZLTOdSdt0ZjozXZ7ftE07k0natM1C0yRNCdCGBjCEEMALGGKDjfG+y7a8r5Le3x+SU5dgkG1Jd9H5PA9PbPmiexTbh6tzz/seEkKAMcaY8mmkDoAxxph3cEJnjDGV4ITOGGMqwQmdMcZUghM6Y4yphE6qE5tMJpGamirV6RljTJHKy8t7hBDmG31NsoSempqKsrIyqU7PGGOKRERNs32NSy6MMaYSnNAZY0wlOKEzxphKcEJnjDGV4ITOGGMqwQmdMcZUghM6Y4yphGR96GzuhBB4pawFnQMTMOg0rj9agkGngV47/bkGep0GQe7P9VoNLBFBiI8Mljp8xpiPcUJXkO++VYOflFyb89/TEPDsQwXYlh3rg6gYY3LBCV0hXjzbhJ+UXMO+wmQ8dU8e7A6BSbsTkw7Xn6npj+1//vmUw4nvH6nFV/dfwJuPbUKqKVTql8IY8xFO6Apw9HIX/uWN97Et24Jv35MHnVYDvRYINmg9+vsZlnD8xY9P4Qu/KsdvH92AEAN/2xlTI74pKnOVLf147KXzyFsciR/tWw2ddu7fsqToEPzwvtW42j2Ef3jtEnjsIGPqxAldxpp7R/G5X5QiJsyA5x4uQGjQ/K+sN2ea8bd3ZOHNynY8d6rBi1EyxuSCE7pM2UYm8fDPz2HKIfD8ZwphCTcu+Dm/VJSGO/Ji8Z3fX8Hpaz1eiJIxJiec0GVofMqBz/+yDK39Y/i/Txcg3RLmleclInzv3pVIjQnBV146j/b+Ma88L2NMHjihy4zTKfA3r1SirMmGH3xiJQqXRHv1+cONevzvgwWYsDvxpRfKMT7l8OrzM8akwwldZv798GUcutSBr9+Vg7tXLPbJOdItYfjevStR2TqAb71Z5ZNzMMb8jxO6jPz83QY8e6oBD29IxV/evsSn59q1LA6Pbk3Dy+da8PK5Zp+eizHmH5zQZeIP73fgqYPVuCMvFv9ydy6IyOfnfHxHFm7PMOEbv6vC+Wabz8/HGPMtTugyUN7Uh6/uv4BVSVH47/tWQ6vxfTIHAK2G8MP7VsMSEYQvvVAB69CEX87LGPMNTugSq7cO4y9/UYb4SCOe/XQBjHrPVn96y6JQA/7ngdtgG53EYy9VwO5w+vX8jDHv4YQuoZ7hCTz881IQEZ7/TCFiwoIkiWNZQiS+s3c5zjb04Tu/vyJJDIyxheNNPST0969eRPfQOF7+/DrJN83am5+IypZ+PHeqASsSI3HPqgRJ42GMzd0tr9CJ6GdE1E1E78/ydSKiHxJRHRFdJKJ874epPnXdQzh2pRuPbknH6uRFUocDAPj67lysSV2Ef3jtIi53DEodDmNsjjwpuTwPYNdNvn4ngAz3n0cA/HThYanf86cbYdBpcP/aZKlD+YBBp8HT9+cjwqjH469U8iZejCnMLRO6EOIkgL6bHHIPgF8KlzMAoogo3lsBqtHA2BReK2/DnpWLJaubz8YSYcRf78jE5Y5BVHArI2OK4o2bogkAWmZ83up+7EOI6BEiKiOiMqvV6oVTK9NvylowNuXAwxtSpQ7lhvasXIywIB1ePMsLjph39Y1M4unjdfj6by9h0s4dVd7m15uiQohnADwDAAUFBQH5ft7hFHj+dCMKU6OxLCFS6nBuKDRIh4+sXoxXylrx5N25iAoxSB0SU7i67iE8d6oRr1e0YsKdyPVaDb65J0/iyNTFG1fobQCSZnye6H6M3cDRy11otY3h4Y2pUodyU/cXpmDS7sRrFfytZPMjhMDJWise+tk5bP/BSbxe0Yq9+Qk48teb8dmNS/D86Ua8WdkudZiq4o0r9AMAHiOi/QDWAhgQQnR44XlV6fnTjVgcacTOXHkPbM5dHIHVyVF48WwTPrsx1S9bETB1GJ9y4I3zbfjZuw2o7RqGKSwIj+/IxKfWJn9wz+gf78rGxdZ+/MNrF5ETH450S7jEUauDJ22LLwN4D0AWEbUS0eeI6ItE9EX3IYcB1AOoA/B/AL7ss2gVrqZzCKev9eLB9anzGiXnb/cXJqPeOoKzDTe7J86YS/fQOH5wpAYb/uMYnnj9ErQaDb5370q8+8RW/FVxxp81AOi1Gvz4/nyEGLT44gsVGJmwSxi5etzyCl0Ise8WXxcAHvVaRCr2/OkGBOk0uG9N0q0PloG7VyzGtw9W46WzzVi3NEbqcJhMXe4YxLPvNODNynZMOZ0ozrbgs5uWYP3SmJu+s4uLNOKH963GA8+dxROvX8IP71vF7wQXiFeK+oltZBK/Pd+Gj65OwKJQZdxkDDZosTc/ES+ebULvcK7sWiyZ9Cpb+rH3p6dh0GpwX2ESPrNxCZbMYdXzhnQT/mZnFr77Vg0KUhbhIZl2fimF/N/3q8Svy1owPuWU/c3Q631qbTKmHAKvlrdKHQqToR8du4pwow7vPrENT92zbE7JfNqXitKwPceCfz1UzWsfFogTuh/YHU788nQj1i+NQXZchNThzElGbDgKU6Px0rlmOJ0B2WnKZlHVPoC3L3fjcxuXIHoB7zo1GsL3712FuEgjHn2xAr3DvI3zfHFC94M/VnehfWBccVfn0+5fm4ym3lGcvtYrdShMRn5y/BrCg3T4tBfKJJEhevz0U7ehd2QSX91/AQ6+eJgXTuh+8PPTjUhcFIztOfJuVZzNrmVxWBSix4tnm6QOhclEXfcwDr/fgU9vSEFksN4rz7ksIRLfvicPp+p68N9v13rlOQMNJ3Qfq2ofwLmGPjy0PtVvk4i8zajX4uO3JeKP1V3oHhqXOhwmAz8pqYNRp8VnN3p39u0n1yTj3tsS8cNjdTh+pdurzx0IOKH72PPvNiJYr8UnCpTRqjibfYXJsDsFflPGN0cDXXPvKH53oR33z1go5E3f/sgy5MRH4Gu/voCWvlGvP7+acUL3od7hCfyush178xMQGeKdt6VSWWoOw4a0GLx0tpnrmwHuf05eg5YIj2xe6pPnN+q1+J8H8uEUAl9+sQLjUw6fnEeNOKH70P7SFkzanbLdVXGuPrU2BW39Yzh5NXB3ygx0HQNjeLWsFZ9Yk4jYCKPPzpMSE4rv37sSl9oG8NTBap+dR204ofvIlMOJX73XhNszTMiIVcc+FTtyY2EKM+DFM7ytbqB65mQ9HELgC5vTfH6unXlx+GJRGl4624zXeB2ERzih+8gf3u9E5+C4aq7OAddEo3sLknDsShc6BsakDof5Wc/wBF4+14yPrk5AUnSIX875tzszsW5pNL7+xiUei+gBTug+8vzpRqTEhGBrlkXqULxq35pkCAD7z7Xc8limLs+dasCE3Ykvb/H91fk0nVaDH+3LR7hRj6fe5NLLrXBC94GLrf0ob7LhofWp0Ci0VXE2yTEhuD3DjF+XtsDu4IkzgaJ/dBK/PN2I3cvjsdQc5tdzm8OD8OC6FLxX34tWG3e93AwndB94/t1GhBq0+HhBotSh+MSn1iajc3Acx2v45migeP50I0YmHXh0a7ok5//oatdUyzfO88CVm+GE7mXdQ+N482I77i1IQoRR2a2KsynOtiA2IohXjgaI4Qk7fv5uI3bkxiInXpq9iJKiQ7B2STRer2iDa8dudiOc0L3spbPNmHIIfHp9itSh+IxOq8En1yTjRK2VF34EgBfONGFgbAqPSXR1Pu1j+Ymo7xnBhZZ+SeOQM07oXjRpd+KFM83YkmX2e53R3+5bkwQCsL+UWxjVbHzKgWffqcftGSasTIqSNJY7l8fBqNfgtQpuYZwNJ3QvOnypAz3DE6pqVZzN4qhgbM2y4JWyVkzxzVHV2n+uGT3Dk/jKtgypQ0G4UY878uLwZmUHJuy8evRGOKF70c9PN2KpORSbM8xSh+IXn1qXDOvQBN6u7pI6FOYDE3YH/vdkPQpTo1G4JFrqcAAAe/MTMTA2xRt3zYITupecb7ahsqUfD29QX6vibIoyLUiICsaLZ7nsokavV7ShY2Acj22TtnY+06Z0EyzhQXi1nLtdboQTupccutgBg06DvfnqbFW8Ea2GcN+aJJyq60Fjz4jU4TAvsjuc+GnJNaxMjMTtGSapw/mAVkP46OoElNR082SjG+CE7iUltVasXRKNsKDAmrv9iTVJ0GoIL5/jq3Q1efNiO5r7RvHo1nQQyesd5978RNidAm9WtksdiuxwQveCVtso6rqHUZQZGLXzmWIjjNiRE4vflLfyjSqVcDoFnj5+Ddlx4bKcspUVF468xRF4rYLLLtfjhO4FJ2t7AABbsgIvoQOumaN9I5N4q4pvjqrBW1WdqOsexqNb02V7P+hj+Ym41DaA2q4hqUORFU7oXnCithsJUcFIU3nv+Ww2pZsQF2HE7y91SB0KWyAhBH50rA5LTaG4a3m81OHMas+qxdBqCK/zVfqf4YS+QJN2J96t60VRlll2tUZ/0WgI23IsOFlr5bKLwh2v6UZ1xyC+tCVN1jNwTWFB2JJpxm/Pt/IErRk4oS9QRbMNwxP2gKyfz1ScbcHIpAPnGvqkDoUtwE9LriEhKhgfcW+GJWcfuy0RXYMTOH2tR+pQZMOjhE5Eu4iohojqiOiJG3w9mYiOE9F5IrpIRHd5P1R5OlFrhU5D2JAWI3UoktqYboJRr8HRy7zgQ6k6BsZQ2mjD/WuTodfK/1pvW7YFEUYdl11muOV3jYi0AJ4GcCeAXAD7iCj3usP+GcArQojVAO4D8BNvBypXJTVWFKQuQrhKd1b0lFGvxcY0E45e6eLd8BTqj+4Vv3fkxUkciWeMei3uXrkYf3i/E8MTdqnDkQVP/hkuBFAnhKgXQkwC2A/gnuuOEQCm99WMBBAQDaJdg+O43DGIokx1TSWar+KcWLT0jeFq97DUobB5OFLVhTRzKNItyrm5/7H8RIxNOfiGvJsnCT0BwMx5Y63ux2b6JoAHiKgVwGEAX7nRExHRI0RURkRlVqvyhyOcrHW9hkCvn0/blu36h43LLsozMDqFM/W92KmQq/Np+clRSI0J4bKLm7cKZfsAPC+ESARwF4BfEdGHnlsI8YwQokAIUWA2Kz8Jnqi1whIehJz4cKlDkYW4SCOWJUTg6GXuR1eaYzVdsDsFdubKbyHRzRAR9uYn8ng6N08SehuApBmfJ7ofm+lzAF4BACHEewCMAOSzAYQP2B1OvHO1B0WZgduueCPbsmNR0WxD38ik1KGwOThS1QVLeBBWJkZJHcqc8Xi6P/EkoZcCyCCiJURkgOum54HrjmkGUAwARJQDV0JXfk3lJipbBzAwNoWiAF0dOpvtORY4BVBSw2UXpRifcuBErRU782JluzL0Zng83Z/cMqELIewAHgPwFoDLcHWzVBHRU0S0x33Y3wD4PBFVAngZwMNC5f9nT9RaoSHXKkn2J8sWR8IcHoSjvF+1Ypy62oPRSQd25iqrfj7T9Hi68wE+ns6jrQGFEIfhutk587EnZ3xcDWCjd0OTtxM13VidvAhRIQapQ5EVjYZQnG3BoYsdmLQ7YdDJv5850B2p7kS4UYd1S5W7luLO5XF48sD7eL2iFfnJi6QORzL82zYPvcMTuNg2wN0ts9iWbcHQhB1ljbxqVO4cToG3L3djW7ZF0f/48ng6F+V+ByV0qq4HQnC74mw2ZZhg0GnwNrcvyl5ZYx/6RiYVXW6ZNj2e7lgA/9xxQp+HkhorokMNWJ4QKXUoshRi0GFDWgyvGlWAI9VdMOg0qri5Pz2eLpD3SeeEPkdOp8DJWis2Z5gU2RHgL8U5sWjqHcU1K4+mkyshBI5Ud2JTukkVk7Z4PB0n9Dmrah9E78ikKq5ofGl61eixK7zISK4udwyhpW9McYuJbmZ6PN2BAB1Pxwl9jk7Uuupzt2dwQr+ZhKhg5MRHcB1dxo5Ud4LI9W5KLbLiwrEsISJgtwLghD5HJTVWrEiMhCksSOpQZK8424LyJhv6R3nVqBwdqepCQcoimMPV9bO8d3XgjqfjhD4HA6NTqGi2cXeLh4pzLHA4BU7UqnrRsCK19I2iumNQFd0t19uzajF0GsJrFa1Sh+J3nNDn4N1rPXByu6LHViZGwRRm4N0XZeiIe+/zHSqqn08zhQVhS5YZb5xvC7jxdJzQ56CkphsRRh1WJUVJHYoiaDSErVkWlNR0Y8rhlDocNsORqk5kxYYj1RQqdSg+sTc/MMfTcUL3kBCu0sHtGWboFDCeSy6KcywYHLejvMkmdSjMrW9kEqWNfbgjT31X59O2ZVsCciQiZyYP1XQNoWtwgsstc7QpwwyDVsN7pMvI25e74BRQ3DCLuTDqtdiQZsKxK90BtbiNE7qHTtS4pxNx//mchAXpsHZpNO++KCNHqrqQEBWMvMURtz5YwbZmmdHcN4qGnsBZ3MYJ3UMlNVZkx4UjNsIodSiKsz0nFvXWkYD6xZKr0Uk73rlqxY7cWNUPZtmS5VrcdrwmcLqsOKF7YHjCjrKmPr46n6c/zRrlsovUTtZaMWF3YqeK6+fTkqJDkG4JC6hhK5zQPfDetV5MOQTXz+cpKToEWbHhAXeDSo6OVHUhKkSPwtRoqUPxi61ZZpyt78PIhF3qUPyCE7oHSmq6EWrQoiAlMH4JfKE4x4LSxj4MjE1JHUrAmnI4cfRKN4qzYwOmU2trlgWTDidOX+uVOhS/CIzv6gJMtytuSDcpegCA1IpzLLC7d6pk0jjX4PoHNRDKLdMKUqMRatDieICUXThD3UJ9zwhabWNcblmgVUmLEB1qwDHudpHMkapOGPUabA6gjeUMOg02ZZhQEiDti5zQb+GDdkVO6Aui1RC2ZJlxvKYbdl416neuvc+7sDnDjGCDVupw/GprlgXtA+Oo7RqWOhSf44R+CyW1VqSZQ5EUHSJ1KIq3PScW/aNTAT+ZXQqX2gbQMTCu6sVEs/lT+6L63x1yQr+J8SkHztb3oijTInUoqnB7hgl6LeFtbl/0uyNVXdBqCMXZgfezHBdpRE58BI4HQLmPE/pNnKnvxYTdyf3nXhJu1GPtkpiAHuIrlSPVnShMjcaiUIPUoUhia5YZZU02DI6ru8uKE/pNlNRYYdRrsHYJtyt6y7ZsC652D6O5d1TqUAJGQ88IaruGA6q75Xpbs11785+6qu7dFzmh38TJWivWLY2BUR9YN5F8qTjHvWqUZ436zZGqTgDq3PvcU6uTohBh1Km+7MIJfRbNvaOo7xnh7hYvS4kJRboljFeN+tGR6i7kLY5A4qLAvbGv02qwOdOMklornCoeesEJfRYnrrraFafvkDPvKc6x4GxDL4ZUXs+Ug+6hcVQ023BHAHa3XG9rlgXWoQlUdwxKHYrPeJTQiWgXEdUQUR0RPTHLMZ8gomoiqiKil7wbpv+dqOlGcnQIUmMC96rGV4qzYzHlEHhH5fVMOXi7uhtCIKDr59OmmxvUXHa5ZUInIi2ApwHcCSAXwD4iyr3umAwA/whgoxAiD8DXvB+q/0zaXXs/FGWaVb/FqBTyk6MQFaLnsosfHKnuRLJ7c7RAZwoLwsrESFX3o3tyhV4IoE4IUS+EmASwH8A91x3zeQBPCyFsACCEUPT/sUttAxiddGBjuknqUFRJp9VgS6Zr1WigDfH1p6HxKZyu68Udeerf+9xTW7IsON/Sj76RSalD8QlPEnoCgJYZn7e6H5spE0AmEb1LRGeIaNeNnoiIHiGiMiIqs1rlu0lThXv+5W0piySORL2Kc2LRNzKJC7xq1GdKaqyYdDgDcnXobLZmWyAE8M5V+eafhfDWTVEdgAwAWwDsA/B/RBR1/UFCiGeEEAVCiAKzWb7dI+VNNqTEhMAcHiR1KKp1e4YJGgLvvuhDRy93ITrUgPxkvjCZtiIhEjGhBtXW0T1J6G0AkmZ8nuh+bKZWAAeEEFNCiAYAtXAleMURQqC82Ybb+JfAp6JCDFiZFIWTKr1SkprTKXDyag+KMs3QarjcMk2jIRRlmnGi1qrKcp8nCb0UQAYRLSEiA4D7ABy47pg34Lo6BxGZ4CrB1HsvTP9ptY3BOjSBfC63+FxRphmVLf2wqbSeKaWLbQPoG5nEFt624kO2ZFtgG51CZWu/1KF43S0TuhDCDuAxAG8BuAzgFSFEFRE9RUR73Ie9BaCXiKoBHAfwd0IIRY4IKWvqA8D1c38oyjTDKYBTddy+6G0lNd0gAm4PoL3PPbXZXe4rUWHZxaMauhDisBAiUwiRJoT4N/djTwohDrg/FkKIx4UQuUKI5UKI/b4M2pfKm2wIC9Ihk9u8fG5Foqt98QTX0b2upMaKFYlRiA7QzbhuJirEdV/heI36fu54peh1ypv6sTo5iuuOfqDVEDalm3Cy1hoQ02T8xTYyicrWfmzhbStmtTXbgkttA+geGpc6FK/ihD7D0PgUajoHuSvAj4oyzegemsCVziGpQ1GNk1etEAJcP7+J6f83J1R2lc4JfYbKlgE4BdfP/Wl68zMuu3jPiRorFoXosSIxSupQZCs3PgKW8CCUcEJXr/ImG4iA1clRUocSMCwRrmkyartSkorTKXCi1orN3K54U0SErVkWnLxqxZSKZtxyQp+hvNmGrNhwhBv1UocSUDZnmlDW1IfhCbvUoSje++0D6OV2RY9szTZjaNz+wcpwNeCE7uZ0CpxvsnG5RQJFmWZMOQTeu6bITldZmX6nw+2Kt7Yx3QSdhlTV7cIJ3a22ewhDE3ZO6BIoSIlGiEHL2wB4QUmtFSsSI2EK420rbiXcqMea1GiUqGj3RU7obuW8IZdkDDoNNqSZUFLbze2LC9A/OonzzTZuV5yDrdlmXOkcQnv/mNSheAUndLfyJhtMYQYkR/NACykUZZnR0jeGRh4ePW/vXO2BUwBFPGXLY1vd/6/U0u3CCd2tosmG/ORFvG+0RIoypvuC1fP2199KaqyIDNZjVVKU1KEoRrolDAlRwaoZesEJHUDP8AQae0e53CKh5JgQLDGFcj/6PE23K96eYeJ2xTkgImzNNuPduh5M2B1Sh7NgnNDBAy3koijTjDP1fRifUv4vlr9VdwyiZ3iCh5rPw9YsC0YnHShtUH77Iid0uPrPDVoNliVESh1KQCvKNGNsyoGyRuX/Yvnb9DubIr4hOmfr02Jg0GlUUXbhhA7XFfqyhAgY9VqpQwloa5dGw6DT4ESt8n+x/K2kphvLEiJ4ytY8hBh0WLc0hhO6GkzYHahsHeByiwyEGHQoTI3mOvocDYxNoaK5H1syudwyX1uzzKi3jqCpd0TqUBYk4BN6VfsgJu1OTugyUZRpRm3XsGr6gv3h1NUeOJyCl/svgFraFwM+oU/fEOUtc+WhyJ2U1DqV3RdKaroRYdRxu+ICpJpCscQUqviyS8An9PImG5Kig2GJMEodCgOQYQlDfKSRyy4eEmK6XdEMnTbgf50XZEuWGe9d68XYpHK7rAL6J0AIgbImG27jq3PZIHJNZX/nag/sKtrW1Fcudwyhe2jig3c2bP62ZVswYXfi9DXlzrgN6ITeahuDdWiC6+cysznTta3phZZ+qUORvRJ3RxDv37Jwa5fEINSgxduXlVt2CeiEXtE8vaAoWuJI2Ewb012rHbnscmslNVbX9B0uGS6YQafB5kwzjl3pUuwmcQGd0MubbAg1aJEVFy51KGyGyGA9VidFcUK/hcHxKZQ32bi7xYuKc2LRNTiBqvZBqUOZl4BO6GWNNqxOXsR7X8hQUaYZl9oG0Ds8IXUosvWuu12RV4d6z5YsM4iAowotuwRsQh+esONK5yDyuX4uS5szzRACOFWn3BtUvnai1orwIB3/DHuRKSwIq5OicOxKl9ShzEvAJvTKln44BW/IJVfLEyIRHWrg4dGzEEKgpMaKTRkm6Lld0auKc2JR2TqA7sFxqUOZs4D9SShvsoEIvBhDpjQawu0ZJpy8aoXTqcwbVL5U0zWEzsFxrp/7wLZs16pRJS4yCuiEnmkJR2SwXupQ2CyKMs3oGZ5EdYcyb1D50vQS9SLev8XrsuPCkRAVrMj2RY8SOhHtIqIaIqojoiductzHiEgQUYH3QvQ+p1OgotnGtUeZm55cz90uH1ZS043suHDERXK7orcREbZlW3Dqao/i9ua/ZUInIi2ApwHcCSAXwD4iyr3BceEAvgrgrLeD9LY66zCGxu1cP5c5c3gQ8hZHcEK/ztD4FMoabbw61IeKcywYm3LgvfpeqUOZE0+u0AsB1Akh6oUQkwD2A7jnBsd9G8B/ApD9nYRy94ZcBZzQZa8o04yKJhsGx6ekDkU2Tl/rhd0peLtcH1q3NAYhBi2OKazs4klCTwDQMuPzVvdjHyCifABJQohDN3siInqEiMqIqMxqle6qq6zRhphQA1JiQiSLgXmmKNMMu1PgdJ2yrpR8qaTGirAgHQpS+YLEV4x6LTalm3DsSreiVo0u+KYoEWkA/ADA39zqWCHEM0KIAiFEgdks3dvF6fo5ES8okrv8lEUIC9Jx2cVNCIETNd3YmB7D7Yo+VpxjQVv/GK50Dkkdisc8+YloA5A04/NE92PTwgEsA1BCRI0A1gE4INcbo73DE2joGeH6uULotRpsTI/ByVqroq6UfOVq9zDaB8Z5GLQfTA+9OHZFOWUXTxJ6KYAMIlpCRAYA9wE4MP1FIcSAEMIkhEgVQqQCOANgjxCizCcRL1BFcz8AXlCkJJszzWjrH8M1q7LHg3lDibs3mpf7+54lwoiViZF4+7JyVo3eMqELIewAHgPwFoDLAF4RQlQR0VNEtMfXAXpbeZMNei1heUKk1KEwD23m9sUPlNRYkRkbhsVRwVKHEhC2ZcfiQks/ehSyp5BHRTghxGEhRKYQIk0I8W/ux54UQhy4wbFb5Hp1DrhGzuUtjoRRr5U6FOahpOgQpJlDAz6hj0zYUdrYx+UWPyrOsUAI4LhCyi4BdVdl0u5EZWs/l1sUqCjTgrP1vYpb6OFNp6/1YsoheJiFH+UtjkBchFExdfSASujVHYOYsDs5oSvQ5kwTJuxOnG3okzoUyZTUdCPUoEVBKg9k8RciwrYcC07WWjFpl/9IxIBK6GWNrmTACV151i2NQZBOE7C7L07vrrgh3QSDLqB+bSVXnG3ByKQDZxvkvxYioH4yKpptSFwUjFge16U4Rr0Wa5fG4HiNshZ6eMs16zDa+se4u0UCG9JMCNJpFDH0ImASuhAC5U02vjpXsJ25sWjoGUFNl3IWenjL4UudAIDtObESRxJ4gg2uVaNHFTBrNGASelv/GLoGJzihK9iuZXHQEHDoYofUofjdoYsdWJO6iHdXlMi2HAta+sZQ1z0sdSg3FTAJfXpDrvxkTuhKZQoLwvq0GBy62CH7KyVvuto1hJquIexeHi91KAGrONv1zkjue6QHTEKvaLIhxKBFdly41KGwBbhreTzqe0ZwuSNwyi6HLnWACLiTE7pk4iKNyFscIftZowGT0MubbViVFAUdb2ikaLvyXGWXw5cCp+ziKrdE8818iRXnxKK8yQbbyKTUocwqILLbyIQdlzuGuH6uAjFhQdiQZsKhS4FRdqntGsLV7mH8xQq+OpdacbYFTgGU1Mq37BIQCb2ypR8Op+CRcyqxe0U8GnpGAmLW6MGLHdAQcMeyOKlDCXjLEyJhDg+SdftiQCR0viGqLnfkxUGrIdV3uwghcOhiO9YuiYElnMstUtNoCNuyLDhRa8WUQ56rRgMjoTfbkBkbhshgvdShMC+IDjVgQ1oMDqu87FLTNYRr1hHs5nKLbGzLsWBo3LVJmhypPqE7nALljTbclsL7X6jJ7uXxaOwdRVW7essuh9zlll1cbpGNTe6tF+RadlF9Qr/SOYihCTsKl3C5RU0+KLuotNvFVW7pwPq0GJjCgqQOh7mFBumwfmmMbHdfVH1CL3XvzreGd6hTlUXusotaFxlVdwyivmcEu5cvljoUdp3tORY09IzgmlV+q0bVn9AbbUiICkbiohCpQ2FedveKeDT3qbPscuhiB7Qawh15vHeL3GzNds8alWHZRdUJXQiBc419WJPK5RY12pkbB52GcFBl3S5CCBy61IENaTGI4XKL7CQuCkF2XDiOynDVqKoTemPvKKxDE1izhMstarQo1IAN6SYcutSuqrJLVfsgmnpHee8WGSvOsaC00YaB0SmpQ/kzqk7o0/XzQq6fq9bdy+PR0jeG99vUU3Y5+EG5hbtb5GpbdiwcToETV+U1cEXVCf1cYx8WheiRbgmTOhTmIzvzYl1ll0vtUofiFa5ySzs2ppuwKNQgdThsFquSohATasDRy/Iqu6g6oZc29mFNajSISOpQmI9EhRiwKcOkmm6XS20DaOkbw928mEjWtBrCliwLSmqssMto1ahqE3rX4DiaekdRyPVz1btreTxabWO42DogdSgLduhiB/Rawh25XG6Ru+05FgyMTX2wtYgcqDahn+P+84BxR24c9FpS/Ja6QggcvNiBTekmRIbwNhVytynDBL2WcFRGi4xUm9BLG/sQYtAib3GE1KEwH4sM0WNTugkHFV52qWwdQFv/GHav4MVEShBu1GNDmglvVrbLpuyi2oR+rqEP+cmLeKBFgNi9YjHa+sdQqeCyy8HKdui1hB25vJhIKe5fm4yOgXHZXKWrMtsNjE6hpmuI6+cBZEduLPRawqGLyux2cToFDl/qwOYMM+8KqiDF2RbERxrxwpkmqUMB4GFCJ6JdRFRDRHVE9MQNvv44EVUT0UUiOkpEKd4P1XNlTX0QguvngSQyWI/bM8w4fKlTkWWX8y39aB8Y561yFUan1eD+wmS8c7UH9TLY2+WWCZ2ItACeBnAngFwA+4go97rDzgMoEEKsAPAqgP/ydqBzca6xD3otYXVylJRhMD/bvTwebf1juNDSL3Uoc3boYgcMWg22c7lFcT5ZmASdhvDi2WapQ/HoCr0QQJ0Qol4IMQlgP4B7Zh4ghDguhBh1f3oGQKJ3w5yb0oY+LE+IhFGvlTIM5mfbc2Nh0GoUN8nog3JLphkRRi63KI0l3Ihdy+Lwm7IWjE06JI3Fk4SeAKBlxuet7sdm8zkAv7/RF4joESIqI6Iyq9U3S2bHpxy41DaAwiUxPnl+Jl+usosJhy91wOlUTtmlotmGzsFxXkykYA+uS8HguB0HKtskjcOrN0WJ6AEABQC+e6OvCyGeEUIUCCEKzGazN0/9gfPN/ZhyCB5oEaB2r4hH+8A4LrT2Sx2Kxw5e7IBBp0FxjkXqUNg8FS6JRlZsOH75XpOk93A8SehtAJJmfJ7ofuzPENF2AF8HsEcIMeGd8ObuXEMfiMAj5wKU0sou0+WWLZlmhHO5RbGICA+sT0FV+6Ck93A8SeilADKIaAkRGQDcB+DAzAOIaDWA/4UrmUvakFna2Ies2HBu/QpQEUY9Nmcqp+xS1mRD99AE7l7Ji4mU7qOrExBq0OJXErYw3jKhCyHsAB4D8BaAywBeEUJUEdFTRLTHfdh3AYQB+A0RXSCiA7M8nU/ZHU5UNNu4/zzA7V4Rj46BcZxvkc8eG7M5dLEdQToNirO53KJ0YUE67M1PxMGLHegbmZQkBo9q6EKIw0KITCFEmhDi39yPPSmEOOD+eLsQIlYIscr9Z8/Nn9E3qtoHMTrp4IQe4LbnxMKg0+DQxU6pQ7kph1Pg8Pud2JZtQWiQTupwmBc8sC4Fk3YnXilrufXBPqCqlaKljTzQgrn22CjKNMu+7HKuoQ/WoQleTKQiWXHhKFwSjRfPNsEhwc+eqhL62YY+pMSEwBJhlDoUJrHdy+PROTiOimb5ll0OXWqHUa/BNi63qMqn16egpW8MJ2v9P81INQnd6RQocw+0YKw4xwKDTiPbAdJ2hxN/eL8TxdmxCDFwuUVNdubGwRweJMnNUdUk9GvWYdhGp7h+zgC4yi5bMs34/fvyLLuca+hDz/Akl1tUyKDTYN+aJByv6UZL3+it/4IXqSahn+P6ObvO7hXx6BqcQLkMyy4HL3UgWK/F1iwut6jRvrXJ0JD/93dRTUIvbeiDOTwIKTEhUofCZKI4JxZGvUY2W5tO6x+dxKGLHSjOsSDYwPsNqVF8ZDC251jw69JmjE/5b38X1ST0cw19KOSB0GyGsCAd/nLTUvzuQjvK3O/g5OD7R2oxND6FR7emSx0K86EH16XCNjrl19GIqkjorbZRtA+MY00q79/C/tyXt6YhPtKIJ39XJUkb2fWq2wfx4tkmPLguBTnxPB5RzTamx2CpOdSvN0dVkdA/6D/nHRbZdUIMOvzTXTmo7hjE/lJp96sWQuCbB6oQFWLA4zuyJI2F+R4R4YG1KTjf3I/32/wzGlEVCf1cgw3hRh2y4sKlDoXJ0N0r4rF2STS+91YN+kelWZINAAcq23GusQ9/d0cWIkN4r6FA8LHbEv16H0cVCb20sQ8FKYug1XD9nH0YEeGbe/IwMDaFH/yxVpIYRibs+PfDl7EsIQKfKEi69V9gqhAZrMdHViXgjQttGBib8vn5FJ/Qe4cnUNc9jDXcf85uIic+Ag+uS8ELZ5pQ3T7o9/P/+HgdugYn8K09y/jCI8A8sC4F41NOvFre6vNzKT6hlza6eozXckJnt/D4jixEBuvxzQNVfh1C0NAzgmffqcfe/ATclsI37gPNsoRI5CdH4YUzTT5f5KaChN6HIJ0GyxOipA6FyVxkiB5/d0c2zjX24U0/bgnw1JtVCNJp8cSd2X47J5OXB9enoKFnBKev9fr0PKpI6KuSomDQKf6lMD/45JokLEuIwL8fuoyRCbvPz3f0cheO11jx1eIMWMJ507hAdeeyeESHGvCrM40+PY+is+DwhB1V7YO8fwvzmFZD+NaePHQOjuPp43U+Pdf4lANPHaxGmjkUD21I9em5mLwZ9Vp8oiAJf6zuQsfAmM/Oo+iEXtFkg8MpeIdFNie3pURj7+oEPPtOAxp7Rnx2nudONaCpdxTf+Is8fgfJ8Km1yRAAXvbh/i6K/ikrbeyDVkPI5xtNbI6euDMbei3h2werffL87f1j+PGxOuzMjcXmTLNPzsGUJSk6BFuzLHjpXAsm7U6fnEPRCf1cQx/yFkcgjMd3sTmyRBjxV8UZOHqlG8eveH+u+Xd+fwVOIfAvd+d6/bmZcj24PgU9wxN4q8o34xEVm9An7A5caOnncgubt89sXIKl5lA8dbAaE3bv7Yh3pr4Xb1a24wtFaUiK5t0/2Z8UZZixrzDZZz8Xik3ol1oHMGF3ckJn82bQafDk3blo6BnBz041euU57Q4nvnmgCglRwfhSUZpXnpOph0ZD+M7e5ViVFOWb5/fJs/rB9EAL3mGRLcSWLAu258TiR8euomtwfMHP9+LZZlzpHMI/787hvc6Z3yk2oZc29CHdEoaYsCCpQ2EK9+TdubA7Bb5z+PKCnqd3eALfP1KDDWkx2LUszkvRMeY5RSZ0h1OgrMnG5RbmFckxIfjC5qV4Y4GDML53pAYjkw58c08eD1phklBkQq/pHMLQuB2FS7jcwrzjS1vSsHgBgzAutvZjf2kLHlqfisxY3saZSUORCf1cg2s/BL5CZ94SYtDhn3a7BmG8fG5uCz+cToFvHKhCTKgBX9uR4aMIGbs1RTZwlzbakBAVjMRF3BLGvGf38ni8sLQJ//WHKzhT7/kmSoPjdpxv7sd/fXwFIow8uIJJx6OETkS7APw3AC2AZ4UQ/3Hd14MA/BLAbQB6AXxSCNHo3VBdhBA419iHjWk8bo55FxHhXz+yHH/7m0pUd8xtz/SP35aIj+cn+igyxjxzy4RORFoATwPYAaAVQCkRHRBCzFwz/TkANiFEOhHdB+A/AXzSFwE39Y7COjTBAy2YT6RbwvDGoxulDoOxefGkhl4IoE4IUS+EmASwH8A91x1zD4BfuD9+FUAx+eg2/3T/eSHXzxlj7M94ktATALTM+LzV/dgNjxFC2AEMAPhQTYSIHiGiMiIqs1qt8wo4KliPHbmxSLeEzevvM8aYWvn1pqgQ4hkAzwBAQUHBvGYx7cyLw848XrTBGGPX8+QKvQ3AzDHlie7HbngMEekARMJ1c5QxxpifeJLQSwFkENESIjIAuA/AgeuOOQDgIffHHwdwTPhzCi9jjLFbl1yEEHYiegzAW3C1Lf5MCFFFRE8BKBNCHADwHIBfEVEdgD64kj5jjDE/8qiGLoQ4DODwdY89OePjcQD3ejc0xhhjc6HIpf+MMcY+jBM6Y4ypBCd0xhhTCU7ojDGmEiRVdyERWQE0zfOvmwD0eDEcKanltajldQDqeS1qeR2Ael6LN15HihDCfKMvSJbQF4KIyoQQBVLH4Q1qeS1qeR2Ael6LWl4HoJ7X4uvXwSUXxhhTCU7ojDGmEkpN6M9IHYAXqeW1qOV1AOp5LWp5HYB6XotPX4cia+iMMcY+TKlX6Iwxxq7DCZ0xxlRCcQmdiHYRUQ0R1RHRE1LHM19E9DMi6iai96WOZSGIKImIjhNRNRFVEdFXpY5pPojISETniKjS/Tq+JXVMC0FEWiI6T0QHpY5lIYiokYguEdEFIiqTOp6FIKIoInqViK4Q0WUiWu/1cyiphu4eWF2LGQOrAey7bmC1IhDRZgDDAH4phFgmdTzzRUTxAOKFEBVEFA6gHMBHlPY9cc/ADRVCDBORHsApAF8VQpyROLR5IaLHARQAiBBC3C11PPNFRI0ACoQQil9URES/APCOEOJZ92yJECFEvzfPobQrdE8GViuCEOIkXHvHK5oQokMIUeH+eAjAZXx45qzsCZdh96d69x/lXO3MQESJAHYDeFbqWJgLEUUC2AzX7AgIISa9ncwB5SV0TwZWM4kQUSqA1QDOShzKvLjLFBcAdAP4oxBCka8DwP8D8PcAnBLH4Q0CwBEiKieiR6QOZgGWALAC+Lm7FPYsEYV6+yRKS+hMpogoDMBrAL4mhBiUOp75EEI4hBCr4JqbW0hEiiuFEdHdALqFEOVSx+Ilm4QQ+QDuBPCou1SpRDoA+QB+KoRYDWAEgNfvASotoXsysJr5mbvm/BqAF4UQr0sdz0K53wofB7BL4lDmYyOAPe7a834A24joBWlDmj8hRJv7v90AfgtX2VWJWgG0znjX9ypcCd6rlJbQPRlYzfzIfTPxOQCXhRA/kDqe+SIiMxFFuT8OhuvG+xVJg5oHIcQ/CiEShRCpcP1+HBNCPCBxWPNCRKHuG+1wlyd2AlBkV5gQohNACxFluR8qBuD1xgGPZorKxWwDqyUOa16I6GUAWwCYiKgVwDeEEM9JG9W8bATwIIBL7vozAPyTew6tksQD+IW7k0oD4BUhhKJb/lQgFsBvXdcM0AF4SQjxB2lDWpCvAHjRfTFaD+Az3j6BotoWGWOMzU5pJRfGGGOz4ITOGGMqwQmdMcZUghM6Y4ypBCd0xhhTCU7ojDGmEpzQGWNMJf4/9i/9O1nI7HsAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Objective with 1 unique expectation values\n", "total measurements = 1\n", "variables = [a]\n", "types = not compiled\n" ] } ], "source": [ "# For completeness we initialize the variable again here\n", "a = tq.Variable(\"a\")\n", "# to be sure that the variable is the same as the one from the objective we could also do\n", "# a = objective.extract_variables()[0]\n", "\n", "# this is the new objective\n", "L = E**2 + (-a**2).apply(tq.numpy.exp)*E\n", "\n", "compile_and_evaluate(L);\n", "\n", "# check how many (unique) expectation values are in the objective\n", "print(L)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "At last, lets take our last objective but sample from it. \n", "This means that in the evaluation of the expectation value the measurements on the underlying circuit are sampled. \n", "Feel free to play with the number of samples." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Objective with 1 unique expectation values\n", "total measurements = 1\n", "variables = [a]\n", "types = not compiled\n" ] } ], "source": [ "# For completeness we initialize the variable again here\n", "a = tq.Variable(\"a\")\n", "# to be sure that the variable is the same as the one from the objective we could also do\n", "# a = objective.extract_variables()[0]\n", "\n", "# this is the new objective\n", "L = E**2 + (-a**2).apply(tq.numpy.exp)*E\n", "\n", "compile_and_evaluate(L, samples=1000);\n", "\n", "# check how many (unique) expectation values are in the objective\n", "print(L)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Derivatives of Objectives\n", "\n", "Derivatives of objectives are objectives themselves.\n", "They can be simply created by applying `tq.grad` on a objective. \n", "\n", "Lets take first objective and plot its derivative.\n", "The first is easy to check since the derivative should just be the shifted sinus curve.\n", "Feel free to change the objective and play around.\n" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Objective:\n", " Objective with 1 unique expectation values\n", "total measurements = 1\n", "variables = [a]\n", "types = not compiled\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "First Derivative:\n", " Objective with 2 unique expectation values\n", "total measurements = 2\n", "variables = [a]\n", "types = not compiled\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Second Derivative:\n", " Objective with 6 unique expectation values\n", "total measurements = 6\n", "variables = [a]\n", "types = not compiled\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD4CAYAAADhNOGaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAug0lEQVR4nO3dd3hUZfr/8fedDqEkkNCSAAFC7wRQsQsCNlj0q6ir2L64Kl93dS2gu7prRd3V1VV3VbCs3VUQVIo0GwKS0AIESAgtQSAQCJCQfv/+yLC/WQwtM5kzk7lf1zVX5rQ5n6Nh7pzznOc8oqoYY4wJXiFOBzDGGOMsKwTGGBPkrBAYY0yQs0JgjDFBzgqBMcYEuTCnA9RGXFyctm/f3ukYxhgTUNLT0/eqavyx8wOyELRv3560tDSnYxhjTEARkW01zbdLQ8YYE+SsEBhjTJCzQmCMMUHOCoExxgQ5KwTGGBPkvFIIRORNEdkjImuPs1xE5CURyRaRNSLS323ZOBHJcr3GeSOPMcaYU+etM4K3gREnWD4SSHG9xgP/ABCRZsCjwGBgEPCoiMR6KZMxxphT4JV+BKr6nYi0P8Eqo4B/afUzr5eKSIyItAbOB+apagGAiMyjuqB86I1cxpjApqrsKyojb/8RcvcfIe9AMc2jIxnesxWNIgOyG5Rf8tV/yQRgh9t0rmve8eb/goiMp/psgrZt29ZNSmOMT1VVKfmHS8ndf4Tc/cXkHXB94btNl5RX/WK7hz/PYESPVozpn8iQTnGEhogD6euPgCmpqvo68DpAamqqjaZjTAArLC7nL19v5JO0HZRW/PcXfWzDcBJjG5LSojEXdGlBQmwDEmIakBjbkISYBmTnH+KzFXl8uXonn6/aScsmkYzum8CY/ol0adXYoSMKbL4qBHlAktt0omteHtWXh9znf+OjTMYYH6uqUj5bkcvk2RvYX1zGVQMS6ZUYQ2JMg/984Uef5JLPgHbNGNCuGY9c1p2FG/YwbUUeU3/Ywmvf5dCjTRPG9E/kij5tiG8c6aOjCnziraEqXW0EX6pqzxqWXQpMAC6humH4JVUd5GosTgeO3kW0AhhwtM3geFJTU9WeNWRMYMn8+SB//Hwtadv2079tDI+P7kmPNk298tn7DpfyxeqdTFuZx5rcQkJDhPM6xzOmfwJDu7UkKjzUK/sJdCKSrqqpv5jvjUIgIh9S/Zd9HLCb6juBwgFU9Z8iIsDLVDcEFwM3q2qaa9tbgIdcH/Wkqr51sv1ZITAmcBwqKeeFeVm8s2QrTRuEM3FkV67qn0hIHV3Xz9p9iGkr8/h8ZR4/F5bQOCqMhy7pxrWDrG2xTguBr1khMMb/qSozV+/kia8y2Xu4lOsGteX+4V2IaRjhk/1XVilLc/bx6jfZLM7ex01ntecPl3YjLDR4+9EerxAETGOxMSZwZO0+xCMz1rEkZx+9E5sy5cZU+iTF+DRDaIgwpFMcZ3RozlOzMpn6wxZy9hbx92v70bRBuE+z+DsrBMYYrykqreClhVlM/X4L0ZFhPDG6J9cOauvo7Z2hIcIfL+tOSotG/OHztYx5dTFTxw2kfVy0Y5n8jRUCY4xXzFm7iz9/sY6fC0u4OjWRB0d0pXkj/7lzZ+ygtrSPi+aO99IZ/epiXr2+P2d1jHM6ll8I3otlxhivefOHLfzmvXRiGkbw2R1n8uxVffyqCBx1RofmzLjrbOIbRXLj1J/4YNl2pyP5BSsExhiPfPTTdh77cj3De7Rk5oQhDGjXzOlIJ9S2eUM+u/Mszk6J46HpGfxp5joqKn/ZezmYWCEwxtTajFV5TJqewXmd43np2n6EB8gdOU2iwpk6biC3np3M2z9u5ZZ30ig8Uu50LMcExv81Y4zf+XrdLu79ZDWD2jfjn78eQGRYYHXaOtqIPHlML37M3suYVxezdW+R07EcYYXAGHPavtuUz4QPVtIroSlTbxpIg4jAKgLuxg5qy3u3DaagqIzRry7mx817nY7kc1YIjDGn5actBYx/N42OLRrxzs2D6sXjoIO9EdkKgTHmlK3ecYBb3l5OQkwD3r11EE0b1p+OWcc2Is9Yled0JJ+xQmCMOSWZPx/kxjd/IjY6nPdvO4M4P7w91FNNosJ548ZUBiU348HP1rA2r9DpSD5hhcAYc1I5+Ye5YeoyGoSH8sFtZ9CqaZTTkepMeGgIr17fn9iGEdz+bjoFRWVOR6pzVgiMMSe0o6CY66csA+D9/x1MUrOGDieqe3GNInnthgHkHy5lwgcr6n0/AysExpjj2n2whOunLKO4rJJ3bx1Mx/hGTkfymd6JMTz9q178uHkfT8/e4HScOhX4zf3GmDqx73Ap109Zxr7Dpbz/v2fQrXUTpyP53JUDEsnIK2TqD1vomdCEX/VLdDpSnbAzAmPMLxQWl3PD1J/I3V/MmzcNpK+PHyHtTx6+tBuDk5sx8bOMett47JVCICIjRGSjiGSLyMQalr8gIqtcr00icsBtWaXbspneyGOMqb3KKmX8u2lk7TnEazekMrhDc6cjOSo8NIRXru9P8+jqxuN9h0udjuR1HhcCEQkFXgFGAt2Ba0Wku/s6qnqPqvZV1b7A34FpbouPHF2mqld4mscY45l/fruZZVsKmDymN+d1jnc6jl+objxOZe/hUu76YAXl9azx2BtnBIOAbFXNUdUy4CNg1AnWvxb40Av7NcZ4WUZuIS/M28RlvVszpn+C03H8Sq/Epjw9phdLcwp4alam03G8yhuFIAHY4Tad65r3CyLSDkgGFrrNjhKRNBFZKiKjj7cTERnvWi8tPz/fC7GNMe6OlFXyu49XEtcokidH90LEuVHF/NWY/oncMiSZtxZvZdqKXKfjeI2vG4vHAp+qaqXbvHauwZSvA/4mIh1r2lBVX1fVVFVNjY+301VjvO3p2Zlszi/ir1f3qVePjvC2hy7pypkdmjNxWgZrcg84HccrvFEI8oAkt+lE17yajOWYy0Kqmuf6mQN8A/TzQiZjzGlYtHEP/1qyjVvPTmZIJxu+8UTCQkN4+bp+xDeK5PZ309lbDxqPvVEIlgMpIpIsIhFUf9n/4u4fEekKxAJL3ObFikik630cMARY74VMxphTVFBUxgOfrqFLy8bcP7yL03ECQnNXz+OCojLufD/wG489LgSqWgFMAOYCmcAnqrpORB4TEfe7gMYCH6mqus3rBqSJyGpgETBZVa0QGOMjqsqkaWsoLC7nhWv6EhUeuOMK+FrPhKY8c2VvftpSwJNfBXbjsVd6FqvqLGDWMfMeOWb6TzVs9yPQyxsZjDGn79/pucxdt5uHLulK9zbB13PYU6P7Jbj1PG7KVQMCs+ex9Sw2Jkht31fMn2eu48wOzbnt7A5OxwlYk0ZWNx4/OmMtOw8ccTpOrVghMCYIVVRWcc8nqwgJEf56dR9CQuxW0doKCw3h2at6U6XwyIy1/PfV78BghcCYIPSPbzaTvm0/T4zuSZuYBk7HCXhJzRpy77DOzM/cw5y1u5yOc9qsEBgTZFbvOMCLC7K4ok8bRvW13sPecvOQ9vRo04RHZ66j8Ei503FOixUCY4JIcVkF93y8ivjGkTw+qqfTceqVsNAQnh7Ti72HS3l2TmCNX2CFwJgg8tSsTLbss97DdaV3Ygw3D0nm/WXbSdta4HScU2aFwJggsXDDbt5bup3bzk7mrI7We7iu3DusMwkxDZg0LYOyisDoaGaFwJggsPdwKQ98uoaurRpzn/UerlPRkWE8ProHWXsO89q3m52Oc0qsEBhTz6kqEz/L4OCRCv42ti+RYdZ7uK5d2LUll/Zuzd8XZZOTf9jpOCdlhcCYeu7T9FzmZ+7mgRFd6NrKeg/7yqOXdycyLISHpmf4fd8CKwTG1GOFR8qZPHsDA9rFcsuQZKfjBJUWjaOYNLIbS3MK+He6f49dYIXAmHrspQVZFBSX8ecreljvYQeMHZhEartYnpqV6dePq7ZCYEw9lb3nEO/8uJVrUpPomdDU6ThBKSREeHpML4pKK3jiS/99sLIVAmPqIVXlsS8zaRARancJOSylZWPuOL8Tn6/aybeb/HOYXSsExtRDCzL38N2mfH43tDNxjSKdjhP07jy/Ix3iovnD5xkcKas8+QY+5pVCICIjRGSjiGSLyMQalt8kIvkissr1us1t2TgRyXK9xnkjjzHBrLSikse/Wk+nFo248cx2TscxQFR4KE+N6cWOgiP8bcEmp+P8gseFQERCgVeAkUB34FoR6V7Dqh+ral/Xa4pr22bAo8BgYBDwqIjEeprJmGA29YctbNtXzCOXdSc81E76/cUZHZpzTWoSU77fwrqdhU7H+S/e+C0ZBGSrao6qlgEfAaNOcdvhwDxVLVDV/cA8YIQXMhkTlHYfLOHlhdkM7daSczvHOx3HHGPSJV2JbRjOQ9MyqKzyn74F3igECcAOt+lc17xjXSkia0TkUxFJOs1tjTGn4JnZG6ioVP54WTeno5gaxDSM4I+XdWd1biH/WrLV6Tj/4avzxi+A9qram+q/+t853Q8QkfEikiYiafn5/tnyboyTVmzfz7SVedx2TjLtmkc7HcccxxV92nBe53iem7uRPD8Z2tIbhSAPSHKbTnTN+w9V3aeqR3tTTAEGnOq2bp/xuqqmqmpqfLyd8hrjrqpK+fPMdbRsEsldF3RyOo45ARHhidE9qVJl8mz/GLfAG4VgOZAiIskiEgGMBWa6ryAird0mrwAyXe/nAheLSKyrkfhi1zxjzGn4dEUuq3MLmTiyK9GRYU7HMSeR1Kwht53dgS9W72T1jgNOx/G8EKhqBTCB6i/wTOATVV0nIo+JyBWu1e4WkXUishq4G7jJtW0B8DjVxWQ58JhrnjHmFB0sKefZORvo3zaG0Tb0ZMC4/bwONI+O4KlZmY4/lM4rfzqo6ixg1jHzHnF7PwmYdJxt3wTe9EYOY4LR3xdksa+ojDdvGoiIPU8oUDSOCue3Q1N4ZMY6FmTuYWj3lo5lsZuMjQlgm/MP89birVw9IIneiTFOxzGn6dpBbekQF83kORuoqHRuNDMrBMYEsMe/XE+D8FDuH2HPEwpE4aEhPDCiK9l7DvNJmnOPqrZCYEyAWrhhN99szOe3Q1PseUIBbHiPlqS2i+X5eZsoKq1wJIMVAmMCUGlFJY99sZ4O8dHceGZ7p+MYD4gIky7pxt7Dpbz+XY4jGawQGBOA3lq8la2u5wlFhNk/40A3oF0sl/RqxRvf57DnYInP92+/QcYEmD0HS/j7giyGdmvB+V1aOB3HeMn9w7tSVlHFC/OzfL5vKwTGBJhn5mykvFL5w6U1PeTXBKrkuGh+fUY7Pl6+nazdh3y6bysExgSQjNxCPluRyy1nJ9M+zp4nVN/cfVEK0RFhPDPHt4+esEJgTAB5du4GYhuGc9cFHZ2OYupAs+gI7rigI/Mz97A0Z5/P9muFwJgAsWTzPr7P2sud53eicVS403FMHbllSDKtm0bx1KxMqnw0ZoEVAmMCgKry7NwNtGoSxQ02/GS9FhUeyu8v7sKa3EK+zPjZJ/u0QmBMAJifuYeV2w/w26EpRIWHOh3H1LFf9UugW+smPDtnA6UVdT/YvRUCY/xcZZXyl7kbSY6L5n8GJDodx/hAaIgwaWRXcvcf4d0l2+p8f1YIjPFzM1fnsXH3Ie4d1pkwG4w+aJzbOZ5zUuL4+8JsCovL63Rf9ltljB8rq6ji+Xmb6N66CZf2an3yDUy9MmlkNw6WlPPKN9l1uh8rBMb4sY+Xb2dHwRHuH9GFkBAbayDYdG/ThDH9Enl78VZ2FBTX2X68UghEZISIbBSRbBGZWMPye0VkvYisEZEFItLObVmliKxyvWYeu60xwaq4rIKXFmYzqH0zzu9s43QHq/uGd0YE/vr1xjrbh8eFQERCgVeAkUB34FoRObbv+0ogVVV7A58Cz7otO6KqfV2vKzDGAPD2j1vJP1TKAyO62MhjQax10wbcenYyn6/aSUZuYZ3swxtnBIOAbFXNUdUy4CNglPsKqrpIVY+e1ywF7NYHY06gsLicf36zmQu7tiC1fTOn4xiH/eb8jjSrw/GNvVEIEoAdbtO5rnnHcysw2206SkTSRGSpiIw+3kYiMt61Xlp+fr5HgY3xd699t5mDJRXcd7GNPGagSVQ4d1/YiSU5+1i144DXP98rg9efKhH5NZAKnOc2u52q5olIB2ChiGSo6uZjt1XV14HXAVJTU33T79oYB+w5VMJbi7cyqm8burdp4nQc4yeuG9yObq2b0K9trNc/2xtnBHlAktt0omvefxGRocDDwBWqWnp0vqrmuX7mAN8A/byQyZiA9fLCbMorq7h3WGenoxg/EhEWwuAOzevks71RCJYDKSKSLCIRwFjgv+7+EZF+wGtUF4E9bvNjRSTS9T4OGAKs90ImYwLS9n3FfLBsO9cMTKJdc3vMtPENjy8NqWqFiEwA5gKhwJuquk5EHgPSVHUm8BzQCPi36+6H7a47hLoBr4lIFdVFabKqWiEwQeuF+ZsICxXuvijF6SgmiHiljUBVZwGzjpn3iNv7ocfZ7keglzcyGBPoNuw6yOer8hh/bgdaNolyOo4JItaz2Bg/8Ze5m2gUGcYd59mgM8a3rBAY4wfSt+1nfuZubj+3AzENI5yOY4KMFQJjHKaqPDd3A3GNIrh5SLLTcUwQskJgjMO+z9rL0pwCJlzQiehIn3btMQawQmCMo6rPBjaSENOAawe3dTqOCVJWCIxx0Oy1u8jIK+SeYZ2JDLMhKI0zrBAY45DKKuWvX28kpUUjftXvRI/nMqZuWSEwxiEzVuWxOb+Ie4d1JtQGnTEOskJgjAPKK6t4cUEW3Vs3YXiPVk7HMUHOCoExDpi+Io9t+4q5d1hnG4LSOM4KgTE+VlZRfTbQJ7EpF3Vr4XQcY6wQGONrn6TtIO/AEe4Z1tmGoDR+wQqBMT5UUl7JywuzGdAulvNsQHrjJ6wQGONDH/60nV0HS/i9nQ0YP2KFwBgfOVJWyavfbOaMDs04q1Oc03GM+Q8rBMb4yHtLt5F/qJR7h9mA9Ma/eKUQiMgIEdkoItkiMrGG5ZEi8rFr+TIRae+2bJJr/kYRGe6NPMb4m6LSCv7x7WbOSYljUHIzp+MY8188LgQiEgq8AowEugPXikj3Y1a7Fdivqp2AF4BnXNt2p3qM4x7ACOBV1+cZU6+8/eNWCorKbEB645e8cUYwCMhW1RxVLQM+AkYds84o4B3X+0+Bi6S6pWwU8JGqlqrqFiDb9Xl14h/fbGby7A119fHG1OhgSTmvf5fDhV1b0K9trNNxjPkFbxSCBGCH23Sua16N66hqBVAIND/FbQEQkfEikiYiafn5+bUKmru/mKk/5LCjoLhW2xtTG2/+sIXCI+V2NmD8VsA0Fqvq66qaqqqp8fG1u/96woWdEBFeWpDl5XTG1KywuJyp32/h4u4t6ZnQ1Ok4xtTIG4UgD0hym050zatxHREJA5oC+05xW69p3bQBvx7cjs9W5JKTf7iudmPMf7zxfQ6HSiu4x84GjB/zRiFYDqSISLKIRFDd+DvzmHVmAuNc768CFqqquuaPdd1VlAykAD95IdNx3XF+RyLDQnnRzgpMHSsoKuOtxVu4tHdrurVu4nQcY47L40LguuY/AZgLZAKfqOo6EXlMRK5wrTYVaC4i2cC9wETXtuuAT4D1wBzgLlWt9DTTicQ3juSmIe2ZuXonG3cdqstdmSD32rebOVJeyT1DU5yOYswJSfUf5oElNTVV09LSar39geIyznlmEUM6xfHPGwZ4MZkx1fYcKuHcZxcxsmdrXrimr9NxjAFARNJVNfXY+QHTWOxNMQ0juOXsZOas20VGbqHTcUw99M9vciivVO6+yM4GjP8LykIAcOs5yTRtEM7z8zY6HcXUM7sKS3hv2TbG9EsgOS7a6TjGnFTQFoImUeHcfl4HFm3MJ33bfqfjmHrklUXZVFXZ2YAJHEFbCABuOqs9cY0i7KzAeE3u/mI+Wr6dqwcmkdSsodNxjDklQV0IGkaEccf5nVicvY8fN+91Oo6pB15emI0gTLigk9NRjDllQV0IAK4f3JZWTaJ4/utNBOIdVMZ/bNtXxL/Tc7l2UBJtYho4HceYUxb0hSAqPJQJF3Yibdt+vt1Uu2cYGQPw4vwswkKEO+1swASYoC8EAFenJpEY24Dn59lZgamdjbsOMX1VHjed1Z6WTaKcjmPMabFCAESEhXD3RSmsyS1k3vrdTscxAegvX2+kUUQYvzmvo9NRjDltVghcjt7z/fy8TVRV2VmBOXUrtu9n3vrdjD+3A7HREU7HMea0WSFwCQsN4XdDU9iw6xBfZfzsdBwTIFSV5+ZsJK5RdW91YwKRFQI3l/duQ5eWjXlh/iYqKqucjmMCwA/Ze1mSs4+7LuhEdGSY03GMqRUrBG5CQoR7hnUmJ7+Iz1ftdDqO8XOqynNzN5IQ04DrBrd1Oo4xtWaF4BjDe7SkZ0ITXlywiXI7KzAnMGftLtbkFvK7oSlEhoU6HceYWrNCcAwR4ffDurCj4Aj/Tst1Oo7xUxWVVfzl6410atGIMf0TnY5jjEesENTg/C7x9G8bw98XZlFSXqfj5JgANW1lHpvzi7jv4s6EhojTcYzxiEeFQESaicg8Ecly/YytYZ2+IrJERNaJyBoRucZt2dsiskVEVrlefT3J4y0iwn0Xd+HnwhI+/Gm703GMnymtqOTF+Vn0SWzK8B6tnI5jjMc8PSOYCCxQ1RRggWv6WMXAjaraAxgB/E1EYtyW36+qfV2vVR7m8ZqzOsVxZofmvLJoM8VlFU7HMX7k/aXbyTtwhPuHd0XEzgZM4PO0EIwC3nG9fwcYfewKqrpJVbNc73cCe4B4D/frE7+/uDN7D5fy9o9bnY5i/MTh0gpeWZTNWR2bc3ZKnNNxjPEKTwtBS1U92vtqF9DyRCuLyCAgAtjsNvtJ1yWjF0Qk8gTbjheRNBFJy8/3zcPhUts346KuLfjHos0UFJX5ZJ/Gv735wxb2FZVx//AuTkcxxmtOWghEZL6IrK3hNcp9Pa1+Wttxn80gIq2Bd4GbVfXofZmTgK7AQKAZ8ODxtlfV11U1VVVT4+N9d0IxcWRXisoqeGlBls/2afzT/qIy3vguh4u7t6Rf2180hxkTsE7aFVJVhx5vmYjsFpHWqvqz64t+z3HWawJ8BTysqkvdPvvo2USpiLwF3Hda6X0gpWVjrhnYlveWbuOms9rT3sagDVr/+HYzh8squM/OBkw94+mloZnAONf7ccCMY1cQkQhgOvAvVf30mGWtXT+F6vaFtR7mqRP3DE0hIiyE5+bakJbBaldhCe/8uJVf9Uugc8vGTscxxqs8LQSTgWEikgUMdU0jIqkiMsW1ztXAucBNNdwm+r6IZAAZQBzwhId56kSLJlH87zkd+CrjZ1Zst4Hug9GLC7KoUuWeoZ2djmKM10kgDsSSmpqqaWlpPt1nUWkF5z33DclxDfnk9jPttsEgsmVvEUOf/5ZfD27Ln0f1dDqOMbUmIumqmnrsfOtZfIqiI8O4Z1gKy7fu52sbvCaoPD9vExGhIUy4MMXpKMbUCSsEp+Ga1CQ6xkfzzOwN9kC6ILFuZyFfrN7JLWe3J77xce9uNiagWSE4DWGhIUwc2Y2cvUV8tHyH03GMD/xl7kaaNghn/Lk2BKWpv6wQnKah3VowKLkZL87fxOFSe/REfbZ8awGLNubzm/M60rRBuNNxjKkzVghOk4jw0CXd2Hu4jNe+3XzyDUxAUlWenbOBFo0juems9k7HMaZOWSGohb5JMVzWuzVvfJ/D7oMlTscxdWDe+t0s37qf/7sohQYRNuiMqd+sENTSA8O7UlmlPP/1JqejGC8rKa/kia8ySWnRiLEDk5yOY0yds0JQS22bN+TGM9vz7/QdbNx1yOk4xoum/rCF7QXFPHp5D8JD7Z+Iqf/st9wDEy7oRHRkGE/PznQ6ivGSXYUlvLIom4u7t7THTJugYYXAA7HREUy4oBPfbMxncfZep+MYL5g8O5OKKuUPl3Z3OooxPmOFwEPjzmpPQkwDnpqVSVVV4D2uw/x/6dsK+HzVTsaf04G2zRs6HccYn7FC4KGo8FDuG96ZdTsPMmN1ntNxTC1VVSl/mrmeVk2iuPMC6zxmgosVAi8Y1SeBnglN+MvcTZSUVzodx9TCv9N3kJFXyKRLutIw4qTDdBhTr1gh8IKQEOGhkd3IO3CEd2x844BTeKScZ+dsJLVdLFf0aeN0HGN8zgqBl5zVKY7zu8Tz8qJs9tv4xgHlpQVZFBSX8acretjjxU1Q8qgQiEgzEZknIlmunzUO5CoilW6D0sx0m58sIstEJFtEPnaNZhawJo3sRlFpBS8vynY6ijlF2XsO8c6PWxk7MImeCU2djmOMIzw9I5gILFDVFGCBa7omR1S1r+t1hdv8Z4AXVLUTsB+41cM8jurSqjH/MyCJfy3ZSk7+YafjmJNQVf78xXoaRIRy38U2DrEJXp4WglHAO67371A97vApcY1TfCFwdBzj09reX/3+4s5EhYfy8PS1BOLob8FkfuYevs/ayz1DO9O8kY01YIKXp4Wgpar+7Hq/C2h5nPWiRCRNRJaKyGjXvObAAVU9+iznXCDBwzyOa9Ekiokju7IkZx+fpuc6HcccR2lFJU98tZ6UFo244cx2TscxxlEnvU9OROYDrWpY9LD7hKqqiBzvT+B2qponIh2Aha4B6wtPJ6iIjAfGA7Rt2/Z0NvW5awe2ZfqKPJ6clcmFXVvYX5t+aOoPW9i2r5h3bx1kzxMyQe+k/wJUdaiq9qzhNQPYLSKtAVw/9xznM/JcP3OAb4B+wD4gRkSOFqNE4Lg9slT1dVVNVdXU+Pj40zhE3wsJEZ4e04ui0gqe+MqeQ+Rvdh8s4eWF2Qzr3pJzUvz7d8kYX/D0T6GZwDjX+3HAjGNXEJFYEYl0vY8DhgDrtfoC+iLgqhNtH6hSWjbmjvM6Mn1lHt9n5Tsdx7iZPHsDFVXKH+15QsYAnheCycAwEckChrqmEZFUEZniWqcbkCYiq6n+4p+squtdyx4E7hWRbKrbDKZ6mMev3HlBJzrERfPw9LUcKbMex/4gfdt+pq/M43/PSbbnCRnjIoF4Z0tqaqqmpaU5HeOULNm8j2vfWMpvzuvIxJFdnY4T1KqqlNGvLmb3wRIW/v58oiPtURImuIhIuqqmHjvfWsnq2Jkdm3N1aiJvfJ/D+p0HnY4T1D5Nz2VNbiGTRnazImCMGysEPvDQJd2IaRDOpOkZVNqjqh1xsKScZ+duYEC7WEb1tecJGePOCoEPxDSM4JHLu7N6xwHeXbLV6ThB6aX5WewrKuNPl9vzhIw5lhUCH7miTxvO7RzPc3M3svPAEafjBJX0bft5c/EWxg5MoleiPU/ImGNZIfAREeHJ0T2pVOWRGevs8RM+UlRawb2frKJNTAMeuqSb03GM8UtWCHwoqVlD7hnamfmZu5m7bpfTcYLC41+uZ3tBMc9f3ZfGUeFOxzHGL1kh8LFbz06me+smPDpzHQdLyp2OU6/NXbeLj5bv4DfndWRQcjOn4xjjt6wQ+FhYaAhPj+lF/qFSnpuz0ek49daeQyVMmpZBjzZNuGdoZ6fjGOPXrBA4oE9SDOPOas97y7aRvm2/03HqHVXlwU/XUFRawYtj+xIRZr/mxpyI/QtxyO8v7kKrJlE8NC2Dsooqp+PUK+8t286ijfk8dEk3OrVo7HQcY/yeFQKHNIoM4/FRPdm4+xBvfJ/jdJx6Y3P+YZ78aj3ndo7nRhtnwJhTYoXAQUO7t+SSXq14cUEWW/YWOR0n4JVXVnHPx6uICg/luat6W8cxY06RFQKHPXp5DyJDQ3jwszVUVNolIk+8tCCLNbmFTB7Ti5ZNopyOY0zAsELgsJZNovjzqB78tKWAybM3OB0nYKVvK+CVRdlcNSCRET1bOx3HmIBij2D0A2P6J7Imt5ApP2yhV2JTRvUN+KGbfepwaQX3fLyahNgGPHq5DTZjzOmyMwI/8fCl3Ric3IwHPl3D2rzTGs456D32xTpy9xfzgvUeNqZWPCoEItJMROaJSJbrZ2wN61wgIqvcXiUiMtq17G0R2eK2rK8neQJZeGgIr1zfn+bREdz+bjr7Dpc6HSkgzFn7M5+k5XLH+R1JbW+9h42pDU/PCCYCC1Q1BVjgmv4vqrpIVfuqal/gQqAY+NptlfuPLlfVVR7mCWhxjSL55w0DyD9cyoQPVlrj8UnsOVjde7hXQlN+e5H1HjamtjwtBKOAd1zv3wFGn2T9q4DZqlrs4X7rrd6JMTz9q14sydnHU7Os8fh4VJX7P13DkfJKXrjGeg8b4wlP//W0VNWfXe93AS1Psv5Y4MNj5j0pImtE5AURiTzehiIyXkTSRCQtPz/fg8j+78oBidw8pD1vLt7CtBW5TsfxS+8u3ca3m/J5+JJudGrRyOk4xgS0kxYCEZkvImtreI1yX0+rH7B/3Ifsi0hroBcw1232JKArMBBoBjx4vO1V9XVVTVXV1Pj4+JPFDngPXdKNMzo0Y9K0DDJyrfHYXfaeQzz5VSbnd4nn12dY72FjPHXSQqCqQ1W1Zw2vGcBu1xf80S/6PSf4qKuB6ar6n2cvq+rPWq0UeAsY5Nnh1B/hoSG8cl1/4hpFcvu7aey1xmMAdhWWcPPby4mODOPZK633sDHe4OmloZnAONf7ccCME6x7LcdcFnIrIkJ1+8JaD/PUK80bRfLaDQPYV1TGXe+voDzIG4/3Hi7l+ilL2V9Uzls3DaSF9R42xis8LQSTgWEikgUMdU0jIqkiMuXoSiLSHkgCvj1m+/dFJAPIAOKAJzzMU+/0TGjK5Ct7sWxLAU9+lel0HMcUFpdzw9SfyDtwhDdvGkifpBinIxlTb3jUs1hV9wEX1TA/DbjNbXor8Ivusqp6oSf7Dxa/6pdIRu5B3ly8hV4JTblyQKLTkXzqcGkF4976ic17DjNlXKqNNmaMl9k9dwHioUu6cmaH5kyansGa3ANOx/GZI2WV3Pr2cjLyCnn5un6c27n+3yhgjK9ZIQgQYaEhvHxdP+IbRXL7u+nkH6r/jcelFZX85r10ftpawPNX9+HiHq2cjmRMvWSFIIAcbTzeX1zGXR/U78bjisoqfvvhKr7dlM/kMb3sQXzG1CErBAGmZ0JTnrmyNz9tKeD/PlhJcVmF05G8rqqqutfwnHW7eOSy7lwzsK3TkYyp16wQBKBRfRP442Xdmbt+F1e/toSfC484HclrVJU/zFjL9JV53D+8C7ecnex0JGPqPSsEAerWs5OZOi6VrXuLGfXyYlbtOOB0JI+pKk9+lckHy7Zz5/kdueuCTk5HMiYoWCEIYBd2bcm0O88iMjyEa15bwszVO52O5JG/zc9iyg9buOms9tw/vIvTcYwJGlYIAlznlo35/M4h9EmM4e4PV/L81xupqjruI5/81mvfbubFBVlck5rEI5d1t0dHGONDVgjqgeaNInnvtsFcnZrISwuzueuDFQHViPzukq08PXsDl/dpw1NjehESYkXAGF+yMYvriYiwEJ65sjedWzbmyVmZ7HitmDduTKV10wZORzuuA8VlPDd3I+8v287Qbi15/uo+hFoRMMbn7IygHhERbjung983IldVKZ+k7eDCv37LR8t3cMuQZF6+rh/hofbraIwT7F9ePeTPjcjrdhbyP68t4YFP19AhLpovJpzNI5d3Jyo81OloxgQtuzRUTx1tRL7jvRXc/eFKsncf4ndDOzt2/f1gSTnPf72Jfy3ZSmzDCJ67qjdX9k+09gBj/IAVgnrsaCPyHz7P4KWF2WzafZj7R3ShY7zvhnZUVWas2smTszKrxxMY3Jb7L+5K04bhPstgjDkxKwT1nHsj8tOzNzBn3S76JMVwZf8ELu/dhtjoiDrbd9buQ/xxxlqW5hTQJymGN8cNpFdi0zrbnzGmdqR6qOHAkpqaqmlpaU7HCDh7DpYwc/VOPluRR+bPBwkPFS7o0oIx/RO5oGs8kWHeuU5fVFrBSwuymPrDFqIjw3hwRFfGDkyyy0DGOExE0lU19RfzPSkEIvI/wJ+AbsAg14A0Na03AngRCAWmqOrRkcySgY+A5kA6cIOqlp1sv1YIPLd+50Gmr8zl81U7yT9USkzDcC7r3Zox/RPplxRzWh26KquUXQdLyNt/hE27D/Hywmx2HSzhmtQkHhzZlWZ1eNZhjDl1dVUIugFVwGvAfTUVAhEJBTYBw4BcYDlwraquF5FPgGmq+pGI/BNYrar/ONl+rRB4T0VlFT9k72XaijzmrttFaUUVyXHRjOmXwOh+CSQ1a0hZRRW7CkvI3V9M7oEj5O4/Qt7+I+TuLybvwBF2FZZQ4dabuXvrJjw+uicD2sU6eGTGmGPVSSFw+/BvOH4hOBP4k6oOd01Pci2aDOQDrVS14tj1TsQKQd04VFLO7IxdfLYil2VbCgCIbxzJ3sOluP+aiECrJlEkxDQgMbYBCbENSIxtSEJM9fvk5tF2GcgYP3S8QuCLxuIEYIfbdC4wmOrLQQdUtcJt/nFHHxGR8cB4gLZt7fn0daFxVDhXD0zi6oFJ7CgoZsaqPLbuK6aN6ws/Mab6C79V0ygiwqwLijH1xUkLgYjMB2oaI/BhVZ3h/Ug1U9XXgdeh+ozAV/sNVknNGjLhwhSnYxhjfOCkhUBVh3q4jzwgyW060TVvHxAjImGus4Kj840xxviQL87vlwMpIpIsIhHAWGCmVjdOLAKucq03DvDZGYYxxphqHhUCEfmViOQCZwJfichc1/w2IjILwPXX/gRgLpAJfKKq61wf8SBwr4hkU91mMNWTPMYYY06fdSgzxpggcby7huzWD2OMCXJWCIwxJshZITDGmCBnhcAYY4JcQDYWi0g+sK2Wm8cBe70Yx0n15VjsOPxPfTmW+nIc4J1jaaeq8cfODMhC4AkRSaup1TwQ1ZdjsePwP/XlWOrLcUDdHotdGjLGmCBnhcAYY4JcMBaC150O4EX15VjsOPxPfTmW+nIcUIfHEnRtBMYYY/5bMJ4RGGOMcWOFwBhjglxQFQIRGSEiG0UkW0QmOp2nNkTkTRHZIyJrnc7iKRFJEpFFIrJeRNaJyG+dzlQbIhIlIj+JyGrXcfzZ6UyeEJFQEVkpIl86ncUTIrJVRDJEZJWIBOxTKkUkRkQ+FZENIpLpGtbXu/sIljYCEQkFNgHDqB4WczlwraqudzTYaRKRc4HDwL9UtafTeTwhIq2B1qq6QkQaA+nA6AD8fyJAtKoeFpFw4Afgt6q61OFotSIi9wKpQBNVvczpPLUlIluBVFUN6A5lIvIO8L2qTnGN6dJQVQ94cx/BdEYwCMhW1RxVLQM+AkY5nOm0qep3QIHTObxBVX9W1RWu94eoHq/iuONW+yutdtg1Ge56BeRfWCKSCFwKTHE6iwERaQqci2usFlUt83YRgOAqBAnADrfpXALwS6e+EpH2QD9gmcNRasV1OWUVsAeYp6oBeRzA34AHgCqHc3iDAl+LSLqIjHc6TC0lA/nAW67LdVNEJNrbOwmmQmD8lIg0Aj4DfqeqB53OUxuqWqmqfakee3uQiATcZTsRuQzYo6rpTmfxkrNVtT8wErjLdVk10IQB/YF/qGo/oAjwevtmMBWCPCDJbTrRNc84yHVN/TPgfVWd5nQeT7lO2xcBIxyOUhtDgCtc19Y/Ai4UkfecjVR7qprn+rkHmE715eFAkwvkup1hfkp1YfCqYCoEy4EUEUl2NbiMBWY6nCmouRpZpwKZqvq803lqS0TiRSTG9b4B1TckbHA0VC2o6iRVTVTV9lT/+1ioqr92OFatiEi06wYEXJdSLgYC7k47Vd0F7BCRLq5ZFwFev5kizNsf6K9UtUJEJgBzgVDgTVVd53Cs0yYiHwLnA3Eikgs8qqpTnU1Va0OAG4AM1/V1gIdUdZZzkWqlNfCO6860EOATVQ3oWy/rgZbA9Oq/NQgDPlDVOc5GqrX/A953/QGbA9zs7R0Eze2jxhhjahZMl4aMMcbUwAqBMcYEOSsExhgT5KwQGGNMkLNCYIwxQc4KgTHGBDkrBMYYE+T+H8lCzBmOAcNIAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "L = E\n", "\n", "dLda = tq.grad(L, \"a\")\n", "d2Ld2a = tq.grad(dLda, \"a\")\n", "print(\"Objective:\\n\", L)\n", "compile_and_evaluate(L);\n", "print(\"First Derivative:\\n\",dLda)\n", "compile_and_evaluate(dLda);\n", "print(\"Second Derivative:\\n\",d2Ld2a)\n", "compile_and_evaluate(d2Ld2a);\n" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Objective:\n", " Objective with 1 unique expectation values\n", "total measurements = 1\n", "variables = [a]\n", "types = not compiled\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "First Derivative:\n", " Objective with 3 unique expectation values\n", "total measurements = 3\n", "variables = [a]\n", "types = not compiled\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Second Derivative:\n", " Objective with 9 unique expectation values\n", "total measurements = 9\n", "variables = [a]\n", "types = not compiled\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAD4CAYAAADvsV2wAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAA0DklEQVR4nO3dd3xU95no/88zGnVUYFQQEkggEL3YxgWwAce4t8RJNvG9m+Ik15v7SzbJJru5yea39W5u2m6c4tzd601zNrlxEjvZuIMJNtXGFtgUUdRAIKEy6r3MzPf+oRFWsASS5sycmTPP+/XSS1MOc54B6eHMc57zfMUYg1JKKedz2R2AUkqpyNCEr5RScUITvlJKxQlN+EopFSc04SulVJxw2x3A5eTk5JiSkhK7w1BKqZhx6NChVmNM7kTPRXXCLykpoby83O4wlFIqZohI3WTPaUlHKaXihCZ8pZSKE5rwlVIqTmjCV0qpOKEJXyml4kTICV9E5ovIyyJyQkQqROSzE2wjIvI9EakWkaMicnWo+1VKKTU9VrRl+oAvGGMOi0gGcEhEXjLGnBi3zZ3AkuDX9cC/Br8rpZSKkJCP8I0xjcaYw8HbPcBJoPCSze4HfmZGvQZki0hBqPueiD9g+MHL1eyp9Ibj5ZVSKmZZWsMXkRLgKuDgJU8VAufH3a/nnf8pjL3GwyJSLiLlXu/0k3aCS3hsTy07TjRN+88qpZSTWZbwRWQW8BTwOWNM90xfxxjzmDFmvTFmfW7uhFcHX1GJJ426tv6ZhqCUUo5kyWgFEUlkNNn/whjz2wk2aQDmj7tfFHwsLIo96bx5viNcL6/i3NH6TvZUehERXCKIgEtAGLv99neXACKkJSZw95oCUhIT7A5fxbGQE76ICPAj4KQx5tuTbPY08GkReYLRk7VdxpjGUPc9mZKcdJ49eoFhX4Akt3aeKut09g/zpz88SPegb9p/9s3zHfzTu1eHISqlpsaKI/xNwIeAYyLyVvCxvwYWABhj/g14HrgLqAb6gYcs2O+kSjxpBAyc7+inNHdWOHel4swPXq6md8jH85+5idK8dIyBgDFvfwdM4O3bAWMIGMMjL1XxxOvn+cSNiyjJSbf7bag4FXLCN8bsA+QK2xjgU6Hua6qKPaO/UHVtfZrwlWXqO/p5/EAd7726iBXzMqf1Z//i1iX855sN/MtLlXz/wavCFKFSl+fIesfC4BHUmVY9caus8+0dlYjA528rm/afzctI4eM3LuSZIxc43tAVhuiUujJHJvzZaYlkpLipa+uzOxTlECcudPO7txp4aNNCCrJSZ/QaD29ZRHZaIt/cftri6JSaGkcmfBGhxJPOWW3NVBb5+ounyExJ5L9vLZ3xa2SmJPKprYvZU+nlQE2rhdEpNTWOTPgAxZ40PcJXlthf3cqeSi+fvnkxWamJIb3WhzYUU5CVwjdePM3oqS2lIsexCX9hTjr1HQOM+AN2h6JiWCBg+NoLJynMTuVDG4pDfr2UxAT+YlsZR853sr2i2YIIlZo6xyb8Yk86/oChvmPA7lBUDHv2WCPHG7r5wm1lll009cDVhZTmpvOt7afw6QGJukSNt5fqlp6wvLZjE36JJw2As1rWUTM07Avwz9tPs7wgk3evm3D004y4E1z81e3LqPH28dvDYbvgXMWo7/+higf+9wGGfdYfDDg34QdbM8+2asJXM/OLg3Wca+/nS3cuw+W67KUm03b7ynzWzc/mkZ2VDI74LX1tFbu6B0d4saKJ+9bNC8uUAMcmfE96ErOS3TpETc1Iz+AI399VzcZSD5uX5Fj++iLC/7hjGY1dg/zHq3WWv76KTc8fbWRwJMD7rpl/5Y1nwLEJX0Qo9qRpSUfNyP/ZXUt73zBfvnM5o+OirLeh1MPmslx+8Eo13YMjYdmHii1PHqpncd4s1hZlheX1HZvwgdFefC3pqGlq7h7kh/tquXftPFaH6RdvzBdvX0pn/wiP7a4N635U9DvT2kd5XQfvu6YobAcZzk74OWnamqmm7Ts7K/EHDH9129Kw72tVYRb3rp3Hj/adoaV7MOz7U9HrqUP1uATec5V1DQKXcnTCL/ak4wsYLnRqa6aamuqWHn71xnn+6/XFLAh2eoXbF24tY8Qf4Pu7qiOyPxV9/AHDU4fr2VyWS35mStj24+iEXxKcmqkjFtRUffPF06Qlufnzdy2O2D5LctL54HXz+eXr57QEGaderWmjsWuQ94fpZO0YZyf8nGAvvv4SqSkoP9vOjhPN/NnmRXhmJUd035951xISE1x8+6XKiO5XRYcnD50nKzWRW5bnhXU/jk74ubOSSUtK0E4ddUXGGL72winyMpL5+E0LI77/vMwUPnZjCU8fuUDFBR2fHE+6B0d44XgT962dF/YlMC1J+CLyYxFpEZHjkzy/VUS6ROSt4NffWrHfKcRFsSdde/HVFe040cyhug4+t62MtCRLlnqetoc3l5KVmsg3X9TxyfHkuaONDPkCvO+aorDvy6oj/J8Cd1xhm73GmHXBr3+0aL9XtDAnTUs66rJ8/gDffPEUpbnp/Mn68P/STSYrNZFP3VzK7kovr9a02RaHiqwnD9WzJG8Wa8LcAgwWJXxjzB6g3YrXslqxJ53zHf06pEpN6tfl9dR4+/jiHctwJ9hb5fzwhpLg+ORTOj45DtR6ezkU5t778SL5071BRI6IyAsisnKyjUTkYREpF5Fyr9cb8k5LPGmM+A2NXdrjrN6pf9jHIzsruaZ4NretyLc7HFISE/jctiW8db6THSd0fLLTPXU4/L3340Uq4R8Gio0xa4HvA/852YbGmMeMMeuNMetzc3ND3vHYguZntKyjJvDE6+fx9gzx5TuXReQIayree3URi3LT+db20/gDepTvVP6A4beHG9hSlkteGHvvx4tIwjfGdBtjeoO3nwcSRcT6iVQTGFvQXFe/UhN54XgjywsyWV8yx+5QLnInuPjzdy2muqWXN8912B2OCpMDNa00dg2GbVDaRCKS8EVkrgQPn0TkuuB+I3JWKi8jmZREl158pd7B2zNEeV0Ht6+0v5RzqVuW5+N2CS+d1LKOUz15qD4ivffjWdWW+UvgVWCpiNSLyMdF5JMi8sngJu8DjovIEeB7wAdNhM5IjS1orkf46lI7TzZjDNy2Yq7dobxDZkoiNyzysFPr+I7UPTjCixHqvR/PkoZjY8yDV3j+UeBRK/Y1EyWedKrCtGSYil07KpqYPyeV5QUZdocyoW3L8/j7Z05Q6+1lUe4su8NRFopk7/14jr7SdkxxThrn2wf0BJi6qGdwhP3Vbdy2Ym7UnKy91C3LR0tNfzjZYnMkymqR7L0fLy4SfoknnWF/gMYunZqpRr1y2suwP8DtK6OvnDNm/pw0ls3NYKfW8R2lJsK99+PFRcIvHlvQvFVP3KpRO04040lP4pri2XaHclm3rsinvK6Djr5hu0NRFnnqUD0JLolY7/14cZHwx1ozdYiaAhjy+Xn5VAvblueTYPHi5Fbbtjwff8DwSqWWdZzAjt778eIi4ednpJDsdmmnjgLgQE0bvUM+bl8Vfe2Yl1pdmEVeRjI7T2jCd4L91a00dQ9G/GTtmLhI+C7X2ILmWtJRsKOimfSkBDaWRuTav5C4XMIty/PYXellyOe3OxwVIjt678eLi4QPuqC5GuUPGF460czWpXkR7X8Oxbbl+fQO+ThYG5XzCdUUdQ2MsL2iifvXzSPZbc/PXvwk/Jx06tr7CWhrZlx781wHrb1D3BaFV9dOZtPiHFISXdqtE+Ps6r0fL24SfrEnjWFfgKZunZoZz3acaCYxQbh5mT0fqWciJTGBm5bksvNEs45MjmFPHjpPWf4sVhdGtvd+vLhJ+BcXNNeyTtwyxrC9ookNpTlkpiTaHc603Lo8nwtdg5xo7LY7FDUDNd5eDp/rtKX3frz4SfgXWzP1xG28Ot3cQ11bf1QOS7uSm5flIYJ268Sosd77d6+LfO/9eHGT8AsyU0jS1sy4tqOiGZHRi5liTW5GMlfNz9Y6fgyyu/d+vLhJ+C6XsGBOmi6EEse2VzRx1fxs8jLs/aWbqW0r8jnW0EWTrt4WU/bZ3Hs/XtwkfCA4JllLOvHofHs/FRe6o3p2zpXcOjZM7ZQe5ccSu3vvx4uzhJ9GXXuftmbGoZeCc+Vvi+GEvzhvFsWeNJ2RH0Oiofd+vLhK+MU56QyOBGjpGbI7FBVh2yuaKMufdXGuUiwSEbYtz2d/TRt9Qz67w1FTsOtUM8O+gC2D0iZi1YpXPxaRFhE5PsnzIiLfE5FqETkqIldbsd/pWqgLmseltt4h3jjbHtPlnDG3LM9j2Bdgb1Wr3aGoKdhb1crstETWFmXbHQpg3RH+T4E7LvP8ncCS4NfDwL9atN9pGRuTrJ068eUPp1oIROlShtN1bckcMlPc2q0TA4wx7KtqZePiHFxRMpXVkoRvjNkDXG7Qx/3Az8yo14BsESmwYt/TMS87lcQE0V78OLOjoonC7FRWFWbaHUrIEhNc3Lwsj12nWnQFtyhX2dxLS88QNy2OniF9karhFwLnx92vDz72DiLysIiUi0i51+u1NIgElzB/TppebRtH+oZ87Klq5dYV+VG7lOF0bVueT3vfMG+e67A7FHUZe6tG89eNS+Iv4U+ZMeYxY8x6Y8z63Nxcy19/oSddF0KJI3sqvQz7AjE1LO1KtizNxe0SXtKyTlTbV93Kopx0iman2R3KRZFK+A3A/HH3i4KPRVxxsBdfh1DFh+0VTcxOS+S6kjl2h2KZzJREbljk0fbMKDbk83Owtj2qju4hcgn/aeDDwW6dG4AuY0xjhPb9R0py0hgY8WtrZhwY9gX4w6kWblmejzsh6j7MhmTb8jxqvH3UenvtDkVN4HBdJwMjfm6Movo9WNeW+UvgVWCpiNSLyMdF5JMi8sngJs8DtUA18O/A/2fFfmdCp2bGj4Nn2ugZ9HFbDM7OuZJbxq66PanD1KLR3iovCS7hhlKP3aH8EbcVL2KMefAKzxvgU1bsK1RjCb+urZ/rF0XXP4ay1vaKJlITE9hcZv25ILvNn5PGsrkZ7DzZzH/bvMjucNQl9lW3sm5+dtSN4XbW59wpmJedgtsleuLW4QIBw46KZraU5cbMUobTdeuKfMrrOujoG7Y7FDVOR98wxxq6uCnK6vcQhwnfneAabc3UhO9oR+o7aemJraUMp2vb8nz8AcMrlVrWiSYHatowBk340aLEk8bZVr34ysm2VzTjdgm3LHNuwl9dmEVuRrIuihJl9lV7yUh2R804hfHiMuGPtmb2aWumQxlj2FHRxA2LPGSlRVcN1Uoul7BteR67K70M+fx2h6MY/dnbU9nKDaWeqOwMi76IIqDEk0bfsB9vr7ZmOlGNt5fa1j5Hl3PGbFueT++Qj4O1l5tsoiLlbFs/DZ0DUVnOgXhN+Dlvd+oo59leEZx974BhaVeyaXEOKYkuHaYWJfaNjVOIsv77MfGZ8LUX39G2VzSxdn42c7NicynD6UhJTOCmJbnsPNGsJcoosLeqlcLs1KhddyEuE37h7FQStDXTkS50DnC0vsuRF1tN5tbl+VzoGuREY7fdocQ1nz/AqzVt3LQkJ2oH9cVlwk9McFE0O1XHJDvQ2FKGTljsZKpuXpaHCNqtY7Mj9V30DPmibn7OeHGZ8GFsQXM9wnea7RVNLMpNZ3HeLLtDiZjcjGSump+tdXyb7atqRQQ2lWrCjzolnjTqWnVqppN09g9z8IwzljKcrm0r8jnW0EVT16DdocStvVVeVs3LYnZ6kt2hTCpuE36xJ52eIR9telm6Y+ytasUfMGxbnmd3KBF369gwtVN6lG+HnsER3jzfGdXlHIjjhL/wYmumlnWcYk+ll8yU6LzCMdwW582i2JOmM/Jt8lptO/6Aidr++zFxm/DHFjTXEQvOYIxhT5WXG5fkROUVjuEmImwpy+XgmXZG/AG7w4k7+6q8pCYmcE3xbLtDuaz4+80IKpqdhkvQ1kyHON3cQ3P3EFscOAp5qjaWeugf9nO0vtPuUOLO3upWrls4h2R3dE9mjduEn+R2UaitmY6xp3L0Ckcnzr6fqusXehCBA9VtdocSVxo6B6j19kV9OQesW/HqDhE5LSLVIvKlCZ7/qIh4ReSt4NcnrNhvqLQ10zl2V3opy59FQVaq3aHYZnZ6EsvnZnKgRhN+JF0cpxAPCV9EEoAfAHcCK4AHRWTFBJv+yhizLvj1w1D3a4USTzpnWnVqZqzrH/bxxpkONi+J36P7MRtLPRw618HgiE7PjJS9Va3kZiSzND/D7lCuyIoj/OuAamNMrTFmGHgCuN+C1w27Yk8aPYM+OvpH7A5FheC12jaG/QG2LNWEv3Gxh2FfgMN1HXaHEhcCAcOBmjZuWhy94xTGsyLhFwLnx92vDz52qfeKyFEReVJE5k/2YiLysIiUi0i51+u1ILzJjbVm6onb2LanspWURBfXlsyxOxTbXVsyhwSXaFknQk40dtPeNxwT5RyI3EnbZ4ASY8wa4CXg8ck2NMY8ZoxZb4xZn5sb3iO2Yo/24jvBnkovNyzyOHbt2unISElkTVEWB2pa7Q4lLuytGv17jtZxyJeyIuE3AOOP2IuCj11kjGkzxoytNvJD4BoL9huy+XNScQmc0V78mHW+vZ/a1j6t34+zsdTDkfoueod8dofieHurvCzNzyAvMzZGcVuR8N8AlojIQhFJAj4IPD1+AxEpGHf3PuCkBfsNWbI7gXnZqXqEH8N2azvmO2wszcEfMLxxRlfBCqeBYT/lZztippwDFiR8Y4wP+DSwndFE/mtjTIWI/KOI3Bfc7DMiUiEiR4DPAB8Ndb9WKfGkay9+DNtd6aUwO5XS3OhccMIO1xTPJinBpWWdMHv9bDvD/kBMJXy3FS9ijHkeeP6Sx/523O0vA1+2Yl9WK/ak8ezRRrvDUDMw7BtdcOLetfNiokMiUlISE7i6OFtP3IbZviovSQkurl8YO80CcXul7ZgSTzpdAyN09uvUzFhz+FwHvUO+uB6nMJmNpTmcaOzWn+sw2lvVyjXFs0lLsuS4OSI04V9szdSyTqzZU+klwSVsXOyxO5Sos6HUgzGjUxyV9Vp6BjnV1BNT5RzQhE9JcGqmnriNPXuqvFyzYDaZKYl2hxJ11hZlk5qYwKtaxw+L/dWjf6+xMD9nvLhP+PPnpCECZ1o14ccSb88Qxxu62VwWW79wkZLkdnHtwjlaxw+TvVWtZKclsnJelt2hTEvcJ/yUxATmZaVSpyWdmLKverQdc0tZ/K1uNVUbSz1UtfTS0qPLHlrJGMO+qlY2leaQ4IqtZoG4T/gw2qmj4xViy+7TXjzpSaycl2l3KFFrY+nouY1X9SjfUqP/iQ7FXDkHNOEDoyMWzmpJJ2YEAoa9Va3ctCQHV4wdYUXSynlZZKS4NeFb7OI4BU34sanEk0ZH/whdOjUzJlRc6Katb1ivrr2CBJdwwyKP1vEttq/Ky8KcdIpmp9kdyrRpwuft1swzWtaJCXuCC07cpPNzrmhjqYdz7f2cb9dzVFYY8vl5rbY9ZoalXUoTPrCiYLQOfLyhy+ZI1FTsrvSycl4muRnJdocS9TaWjiamV2v1KN8Kh+s6GRjxx2Q5BzThA1A0O5XZaYm6+HMM6Bkc4XBdh15dO0Vl+bPwpCdpHd8i+6pHL/bbUBqbF/tpwgdEhDVF2Ryt1yP8aHegpg1fwGj9fopERpPTgZpWXcrTAvuqWlk3PztmL/bThB+0tiiLyuYe+od1hng0213pZVaym6sXzLY7lJixodRDc/eQXlwYoq7+EY42dLEpRuv3oAn/otVF2QTMaAeIik7GGPZUetlQ6iHJrT+6UzVWx9dundC8WtuGMbApRss5oAn/orVFo5dIa1knetW29lHfMaDlnGkq8aRRkJWidfwQHahpJTUxgati+NOlJQlfRO4QkdMiUi0iX5rg+WQR+VXw+YMiUmLFfq2Ul5nC3MwUPXEbxfYEV7faou2Y0zJWx3+1to1AQOv4M7W/upVrF86J6U+XIUcuIgnAD4A7gRXAgyKy4pLNPg50GGMWA48A3wh1v+GwpihLj/Cj2J7K0QteFnhi74IXu20szaG9b5jTzT12hxKTmroGqfH2xXQ5B6w5wr8OqDbG1BpjhoEngPsv2eZ+4PHg7SeBWyQKlyhaOz+bM619dA3oFbfRZnDEz6u1bdqOOUNjbYRax5+ZseUiY/mELViT8AuB8+Pu1wcfm3Cb4Bq4XcCE/1WKyMMiUi4i5V6v14Lwpm5NsI5/TI/yo0752Q4GRwI6DnmGCrNTKfGk6Xz8Gdpf3UZ2WuLFizRjVdQVo4wxjxlj1htj1ufmRvZobnXhaMI/onX8qLO7soWkBBc3LIrtj9R22lCaw8Hadnz+gN2hxBRjDAdqWtmwyBPzw/qsSPgNwPxx94uCj024jYi4gSwg6j5bZqclUexJ0yP8KLSnspVrF8bW+qHRZmOph54hH8e19XhazrT20dg1yMYYL+eANQn/DWCJiCwUkSTgg8DTl2zzNPCR4O33AbtMlF72N3rFbafdYahxGrsGON3co/X7EI19OjqgZZ1p2R887xHrJ2zBgoQfrMl/GtgOnAR+bYypEJF/FJH7gpv9CPCISDXweeAdrZvRYm1RFhe6BvH2DNkdigraWzmaoLT/PjS5Gckszc/QfvxpOlDdSkFWCguDU3VjmSWfj40xzwPPX/LY3467PQi834p9hduaomwAjtZ3csvyfHuDUQDsrvKSnzmarFRoNpR6eOKNcwz7AjHdTx4pgYDh1do2blmWTxQ2Fk6b/otfYuW8TFwCR7SOHxX8gdH1QzcvyXXEL5zdNpR6GBwJ8Nb5TrtDiQknGrvp7B9h0+LYL+eAJvx3SE92szhvltbxo8SR+k66BkbYslTLOVa4YaEHEa3jT9X+amf034/RhD+BsVHJUXpeOa7sPu3FJcTsCkPRJistkVXzsvQCrCnaX9NGaW46+ZkpdodiCU34E1hblEV73zANnQN2hxL39lR5WTs/m+y0JLtDcYyNpR7ePNfBwLDf7lCi2rAvwBtn2h1zdA+a8Cf09olbrePbqbN/mCPnO9msw9IstaHUw4jfUF7XbncoUe3Ncx0MjPgvjpd2Ak34E1hWkEFigugVtzbbV91KwKD1e4tdWzIHt0u0rHMF+2vacAlscNDV3ZrwJ5DsTmB5QSZHz+sRvp32VHrJSk1kbfATl7JGerKbdfOzNeFfwYHqVlYVZpGVFpvLGU5EE/4k1hRlcbyhS+eH28TnD7DrlJebluSQEOPzS6LRxlIPx+o76R7UybAT6Rvy8db5TkeVc0AT/qTWFGbTM+SjVtcBtcXBM+209g5x9+oCu0NxpA2lOQQMvF6rdfyJvH6mHV/AOKb/fowm/EmsmR8cldzQaW8gcerZoxdIT0rg5mV5dofiSFctyCbZ7dKyziT2V7eSlOBiffEcu0OxlCb8SSzOnUVqYgJHtI4fccO+AC8cb+K2lXNJSUywOxxHSklM4Jri2XoB1iQO1LRxdXE2qUnO+vnThD8Jd4KLVYWZesWtDfZXt9LZP8I9a7ScE04bSz2cauqhvW/Y7lCiSnvfMCcau9nksPo9aMK/rDVF2VRc6GZEF4yIqGeOXiAzxc1N2n8fVhuCCU2nZ/6xsb8PJ8y/v5Qm/MtYU5TFkC9ApS78HDGDI352VDRz56oCneYYZmuKsshIdrO3KrJLiUa7/TWtzEp2sza45KmT6G/UZegVt5H3ymkvvUM+7lmr5ZxwS0xwsWlxDq+c9urcqHEOVLdy/cI5uBOclx6d944sVOJJIzPFrQk/gp45egFPepKjrm6MZluX5tLUPUhlc6/doUSFhs4Bzrb1O7KcAyEmfBGZIyIviUhV8PvsSbbzi8hbwa9Llz+MWiKiSx5GUP+wj10nW7hrdYEjj66i0djYildOt9gcSXR4exyyMw84Qv2t+hLwB2PMEuAPTL504YAxZl3w675JtolKa4qyON3Uw+CIThYMt50nWxgY8Wt3TgQVZKWyND+DV05rHR9Gyzk5s5Icu7paqAn/fuDx4O3HgXeH+HpRZ01RNr6A4URjt92hON4zRy6Qn5nMtSXOutgl2m1dmkt5XTu9Qz67Q7GVMYb9NW1sKM1x7OpqoSb8fGNMY/B2EzDZIrApIlIuIq+JyLsv94Ii8nBw23Kv1/6jjrXBK26P6pJwYdU9OMLu017uWTMPl87OiagtS3MZ8RsOVMf3RVjVLb14e4bYVOrMcg5MYRFzEdkJzJ3gqa+Mv2OMMSIy2an+YmNMg4gsAnaJyDFjTM1EGxpjHgMeA1i/fr3trQNzM1PIzUjWE7dhtqOimWF/gHvXzrM7lLizvngO6UkJvFLp5baVE/2qx4ex+r3TBqaNd8WEb4zZNtlzItIsIgXGmEYRKQAmPPNjjGkIfq8VkVeAq4AJE360ERHWFGZxtEETfjg9c+QC8+ekOrL3OdoluV1sXJzD7mB7plPLGVeyv6aNotmpLPCk2R1K2IRa0nka+Ejw9keA31+6gYjMFpHk4O0cYBNwIsT9RtSaomxqvL1xX+MMl/a+YfZVt3LPmnlxm2zstnVpLg2dA9R447M90+cP8FptmyPHKYwXasL/OnCriFQB24L3EZH1IvLD4DbLgXIROQK8DHzdGBNbCX9+FsbAMS3rhMWLx5vwBwz3rtFyjl22lI21Z9p/3swOxy900zPoY6ND2zHHXLGkcznGmDbglgkeLwc+Ebx9AFgdyn7stvbiFbedbHDwCR27PHPkAoty01le4MxWuFhQNDuNxXmz2F3p5RM3LbI7nIiLh/o96JW2UzInPYmi2al64jYMWroHee1MG/dqOcd2W8tyOVjbTv9w/JUuD9S0sjQ/g9yMZLtDCStN+FO0tihbFzUPg+eONWIM3Kuzc2y3dWkew/5A3E3PHBzxU362w/HlHNCEP2Wri7Ko7xjQ2eEWe/ZoI8vmZrA4T8s5drt24WxSExPYXRlfdfzDdR0M+QKOP2ELmvCnbE2wXVDn6linvqOfQ3Ud2nsfJZLdCWws9cTd9Mz9Na0kuITrFzn/Cm9N+FO0ujALER2VbKXnjo5epK3dOdFj69JczrX3c6a1z+5QImZ/ddvo2gApiXaHEnaa8KcoIyWRRTnpeoRvoWePNrK2KMvRF7rEmi1lo4vGx0t7ZvfgCEfrO+OinAOa8Kdl9MRtV1x93A2XM619HGvo0nJOlFngSWNRTnrc1PEP1rYTMMTFCVvQhD8ta4qy8PYM0dQ9aHcoMe/ZIxcAuFtHIUedLUtzea22LS5Ggu+vbiXZ7eLqBRMu5eE4mvCnYXXwAqwj57WOH6pnjl7g2pLZFGSl2h2KusTWpXkM+QK8Wuv89swDNa1cWzKHlMQEu0OJCE3407ByXiZul3CsodPuUGLa6aYeKpt7tZwTpa5fOIeURBe7HV7Hb+kZXdoxXso5oAl/WlISEyjLz9BOnRA9e/QCLoE7V2k5JxqlJCZwwyKP4+v4YxeYxcsJW9CEP21r52dxVE/czpgxhmeOXGBjaY7jL2OPZVvLcjnT2kddm3PbM/dVtZKR4mZVYfyM5NaEP01rirLpGhihrq3f7lBiUsWFbs629eu6tVFu69LR9kynHuWP+AO8dLKZW5blkRBHK6xpwp+msStuda7OzDxz5AJul3DHqvhdWSkWlOSkU+xJc2w//oGaNjr7R7hrdXwdeGjCn6ay/AyS3S6t489AIGB49mgjm8tyyU5LsjscdQVby3I5UNPqyPbM5482MivZzebgOgDxQhP+NCUmuFgxL1MXQ5mBN8930NA5oOWcGLF1aR6DIwHeONtudyiWGvEH2H6iiW3L8+KmHXNMSAlfRN4vIhUiEhCR9ZfZ7g4ROS0i1SLypVD2GQ3WFmVz/EIX/oCeuJ2OZ440kuR2ceuKfLtDUVNwwyIPSW6X48o68VrOgdCP8I8DDwB7JttARBKAHwB3AiuAB0VkRYj7tdWaoiz6h/1Ut8Tn+p8z4Q8YnjvWyLuW5sXFkConSE1K4PqFc3jldIvdoVgqXss5EGLCN8acNMacvsJm1wHVxphaY8ww8ARwfyj7tduasStu9cTtlB0804a3Z4h7dKGTmLJ1aR413j7OtzujKy2eyzkQmRp+IXB+3P364GMTEpGHRaRcRMq93uj8KLkoJ52MZLdOzpyiQMDw3Z1VZKS4edeyPLvDUdOwdenoUbBT2jPjuZwDU0j4IrJTRI5P8BWWo3RjzGPGmPXGmPW5udH5kcvlElYVZvHW+U67Q4kJPz1wloNn2vmbe1aQluS2Oxw1DYty0pk/J9Uxdfx4LufAFBK+MWabMWbVBF+/n+I+GoD54+4XBR+Lae9alsfxhm6eCU59VBOr8fbyjRdPccuyPN5/TZHd4ahpEhG2BNszh3yx3Z4Z7+UciExJ5w1giYgsFJEk4IPA0xHYb1g9tKmEqxZk85XfHaOhc8DucKKSzx/gL39zhJTEBL72wGpE4ueKRifZWpZH/7CfQ2c77A4lJPFezoHQ2zLfIyL1wAbgORHZHnx8nog8D2CM8QGfBrYDJ4FfG2MqQgvbfu4EF9/5wDr8AcPnf/WWtmhO4LG9tbx5rpN/vH8leZkpdoejZmhDqYekBBevxHgdP97LORB6l87vjDFFxphkY0y+Meb24OMXjDF3jdvueWNMmTGm1Bjz1VCDjhbFnnT+4f5VHDzTzmN7au0OJ6qcaurmOy9VcdfqudynY5BjWnqym2sXzo7p9kwt54zSK21D9N6rC7l7dQH/suO0Xn0bNOIP8IVfHyEjxc3/vH+VlnIcYGtZHpXNvVyI0fLlWDnn7jXxffChCT9EIsJX37OK3IxkPvvEm/QP++wOyXaP7qqm4kI3/+uB1Xhm6QhkJ4j19sznjl5gVrKbm5bEz+z7iWjCt0B2WhL/8idrOdPWx/989qTd4djqWH0Xj75czXuuKuT2lToR0ykW582iMDs1Jss6I/4AO040x305BzThW2ZjaQ5/trmUX75+ju0VTXaHY4vBET9f+M1b5MxK4u/vXWl3OMpCIsLmslz2V7cx4g/YHc60aDnnbZrwLfT5W8tYVZjJl546SnP3oN3hRNwjOyupbO7l6+9dQ1aazstxmq1Lc+kd8nGoLrbaM7Wc8zZN+BZKcrv4zgeuYmDEz1/+5giBOGrVPFTXzr/vqeWD187n5qU6PsGJNi3Owe2SmLrqdqycc+uK/Lgv54AmfMstzpvF39yzgr1Vrfx4/xm7w4mIgWE/f/mboxRkpfKVu5fbHY4Kk1nJbtaXzI6pE7d6sdUf04QfBv/lugVsW57PN188zcnG7rDvLxAwtPQMcqy+ix0VTbxyugVfBOus33jxFGda+/jW+9fo6GOH27o0j5ON3TEzPVPLOX9MJ1mFgYjwjfeu5o7v7uWzT7zJ05++ccYfJ4d8flq6h2jqHqSxa5DmruD37kEauwZo7h6iuXsQ3yXlo8LsVD60oZgPrJ/P7PTwLSd4oKaVnx44y0c3lrCxVH+pnO6+tfP41vbT/Py1Or58V3R/mtNyzjtpwg8Tz6xk/vn9a/nIj1/n6y+c4u/vm3rXSmf/MDsqmnn2WCMHqlvfkcxTExMoyEphblYK1y+cw9zg7bmZo98vdA7w+IE6vv7CKR55qZJ3ryvkIxtLWDEv09L32Dvk469+c5QSTxpfvGOppa+totO87FTuWDWXX75+js/csoT05OhNIVrOeafo/ddygC1luTy0qYSf7D/LlrJcbr7MLPiu/hF2nGjiuWON7KsaTfLz56Ty0KYSluRlkJ+VQkFWCvmZKWSmuC979eqaomzuWFXAqaZuHj9Qx+/erOdX5ee5buEcPrqxhNtW5ONOCL2a99XnTtDYNcBvPrlBxx7HkY9tWshzRxv57eF6PrShxO5wJqXlnHcSY6K3k2T9+vWmvLzc7jBCMjji5/5H99PWN8SLn9tMzrgrT7sGRnjpRDPPHb3AvupWRvyGotmp3L2mgLtXF7C6MMuSsQSd/cP8uvw8P3u1jvqOAeZlpfBfbyjmwesWMGeG5Z5XTrfw0Z+8wZ9tXhT1H+2VtYwxvPt/H6BnYISdn9+CyxV9ozNG/AHW/9NO3rUsj0c+sM7ucCJKRA4ZYyZcY1wTfgScaurmvkf3c+PiHB75wDr+cLKZ5442sqfKy4jfUJj9dpJfU2RNkp+IP2DYdaqFnx44w/7qNpLcLu5fO2+03FOQSd+wj55BH71DPnoGR+gZ/OP7vYM+uoP3Xzndwuy0JJ7585mfn1Cx6/dvNfDZJ97iJx+99rKfXO0ydkDy7x9ez60r8u0OJ6I04UeBn+w/wz88c4IEl+APGOZlpYwm+TXzWBvGJD+ZyuYeHj9wlt8ebmBgxI8IXOlHQQRmJbmZleImNyOZrz2wmpXzsiITsIoqI/4AN35jF2X5GfzHx6+3O5x3+OKTR3jhWBNv/P/b4u6A5HIJXwuvEfLRjSVc6BwgYODuNQVcNT/b1imSZfkZfPU9q/niHcv4zzcbaOsbJiN5NJlnpLiZlewmIyWRjHH305PcUfnxXUVeYoKLD28o4VvbT1PZ3ENZfobdIV004g+wvaKZbdqd8w6a8CNERPjK3SvsDuMdslIT+cjGErvDUDHowesW8L0/VPGT/Wf42gNr7A7nov3VrXQNaHfOREJd8er9IlIhIgERmfAjRHC7syJyTETeEhFn1GiUinNz0pN44OpCfnu4gfa+YbvDuej5Y41kaHfOhELtzTsOPADsmcK2Nxtj1k1WW1JKxZ6HNi1kyBfgl6+fszsUQMs5VxLqEocnjTGnrQpGKRVbyvIzuGlJDj979SzDPvvHJo+Vc+7Wcs6EIjVLxwA7ROSQiDx8uQ1F5GERKReRcq83doY0KRWvPrZpIc3dQ7xwvNHuUN4u55RpOWciV0z4IrJTRI5P8HX/NPZzozHmauBO4FMisnmyDY0xjxlj1htj1ufmxu/q8krFii1luSzKSefH+85gZ5v3+HJOslvLORO5YsI3xmwzxqya4Ov3U92JMaYh+L0F+B1w3cxDVkpFE5dLeGhTCUfquzh8rtO2OLScc2VhL+mISLqIZIzdBm5j9GSvUsohHri6iMwUt61rQGg558pCbct8j4jUAxuA50Rke/DxeSLyfHCzfGCfiBwBXgeeM8a8GMp+lVLRJT3ZzYPXLeDF4000dA5EfP9azpmaULt0fmeMKTLGJBtj8o0xtwcfv2CMuSt4u9YYszb4tdIY81UrAldKRZcPBy/g+9mrZyO+7xeON+nFVlOgK14ppSxRmJ3KHSvn8suD5+gf9kVsvy09g/zd74+zujCLrUu10eNyNOErpSzzsRtL6B708dThhojszxjDF588Sv+wn0c+sI5EC9Z5cDL921FKWebqBbNZW5TFT/afIRAIf4vmzw+e45XTXv76ruUszpsV9v3FOk34SinLiAgfu3Ehtd4+dleF98LJWm8vX33uBJvLcvnwhuKw7sspNOErpSx156oC8jKS+fG+8LVojvgD/MWv3iIlMYFvvW+NraPGY4kmfKWUpZLcLj68oZi9Va1UNveEZR/f31XNkfou/td7VpOfmRKWfTiRJnyllOUevG4ByW4XP9l/1vLXPnyugx+8XM0DVxdqG+Y0acJXSlnOMyuZ91xVyG8P19Nh4az8viEfn//VW8zNTOHv71tp2evGC034SqmwGJuV/38tnJX/T8+dpK69n2//yVoyUxIte914oQlfKRUWS+dmcOPi0Vn5I/7QZ+XvPNHML18/x8ObF3H9Io8FEcYfTfhKqbD52I0lNHcP8fyx0Gblt/YO8aXfHmV5QSafv7XMoujijyZ8pVTYbC3LY2FOOv/03En+47U6hnz+ab+GMYYvPXWM7kEf3/nAOh2OFgJN+EqpsHG5hO9+cB1Fs1P5m/88zuZvvsyP951hYHjqif9Xb5xn58lmvnj7UpbOzQhjtM4ndq5QcyXr16835eXldoehlAqRMYb91W18b1cVr59pJ2dWEv/tpkX86Q3FpCe7J/1zdW193Pndvaybn83PP349LpdeYHUlInLIGLN+oucm/5tWSimLiAg3LsnhxiU5HKxt4/u7qvnaC6f4t901fPzGhXx4Y8k7um58watp3S7hn9+/VpO9BTThK6Ui6vpFHq5f5OHwuQ4e3VXNP++o5P/sqeWhTQv52KYSstOSAPjXV2o4fK6T735wHfOyU22O2hlCKumIyLeAe4FhoAZ4yBjTOcF2dwDfBRKAHxpjvj6V19eSjlLOd7yhi+/vqmJ7RTPpSQl8aEMJNyyawyceL+eu1QV878Gr7A4xplyupBNqwr8N2GWM8YnINwCMMf/jkm0SgErgVqAeeAN40Bhz4kqvrwlfqfhxqqmbR3dV89yxRoyBgqwUXvzsZrLS9AKr6QhbDd8Ys2Pc3deA902w2XVAtTGmNhjME8D9wBUTvlIqfiybm8mj/+Vq/sLby89fq+O+tfM02VvMyhr+x4BfTfB4IXB+3P164PrJXkREHgYeBliwYIGF4SmlYkFp7iz+7l6dkxMOV0z4IrITmDvBU18xxvw+uM1XAB/wi1ADMsY8BjwGoyWdUF9PKaXUqCsmfGPMtss9LyIfBe4BbjETnxBoAOaPu18UfEwppVQEhXSlbbD75ovAfcaY/kk2ewNYIiILRSQJ+CDwdCj7VUopNX2hjlZ4FMgAXhKRt0Tk3wBEZJ6IPA9gjPEBnwa2AyeBXxtjKkLcr1JKqWkKtUtn8SSPXwDuGnf/eeD5UPallFIqNDo8TSml4oQmfKWUihOa8JVSKk5E9XhkEfECdTP84zlAq4Xh2MUp7wOc816c8j7AOe/FKe8DQn8vxcaY3ImeiOqEHwoRKZ9snkQsccr7AOe8F6e8D3DOe3HK+4Dwvhct6SilVJzQhK+UUnHCyQn/MbsDsIhT3gc457045X2Ac96LU94HhPG9OLaGr5RS6o85+QhfKaXUOJrwlVIqTjgu4YvIHSJyWkSqReRLdsczUyLyYxFpEZHjdscSChGZLyIvi8gJEakQkc/aHdNMiUiKiLwuIkeC7+Uf7I4pFCKSICJvisizdscSChE5KyLHggMcY3ZNVBHJFpEnReSUiJwUkQ2W78NJNfxQ1s+NNiKyGegFfmaMWWV3PDMlIgVAgTHmsIhkAIeAd8fov4kA6caYXhFJBPYBnzXGvGZzaDMiIp8H1gOZxph77I5npkTkLLDeGBPTF16JyOPAXmPMD4Oj5NOMMZ1W7sNpR/gX1881xgwDY+vnxhxjzB6g3e44QmWMaTTGHA7e7mF0RHahvVHNjBnVG7ybGPyKySMmESkC7gZ+aHcsCkQkC9gM/AjAGDNsdbIH5yX8idbPjcnk4kQiUgJcBRy0OZQZC5ZB3gJagJeMMbH6Xr7D6OJFAZvjsIIBdojIoeCa2LFoIeAFfhIss/1QRNKt3onTEr6KUiIyC3gK+JwxptvueGbKGOM3xqxjdKnO60Qk5sptInIP0GKMOWR3LBa50RhzNXAn8KlgOTTWuIGrgX81xlwF9AGWn4N0WsLX9XOjULDe/RTwC2PMb+2OxwrBj9svA3fYHMpMbALuC9a+nwDeJSI/tzekmTPGNAS/twC/Y7S0G2vqgfpxnxifZPQ/AEs5LeHr+rlRJnii80fASWPMt+2OJxQikisi2cHbqYw2B5yyNagZMMZ82RhTZIwpYfR3ZJcx5k9tDmtGRCQ92AxAsARyGxBznW3GmCbgvIgsDT50C2B5Y0NISxxGG2OMT0TG1s9NAH4cq+vnisgvga1AjojUA39njPmRvVHNyCbgQ8CxYO0b4K+Dy17GmgLg8WA3mIvR9ZljuqXRAfKB340eV+AG/q8x5kV7Q5qxPwd+ETxYrQUesnoHjmrLVEopNTmnlXSUUkpNQhO+UkrFCU34SikVJzThK6VUnNCEr5RScUITvlJKxQlN+EopFSf+H+MHMWQeaaaoAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# another example\n", "L = E**2 + (-a**2).apply(tq.numpy.exp)*E\n", "dLda = tq.grad(L, \"a\")\n", "d2Ld2a = tq.grad(dLda, \"a\")\n", "print(\"Objective:\\n\", L)\n", "compile_and_evaluate(L);\n", "print(\"First Derivative:\\n\",dLda)\n", "compile_and_evaluate(dLda);\n", "print(\"Second Derivative:\\n\",d2Ld2a)\n", "compile_and_evaluate(d2Ld2a);\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Details on Derivatives\n", "\n", "Gates that are not directly differentiable by the original [shift-rule](https://arxiv.org/abs/1811.11184) are automatically decomposed into a product of gates that is. This process happens automatically and does not need further specifications. See the [tequila-paper](https://arxiv.org/pdf/2011.03057.pdf) for more details.\n", "\n", "Gradients of some gates, such as (multi-)controlled-Rotations and QubitExcitations can be further simplified if the wavefunction prior (in the examples below, the wavefunctions prepared by $U_0$) only has real coefficients. This allows to compile the gradients with only a cost-factor of two (see [doi.org/10.1039/D0SC06627C](https://doi.org/10.1039/D0SC06627C) for the details and note that (multi-)controlled-Rotations follow the same principles as the fermionic excitations). The `assume_real` keyword will trigger this improved compilation for controlled-rotations as well as QubitExcitations and FermionicExcitations (see chemistry tutorials for the latter). If the keyword is set False, the associated cost factor will be 4. See again [doi.org/10.1039/D0SC06627C](https://doi.org/10.1039/D0SC06627C) for an explanation as well as [arxiv.org/abs/2104.05695](https://arxiv.org/abs/2104.05695) for an improved implementation that does not require additional gates - the so-called 4-point rule that is by default used in tequila with version > 1.5.1 for assume_real=False (courtesy of D.Wierichs).\n", "\n", "Here is a small example that uses a real initial wavefunction before a double-controlled rotation gate is differentiated: Note that the gradient objective has 2 unique expectation values to evaluate. " ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "This is the gradient objective:\n", " Objective with 2 unique expectation values\n", "total measurements = 2\n", "variables = [a]\n", "types = not compiled\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "U0 = tq.gates.H(1)+tq.gates.X(2)\n", "U1 = tq.gates.Ry(target=0, control=[1,2], angle=\"a\", assume_real=True)\n", "H = tq.paulis.X(0)\n", "E = tq.ExpectationValue(H=H, U=U0+U1)\n", "dE = tq.grad(E, \"a\")\n", "print(\"This is the gradient objective:\\n\", dE)\n", "\n", "fE = tq.compile(E)\n", "fdE = tq.compile(dE)\n", "values_E = [fE({\"a\":v}) for v in numpy.linspace(0.0, 2.0*pi,25)]\n", "values_dE = [fdE({\"a\":v}) for v in numpy.linspace(0.0, 2.0*pi,25)]\n", "\n", "from matplotlib import pyplot as plt\n", "plt.plot(values_E)\n", "plt.plot(values_dE)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the next example we will use an initial wavefunction (created by $U_0$) that has complex coefficients, to demonstrate that the assume_real flag does make a difference if the initial wavefunction is not real. The difference is however quite small (which we observe often), and you can think about using the assume_real flag for coarse grained pre-optimization if you are dealing with complex initial wavefunction." ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "This is the gradient objective for E0\n", "Objective with 2 unique expectation values\n", "total measurements = 4\n", "variables = [a]\n", "types = not compiled\n", "This is the gradient objective for E1\n", "Objective with 4 unique expectation values\n", "total measurements = 8\n", "variables = [a]\n", "types = not compiled\n", "This is the gradient objective for E2\n", "Objective with 8 unique expectation values\n", "total measurements = 16\n", "variables = [a]\n", "types = not compiled\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "U0 = tq.gates.Rx(angle=1.0, target=0)+tq.gates.Rx(angle=2.0, target=1)+tq.gates.Rx(angle=3.0, target=2)\n", "# this will use the techniques of the fermionic-shift for real wavefunctions\n", "U1 = tq.gates.Ry(target=0, control=[1,2], angle=\"a\", assume_real=True)\n", "# this will use the 4-point rule\n", "U2 = tq.gates.Ry(target=0, control=[1,2], angle=\"a\", assume_real=False)\n", "# this will do standard decomposition without any advanced techniques\n", "# Qm = 0.5(1-Z) = |1><1| which corresponds to the \"control-generator\"\n", "# the gate is equivalent to the others, tequila just has less information about it\n", "U3 = tq.gates.Trotterized(generator=tq.paulis.Y(0)*tq.paulis.Qm([1,2]), angle=\"a\")\n", "\n", "H = tq.paulis.X(0)*tq.paulis.Z(1)*tq.paulis.Z(2) + tq.paulis.Y(0)*tq.paulis.X([1,2])\n", "\n", "E0 = tq.ExpectationValue(H=H, U=U0+U1)\n", "E1 = tq.ExpectationValue(H=H, U=U0+U2)\n", "E2 = tq.ExpectationValue(H=H, U=U0+U3)\n", "\n", "for i,E in enumerate([E0, E1, E2]):\n", " dE = tq.grad(E, \"a\")\n", " print(\"This is the gradient objective for E{}\".format(i))\n", " print(dE)\n", "\n", " fE = tq.compile(E)\n", " fdE = tq.compile(dE)\n", " values_E = [fE({\"a\":v}) for v in numpy.linspace(0.0, 2.0*pi,25)]\n", " values_dE = [fdE({\"a\":v}) for v in numpy.linspace(0.0, 2.0*pi,25)]\n", " values_dE2 = [fdE({\"a\":v}) for v in numpy.linspace(0.0, 2.0*pi,25)]\n", "\n", "\n", " from matplotlib import pyplot as plt\n", " plt.plot(values_E, label=\"E{}\".format(i))\n", " plt.plot(values_dE, label=\"dE{}\".format(i))\n", " plt.legend()\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# All in one\n", "\n", "At last we will create a small toy objective.\n", "\n", "As expectation value we will use an entangled circuit with one CNOT gate and one Ry rotation and an arbitrary chosen Hamiltonian.\n", "\n", "Our objective is defined as\n", "\n", "$$\\displaystyle\n", "L = \\langle H \\rangle_{U(a)} + e^{-\\left(\\frac{\\partial}{\\partial a} \\langle H \\rangle_{U_{a}}\\right)^2 }\n", "$$\n", "\n", "with \n", "\n", "$$\n", "H = -X(0)X(1) + \\frac{1}{2}Z(0) + Y(1)\n", "$$\n", "\n", "and \n", "\n", "$$\n", "U = e^{-\\frac{e^{-a^2}}{2} Y(0)} \\text{CNOT}(0,1)\n", "$$" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# All in one\n", "\n", "a = tq.Variable(\"a\")\n", "U = tq.gates.Ry(angle=(-a**2).apply(tq.numpy.exp)*pi, target=0)\n", "U += tq.gates.X(target=1, control=0)\n", "\n", "H = tq.QubitHamiltonian.from_string(\"-1.0*X(0)X(1)+0.5Z(0)+Y(1)\")\n", "\n", "E = tq.ExpectationValue(H=H, U=U)\n", "dE = tq.grad(E, \"a\")\n", "\n", "objective = E + (-dE**2).apply(tq.numpy.exp)\n", "\n", "param, values = compile_and_evaluate(objective, steps=100, start =-5, stop=5);" ] } ], "metadata": { "kernelspec": { "display_name": "tequila-3.7", "language": "python", "name": "tequila-3.7" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.9" } }, "nbformat": 4, "nbformat_minor": 2 }