How to Simulate Quantum Circuits Using Qiskit
Qiskit is an open-source quantum computing framework developed by IBM.
It allows you to:
Build quantum circuits
Simulate them locally
Visualize results
Run circuits on real quantum hardware
This guide focuses on simulation, which is the best way to learn quantum computing without needing real quantum hardware.
๐น 1. Install Qiskit
Install using pip:
pip install qiskit
Optionally, install visualization dependencies:
pip install qiskit[visualization]
๐น 2. Build Your First Quantum Circuit
Import the required libraries:
from qiskit import QuantumCircuit
Create a simple circuit with 2 qubits and 2 classical bits:
qc = QuantumCircuit(2, 2)
# Add operations
qc.h(0) # Apply Hadamard gate on qubit 0
qc.cx(0, 1) # Apply CNOT between qubit 0 (control) and qubit 1 (target)
qc.measure([0,1], [0,1]) # Measure both qubits
qc.draw()
๐น 3. Simulate Using Qiskit's Aer Simulator
Qiskit includes Aer, a high-performance simulator framework.
Import Aer and execute:
from qiskit import Aer, execute
simulator = Aer.get_backend('qasm_simulator')
result = execute(qc, backend=simulator, shots=1024).result()
counts = result.get_counts()
print(counts)
Expected output (approx):
{'00': 512, '11': 512}
This indicates the Bell state: qubits collapse to 00 or 11 with equal probability.
๐น 4. Using the Statevector Simulator
The statevector simulator shows the exact quantum state (complex amplitudes).
Example:
from qiskit.quantum_info import Statevector
state = Statevector.from_instruction(qc.remove_final_measurements(inplace=False))
print(state)
This prints something like:
Statevector([0.707+0.j, 0.+0.j, 0.+0.j, 0.707+0.j])
Meaning |00⟩ and |11⟩ have equal amplitude.
๐น 5. Simulate Without Measurement (to see amplitudes)
If your circuit contains measurements, remove them:
qc2 = qc.remove_final_measurements(inplace=False)
Then:
state = Statevector.from_instruction(qc2)
๐น 6. Visualize Results
Qiskit provides built-in plotting tools:
Plot counts (histogram):
from qiskit.visualization import plot_histogram
plot_histogram(counts)
Draw the circuit:
qc.draw('mpl')
๐น 7. Advanced: Using the AerSimulator (new API)
Qiskit Aer also provides the modern API:
from qiskit_aer import AerSimulator
sim = AerSimulator()
result = sim.run(qc).result()
counts = result.get_counts()
๐น 8. Simulating Noise (Realistic Hardware Behavior)
Quantum hardware has errors, so Qiskit allows adding noise models.
Example:
from qiskit_aer.noise import NoiseModel
noise_model = NoiseModel.from_backend(Aer.get_backend('qasm_simulator'))
result = execute(qc, backend=simulator, noise_model=noise_model).result()
You can also create custom noise models:
depolarizing noise
readout noise
gate errors
๐น 9. Simulating Larger Circuits
You can scale simulations up to:
20–30 qubits easily on a laptop
32+ qubits depending on memory (statevectors require 2โฟ amplitudes)
For larger circuits, use:
Aer’s GPU simulators
IBM Cloud's high-performance simulators
๐น 10. Running on Real Quantum Hardware (Optional)
Once you master simulation:
from qiskit import IBMQ
IBMQ.load_account()
provider = IBMQ.get_provider(hub='ibm-q')
backend = provider.get_backend('ibmq_quito')
result = execute(qc, backend=backend).result()
⭐ Summary
Task Simulator
Outcome probabilities qasm_simulator
Exact amplitudes statevector_simulator
Density matrices density_matrix_simulator
Noise simulation AerSimulator + noise model
GPU simulation Aer GPU backend
⭐ Want More?
I can also provide:
✅ A full beginner project with Qiskit
✅ Simulation of a quantum algorithm (Grover, QFT, QPE)
✅ A guide to noise models
✅ A tutorial on Bloch sphere visualization
✅ Side-by-side comparison of simulators
Learn Quantum Computing Training in Hyderabad
Read More
Step-by-Step Tutorial: Implementing Grover’s Algorithm
Quantum Computing Myths Debunked
Quantum Computing and IoT: Course Content Exploration
Visit Our Quality Thought Training Institute
Subscribe by Email
Follow Updates Articles from This Blog via Email
No Comments