The Schrödinger equation is the rule that tells you how a quantum system's wave function changes over time, given its energy. Solve it for an electron in a small space and only certain energies are allowed, which is why atoms have sharp spectral lines. Solve it at a thin barrier and the electron has a small chance of passing straight through, which is how flash memory stores bits and why transistor gates leak.
This post goes one level deeper than our famous equations overview. It covers both forms of the equation, what a wave function is, three worked examples with real numbers (a particle in a box, the hydrogen atom and a tunnel barrier), how tunnelling shows up in flash memory and transistors, how the equation drives qubits, the open interpretation debate, and Python code you can run to solve it yourself. Every constant comes from NIST's CODATA 2022 tables and every spectral line from the NIST Atomic Spectra Database.
Key takeaways
- The time-dependent equation, iħ ∂ψ/∂t = Ĥψ, says the Hamiltonian (the energy operator) drives how the wave function ψ evolves. It is deterministic and linear.
- The time-independent form, Ĥψ = Eψ, is an eigenvalue problem. Schrödinger's first 1926 paper in Annalen der Physik was titled "Quantisierung als Eigenwertproblem", quantisation as an eigenvalue problem.
- The wave function itself is not observed. Max Born's 1926 rule says its squared magnitude, |ψ|², gives the probability of finding the particle at a place. Born's 1954 Nobel Prize cites "his statistical interpretation of the wavefunction".
- Confinement makes energy discrete. An electron in a 1 nm box has a lowest energy of 0.376 eV. Halve the box and the energy goes up four times.
- Hydrogen's energy levels, −13.6 eV divided by n², reproduce the measured lines to a few hundredths of a nanometre once you correct for the proton's finite mass.
- Tunnelling probability falls off exponentially with barrier width. For a 1 eV electron and a 2 eV barrier, going from 1 nm to 2 nm cuts transmission about 28,000 times.
- Flash memory programs and erases cells by Fowler-Nordheim tunnelling through a thin oxide. Transistor gate oxides got so thin that tunnelling leakage forced the move to high-k dielectrics, which Intel says cut NMOS gate leakage by more than 25 times and PMOS by more than 1,000 times.
- Quantum gates are controlled runs of the same equation: a timed pulse sets the Hamiltonian, and the state evolves by a unitary operator.
- Physicists agree on the predictions. They do not agree on what happens in a measurement, which is still an open research question.
A dated timeline: from wave mechanics to tunnelling chips
Each date below is taken from the publisher's record (via Crossref), the Nobel Prize site or the organisation's own page.
| Date | Event | Source |
|---|---|---|
| 1926 | Schrödinger publishes "Quantisierung als Eigenwertproblem" in four parts in Annalen der Physik (volume 384, pages 361 to 376 and 489 to 527; volume 385, pages 437 to 490; volume 386, pages 109 to 139). The fourth part introduces the time-dependent equation. | Wiley DOI records via Crossref |
| 1926 | Max Born, "Zur Quantenmechanik der Stoßvorgänge", Zeitschrift für Physik 37, pages 863 to 867, proposes the probability reading of the wave function | Springer DOI record via Crossref |
| 1 December 1926 | Schrödinger's English summary, "An Undulatory Theory of the Mechanics of Atoms and Molecules", Physical Review 28, page 1049 | APS journal page |
| March 1928 | George Gamow explains alpha decay as tunnelling out of the nucleus, Zeitschrift für Physik 51, pages 204 to 212 | Springer DOI record via Crossref |
| 1 May 1928 | Fowler and Nordheim, "Electron emission in intense electric fields", Proceedings of the Royal Society A 119, pages 173 to 181 | Royal Society DOI record via Crossref |
| 1933 | Nobel Prize in Physics to Schrödinger and Dirac "for the discovery of new productive forms of atomic theory"; Schrödinger's lecture is dated 12 December 1933 | nobelprize.org |
| 1952 | David Bohm rediscovers de Broglie's 1927 pilot wave theory | Stanford Encyclopedia of Philosophy |
| 1954 | Nobel Prize in Physics, half to Max Born for the statistical interpretation of the wave function | nobelprize.org |
| 1957 | Hugh Everett's relative state paper, the origin of the many worlds interpretation | Stanford Encyclopedia of Philosophy |
| 15 January 1958 | Leo Esaki, "New Phenomenon in Narrow Germanium p-n Junctions", Physical Review 109, page 603: the tunnel diode | APS DOI record via Crossref |
| July 1967 | Kahng and Sze, "A Floating Gate and Its Application to Memory Devices", Bell System Technical Journal 46, pages 1288 to 1295 | Wiley DOI record via Crossref |
| 1973 | Nobel Prize in Physics to Esaki and Giaever for tunnelling in semiconductors and superconductors, and to Josephson for the Josephson effects | nobelprize.org |
| 1984 | Toshiba (now Kioxia) names "flash" memory and announces it, by the company's own account | Kioxia technology history |
| 1984 and 1985 | Clarke, Devoret and Martinis show tunnelling and quantised energy levels in a superconducting circuit | nobelprize.org 2025 press release |
| 1986 | Ghirardi, Rimini and Weber publish the GRW spontaneous collapse model | Stanford Encyclopedia of Philosophy |
| 1987 | NAND flash memory invented, by Kioxia's own account | Kioxia technology history |
| 2007 | 45 nm logic process with high-k dielectric and metal gate presented at IEDM 2007 | Intel high-k and metal gate research page |
| 7 October 2025 | Nobel Prize in Physics to Clarke, Devoret and Martinis "for the discovery of macroscopic quantum mechanical tunnelling and energy quantisation in an electric circuit" | nobelprize.org |
What does the Schrödinger equation say?
The time-dependent equation
For one particle of mass m moving in a potential energy V, the equation reads:
iħ ∂ψ(x, t)/∂t = −(ħ²/2m) ∂²ψ(x, t)/∂x² + V(x) ψ(x, t)
or, compactly: iħ ∂ψ/∂t = Ĥψ, with Ĥ = −(ħ²/2m) ∂²/∂x² + V(x)
Read it left to right. The left side is how fast the wave function changes in time. The right side is the Hamiltonian operator acting on the wave function: a kinetic energy part, which measures how sharply ψ curves in space, plus a potential energy part, which weights ψ by the potential energy at each point.
| Symbol | Meaning | Value or unit |
|---|---|---|
| ψ(x, t) | The wave function, a complex number at each point and time | In one dimension, units of 1 over the square root of a metre |
| i | The imaginary unit, the square root of −1 | Dimensionless |
| ħ | Reduced Planck constant, h divided by 2π | 1.054 571 817 × 10⁻³⁴ J s, exact (CODATA 2022) |
| m | Particle mass; for an electron | 9.109 383 7139 × 10⁻³¹ kg (CODATA 2022) |
| V(x) | Potential energy as a function of position | Joules or electronvolts |
| Ĥ | Hamiltonian: the total energy operator | Joules |
Three properties do most of the work in practice:
- It is first order in time. Know ψ everywhere at one moment and the equation fixes it for all later moments. Between measurements, quantum mechanics is deterministic.
- It is linear. If ψ₁ and ψ₂ are solutions, so is any combination aψ₁ + bψ₂. That is the superposition principle, and it is why interference and qubits work.
- It conserves total probability. Because Ĥ is Hermitian (its energies are real), the integral of |ψ|² over all space stays at exactly 1 as time runs. Numerical methods that break this, as we will see, give nonsense.
In three dimensions the second derivative becomes the Laplacian ∇², and for many particles ψ depends on every particle's coordinates at once. That last point is the source of the computational difficulty in chemistry: the wave function of N electrons lives in 3N dimensions.
The time-independent equation
Many problems have a potential that does not change with time. Then you can look for solutions that separate into a space part and a time part:
ψ(x, t) = φ(x) · exp(−iEt/ħ)
Substituting gives the time-independent equation:
−(ħ²/2m) d²φ/dx² + V(x) φ(x) = E φ(x), or Ĥφ = Eφ
This is an eigenvalue equation: find the functions φ that the Hamiltonian only rescales, and the numbers E it rescales them by. Those φ are the stationary states, and the E values are the allowed energies. The time factor exp(−iEt/ħ) just rotates the phase, so |ψ|² does not change: a stationary state really is stationary in everything you can measure.
Any other state is a superposition of stationary states, each turning at its own rate. When two of them with energies E₁ and E₂ are mixed, the probability density sloshes back and forth at the frequency (E₂ − E₁)/h. That beat is exactly what an atom emits or absorbs as light, and it is what a qubit control pulse drives.
Schrödinger's own route in 1926 went through this eigenvalue form first, which is why the first paper's title translates as "quantisation as an eigenvalue problem". The integers that Bohr had to postulate in his earlier model of the atom come out instead as the condition that a physically sensible solution exists.
What is a wave function, and what does the Born rule say?
A wave function is the complete mathematical description of a quantum system's state. For a single particle in one dimension it assigns a complex number ψ(x) to every position. You cannot measure ψ directly, and its overall phase has no physical meaning at all. What you can measure is built from it.
The Born rule
In 1926 Max Born proposed that the squared magnitude of the wave function is a probability density:
P(particle found between a and b) = ∫ from a to b of |ψ(x)|² dx
Normalisation: ∫ over all space of |ψ(x)|² dx = 1
The Nobel committee's 1954 citation for Born names exactly this, "his statistical interpretation of the wavefunction". The rule has three consequences people often miss:
- Probability, not a smeared particle. Measure an electron's position and you get one sharp answer. Repeat the identical preparation many times and the answers pile up in the shape of |ψ|².
- Amplitudes add before squaring. If two paths lead to the same detector, their ψ values add as complex numbers and then you square. That is where interference comes from, and why probabilities in quantum mechanics do not simply add.
- Normalisation is a constraint, not a decoration. A solution of the equation that cannot be normalised, for example one that grows without limit, is not an allowed state. This single condition is what turns continuous equations into discrete energy levels.
What the generalised rule says
The same rule extends to any measurement. Write the state as a sum of the measured quantity's eigenstates, ψ = Σ cₙ φₙ, and the probability of getting the n-th outcome is |cₙ|². For energy, the φₙ are the stationary states from the time-independent equation. For a qubit measured in its computational basis, they are the states 0 and 1. The coefficients must satisfy Σ |cₙ|² = 1.
How to picture ψ without fooling yourself
A useful working picture is an ocean swell where the height of the wave is not water but "how likely you are to find the particle here", with a phase that decides how two swells interfere. Where the picture fails: for two or more particles, ψ is not a wave in ordinary space at all, but a function on the joint configuration of every particle. That is the root of entanglement, covered in our entanglement explainer.
Worked example 1: the particle in a box
The simplest bound system is a particle trapped between two perfectly hard walls a distance L apart. Inside, V = 0; at the walls, V is infinite, so ψ must be zero there.
Solving it
Inside the box the time-independent equation is −(ħ²/2m) φ″ = Eφ, whose solutions are sines and cosines. The boundary condition φ(0) = 0 rules out the cosine. The condition φ(L) = 0 then forces the sine to fit a whole number of half wavelengths in the box:
φₙ(x) = √(2/L) · sin(nπx/L), n = 1, 2, 3, ...
Eₙ = n² π² ħ² / (2 m L²) = n² · E₁
That is the whole story of quantisation in one line: the wave must fit, so only some wavelengths are allowed, so only some energies are allowed. There is no n = 0 state, because sin(0) is zero everywhere and cannot be normalised. The lowest energy is never zero. That leftover energy is called zero-point energy, and it is a direct consequence of confining a wave.
The numbers for an electron
Using ħ and the electron mass from CODATA 2022:
| Box width L | E₁ | E₂ | E₃ | Photon for 2 to 1 jump |
|---|---|---|---|---|
| 0.5 nm | 1.504 eV | 6.017 eV | 13.537 eV | 4.512 eV, 274.8 nm (ultraviolet) |
| 1 nm | 0.376 eV | 1.504 eV | 3.384 eV | 1.128 eV, 1,099 nm (near infrared) |
| 10 nm | 0.0038 eV | 0.0150 eV | 0.0338 eV | 0.0113 eV, about 110 µm (far infrared) |
Two patterns jump out. Energies scale as n², so the gaps widen as you go up. And energies scale as 1/L², so halving the box quadruples every level. At room temperature the thermal energy scale is about 0.025 eV, so a 10 nm box has levels closer together than thermal jostling and behaves almost classically, while a 1 nm box does not. That is the length scale where chip features now sit, and why semiconductor engineers cannot ignore this equation.
The same 1/L² scaling is why the colour of a semiconductor quantum dot depends on its size: a smaller dot pushes the levels apart and the emitted light moves toward blue. Real dots are finite wells in a crystal, not ideal boxes, so the numbers shift, but the scaling survives.
A Born rule check
What is the chance of finding a ground state electron in the middle half of the box, between L/4 and 3L/4? Integrating (2/L) sin²(πx/L) over that range gives exactly 1/2 + 1/π, which is 0.8183. A classical ball bouncing at constant speed would spend exactly half its time there. The quantum ground state is bunched toward the middle, and the code later in this post reproduces 0.818 numerically.
Worked example 2: the hydrogen atom and why spectra are discrete
Hydrogen is one electron bound to one proton by the Coulomb attraction, V(r) = −e²/(4πε₀r). It is the only atom whose Schrödinger equation has an exact closed form solution, and it was the test the theory had to pass in 1926.
What the solution looks like
In three dimensions with a spherically symmetric potential, the equation separates in spherical coordinates. The angular part gives the familiar orbital shapes with quantum numbers l (0, 1, 2 ... for s, p, d ...) and m. The radial part only has normalisable solutions when a whole number n, the principal quantum number, satisfies n ≥ l + 1. The allowed energies depend only on n:
Eₙ = −R_∞hc · μ/mₑ / n²
R_∞hc = 13.605 693 122 990 eV (Rydberg energy, CODATA 2022)
mₚ/mₑ = 1836.152 673 426 (proton to electron mass ratio, CODATA 2022)
μ/mₑ = 1 / (1 + mₑ/mₚ) = 0.999 455 68 (reduced mass correction for hydrogen)
E₁ = −13.598 eV, E₂ = −3.400 eV, E₃ = −1.511 eV, E₄ = −0.850 eV
The reduced mass term is there because the proton is not infinitely heavy: electron and proton orbit their shared centre of mass. Leave it out and every predicted line comes out about 0.05 percent too short, a few tenths of a nanometre in the visible, which a spectrometer sees immediately.
Why the spectrum is a set of lines
Light is emitted when the electron drops from level n to a lower level m, and the photon carries away exactly the difference: E = Eₙ − Eₘ, wavelength λ = hc/E. Because the levels are discrete, so are the photon energies. A hot hydrogen lamp seen through a prism shows a few sharp coloured lines, not a rainbow. The levels are discrete for the same reason as in the box: only certain energies produce a wave function that dies away far from the nucleus and can be normalised.
The numbers against NIST
The table compares the prediction from the formula above with the observed wavelengths listed in the NIST Atomic Spectra Database for neutral hydrogen (H I). NIST lists ultraviolet lines in vacuum and visible lines in air. Air slows light by about 0.03 percent, so a visible line's air wavelength is about 0.18 nm shorter than its vacuum wavelength.
| Line | Transition | Predicted energy | Predicted vacuum λ | NIST observed λ |
|---|---|---|---|---|
| Lyman alpha | 2 to 1 | 10.1987 eV | 121.57 nm | 121.567 nm (vacuum) |
| Lyman beta | 3 to 1 | 12.0874 eV | 102.57 nm | 102.573 nm (vacuum) |
| H-alpha (red) | 3 to 2 | 1.8887 eV | 656.47 nm | 656.28 nm (air) |
| H-beta (blue-green) | 4 to 2 | 2.5497 eV | 486.27 nm | 486.13 nm (air) |
| H-gamma (violet) | 5 to 2 | 2.8556 eV | 434.17 nm | 434.05 nm (air) |
| H-delta (violet) | 6 to 2 | 3.0218 eV | 410.29 nm | 410.17 nm (air) |
Divide the predicted vacuum H-alpha value, 656.47 nm, by the refractive index of air (about 1.00028) and you get 656.29 nm, within a hundredth of a nanometre of NIST's figure. That is a simple nonrelativistic equation, two measured constants and no fitted parameters.
What the simple solution leaves out
NIST's database actually lists several components under each line, split by tiny amounts. That fine structure comes from relativity and electron spin, which the Schrödinger equation does not include. The Dirac equation, the other half of the 1933 Nobel Prize, accounts for most of it. Smaller shifts still, such as the Lamb shift, need quantum electrodynamics. The Schrödinger equation is the right tool for chemistry and electronics because those corrections are tiny at the energies involved, not because it is the final word.
Worked example 3: putting numbers on tunnelling
Classically, a ball with 1 eV of energy cannot cross a 2 eV hill. Quantum mechanically, inside the barrier the solution of the Schrödinger equation is not zero but a decaying exponential, exp(−κx), with:
κ = √(2m(V₀ − E)) / ħ
For a barrier of height V₀ and width a, when κa is large:
T ≈ 16 (E/V₀)(1 − E/V₀) · exp(−2κa)
Exact result for a rectangular barrier:
T = 1 / (1 + V₀² sinh²(κa) / (4E(V₀ − E)))
If the exponential has not died away by the far side of the barrier, the wave continues there as a travelling wave, smaller than before. The squared ratio of amplitudes is the transmission probability T.
For an electron with 1 eV of kinetic energy:
| Barrier height V₀ | Width a | κ | Exact T | exp(−2κa) alone |
|---|---|---|---|---|
| 2 eV | 0.5 nm | 5.12 per nm | 2.4 × 10⁻² | 6.0 × 10⁻³ |
| 2 eV | 1 nm | 5.12 per nm | 1.4 × 10⁻⁴ | 3.5 × 10⁻⁵ |
| 2 eV | 2 nm | 5.12 per nm | 5.0 × 10⁻⁹ | 1.3 × 10⁻⁹ |
| 4 eV | 1 nm | 8.87 per nm | 5.9 × 10⁻⁸ | 2.0 × 10⁻⁸ |
| 4 eV | 2 nm | 8.87 per nm | 1.2 × 10⁻¹⁵ | 3.8 × 10⁻¹⁶ |
The lesson for engineers is in the shape of the numbers, not the exact values. Doubling the width from 1 nm to 2 nm cuts transmission by a factor of about 28,000. Raising the barrier from 2 eV to 4 eV at 1 nm cuts it by about 2,400. Tunnelling is negligible at 10 nm and dominant at 1 nm, and the transition happens over just a few atomic layers.
Mass matters even more. Run the same 1 eV particle at a 2 eV, 1 nm barrier with the mass of a proton instead of an electron and exp(−2κa) is about 10⁻¹⁹¹. That is why electrons tunnel in everyday devices while atoms almost never do, and why tunnelling is an electronic engineering problem first.
What is quantum tunnelling, and where does it show up in real hardware?
Quantum tunnelling is a particle crossing a region where its energy is lower than the potential energy, something a classical particle can never do. It follows directly from the Schrödinger equation: the wave function decays inside the barrier but does not vanish, so a thin enough barrier lets some of it through. Nothing is "borrowed" and energy is conserved: the particle comes out the other side with the energy it went in with.
| Phenomenon | What tunnels | Barrier | Where you meet it |
|---|---|---|---|
| Alpha decay (Gamow, 1928) | Alpha particle | Nuclear Coulomb barrier | Smoke detectors, radioactive dating |
| Field emission (Fowler and Nordheim, 1928) | Electrons | Surface barrier thinned by a strong field | Electron microscope sources, flash memory program and erase |
| Tunnel diode (Esaki, 1958) | Electrons | Very thin p-n junction | High frequency circuits; part of the 1973 Nobel Prize |
| Josephson junction | Paired electrons in a superconductor | Thin insulator between superconductors | Superconducting qubits, precision voltage standards |
| Flash memory cell | Electrons | Tunnel oxide around a floating gate or charge trap | USB drives, SSDs, phones |
| Gate oxide leakage | Electrons | Transistor gate insulator a few atoms thick | Standby power in every modern chip |
| Scanning tunnelling microscope | Electrons | Vacuum gap between tip and surface | Imaging single atoms |
Alpha decay and field emission: the first tests
Two 1928 papers showed tunnelling was real. Gamow's paper in Zeitschrift für Physik explained why heavy nuclei emit alpha particles at energies too low to climb over the nuclear barrier, and why half lives vary so hugely: the exponential in T turns small differences in energy into enormous differences in rate. Fowler and Nordheim's paper in the Proceedings of the Royal Society explained why a strong electric field pulls electrons out of a cold metal. The field tilts the barrier at the surface into a thin triangle that electrons tunnel through. Their name is now attached to that mechanism, Fowler-Nordheim tunnelling, which is exactly what flash memory uses.
How tunnelling writes and erases flash memory
The floating gate idea comes from Kahng and Sze's 1967 paper in the Bell System Technical Journal. Described generically, a flash cell is a transistor with an extra, electrically isolated conductor (the floating gate) or a charge trapping layer buried in the insulator between the control gate and the channel.
- Program. A high voltage on the control gate, many times the chip's normal supply voltage, creates a strong field across the thin tunnel oxide. Electrons tunnel from the channel into the floating gate by Fowler-Nordheim tunnelling and stay there.
- Store. With the voltage removed, the oxide is a few nanometres thick and the barrier is several electronvolts high. Following the table above, the tunnelling rate is so small that charge stays put for years. That is non-volatility.
- Read. Trapped electrons raise the voltage needed to switch the transistor on. Sensing that threshold voltage reads the bit, or several bits when the cell stores several charge levels.
- Erase. Reverse the field and electrons tunnel back out. Kioxia, formerly Toshiba's memory business, says the "flash" name of 1984 came from the ability to erase large blocks at once, and that it invented NAND flash in 1987.
The design lives on the exponential. The oxide must be thin enough that a programming field drives a useful tunnelling current in microseconds, and thick enough that with no field the leak takes years. Every program and erase cycle also pushes energetic electrons through the oxide, and over many cycles that stress creates traps and damage. This is the physical root of flash endurance limits, and the reason SSD controllers spread writes across cells with wear levelling.
That last point has a security edge. Because a controller remaps writes to spread wear, overwriting a file from the operating system does not reliably overwrite the physical cells that held it. Sanitising a flash device therefore relies on the device's own sanitize or cryptographic erase commands rather than a file overwrite, and NIST SP 800-88 Rev. 2 sets out how to build a media sanitisation program around techniques like these.
Why transistor gates leak
A MOSFET switches by putting a voltage on a gate separated from the channel by a thin insulator. For decades that insulator was silicon dioxide, and each process shrink made it thinner, because a thinner insulator gives the gate stronger control of the channel.
Intel's high-k and metal gate research page explains where that ran out: gate oxides had reached about five atomic layers, and "the thinner the gate, the larger the tunneling current and the higher the leakage power." Tunnelling current through the gate flows even when the transistor is off, so it wastes power on every idle transistor in a chip.
The fix was a material change rather than a geometric one. A high-k (high dielectric constant) material such as a hafnium-based oxide gives the same electrical control at a greater physical thickness, and from the tunnelling table you know that a little more thickness means a lot less leakage. Intel's page says its hafnium-based dielectric with metal gate electrodes reduced NMOS gate leakage by more than 25 times and PMOS gate leakage by more than 1,000 times, and dates the 45 nm process paper to IEDM 2007.
Gate leakage is not the only tunnelling problem in small transistors. As the distance between source and drain shrinks toward a few nanometres, electrons can tunnel directly along the channel, under a gate that is meant to be blocking them. This is one of the reasons transistor architects moved from planar transistors to fins and then to gate-all-around designs, which wrap the gate around the channel for better control. Treat that as the general direction of the industry rather than a specific process claim; each manufacturer documents its own nodes.
Tunnelling you can use on purpose
Tunnelling is a nuisance in a logic gate and the working principle elsewhere. Esaki's 1958 tunnel diode used a junction so thin that electrons tunnel straight across it, producing a region of negative resistance useful in fast oscillators. Josephson junctions, two superconductors separated by a thin insulator, are the core of today's superconducting qubits. The 2025 Nobel Prize in Physics went to John Clarke, Michel Devoret and John Martinis for showing, in 1984 and 1985 experiments on such a circuit, that a whole electrical circuit could tunnel out of a trapped state and absorb or emit only specific amounts of energy, just as the Schrödinger equation predicts for a single particle.
How does the Schrödinger equation relate to qubits and quantum gates?
A qubit is a quantum system where you deliberately use only two energy levels, called 0 and 1. Its state is a superposition, a|0⟩ + b|1⟩, with |a|² + |b|² = 1, which is the Born rule applied to a two level system. Our quantum computing explainer covers the hardware; here is how the equation drives it.
A gate is the equation run for a set time
With a constant Hamiltonian, the solution of the time-dependent equation is a single operator acting on the starting state:
ψ(t) = U(t) ψ(0), with U(t) = exp(−iĤt/ħ)
U is unitary: it preserves total probability, which is the matrix form of the conservation property above. A quantum gate is exactly such a U, produced by switching on a chosen Hamiltonian for a chosen time. In a superconducting qubit that means a microwave pulse at the frequency matching the gap between the two levels, E₁ − E₀ = hf. While the pulse is on, the state rotates steadily between |0⟩ and |1⟩, an effect called a Rabi oscillation. Stop the pulse halfway and you have turned |0⟩ into an equal superposition. Stop it at the full swing and you have a NOT gate.
Two qubit gates and entanglement
For two qubits the wave function has four amplitudes, for 00, 01, 10 and 11. A Hamiltonian that couples the qubits for a set time produces a gate such as controlled NOT. Applied to the right starting state, it produces a state that cannot be written as one qubit's state times the other's: entanglement. For n qubits the state has 2ⁿ amplitudes, which is why simulating a quantum computer on a classical one gets out of hand around a few dozen qubits.
Measurement and noise
Reading a qubit applies the Born rule: you get 0 with probability |a|² and 1 with probability |b|². Real qubits also leak their phase into the environment, called decoherence, which is the Schrödinger equation applied to the qubit plus everything it touches. Quantum error correction exists to fight that. For the security side, which is where most readers meet qubits, see our post on post-quantum cryptography migration.
What are the interpretations, and what is still debated?
Every working physicist uses the same equation and the same Born rule, and they agree on every prediction tested so far. What they do not agree on is what the wave function is and what happens when a measurement gives one definite outcome. That gap is called the measurement problem.
The measurement problem in one paragraph
The Schrödinger equation is linear and deterministic. Apply it to a measuring device interacting with a qubit in superposition, and it predicts that the device itself ends up in a superposition of "read 0" and "read 1". Yet every experiment ever done shows one result. Textbook quantum mechanics adds a separate rule, collapse, saying the state jumps to the observed outcome. The equation never produces that jump, and the textbook rule does not say exactly when it applies or what counts as a measurement. The Stanford Encyclopedia of Philosophy's entry on philosophical issues in quantum theory sets out the problem and the families of response.
The main approaches compared
| Approach | What ψ is | What happens at measurement | Changes the equation? | Key source |
|---|---|---|---|---|
| Copenhagen family (Bohr, Heisenberg, Born) | A tool for predicting outcomes of experiments | Classical description of the apparatus is required; outcomes are not explained further | No | Copenhagen entry; Bohr and Heisenberg never fully agreed |
| Many worlds (Everett, 1957) | A real physical state of the whole universe | No collapse; every outcome happens in its own branch | No | Many worlds entry |
| Bohmian mechanics (de Broglie 1927, Bohm 1952) | A real guiding field; particles also have definite positions | Particles have one actual position all along; the guiding equation picks the outcome | Adds a second equation | Bohmian mechanics entry |
| Spontaneous collapse (GRW, 1986) | A real state | Collapse is a physical process that happens at random, very rarely per particle but quickly for large objects | Yes, adds a small random term | Collapse theories entry |
| Information based views (for example QBism) | An agent's information or expectations | Updating information, not a physical jump | No | Philosophical issues entry |
What decoherence does and does not settle
Decoherence is not an interpretation. It is the Schrödinger equation applied to a system and its environment, and it explains why interference between macroscopic alternatives becomes impossible to observe in practice, almost instantly. It explains why the world looks classical. It does not, on its own, explain why one outcome occurs rather than another, which is why the approaches above still disagree.
Is any of it testable?
Partly. Collapse models predict tiny deviations from the Schrödinger equation for large objects, such as extra heating or loss of interference in very massive superpositions, and experiments keep narrowing the allowed parameter range. Many worlds and Bohmian mechanics reproduce standard predictions by design, so the argument there is about simplicity and coherence rather than experiment. The honest summary is that the measurement problem is open, and none of the practical results in this post depend on how it is resolved.
How do you solve the Schrödinger equation numerically?
Only a handful of potentials, the box, the harmonic oscillator, hydrogen and a few others, have exact solutions. Everything else, from a real quantum dot to a transistor channel, is solved numerically. The standard approach for one dimensional problems is to put ψ on a grid and turn the second derivative into a finite difference, which turns the equation into a matrix problem.
Which method fits which problem
| Method | Solves | Idea | Strengths | Watch out for |
|---|---|---|---|---|
| Finite difference eigenvalue | Time-independent, bound states | Second derivative becomes a tridiagonal matrix; diagonalise it | Simple, exact up to grid error, all levels at once | Grid must resolve the shortest wavelength; walls must be far enough |
| Shooting method | Time-independent, one level at a time | Integrate from one side, adjust E until the far boundary condition is met | Low memory, intuitive | Unstable in forbidden regions; easy to miss levels |
| Crank-Nicolson | Time-dependent | Average of forward and backward steps; unitary | Conserves probability exactly; stable for any time step | Needs a linear solve per step |
| Split-step Fourier | Time-dependent | Alternate kinetic steps in momentum space and potential steps in real space with FFTs | Fast on large grids | Assumes periodic boundaries; needs absorbing edges |
| Transfer matrix | Transmission through layered barriers | Match plane waves across each layer | Natural for tunnelling stacks | Numerical overflow for thick barriers |
Step by step: solve it yourself in Python
The scripts below run as written with Python 3 and NumPy. They were run with NumPy 2.0.2 for this post, and the output shown is what they printed.
1. Create an isolated environment and pin your dependency
Scientific code is software, and the same supply chain habits apply. Pin the version you tested with so a future install does not change your results silently.
python3 -m venv .venv
source .venv/bin/activate
python -m pip install "numpy==2.0.2"
python -m pip freeze > requirements.txt
2. The particle in a box, by finite differences
On a grid with spacing dx, the second derivative at point j is (ψⱼ₊₁ − 2ψⱼ + ψⱼ₋₁)/dx². Putting that into the Hamiltonian gives a tridiagonal matrix whose eigenvalues are the energies.
# box.py: particle in a box by finite differences, checked against the exact formula.
import numpy as np
HBAR = 1.054_571_817e-34 # J s, exact (CODATA 2022)
M_E = 9.109_383_7139e-31 # kg (CODATA 2022)
EV = 1.602_176_634e-19 # J, exact
L = 1e-9 # box width: 1 nm
N = 2000 # interior grid points
dx = L / (N + 1)
# H = -(hbar^2 / 2m) d^2/dx^2 on the interior points, psi = 0 at the walls.
t = HBAR**2 / (2 * M_E * dx**2)
main = np.full(N, 2 * t)
off = np.full(N - 1, -t)
H = np.diag(main) + np.diag(off, 1) + np.diag(off, -1)
E, psi = np.linalg.eigh(H)
for n in range(1, 5):
exact = (n**2 * np.pi**2 * HBAR**2) / (2 * M_E * L**2)
print(f"n={n} numeric={E[n-1]/EV:.6f} eV exact={exact/EV:.6f} eV "
f"rel.err={(E[n-1]-exact)/exact:.1e}")
# Born rule check: normalise the ground state and integrate |psi|^2.
p = psi[:, 0] / np.sqrt(np.sum(psi[:, 0]**2) * dx)
x = np.linspace(dx, L - dx, N)
inside = (x > 0.25 * L) & (x < 0.75 * L)
print("P(total) =", round(np.sum(p**2) * dx, 6))
print("P(middle half) =", round(np.sum(p[inside]**2) * dx, 4))
Output:
n=1 numeric=0.376030 eV exact=0.376030 eV rel.err=-2.1e-07
n=2 numeric=1.504119 eV exact=1.504121 eV rel.err=-8.2e-07
n=3 numeric=3.384265 eV exact=3.384271 eV rel.err=-1.8e-06
n=4 numeric=6.016463 eV exact=6.016483 eV rel.err=-3.3e-06
P(total) = 1.0
P(middle half) = 0.8181
Notice the error grows with n. Higher states have shorter wavelengths, so the same grid resolves them less well. The middle half probability matches the exact 0.8183 to three places, with the last digit set by the grid.
For large grids, a dense matrix wastes memory. SciPy's scipy.linalg.eigh_tridiagonal takes just the diagonal and off diagonal arrays and can return only the lowest few eigenvalues, which is what you want for a grid of tens of thousands of points.
3. Hydrogen's lines from the energy formula
# hydrogen.py: hydrogen lines from the energy levels, with the reduced-mass correction.
H = 6.626_070_15e-34 # J s, exact
C = 299_792_458 # m/s, exact
EV = 1.602_176_634e-19 # J, exact
RY_EV = 13.605_693_122_990 # Rydberg energy in eV (CODATA 2022, infinite nuclear mass)
ME_OVER_MP = 1 / 1836.152_673_426 # electron to proton mass ratio (CODATA 2022)
ry_h = RY_EV / (1 + ME_OVER_MP) # reduced-mass correction for hydrogen
def level(n):
return -ry_h / n**2 # eV
for upper, lower, name in [(2, 1, "Lyman alpha"), (3, 1, "Lyman beta"),
(3, 2, "H-alpha"), (4, 2, "H-beta"),
(5, 2, "H-gamma"), (6, 2, "H-delta")]:
dE = level(upper) - level(lower)
lam_vac = H * C / (dE * EV) * 1e9
print(f"{name:12s} n={upper}->{lower} dE={dE:.4f} eV vacuum wavelength={lam_vac:.2f} nm")
Output:
Lyman alpha n=2->1 dE=10.1987 eV vacuum wavelength=121.57 nm
Lyman beta n=3->1 dE=12.0874 eV vacuum wavelength=102.57 nm
H-alpha n=3->2 dE=1.8887 eV vacuum wavelength=656.47 nm
H-beta n=4->2 dE=2.5497 eV vacuum wavelength=486.27 nm
H-gamma n=5->2 dE=2.8556 eV vacuum wavelength=434.17 nm
H-delta n=6->2 dE=3.0218 eV vacuum wavelength=410.29 nm
Delete the (1 + ME_OVER_MP) correction and rerun: Lyman alpha moves to 121.50 nm, well away from NIST's 121.567 nm. One line of physics is visible in the third significant figure.
4. The time-dependent equation: a wave packet hitting a barrier
The time-dependent equation needs a time stepping scheme. The obvious one, stepping ψ forward by dt times its derivative, does not conserve probability and blows up. Crank-Nicolson averages the forward and backward steps, which makes each step unitary.
# packet.py: a wave packet hitting a thin barrier, by Crank-Nicolson.
import numpy as np
HBAR, M_E, EV = 1.054_571_817e-34, 9.109_383_7139e-31, 1.602_176_634e-19
NM, FS = 1e-9, 1e-15
x = np.linspace(-60 * NM, 60 * NM, 3000)
dx = x[1] - x[0]
dt = 0.05 * FS
# Barrier: 2 eV high, 1 nm wide, centred at x = 0.
V = np.where(np.abs(x) < 0.5 * NM, 2.0 * EV, 0.0)
# Gaussian packet with mean kinetic energy 1 eV, starting at x = -20 nm.
E0 = 1.0 * EV
k0 = np.sqrt(2 * M_E * E0) / HBAR
sigma = 4 * NM
psi = np.exp(-((x + 20 * NM) ** 2) / (4 * sigma**2) + 1j * k0 * x)
psi /= np.sqrt(np.sum(np.abs(psi) ** 2) * dx)
# Hamiltonian as a matrix (finite differences, psi = 0 at the edges).
t = HBAR**2 / (2 * M_E * dx**2)
Hm = np.diag(2 * t + V) - t * np.eye(len(x), k=1) - t * np.eye(len(x), k=-1)
I = np.eye(len(x))
A = I + 1j * dt / (2 * HBAR) * Hm
B = I - 1j * dt / (2 * HBAR) * Hm
U = np.linalg.solve(A, B) # one Crank-Nicolson step
for step in range(1600): # 1,600 steps of 0.05 fs = 80 fs
psi = U @ psi
prob = np.abs(psi) ** 2 * dx
print(f"total probability = {prob.sum():.6f}")
print(f"transmitted (x>0.5 nm) = {prob[x > 0.5 * NM].sum():.2e}")
print(f"reflected (x<-0.5 nm) = {prob[x < -0.5 * NM].sum():.4f}")
Output:
total probability = 1.000000
transmitted (x>0.5 nm) = 2.20e-04
reflected (x<-0.5 nm) = 0.9998
Total probability stays at 1 to six places after 1,600 steps, which is the unitarity check passing. The transmitted fraction, 2.2 × 10⁻⁴, is a little higher than the single energy result of 1.4 × 10⁻⁴ from worked example 3. That is expected: a packet localised to a few nanometres contains a spread of energies, and its higher energy components tunnel far more easily, which shifts the average up. An electron at 1 eV moves at about 0.59 nm per femtosecond, so in 80 fs the packet has reached the barrier and the reflected part has cleared it.
On some NumPy builds for macOS the matrix product can print spurious floating point warnings while giving correct results. If you see them, run with python -W ignore packet.py after checking that the total probability still prints as 1.
5. Check your answers before trusting them
- Converge the grid. Halve dx and rerun. If the energies or transmission change in a digit you care about, the grid was too coarse.
- Move the walls. For a free particle or a bound state with soft edges, make the domain larger and confirm nothing changes. Hard walls too close to a packet reflect it artificially.
- Watch the units. Work in SI with exact constants, or in atomic units throughout, never a mix. A missing factor of 2π between h and ħ moves every answer by more than six times.
- Check against an exact case. Before solving a real device, reproduce the box or the harmonic oscillator with the same code.
- Rerun after upgrading. When you update NumPy or SciPy, rerun these checks. Numerical libraries change defaults and algorithms between versions.
Where Safeguard fits, honestly
Safeguard does not do physics. No Safeguard model computed or checked anything in this post; Safeguard's models are single purpose security models, and every number here came from the scripts above and NIST's published constants.
The connection is the software around the physics. Simulation codes, device modelling tools and lab notebooks are built from open source numerical libraries, notebook servers and container base images, and those carry known vulnerabilities and license obligations that drift between versions. Safeguard can scan a repository, a container image or an SBOM file (for example safeguard scan --dir . or safeguard scan --image <name> from the CLI), match the components against vulnerability databases, show which projects carry a given package version, and open fix pull requests when you switch remediation on. It will not tell you whether your energy levels are right; your convergence checks do that.
Common mistakes
- Treating ψ as the particle's density of stuff. It is a probability amplitude. The particle is detected in one place; |ψ|² tells you how often each place comes up.
- Adding probabilities instead of amplitudes. When two paths lead to the same outcome, add the complex ψ values first, then square. Adding probabilities removes interference and gets double slit and qubit results wrong.
- Forgetting normalisation. An unnormalised solution gives probabilities that do not add up to 1, and a solution that cannot be normalised is not a physical state at all.
- Mixing h and ħ. ħ = h/2π. The box energies use ħ; photon wavelengths use h. Confusing them puts results off by a factor of about 6.28 or its square.
- Comparing vacuum and air wavelengths. NIST lists visible lines in air. A correct vacuum calculation will look wrong by about 0.18 nm in the red if you forget this.
- Ignoring reduced mass. Treating the proton as infinitely heavy shifts hydrogen lines by about 0.05 percent, enough to fail a comparison with measurement.
- Thinking tunnelling scales linearly with thickness. It is exponential. A little thinner is a lot more leakage, which is the whole story of gate oxides.
- Saying the particle "borrows energy" to tunnel. Energy is conserved. The wave function simply does not vanish inside a finite barrier.
- Using explicit Euler time steps. They do not conserve probability and diverge. Use Crank-Nicolson or split-step methods, and check that total probability stays at 1.
- Calling decoherence a solution to the measurement problem. It explains why interference disappears in practice, not why one outcome occurs.
- Assuming the equation is the final word. It is nonrelativistic. Fine structure needs the Dirac equation; the Lamb shift needs quantum electrodynamics.
FAQ
What is the Schrödinger equation in simple terms?
It is the rule that says how a quantum system's wave function changes over time, given the system's energy. Solving it tells you the allowed energies of a system and the probability of finding a particle in each place.
What is the difference between the time-dependent and time-independent Schrödinger equation?
The time-dependent form, iħ ∂ψ/∂t = Ĥψ, describes how any state evolves. The time-independent form, Ĥψ = Eψ, finds the stationary states and allowed energies when the potential does not change with time. Any state is a combination of stationary states.
What does the wave function actually represent?
It is a complex amplitude whose squared magnitude gives a probability density, by the Born rule of 1926. What it represents physically beyond that, a real wave, information or something else, depends on the interpretation and is still debated.
Why are atomic energy levels discrete?
A bound electron's wave function has to stay finite and die away far from the nucleus. Only certain energies allow that, so only those energies exist. Light emitted between those levels therefore comes in sharp lines.
What is quantum tunnelling in simple terms?
It is a particle crossing a barrier it does not have enough energy to climb. Its wave function decays inside the barrier but is not zero at the far side, so there is a small chance of finding it beyond. The chance falls exponentially with barrier width and with the square root of the particle's mass.
Does flash memory use quantum tunnelling?
Yes. Flash cells program and erase by Fowler-Nordheim tunnelling of electrons through a thin oxide into and out of a floating gate or charge trap. With no field applied the tunnelling rate is tiny, which is why the data stays for years.
Why does quantum tunnelling limit how small transistors can get?
When a gate insulator is only a few atoms thick, electrons tunnel through it even when the transistor is off, wasting power. High-k gate materials were introduced to make the insulator physically thicker for the same electrical effect. Direct tunnelling between source and drain is another limit at very short channel lengths.
Is the Schrödinger equation used in quantum computers?
Yes. Every quantum gate is the Schrödinger equation run for a controlled time under a chosen Hamiltonian, which produces a unitary operation on the qubits. Measurement of the result follows the Born rule.
Did Schrödinger's cat come from the Schrödinger equation?
The cat is a 1935 thought experiment by Schrödinger that applies the linear equation to a macroscopic object to show how odd the measurement problem looks. It is an argument about interpretation, not a separate equation.
Can I solve the Schrödinger equation on my laptop?
Yes, for one dimensional problems and small systems. The finite difference and Crank-Nicolson scripts in this post run in seconds with NumPy. Many electron problems grow exponentially and need approximations such as density functional theory.
Fix it without waiting for upstream
The physics above does not change with a software update, but the code you use to compute it does: NumPy, SciPy, notebook servers and the container images behind a simulation cluster all ship as open source components with their own vulnerabilities and release schedules. That is the indirect but real part of this topic where supply chain hygiene matters, and it is what the section below covers.
Whatever the vulnerability, most of the risk sits in two gaps. The first is the time between a fix being published and that fix actually running in your production builds. The second, and worse, is the time before any fix exists at all, while a maintainer works out a patch and a release schedule. Waiting through both gaps is a habit, not a requirement. Safeguard gives teams three ways to close them.
1. Autonomous remediation: pull requests, not tickets
When a fixed version exists, Safeguard's Griffin models open a tested, policy gated pull request that moves the affected dependency to the safe version. You can run it on one repository or in bulk across every project that carries the vulnerable version. Remediation covers eight categories, including dependencies, licenses, security posture and findings. Reachability analysis ranks the vulnerable code paths your application actually calls first, so the first pull requests you merge are the ones that matter most. Autonomous remediation ships switched off, with every category set to Manual, so your team decides how much runs on its own and what still needs a human approval.
2. Gold Open Source: the safe version in seconds, free
gold.safeguard.sh is free and needs no login. Search any CVE or package to see affected and fixed versions, CVSS, EPSS, CISA KEV status and a recommended safe version, or use the "Am I affected?" checker. The same data is available through a free read API, README status badges and RSS threat feeds. The safeguard-sh/gold-scan-action GitHub Action can fail a build on a known exploited vulnerability, on any known vulnerability, or never, so a version you have just removed cannot quietly come back in next week's merge.
3. Gold Registry: start from components that are already fixed
registry.safeguard.sh provides hardened, drop in replacements for upstream packages and container images. Every Gold artifact is held continuously to zero exploitable critical or high CVEs, zero malware and a completed license check, with SLSA L3 or higher provenance, a Sigstore signature and a public evidence page you can hand to an auditor. An artifact loses its Gold badge if it regresses. Teams can point their own package directory at the registry so hardened equivalents resolve without changing how developers install anything.
When upstream has no fix yet, or will not ship one, Safeguard first works to get the fix accepted upstream. If the issue is severe or upstream will not move, Safeguard builds a fork, fixes the vulnerability there and publishes a hardened Gold build, so you are not stuck on a maintainer's release schedule. You can also request a hardened, compatibility tested build of a specific package. This fork and patch flow is in early access today, so ask which packages it covers before you plan around it.
| Your situation | What to use |
|---|---|
| A fixed version exists | Autonomous remediation opens the upgrade pull request; Gold Open Source confirms the safe version |
| You need to know today whether you are affected | Gold Open Source lookup and "Am I affected?" checker, free and without login |
| You want vulnerable versions to stop shipping | The Gold scan GitHub Action in CI, plus Safeguard policies and gates |
| Upstream has no fix yet, or will not ship one | A custom Gold request; fork and patch (early access) |
| You want to start clean on new projects | Pull hardened components and images from Gold Registry |
One honest limit: when the vulnerable code lives in a vendor appliance, a hosted service or an operating system runtime you do not build yourself, the fix still has to come from that vendor or distribution. The steps above apply to the open source dependencies and container images you build and ship, which is where most teams carry the largest and least tracked share of their exposure.
To try it on your own machine, download Safeguard from https://safeguard.sh/download and see the CLI documentation at https://docs.safeguard.sh/docs/cli .
See how Safeguard would help
The first demo sets up Safeguard's local runner on your own machine, approves it with its device code, and then runs a scan from the terminal. Pointed at a repository of simulation or analysis code like the scripts above, the same flow lists the open source packages it depends on and their versions. It does not check the physics.
Click through it at your own pace, or open it full screen.
The second demo is a real Safeguard CLI session: asked to fix a lodash CVE, it reads the finding and advisory, asks before each command, edits package.json to lodash 4.17.21, runs npm install and npm test with approval, prints a summary and pushes nothing. The same approve each step flow applies when a numerical Python project needs a dependency upgrade, and rerunning convergence checks like the ones in step 5 after the upgrade is how you catch a changed result.
Click through it at your own pace, or open it full screen.
The third demo connects Claude to the Safeguard MCP server with OAuth and lets you choose which tools Claude can use. That lets you ask an assistant which of your research or engineering projects carry a given package version, while you keep control of what it can touch.
Click through it at your own pace, or open it full screen.
Quick check
An electron's ground state energy in a 2 nm box is about 0.094 eV. What is it in a 1 nm box, and why?
About 0.376 eV, four times higher. The energy scales as 1/L², so halving the width quadruples every level. Confinement forces a shorter wavelength, and a shorter wavelength means more kinetic energy.
A 1 eV electron meets a 2 eV barrier. Roughly how much does doubling the barrier width from 1 nm to 2 nm change the tunnelling probability?
It drops by a factor of about 28,000, from about 1.4 × 10⁻⁴ to about 5 × 10⁻⁹. Tunnelling falls exponentially with width, which is why a few extra atomic layers in a gate oxide make such a large difference to leakage.
Sources
- Schrödinger, "Quantisierung als Eigenwertproblem" (part I), Annalen der Physik 384(4), 361 to 376, 1926, DOI 10.1002/andp.19263840404, with parts II (384(6), 489 to 527), III (385(13), 437 to 490) and IV (386(18), 109 to 139); metadata confirmed through the Crossref REST API
- Schrödinger, "An Undulatory Theory of the Mechanics of Atoms and Molecules", Physical Review 28, 1049, 1 December 1926
- Born, "Zur Quantenmechanik der Stoßvorgänge", Zeitschrift für Physik 37, 863 to 867, 1926, DOI 10.1007/BF01397477
- Gamow, "Zur Quantentheorie des Atomkernes", Zeitschrift für Physik 51, 204 to 212, 1928, DOI 10.1007/BF01343196
- Fowler and Nordheim, "Electron emission in intense electric fields", Proceedings of the Royal Society A 119, 173 to 181, 1 May 1928, DOI 10.1098/rspa.1928.0091
- Esaki, "New Phenomenon in Narrow Germanium p-n Junctions", Physical Review 109, 603, 15 January 1958, DOI 10.1103/PhysRev.109.603
- Kahng and Sze, "A Floating Gate and Its Application to Memory Devices", Bell System Technical Journal 46, 1288 to 1295, 1967, DOI 10.1002/j.1538-7305.1967.tb01738.x
- The Nobel Prize in Physics 1933 and Schrödinger's Nobel Lecture, "The Fundamental Idea of Wave Mechanics", 12 December 1933
- The Nobel Prize in Physics 1954
- The Nobel Prize in Physics 1973
- The Nobel Prize in Physics 2025 and press release, 7 October 2025
- NIST CODATA 2022: reduced Planck constant, Planck constant, electron mass, electron volt, Rydberg constant, Rydberg energy in eV, Hartree energy in eV, Bohr radius and proton to electron mass ratio
- NIST Atomic Spectra Database: lines data (H I, 90 to 700 nm)
- MIT OpenCourseWare, 8.04 Quantum Physics I, Spring 2016 and lecture notes
- Intel: High-k and Metal Gate Transistor Research
- Kioxia: Technology Development History
- Stanford Encyclopedia of Philosophy: Philosophical Issues in Quantum Theory
- Stanford Encyclopedia of Philosophy: The Copenhagen Interpretation of Quantum Mechanics
- Stanford Encyclopedia of Philosophy: Many-Worlds Interpretation of Quantum Mechanics
- Stanford Encyclopedia of Philosophy: Bohmian Mechanics
- Stanford Encyclopedia of Philosophy: Collapse Theories
- NIST SP 800-88 Rev. 2: Guidelines for Media Sanitization
- SciPy documentation: scipy.linalg.eigh_tridiagonal
Last reviewed: 24 October 2026.