|
1 | | -import matplotlib.pyplot as plt |
2 | 1 | import numpy as np |
3 | | -from math import pi |
4 | | -from qiskit import * |
5 | | -from qiskit.circuit import QuantumCircuit, ParameterVector |
6 | | -from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit |
7 | | -from qiskit.tools.visualization import circuit_drawer |
8 | | - |
9 | | -q = QuantumRegister(4) |
10 | | -qc = QuantumCircuit(q) |
11 | | -#------------------- |
12 | | -qc.h(0) |
13 | | -qc.cu1(pi/2,q[1],q[0]) |
14 | | -qc.cu1(pi/4,q[2],q[0]) |
15 | | -qc.cu1(pi/8,q[3],q[0]) |
16 | | -#------------------- |
17 | | -qc.barrier() |
18 | | -qc.h(1) |
19 | | -qc.cu1(pi/2,q[2],q[1]) |
20 | | -qc.cu1(pi/4,q[3],q[1]) |
21 | | -#------------------- |
22 | | -qc.barrier() |
23 | | -qc.h(2) |
24 | | -qc.cu1(pi/2,q[3],q[2]) |
25 | | -#------------------- |
26 | | -qc.barrier() |
27 | | -qc.h(3) |
28 | | -#------------------- |
29 | | -qc.draw(output='mpl') |
30 | | - |
31 | | -# Import Aer |
32 | | -from qiskit import Aer |
33 | | - |
34 | | -# Run the quantum circuit on a statevector simulator backend |
| 2 | +from qiskit import QuantumCircuit, Aer, execute |
| 3 | + |
| 4 | +def qft(circuit, n): |
| 5 | + """Apply the Quantum Fourier Transform to the first n qubits in the circuit.""" |
| 6 | + # Apply Hadamard gates and controlled rotations |
| 7 | + for j in range(n): |
| 8 | + circuit.h(j) |
| 9 | + for k in range(j + 1, n): |
| 10 | + circuit.cp(np.pi / 2**(k - j), k, j) |
| 11 | + |
| 12 | + # Swap the qubits to reverse their order |
| 13 | + for i in range(n // 2): |
| 14 | + circuit.swap(i, n - i - 1) |
| 15 | + |
| 16 | +# Number of qubits |
| 17 | +n = 4 |
| 18 | + |
| 19 | +# Create a quantum circuit with n qubits |
| 20 | +qc = QuantumCircuit(n) |
| 21 | + |
| 22 | +# Apply QFT to the quantum circuit |
| 23 | +qft(qc, n) |
| 24 | + |
| 25 | +# Draw the resulting circuit |
| 26 | +print("Quantum Circuit for QFT:") |
| 27 | +print(qc.draw(output='text')) |
| 28 | + |
| 29 | +# Run the quantum circuit on a statevector simulator backend |
35 | 30 | backend = Aer.get_backend('statevector_simulator') |
36 | 31 |
|
37 | | -# Create a Quantum Program for execution |
| 32 | +# Execute the quantum circuit and get results |
38 | 33 | job = execute(qc, backend) |
39 | 34 | result = job.result() |
40 | 35 |
|
41 | | -outputstate = result.get_statevector(qc, decimals=3) |
42 | | -print(outputstate) |
| 36 | +output_state_vector = result.get_statevector() |
| 37 | +print("\nOutput State Vector:") |
| 38 | +print(output_state_vector) |
0 commit comments