Chapter 28
22 min read
Section 240 of 353

Applications: Electrostatics

Laplace's Equation

Learning Objectives

By the end of this section, you will be able to:

  1. Explain why the electric potential VV satisfies Laplace's equation 2V=0\nabla^{2} V = 0 in every charge-free region.
  2. Translate physical statements (“this metal is at +100+100 V”, “infinity is grounded”) into the right Dirichlet boundary conditions.
  3. Interpret the mean-value property as the physical intuition of electrostatic equilibrium, and Earnshaw's theorem as its consequence.
  4. Solve a 2D Laplace problem numerically by Jacobi relaxation in plain Python and as a single 3×3 convolution in PyTorch.
  5. Apply these ideas to capacitors, shielding, conductors near point charges, and image charges.
Why this matters. Laplace's equation is not an exotic PDE you meet once in a textbook and forget — it is the equation a capacitor satisfies, the equation an electron microscope's focusing column satisfies, the equation a grounded shield satisfies, and (because the discrete update is a tiny convolution) the equation deep learning hardware is already optimised to solve.

The Big Picture

Imagine you stretch a soap film across a wire loop that is bent into the shape of two metal plates held at different heights. The film will droop and bulge until it reaches a state of perfect tension equilibrium: no part of the film can be pulled higher or lower without doing work against the rest of the film. That equilibrium shape is a harmonic function. It satisfies 2h=0\nabla^{2} h = 0.

Electrostatics in a charge-free region is the same story with electrons instead of soap. The wire loop becomes a set of metal electrodes (the “boundary”). The height of the film becomes the electric potential V(x,y,z)V(x,y,z). Tension equilibrium becomes Coulomb equilibrium. Everywhere away from real charges, VV is the smoothest function that matches the boundary. That is exactly Laplace's equation with Dirichlet conditions.

Three sentence intuition. Charges pin the potential at certain places. Empty space cannot create or destroy potential, so it can only average the values around it. The unique smooth in-between is the harmonic function we call VV.

From Coulomb to Laplace

What is the Electric Potential?

A single point charge qq creates the radial electric field E(r)=14πε0qr2r^\mathbf{E}(\mathbf{r}) = \dfrac{1}{4\pi\varepsilon_{0}} \dfrac{q}{r^{2}} \hat{\mathbf{r}}. The electric potential at a point is the work per unit charge required to bring a tiny test charge from infinity to that point against this field. For a single point charge it is V(r)=14πε0qrV(\mathbf{r}) = \dfrac{1}{4\pi\varepsilon_{0}} \dfrac{q}{r}. Two facts make VV central:

  • The field is its gradient. E=V\mathbf{E} = -\nabla V. So a potential map of a region implies the entire vector field.
  • Potential is a scalar. Adding contributions from many charges is just adding numbers; vectors would need component-by-component bookkeeping. That is why physicists solve for VV first, then differentiate to get E\mathbf{E}.

Deriving Laplace's Equation

Start with Gauss's law in differential form, E=ρε0\nabla \cdot \mathbf{E} = \dfrac{\rho}{\varepsilon_{0}}, where ρ\rho is the local charge density. Substitute E=V\mathbf{E} = -\nabla V:

(V)  =  ρε02V  =  ρε0.\nabla \cdot \big( -\nabla V \big) \;=\; \dfrac{\rho}{\varepsilon_{0}} \quad\Longrightarrow\quad \nabla^{2} V \;=\; -\dfrac{\rho}{\varepsilon_{0}}.

This is Poisson's equation. In any region of space with ρ=0\rho = 0 — the air between capacitor plates, the vacuum around a charged sphere, the dielectric inside a coaxial cable — it collapses to 2V=0\nabla^{2} V = 0, Laplace's equation.

