Linear Combination of Atomic Orbitals (LCAO) in 1-D
Author: Roger Tobin

This is a "toy" example of the linear combination of atomic orbitals (LCAO) variational method, applied to a one-dimensional potential consisting of two harmonic wells separated by a distance D (in units of q, the characteristic length for a single well). The model wave function is a linear superposition of the ground state wave functions of the two individual harmonic potentials.

Vary the separation between the wells by clicking and dragging the point A at the minimum of the right-hand well. (You will need to go very slowly and be patient.) As you vary the separation, the graph in the lower pane will trace out the expectation values of the kinetic energy <T>, potential energy <V>, and total energy <H>. The existence of a minimum in <H> shows that the ground state of this system is bound, and the separation at which that minimum occurs is (approximately) the equilibrium "bond length". (Approximate because the wave function is not exact -- we're not actually solving the Schrodinger equation.) Similar methods are used in quantum chemistry to calculate the equilibrium structures of molecules and many other properties.

2

4

6

8

Well separation (q)

$ \frac{E}{\hbar\omega  $

$ \frac{1}{4} $

$ \frac{1}{2} $

<H>

<T>

<V>

Variational (LCAO) Calculation
of covalent bonding for a double
harmonic potential.

Click and slowly drag point A.

$ \frac{V}{\hbar\omega}, \frac{<H>}{\hbar\omega},\Psi(a.u) $

A = Point(xAxis)
b: x(A)
Psi(x) = (ℯ^((-(x + b)^(2)) / 2) + ℯ^((-(x - b)^(2)) / 2)) / sqrt(2 * sqrt(π))
INorm = Integral(Psi(x)^(2), -b - 2, b + 2)
V = If(x ≤ 0, 0.5 * (x + b)^(2), 0.5 * (x - b)^(2))
Vav: Integral[V(x) * Psi(x)^(2), -b - 2, b + 2] / INorm
Psixx(x) = (((x + b)^(2) - 1) * ℯ^((-(x + b)^(2)) / 2) + ((x - b)^(2) - 1) * ℯ^((-(x - b)^(2)) / 2)) / sqrt(2 * sqrt(π))
Tav: -0.5 * Integral[Psixx(x) * Psi(x), -b - 2, b + 2] / INorm
Hav: Tav + Vav
E(x) = Hav
Scale = 3
PsiPlot(x) = Hav + Scale * Psi(x)
Origin = (-2, -6)
Xmax: (x(Origin) + 10, y(Origin))
Emax: (x(Origin), y(Origin) - 0.8 * y(Origin))
xaxis = Segment(Origin, Xmax)
Eaxis = Segment(Origin, Emax)
Sep: 2 * b
Erange: -0.8 * y(Origin) * 2
Tp: (x(Origin) + Sep, y(Origin) + Tav * Erange)
Vp: (x(Origin) + Sep, y(Origin) + Vav * Erange)
Hp: (x(Origin) + Sep, y(Origin) + Hav * Erange)
tick1 = Segment((x(Origin) + 1, y(Origin) + 0.1), (x(Origin) + 1, y(Origin) - 0.1))
tick2 = Segment((x(Origin) + 2, y(Origin) + 0.1), (x(Origin) + 2, y(Origin) - 0.1))
tick3 = Segment((x(Origin) + 3, y(Origin) + 0.1), (x(Origin) + 3, y(Origin) - 0.1))
tick4 = Segment((x(Origin) + 4, y(Origin) + 0.1), (x(Origin) + 4, y(Origin) - 0.1))
tick5 = Segment((x(Origin) + 5, y(Origin) + 0.1), (x(Origin) + 5, y(Origin) - 0.1))
tick6 = Segment((x(Origin) + 6, y(Origin) + 0.1), (x(Origin) + 6, y(Origin) - 0.1))
tick7 = Segment((x(Origin) + 7, y(Origin) + 0.1), (x(Origin) + 7, y(Origin) - 0.1))
tick8 = Segment((x(Origin) + 8, y(Origin) + 0.1), (x(Origin) + 8, y(Origin) - 0.1))
ytick1 = Segment((x(Origin) - 0.1, y(Origin) + 0.5 * Erange), (x(Origin) + 0.1, y(Origin) + 0.5 * Erange))
ytick2 = Segment((x(Origin) - 0.1, y(Origin) + 0.25 * Erange), (x(Origin) + 0.1, y(Origin) + 0.25 * Erange))