
Deriving the Schrödinger Equation from First Principles
A walkthrough of how the time-dependent Schrödinger equation emerges naturally from de Broglie's wave hypothesis and classical wave mechanics.
why bother deriving Schrödinger’s equation?
If you’ve taken any quantum course, you’ve almost certainly seen this written on the board with very little ceremony:
It’s presented as the equation of motion in quantum mechanics — but where does it actually come from?
Is it just “postulated”, or can we at least motivate it from ideas we already know: waves, energy, momentum?
Classically, every observable—position, momentum, energy—is a definite number.
Quantum mechanics replaces that picture: a particle is described by a wave function
whose squared modulus gives a probability density. This post is about connecting those two worlds: starting from de Broglie’s wave hypothesis and simple plane waves seeing how the time-dependent Schrödinger equation almost forces itself on us.
who is this for?
This walkthrough is aimed at readers who:
- Know basic classical mechanics and the energy–momentum relation for a non-relativistic particle,
- Are comfortable with complex exponentials and derivatives of ,
- Have seen the Schrödinger equation written down, but never felt satisfied with “we just promote to an operator”.
We’re not doing a fully rigorous axiomatic derivation here.
Instead, the goal is to build physical and mathematical intuition for why the familiar form of the equation is so natural.
de Broglie waves: starting from a plane wave
de Broglie postulated that a free particle with momentum behaves like a plane wave:
Taking partial derivatives:
These relations tell us how energy and momentum act on a plane wave: as time and space derivatives.
promoting classical energy to an operator
For a particle in a potential , the classical energy is:
We promote and to operators acting on :
| Classical quantity | Quantum operator |
|---|---|
Substituting these into the classical expression gives:
The bracket on the right is the Hamiltonian operator , giving us exactly the Schrödinger equation.
This argument is deliberately heuristic: we motivated the operator replacements using plane waves and then assumed they extend to more general wave packets and potentials. A more complete treatment comes from the axioms of quantum mechanics and symmetry arguments, but this route is often the most illuminating the first time you meet the equation.
a quick numerical check in Python
Let's verify the ground-state energy of the infinite square well, ,
by finite-differencing the Hamiltonian:
import numpy as np
def infinite_square_well_energies(L: float, n_points: int = 500, n_states: int = 5):
"""
Numerically diagonalise the 1-D particle-in-a-box Hamiltonian.
Returns the first `n_states` eigenvalues in units of ℏ²/(2mL²).
"""
hbar_2m = 1.0 # natural units
dx = L / (n_points + 1)
x = np.linspace(dx, L - dx, n_points)
# Second-derivative finite-difference stencil
diag = np.full(n_points, 2.0 / dx**2)
off = np.full(n_points - 1, -1.0 / dx**2)
H = np.diag(diag) + np.diag(off, 1) + np.diag(off, -1)
H *= hbar_2m
eigenvalues = np.linalg.eigvalsh(H)
return eigenvalues[:n_states]
L = 1.0
numerical = infinite_square_well_energies(L)
analytical = [(n**2 * np.pi**2) / (2 * L**2) for n in range(1, 6)]
for n, (num, ana) in enumerate(zip(numerical, analytical), start=1):
print(f"n={n}: numerical={num:.4f}, analytical={ana:.4f}")Running that gives sub-0.1 % error even at only 500 grid points you can see how the familiar spectrum of the infinite well emerges from a simple matrix eigenvalue problem.
normalisation and the Born rule
The wave function must be normalised:
Further reading
- Griffiths, Introduction to Quantum Mechanics (3rd ed.) — Chapter 1–2
- MIT OpenCourseWare 8.04
- The original Schrödinger 1926 paper (translated excerpts on Wikipedia)