SettingPDEWhat is happening physically
Region containing charges∇²V = -ρ/ε₀ (Poisson)Charge density sources/sinks the potential.
Charge-free region∇²V = 0 (Laplace)V is a harmonic function fixed only by boundary data.
On a conductor at restV = constantFree charges have already moved to make E_tangential = 0.
At infinity (isolated system)V → 0All field lines terminate; no work is needed to escape.
Reading tip. The minus sign in 2V=ρ/ε0\nabla^{2} V = -\rho/\varepsilon_{0}is the convention that makes positive charges “push V up” like a Gaussian bump. Section 28.5 already explored Poisson directly; here we restrict ourselves to ρ=0\rho = 0 and exploit harmonicity.

Boundary Conditions in Electrostatics

Laplace's equation on its own has infinitely many solutions. What pins down a unique VV is the boundary data. In electrostatics the data come from three physical sources:

  1. Dirichlet (value). A metal electrode is an equipotential. Specifying which voltage you connected each conductor to gives V=VkV = V_{k} on its surface.
  2. Neumann (normal derivative). A perfectly insulating wall with no surface charge enforces V/n=0\partial V / \partial n = 0: no field lines cross it. More generally a surface charge density σ\sigma sets ε0V/n=σ\varepsilon_{0} \partial V/\partial n = -\sigma.
  3. Decay at infinity. For isolated systems we ask V0V \to 0 as rr \to \infty.

Once you have written down (i) the region, (ii) the value of VV on every piece of its boundary, and (iii) the decay condition at infinity if relevant, the existence-and-uniqueness theorem for Laplace's equation says exactly one harmonic VV fits. That is what makes the problem well-posed and what makes numerical relaxation reliable.


The Harmonic-Function Intuition

Mean-Value Property — The Soul of Electrostatics

If VV is harmonic in a region, then at any point r0\mathbf{r}_{0} inside it,

V(r0)  =  1BB(r0,R)VdS,\displaystyle V(\mathbf{r}_{0}) \;=\; \frac{1}{|\partial B|}\int_{\partial B(\mathbf{r}_{0},R)} V \, dS,

the average of VV over any sphere centered at r0\mathbf{r}_{0} that lies entirely in the region. In one English sentence: a point's potential is the average of the potentials surrounding it. There can be no isolated bumps, no isolated dips. That is the physical meaning of charge-free equilibrium: in empty space, your potential is whatever your neighbours' potentials force you to be, on average.

The Discrete Mean-Value Property

Hover any interior cell. Its value equals the average of its four orthogonal neighbors — the very definition of a discrete harmonic function. This is what Laplace's equation looks like at finite resolution.

100.0
0.0
0.0
0.0
0.0
100.0
42.9
18.8
7.1
0.0
100.0
52.7
25.0
9.8
0.0
100.0
42.9
18.8
7.1
0.0
100.0
0.0
0.0
0.0
0.0
V[2,2] = 25.000   avg of 4 neighbors = 25.000

Earnshaw's Theorem

Because a harmonic function has no interior maxima or minima, an electrostatic potential cannot trap a charged particle in stable equilibrium using only electrostatic forces. Imagine a point of stable equilibrium for a positive test charge: it would have to sit at a local minimum of VV, surrounded by higher VV in every direction. The mean-value property forbids it. This is Earnshaw's theorem, and it is why ion traps, atom traps, and magnetic levitation all use time-varying or magnetic fields to escape the limitation.

Analogy: a flat lake. The height of a calm lake satisfies Laplace's equation locally. Push the lake down at the shoreline (a Dirichlet condition) and the surface bends smoothly; you can never produce a still hill in the middle without piling up water (a source). Same equation, same intuition.

Interactive 2D Laplace Solver

Click and drag on the canvas to paint electrodes at the chosen voltage. Press Start relax and watch the field smooth itself out under the discrete mean-value update. Toggle equipotentials and field arrows to see E=V\mathbf{E} = -\nabla V emerge from the gradient of the potential.

Interactive 2D Laplace Solver

Each interior pixel relaxes toward the average of its four neighbors. Watch the discrete mean-value property fill the box with the smoothest possible potential. Click and drag on the canvas to paint electrodes at the chosen voltage. The arrows are E=V\mathbf{E} = -\nabla V; the thin curves are equipotentials.

