Given a junction and a capacitor, what are the qubit frequency, the anharmonicity and the sensitivity to charge noise, and how do you get them without a formula?
These four topics are the physics the two programs encode: the Hamiltonians of the common superconducting circuits, the way a resonator reads one out, and what happens when two sit side by side. Each is worked by diagonalising a matrix, so each can be checked against the programs in the next group, and each ends in numbers a design review would ask for.
Move EJ and EC (in GHz, as a chip designer quotes them) and the offset charge. The left panel shows the first levels of the circuit and the well they sit in, the right panel shows how the 0–1 frequency moves as the offset charge is swept, and the strip under them gives the numbers the rest of this topic is about. The line chart at the bottom plots the charge dispersion against EJ/EC on a log axis, with your design as a dot: go from 5 to 50 and watch it fall by more than four orders of magnitude.
Honest limits: this is the bare circuit, one junction and one capacitor with nothing attached. A real chip adds the readout resonator, a neighbour and a control line; those are the next three topics and the tools after them. The numbers here are checked against scqubits (version 4.3.1) to twelve digits.
The circuits lesson explained why a qubit needs a nonlinear component: a plain coil-and-capacitor has evenly spaced levels, and the Josephson junction bends them. This topic does the next step and puts numbers on it. A transmon has two energies. EC is the cost of putting one extra Cooper pair (a pair of electrons) on the capacitor plate, set by the capacitance. EJ is how readily a pair tunnels through the junction, set by its size. The state is described by how many pairs have crossed the junction, n, and the Hamiltonian is a trade between the two energies.
Two regimes. If EJ is small, the charge on the plate is a good quantity: states of different n are well separated, and the qubit’s frequency depends strongly on stray charge in the neighbourhood, which wanders. This was the first superconducting qubit, the Cooper-pair box, and its flaw was exactly that. If EJ is much larger than EC, the junction dominates and the system behaves like a pendulum swinging in a shallow cosine well. The levels are almost evenly spaced, but not quite, which is the qubit, and the dependence on charge nearly vanishes. The ratio EJ/EC is the whole design knob.
What the numbers do as the ratio grows. Take EC = 0.3 GHz. At EJ/EC = 5 the qubit frequency swings by 322 MHz with the offset charge, hopeless as a qubit. At 20 it swings 5 MHz. At 50 it is 12 kHz, and at 80 it is 0.1 kHz: the sensitivity falls exponentially with the square root of the ratio. The price is the anharmonicity, the amount by which the second step is smaller than the first. It falls too, but slowly, from −1.06 GHz at a ratio of 5 to −0.33 GHz at 80, so it stays large enough to address the two lowest levels alone. That asymmetry, one thing disappearing exponentially while the other only fades, is the reason the transmon exists: from a ratio of about 30 up, the charge swing is below a megahertz while the anharmonicity is still hundreds of megahertz.
Why it needs a computer at all. There is an approximate formula for the frequency and one for the charge dispersion, and the next section gives both. But they are good only for a large ratio, they say nothing about the third and fourth levels (which control leakage and two-qubit gates), and the moment you add a resonator or a second qubit there is no formula left. Diagonalising a matrix always works, and that is what scqubits does.
The Hamiltonian. With n the number of Cooper pairs that have crossed the junction, ng the offset charge in units of one pair, and φ the phase difference across the junction (conjugate to n, with [φ, n] = i),
H = 4EC (n − ng)² − EJ cos φ, EC = e²/2C, EJ = ħIc/2e
(the expression for EJ is the junction’s critical current Ic in energy units; both energies are written as frequencies, E/h, in GHz). In the charge basis |n⟩ the operator cos φ moves one pair across, cos φ = ½ Σn (|n⟩⟨n+1| + |n+1⟩⟨n|), so H is a tridiagonal matrix: 4EC(n − ng)² down the diagonal and −EJ/2 beside it. Keep the charge states n = −Ncut … Ncut and diagonalise. That is the whole algorithm; the matrix for Ncut = 30 is 61 × 61.
The harmonic estimate. For EJ ≫ EC expand the cosine, cos φ ≈ 1 − φ²/2 + φ⁴/24. The first two terms are an oscillator with plasma frequency √(8EJEC); the quartic term is a small correction that lowers the upper levels, giving (Koch et al., Phys. Rev. A 76, 042319, 2007)
f01 ≈ √(8EJEC) − EC, α = f12 − f01 ≈ −EC
For EJ = 15 GHz and EC = 0.3 GHz the estimate is 5.700 GHz and the exact diagonalisation gives 5.68258, a 0.3% difference; the anharmonicity is −0.34477 against the leading-order −0.3, a difference of 15%. The estimate is good for the frequency and only a rough guide for the anharmonicity.
The charge dispersion. The spread of level m as the offset charge goes from 0 to ½ is, for large EJ/EC (same reference, its equation 2.5),
εm = Em(ng=½) − Em(ng=0) ≈ (−1)m EC (24m+5/m!) √(2/π) (EJ/2EC)m/2+3/4 e−√(8EJ/EC)
The exponential is the whole story. Against the exact diagonalisation (EC = 0.3 GHz), this formula for the ground level is within 4.5% at EJ/EC = 50 and within 16% at 5, and the exact table is:
| EJ/EC | f01 (GHz) | α (GHz) | f01 swing with ng |
|---|---|---|---|
| 5 | 1.6937 | −1.0575 | 322.0 MHz |
| 10 | 2.3699 | −0.7650 | 75.37 MHz |
| 20 | 3.4664 | −0.4366 | 5.223 MHz |
| 30 | 4.3241 | −0.3709 | 537.8 kHz |
| 50 | 5.6826 | −0.3448 | 11.89 kHz |
| 80 | 7.2762 | −0.3329 | 0.111 kHz |
This is the table above, from exact diagonalisation checked against scqubits to twelve digits. The matrix element that sets how strongly a drive couples levels, ⟨0|n|1⟩, comes out of the same eigenvectors; for the EJ/EC = 66.7 transmon of the circuits lesson it is about 1.17.
Try it in Python. scqubits.Transmon takes EJ and EC in GHz, the offset charge ng and the charge cutoff ncut; eigenvals returns the lowest levels and anharmonicity() the number above. Run on scqubits 4.3.1, 25 October 2026:
import numpy as np
import scqubits as scq
scq.settings.PROGRESSBAR_DISABLED = True # keep the printout clean
# EJ/EC = 50 with EC = 0.3 GHz: a typical transmon. All energies are in GHz (E/h).
EJ, EC = 15.0, 0.3
tm = scq.Transmon(EJ=EJ, EC=EC, ng=0.0, ncut=30) # charge states -30 ... +30
ev = tm.eigenvals(evals_count=4)
f01 = ev[1] - ev[0]
print("levels (GHz):", np.round(ev - ev[0], 5))
print("f01 =", round(f01, 5), "GHz; anharmonicity =", round(tm.anharmonicity(), 5), "GHz")
print("estimate sqrt(8*EJ*EC) - EC =", round(np.sqrt(8 * EJ * EC) - EC, 5), "GHz")
# charge dispersion: how far does f01 move when the offset charge goes from 0 to half a Cooper pair?
f01_half = np.diff(scq.Transmon(EJ=EJ, EC=EC, ng=0.5, ncut=30).eigenvals(evals_count=2))[0]
print("f01 moves by", round(abs(f01_half - f01) * 1e6, 2), "kHz")
levels (GHz): [ 0. 5.68258 11.02038 15.97298]
f01 = 5.68258 GHz; anharmonicity = -0.34477 GHz
estimate sqrt(8*EJ*EC) - EC = 5.7 GHz
f01 moves by 11.89 kHz
Two checks every such calculation deserves: raise ncut and see that the answer does not move (it is converged here; at EJ/EC = 50 ten charge states either side are already enough), and compare with the estimate (it is within 0.3%).
Choosing a capacitor and a junction, and knowing what you will get A designer picks EC to set the anharmonicity (a bigger pad means a smaller EC, a smaller anharmonicity, and more leakage if the pulses are fast) and EJ to set the frequency, then checks the charge dispersion is negligible. That loop, from a layout to EJ and EC to a spectrum, is the first step of the workflow in topic 38, and the diagonalisation in the middle is the calculation scqubits packages. The diagonalisation also yields the matrix elements that decide which transitions a drive or a neighbouring qubit can excite, which is why the same eigenvectors appear in every topic after this one.
Check yourself
Raise E_J/E_C of a transmon from 5 to 50 at fixed E_C. What happens to its charge sensitivity and its anharmonicity?
The table of the topic gives a swing of 322 MHz at a ratio of 5 and 11.9 kHz at 50, while the anharmonicity goes from −1.06 to −0.34 GHz. One quantity falls exponentially, the other slowly, and that asymmetry is the reason the transmon exists.
The tempting wrong answers.