┌───────┐┌────┐\n", "q_0: ┤0 ├┤0 ├\n", " │ ││ │\n", "q_1: ┤1 P(X) ├┤1 ├\n", " │ ││ │\n", "q_2: ┤2 ├┤2 ├\n", " └───────┘│ │\n", "q_3: ─────────┤3 F ├\n", " │ │\n", "q_4: ─────────┤4 ├\n", " │ │\n", "q_5: ─────────┤5 ├\n", " │ │\n", "q_6: ─────────┤6 ├\n", " └────┘" ], "text/plain": [ " ┌───────┐┌────┐\n", "q_0: ┤0 ├┤0 ├\n", " │ ││ │\n", "q_1: ┤1 P(X) ├┤1 ├\n", " │ ││ │\n", "q_2: ┤2 ├┤2 ├\n", " └───────┘│ │\n", "q_3: ─────────┤3 F ├\n", " │ │\n", "q_4: ─────────┤4 ├\n", " │ │\n", "q_5: ─────────┤5 ├\n", " │ │\n", "q_6: ─────────┤6 ├\n", " └────┘" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# set the strike price (should be within the low and the high value of the uncertainty)\n", "strike_price = 1.896\n", "\n", "# set the approximation scaling for the payoff function\n", "c_approx = 0.25\n", "\n", "# setup piecewise linear objective fcuntion\n", "breakpoints = [low, strike_price]\n", "slopes = [0, 1]\n", "offsets = [0, 0]\n", "f_min = 0\n", "f_max = high - strike_price\n", "european_call_objective = LinearAmplitudeFunction(\n", " num_uncertainty_qubits, \n", " slopes,\n", " offsets,\n", " domain=(low, high),\n", " image=(f_min, f_max),\n", " breakpoints=breakpoints,\n", " rescaling_factor=c_approx\n", ")\n", "\n", "# construct A operator for QAE for the payoff function by\n", "# composing the uncertainty model and the objective\n", "num_qubits = european_call_objective.num_qubits\n", "european_call = QuantumCircuit(num_qubits)\n", "european_call.append(uncertainty_model, range(num_uncertainty_qubits))\n", "european_call.append(european_call_objective, range(num_qubits))\n", "\n", "# draw the circuit\n", "european_call.draw()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2020-07-13T23:35:11.080005Z", "start_time": "2020-07-13T23:35:10.832762Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
\n", "state_0: ───────■─────────────────────────────■──\n", " │ │ \n", "state_1: ───────┼────■───────────────────■────┼──\n", " ┌───┐ │ │ ┌───┐ │ │ \n", "state_2: ┤ X ├──┼────┼─────────■──┤ X ├──┼────┼──\n", " ├───┤ │ │ ┌─┴─┐└───┘ │ │ \n", "state_3: ┤ X ├──┼────┼───────┤ X ├───────┼────┼──\n", " └───┘┌─┴─┐ │ └─┬─┘ │ ┌─┴─┐\n", " work_0: ─────┤ X ├──■─────────┼─────────■──┤ X ├\n", " └───┘┌─┴─┐┌───┐ │ ┌───┐┌─┴─┐└───┘\n", " work_1: ──────────┤ X ├┤ X ├──■──┤ X ├┤ X ├─────\n", " └───┘└───┘ └───┘└───┘" ], "text/plain": [ " \n", "state_0: ───────■─────────────────────────────■──\n", " │ │ \n", "state_1: ───────┼────■───────────────────■────┼──\n", " ┌───┐ │ │ ┌───┐ │ │ \n", "state_2: ┤ X ├──┼────┼─────────■──┤ X ├──┼────┼──\n", " ├───┤ │ │ ┌─┴─┐└───┘ │ │ \n", "state_3: ┤ X ├──┼────┼───────┤ X ├───────┼────┼──\n", " └───┘┌─┴─┐ │ └─┬─┘ │ ┌─┴─┐\n", " work_0: ─────┤ X ├──■─────────┼─────────■──┤ X ├\n", " └───┘┌─┴─┐┌───┐ │ ┌───┐┌─┴─┐└───┘\n", " work_1: ──────────┤ X ├┤ X ├──■──┤ X ├┤ X ├─────\n", " └───┘└───┘ └───┘└───┘ " ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "european_call_delta.decompose().draw()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
┌───────┐┌──────┐\n", "q_0: ┤0 ├┤0 ├\n", " │ ││ │\n", "q_1: ┤1 P(X) ├┤1 ├\n", " │ ││ │\n", "q_2: ┤2 ├┤2 ├\n", " └───────┘│ ECD │\n", "q_3: ─────────┤3 ├\n", " │ │\n", "q_4: ─────────┤4 ├\n", " │ │\n", "q_5: ─────────┤5 ├\n", " └──────┘" ], "text/plain": [ " ┌───────┐┌──────┐\n", "q_0: ┤0 ├┤0 ├\n", " │ ││ │\n", "q_1: ┤1 P(X) ├┤1 ├\n", " │ ││ │\n", "q_2: ┤2 ├┤2 ├\n", " └───────┘│ ECD │\n", "q_3: ─────────┤3 ├\n", " │ │\n", "q_4: ─────────┤4 ├\n", " │ │\n", "q_5: ─────────┤5 ├\n", " └──────┘" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "state_preparation = QuantumCircuit(european_call_delta.num_qubits)\n", "state_preparation.append(uncertainty_model, range(uncertainty_model.num_qubits))\n", "state_preparation.append(european_call_delta, range(european_call_delta.num_qubits))\n", "state_preparation.draw()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "ExecuteTime": { "end_time": "2020-07-13T23:35:35.843101Z", "start_time": "2020-07-13T23:35:35.828358Z" } }, "outputs": [], "source": [ "# set target precision and confidence level\n", "epsilon = 0.01\n", "alpha = 0.05\n", "\n", "# construct amplitude estimation \n", "ae_delta = IterativeAmplitudeEstimation(epsilon=epsilon, alpha=alpha, \n", " state_preparation=state_preparation,\n", " objective_qubits=[num_uncertainty_qubits])" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "ExecuteTime": { "end_time": "2020-07-13T23:35:58.524643Z", "start_time": "2020-07-13T23:35:35.848588Z" } }, "outputs": [], "source": [ "result_delta = ae_delta.run(quantum_instance=Aer.get_backend('qasm_simulator'), shots=100)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "ExecuteTime": { "end_time": "2020-07-13T23:35:58.531941Z", "start_time": "2020-07-13T23:35:58.526967Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Exact delta: \t0.8098\n", "Esimated value: \t0.8068\n", "Confidence interval: \t[0.8013, 0.8123]\n" ] } ], "source": [ "conf_int = np.array(result_delta['confidence_interval'])\n", "print('Exact delta: \\t%.4f' % exact_delta)\n", "print('Esimated value: \\t%.4f' % result_delta['estimation'])\n", "print('Confidence interval: \\t[%.4f, %.4f]' % tuple(conf_int))" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "ExecuteTime": { "end_time": "2020-07-13T23:35:58.967675Z", "start_time": "2020-07-13T23:35:58.792732Z" } }, "outputs": [ { "data": { "text/html": [ "
Qiskit Software | Version |
---|---|
Qiskit | None |
Terra | 0.17.0.dev0+4ada179 |
Aer | 0.6.1 |
Ignis | 0.5.0.dev0+470d8cc |
Aqua | 0.9.0.dev0+5a88b59 |
IBM Q Provider | 0.8.0 |
System information | |
Python | 3.7.7 (default, May 6 2020, 04:59:01) \n", "[Clang 4.0.1 (tags/RELEASE_401/final)] |
OS | Darwin |
CPUs | 2 |
Memory (Gb) | 16.0 |
Tue Oct 20 10:57:12 2020 CEST |
© Copyright IBM 2017, 2020.
This code is licensed under the Apache License, Version 2.0. You may
obtain a copy of this license in the LICENSE.txt file in the root directory
of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
Any modifications or derivative works of this code must retain this
copyright notice, and modified files need to carry a notice indicating
that they have been altered from the originals.