Iteration: 0
Max change: 0.0000

Things to try:

  • Paint a long horizontal bar at +100 V and another at -100 V below it. You have built a parallel-plate capacitor — the field arrows should run from + to - in vertical lines.
  • Add a small grounded loop (V = 0) inside the capacitor. The arrows curve around it: this is electrostatic shielding and it is the working principle of a Faraday cage.
  • Place two equal-and-opposite point electrodes (use the “dipole” preset). Look at the characteristic figure-eight equipotentials — the same picture you would draw by hand for two opposite point charges.

3D Potential Landscape

Plotting V(x,y)V(x,y) as a height map turns the abstract PDE into a tangible terrain. The electric field E=V\mathbf{E} = -\nabla V is then the direction a marble would roll down. The mean-value property says away from any charge, the terrain has no hills or pits — only saddles and smooth slopes.

3D Potential Landscape

The potential of two point charges plotted as a 3D height field. Where the surface is smooth and locally bowl-shaped or saddle-shaped (i.e. away from charges), it satisfies 2V=0\nabla^{2} V = 0. The mean-value property says any interior point sits at the average height of a small circle around it — a harmonic surface has no bumps.

Watch what happens at the charge locations themselves: the surface spikes upward over a positive charge and plunges downward over a negative one. At those exact points Laplace's equation fails — Poisson takes over — because charge density is nonzero. Everywhere else, the surface is harmonic.


Numerical Walkthrough by Hand

Before we trust any solver, let us do one by hand. Take a 5×5 grid with the left column held at +100 V and the right column held at 0 V; top and bottom rows grounded too. There are 3×3=93 \times 3 = 9 unknown interior values. Each Jacobi sweep replaces every interior cell by the average of its four neighbours from the previous sweep.

Click to expand: full 5×5 by-hand relaxation

Iteration 0 (initial guess): set the interior to zero. Only the left/right plates and the grounded rails carry data.

[[100,  0,  0,  0,  0],
 [100,  0,  0,  0,  0],
 [100,  0,  0,  0,  0],
 [100,  0,  0,  0,  0],
 [100,  0,  0,  0,  0]]

Iteration 1. Compute, for every interior (i,j)(i,j),

Vi,j(1)  =  14(Vi1,j(0)+Vi+1,j(0)+Vi,j1(0)+Vi,j+1(0)).V_{i,j}^{(1)} \;=\; \tfrac{1}{4} \Big( V_{i-1,j}^{(0)} + V_{i+1,j}^{(0)} + V_{i,j-1}^{(0)} + V_{i,j+1}^{(0)} \Big).

Only cells adjacent to the +100 V plate see any non-zero neighbours, so only column 1 of the interior updates:

[[100,  0,    0,  0,  0],
 [100, 25,    0,  0,  0],
 [100, 25,    0,  0,  0],
 [100, 25,    0,  0,  0],
 [100,  0,    0,  0,  0]]

Iteration 2. Now the 25's ripple inward; the corners of column 1 average against the grounded rail too:

[[100,  0.00,  0.00, 0, 0],
 [100, 31.25,  6.25, 0, 0],
 [100, 37.50,  6.25, 0, 0],
 [100, 31.25,  6.25, 0, 0],
 [100,  0.00,  0.00, 0, 0]]

Iteration 3. Information has now reached column 3:

[[100,  0.00,  0.00, 0.00, 0],
 [100, 35.94,  9.38, 1.56, 0],
 [100, 42.19, 12.50, 1.56, 0],
 [100, 35.94,  9.38, 1.56, 0],
 [100,  0.00,  0.00, 0.00, 0]]

Keep iterating. After about 48 sweeps every cell has settled to within 10610^{-6} and you get the converged solution:

