# Hamiltonian Construction **Hamiltonian construction** in scqubits involves specifying the qubit type and parameters, then scqubits automatically computes the quantum Hamiltonian. For standard qubits (transmon, fluxonium, etc.), this is automatic. For custom circuits, you can build composite Hamiltonians from qubit objects. ```python from scqubits import Transmon, Fluxonium # Standard qubits: scqubits handles quantization transmon = Transmon(EJ=15.0, EC=0.3, ng=0.0, ncut=30) print(transmon.hamiltonian()) # Returns the full H # Matrix representation H_matrix = transmon.hamiltonian().full() # Expectation value of an operator n_op = transmon.n_operator() print(transmon.expectation_value(n_op)) ``` ## Composite Systems For coupled qubits, scqubits provides a `Hilbert` space that combines multiple qubits and couplings: ```python from scqubits import Transmon, HilbertSpace, InteractionTerm qubit1 = Transmon(EJ=15.0, EC=0.3, ncut=30) qubit2 = Transmon(EJ=15.0, EC=0.3, ncut=30) # Hilbert space for two qubits hilbert = HilbertSpace([qubit1, qubit2]) # Add coupling: interaction Hamiltonian g = 0.01 # Coupling strength (GHz) interaction = InteractionTerm( g=g, op1=qubit1.n_operator(), op2=qubit2.n_operator() ) hilbert.add_interaction(interaction) # Full Hamiltonian H_total = hilbert.hamiltonian() ``` scqubits automates the tedious parts (quantization, basis transformations) so you focus on physics.