[[100,  0.000,  0.000,  0.000, 0],
 [100, 42.857, 18.750,  7.143, 0],
 [100, 52.679, 25.000,  9.821, 0],
 [100, 42.857, 18.750,  7.143, 0],
 [100,  0.000,  0.000,  0.000, 0]]

Sanity check — the mean-value property. At the center cell (i,j)=(2,2)(i,j)=(2,2):

V2,2  =  14(V1,2+V3,2+V2,1+V2,3)  =  14(18.75+18.75+52.679+9.821)  =  25.000.V_{2,2} \;=\; \tfrac{1}{4}\big( V_{1,2} + V_{3,2} + V_{2,1} + V_{2,3} \big) \;=\; \tfrac{1}{4}\big(18.75 + 18.75 + 52.679 + 9.821\big) \;=\; 25.000.

The middle of the grid genuinely is the four-neighbour average. That is the discrete fingerprint of 2V=0\nabla^{2} V = 0: every interior cell satisfies it, exactly, at convergence.

Sanity check — symmetry. The problem is symmetric under reflection top-to-bottom and the solution must be too. Rows 1 and 3 are identical and row 2 is the special middle row — that is why the value at (2,1)(2,1) is the largest in column 1 (closest to the +100 V plate from the center).

Sanity check — physical sign. Voltages fall off as you move from the +100 V plate toward the 0 V plate, with the fastest drop near the grounded rails. That is exactly what your everyday intuition for a capacitor leaking energy out through grounded walls demands.


Solving Laplace in Plain Python

Here is the same problem in NumPy. The structure of the code mirrors the by-hand walkthrough above one for one, so use the collapsible section as a unit test against the printed output.

Jacobi relaxation for Laplace's equation
🐍laplace_jacobi.py
1Import NumPy

NumPy gives us fast vectorized arrays. Our grid V is a small 2D array; the relaxation is plain element-wise math.

3Why a 5×5 grid?

Small enough to print by hand and verify every cell. The boundary cells (row/column 0 and 4) act as our Dirichlet conditions; only the 3×3 interior is free to update.

EXAMPLE
Interior cells = (i,j) with 1 ≤ i,j ≤ 3 — that's 9 unknowns.
4Allocate V

Start every cell at 0 V. The interior values are wrong, but the boundary will be set next; relaxation will fix the interior.

EXECUTION STATE
V =
5×5 zeros
5Left plate at +100 V

V[:, 0] selects column 0 — the entire left edge — and pins it at 100 V. This is a Dirichlet boundary condition: the potential is prescribed, never updated by relaxation.

EXAMPLE
V[:, 0] = 100 → column 0 becomes [100, 100, 100, 100, 100].
6Right plate at 0 V

Same idea for the right edge. Together the two columns model an idealised parallel-plate capacitor. Top and bottom rows stay 0 from the np.zeros initialisation, giving us grounded rails.

10Outer loop: Jacobi iterations

Up to 2000 sweeps. We break early when the field has stopped moving. Each sweep replaces every interior cell with the average of its four neighbours from the PREVIOUS sweep — that is what 'Jacobi' means.

11Snapshot the old grid

V.copy() freezes the values from the previous iteration. We write the new values into V_new and only swap in at the bottom of the loop. Without this copy, the update would be Gauss–Seidel (which is faster, but a different algorithm).

12Loop over interior i

We start at i=1 and stop at N-2 (=3) because rows 0 and 4 are fixed by the Dirichlet boundary. Touching them would corrupt the BCs.

13Loop over interior j

Same reasoning for columns: only the inner 3×3 block is updated.

14The Laplace update — the heart of everything

This single expression is the discrete form of ∇²V = 0. Set the second derivative ∂²V/∂x² ≈ V[i,j+1] − 2 V[i,j] + V[i,j−1] equal to zero (plus the same in y), and solve for V[i,j]: you get exactly this 4-neighbour average. The mean-value property of harmonic functions, written in code.

EXAMPLE
Iter 1 at (1,1): 0.25 × (V[2,1] + V[0,1] + V[1,2] + V[1,0]) = 0.25 × (0 + 0 + 0 + 100) = 25.
LOOP TRACE · 3 iterations
Iter 1, cell (1,1)
neighbours = [0, 0, 0, 100]
V_new[1,1] = 25.0
Iter 1, cell (2,2)
neighbours = [0, 0, 0, 0]
V_new[2,2] = 0.0
After ~48 iters, (2,2)
neighbours = [18.75, 18.75, 42.857, 9.821]
V_new[2,2] = 25.0
19Compute the residual

diff is the largest change anywhere in the grid. When it falls below 1e-6 the iteration has converged: every interior cell already equals the average of its neighbours, which means ∇²V = 0 numerically.

20Promote the new grid

Swap V_new in as the next V. This is why the .copy() above mattered — we needed the old V intact while computing V_new.

21Early exit

If we are converged, stop. For this 5×5 plate problem you converge in roughly 48 sweeps; for a 100×100 grid the same algorithm needs thousands. That is why people use better solvers (Gauss–Seidel, SOR, multigrid).

24Print the answer

The converged interior is symmetric top-to-bottom and falls off from the +100 plate to 0 on the right and on the grounded rails. Sample value: V[2,2] = 25.000.

EXAMPLE
Converged grid:
[[100,  0,    0,    0,    0  ],
 [100, 42.9, 18.8, 7.1,  0  ],
 [100, 52.7, 25.0, 9.8,  0  ],
 [100, 42.9, 18.8, 7.1,  0  ],
 [100,  0,    0,    0,    0  ]]
12 lines without explanation
1import numpy as np
2
3# A 5x5 box. Left side held at +100 V, right side at 0 V (parallel plates).
4# Top and bottom rails are grounded too. We want V everywhere else.
5N = 5
6V = np.zeros((N, N))
7V[:, 0] = 100.0      # left plate
8V[:, -1] = 0.0       # right plate
9
10# Jacobi relaxation: each interior cell is replaced by the AVERAGE
11# of its four neighbours -- the discrete form of Laplace's equation.
12for it in range(2000):
13    V_new = V.copy()
14    for i in range(1, N - 1):
15        for j in range(1, N - 1):
16            V_new[i, j] = 0.25 * (
17                V[i + 1, j] + V[i - 1, j] +
18                V[i, j + 1] + V[i, j - 1]
19            )
20    diff = np.max(np.abs(V_new - V))
21    V = V_new
22    if diff < 1e-6:
23        break
24
25print(f"Converged in {it + 1} iterations")
26print(V.round(3))

Two things to notice. First, every interior cell at convergence equals the average of its four neighbours — the discrete mean-value property, written in code. Second, convergence is slow: a 100×100 grid would need tens of thousands of sweeps. The same idea expressed as a single convolution is much faster on modern hardware.


Laplace as a Convolution in PyTorch

The 4-neighbour average (Vi+1,j+Vi1,j+Vi,j+1+Vi,j1)/4(V_{i+1,j} + V_{i-1,j} + V_{i,j+1} + V_{i,j-1})/4 is exactly what you get from convolving the grid with the 3×3 kernel

K  =  (0140140140140).K \;=\; \begin{pmatrix} 0 & \tfrac{1}{4} & 0 \\ \tfrac{1}{4} & 0 & \tfrac{1}{4} \\ 0 & \tfrac{1}{4} & 0 \end{pmatrix}.

This is a beautiful and useful coincidence. A solver that takes one CPU pass per cell becomes a single GPU convolution per sweep — the same primitive that powers convolutional neural networks.

Laplace relaxation as a 3×3 convolution
🐍laplace_conv.py
1Import torch

We will reuse autograd machinery — convolutions, masks, GPU dispatch — to do exactly the same Laplace relaxation, but vectorised over the whole grid in one call.

2Import F

torch.nn.functional gives us conv2d. The trick of this whole section is that the discrete Laplace update IS a 3×3 convolution.

5Grid as a 4D tensor

PyTorch conv2d wants tensors shaped (N, C, H, W). We pretend the grid is a single 1-channel image: shape (1, 1, 5, 5). The math is the same; we just have to keep the shape happy.

EXECUTION STATE
V.shape = (1, 1, 5, 5)
V.dtype = float32
6Set left plate to 100 V

Ellipsis indexing V[..., :, 0] writes into column 0 of the (H, W) plane regardless of batch/channel — a clean way to pin one boundary.

9Build the fixed-mask

Where mask is 0, the cell value never changes during relaxation. Where mask is 1 (the interior), the cell is replaced by the average of its neighbours each sweep.

EXAMPLE
mask is 0 on all four edges of the 5×5; mask is 1 on the inner 3×3.
14The convolution kernel

Each value in the output equals 0.25 × (up + down + left + right). The center weight is 0.0 because the cell does NOT contribute to its own update — that is what makes this Jacobi (full replacement) rather than Gauss–Seidel.

EXECUTION STATE
kernel.shape = (1, 1, 3, 3)
18Iteration loop

We do at most 2000 sweeps. On a GPU each sweep is essentially free for grids up to a few thousand pixels per side — this is why convolutional iterative solvers are now standard in computational physics.

19conv2d does ALL cells at once

F.conv2d(V, kernel, padding=1) computes, for every (i, j), the 4-neighbour average. The padding=1 zero-pads the input by one cell on each side; this is fine because the mask line below will overwrite all those padded boundary values with the true Dirichlet data.

LOOP TRACE · 2 iterations
Sweep 1, V_avg[0,0,1,1]
neighbours = [V[0,1], V[2,1], V[1,2], V[1,0]] = [0, 0, 0, 100]
V_avg[1,1] = 25.0
Sweep ~49, V_avg[0,0,2,2]
neighbours = [18.75, 18.75, 42.857, 9.821]
V_avg[2,2] = 25.0
20Blend with the mask

V_avg * mask zeros out the boundary cells in the averaged grid; V * (1 - mask) keeps the original boundary values. Sum = updated interior + untouched boundary. One vectorised line replaces the explicit if-checks of the NumPy version.

EXAMPLE
V_next[1,1] = 25 * 1 + V[1,1] * 0 = 25  (interior).  V_next[0,0] = 0 * 0 + V[0,0] * 1 = V[0,0] (boundary).
21Convergence check

Same residual idea as the NumPy version: stop when the largest change drops below 1e-6. The convergence rate is identical because the math is identical — we just executed it as a tensor op.

23Print and verify

V[0,0,2,2] should be 25.0000 — exactly what the by-hand NumPy run produced. Same PDE, same boundary conditions, same answer, computed with one conv2d call per sweep.

EXAMPLE
Final V[0,0,2,2] = 24.9999961... → matches NumPy to 1e-6.
17 lines without explanation
1import torch
2import torch.nn.functional as F
3
4# Same parallel-plate problem. Now the 4-neighbour average is a CONVOLUTION.
5N = 5
6V = torch.zeros(1, 1, N, N)
7V[..., :, 0] = 100.0
8
9# Mask = 1 where the cell is free to update, 0 where it is held fixed.
10mask = torch.ones_like(V)
11mask[..., :, 0] = 0      # left plate fixed
12mask[..., :, -1] = 0     # right plate fixed
13mask[..., 0, :] = 0      # top rail fixed
14mask[..., -1, :] = 0     # bottom rail fixed
15
16# The 4-neighbour averaging kernel.
17kernel = torch.tensor([[[[0.0, 0.25, 0.0],
18                         [0.25, 0.0, 0.25],
19                         [0.0, 0.25, 0.0]]]])
20
21for it in range(2000):
22    V_avg  = F.conv2d(V, kernel, padding=1)   # one Jacobi sweep
23    V_next = V_avg * mask + V * (1 - mask)    # keep BCs untouched
24    if (V_next - V).abs().max() < 1e-6:
25        break
26    V = V_next
27
28print(f"Converged in {it + 1} iterations, V[0,0,2,2] = {float(V[0,0,2,2]):.4f}")

On a small 5×5 grid you will not see a speed difference, but the trick scales beautifully: for a 1024×1024 grid, one F.conv2d call replaces a million Python loop iterations. The PDE has not changed; only the runtime has.


The Method of Images

Sometimes you can solve Laplace's equation without solving it — by exploiting uniqueness. Consider a point charge +q+q sitting at distance dd above a large grounded conducting plane. We want VV in the upper half-space, where there are no other charges, with the boundary condition V=0V = 0 on the plane and V0V \to 0 at infinity.

Trick: imagine there is no conductor at all and instead place an image charge q-q at distance dd below the plane. The combined potential from these two point charges,

V(x,y,z)  =  14πε0(qr+qr),V(x,y,z) \;=\; \dfrac{1}{4\pi\varepsilon_{0}} \left( \dfrac{q}{r_{+}} - \dfrac{q}{r_{-}} \right),

is harmonic in the upper half-space (each 1/r1/r term is harmonic away from its source) and is exactly zero on the symmetry plane z=0z=0 by cancellation. By uniqueness, this is the answer in the upper half-space; the conductor below just happens to support the surface charge needed to maintain it.

The method of images is the closed-form cousin of the numerical solver above. The PDE is the same; the only difference is that here the boundary geometry is simple enough that the answer can be written as the superposition of a handful of 1/r1/r potentials. For more general shapes you reach for the relaxation solver you just wrote.


Real-World Applications

Device / phenomenonBoundary dataWhat you solve
Parallel-plate capacitorTwo conductors at ±V₀, vacuum betweenLaplace in the gap → linear V(x) → uniform E.
Coaxial cableInner conductor at +V, outer shield groundedLaplace in the dielectric → V(r) ∝ ln(b/r) → 1/r field.
Faraday cage / shielded electronicsCage at one fixed potential, charges outsideInside the cage, Laplace forces V to be constant → E = 0 inside (shielding).
Electron microscope focusing columnRing electrodes at specified voltagesLaplace gives the field map → electron trajectories from Newton + Lorentz.
MEMS / capacitive sensorMoving conductor near a fixed plateRe-solve Laplace each frame → capacitance vs. position.
Semiconductor device simulationDoping & contacts as Dirichlet/Neumann dataPoisson in doped regions, Laplace in undoped regions, repeated.
Modern twist. In computational physics, neural networks are now trained to approximate the Laplace operator itself — physics-informed networks (PINNs) and neural operators — and their loss function is literally 2Vθ2\|\nabla^{2} V_{\theta}\|^{2} on collocation points plus a boundary-data term. The 3×3 kernel you saw earlier is the same kernel a PINN learns from scratch.

Summary

  1. In every charge-free region the electric potential satisfies 2V=0\nabla^{2} V = 0; this follows from Gauss's law and E=V\mathbf{E} = -\nabla V.
  2. Conductors give Dirichlet data, perfect insulators give Neumann data, and isolated systems require V0V \to 0 at infinity. These together make the problem well-posed.
  3. The mean-value property is the physical heart of the equation: every potential is the average of the surrounding potentials. From this follows the maximum principle and Earnshaw's theorem.
  4. The discrete update Vi,j14(Vi±1,j+Vi,j±1)V_{i,j} \leftarrow \tfrac{1}{4}(V_{i\pm 1,j} + V_{i,j\pm 1}) is mean-value at finite resolution and is a 3×3 convolution kernel — the bridge between PDEs and modern tensor hardware.
  5. For symmetric geometries, the method of images gives closed-form answers; for general geometries, relaxation in NumPy or convolution in PyTorch gives reliable numerical ones.
One sentence to remember. Empty space cannot create potential; it can only average the potential of its neighbours. That single statement, repeated at every interior point, is Laplace's equation in electrostatics.
Loading comments...