🎓 Lesson 4 D3

Gauss-Seidel Algorithm: Convergence Behavior & Limitations

The Gauss-Seidel algorithm is a step-by-step method to solve big systems of equations by repeatedly improving guesses until the answers stop changing much.

🎯 Learning Objectives

  • Explain the convergence criteria for Gauss-Seidel and diagnose failure in load flow cases
  • Calculate iteration counts and residual norms to quantify solution accuracy
  • Analyze how matrix conditioning and initial guess affect convergence rate
  • Apply relaxation (SOR) to accelerate convergence in poorly conditioned power system Jacobians
  • Compare Gauss-Seidel performance against Newton-Raphson for small-scale radial network load flow

📖 Why This Matters

In power system load flow analysis—critical for mining site microgrids, off-grid haul truck charging networks, and substation stability studies—the Gauss-Seidel method was historically the first practical iterative solver used in industry software. Though largely superseded by Newton-Raphson for large systems, understanding its behavior reveals why some real-time control algorithms (e.g., distributed battery state-of-charge balancing in mobile mining fleets) still use relaxed Gauss-Seidel variants: it’s memory-light, easily parallelizable per bus, and robust under noisy sensor inputs—key traits for edge-computing deployments on autonomous haulers.

📘 Core Principles

Gauss-Seidel relies on decomposing the coefficient matrix A into lower (L), diagonal (D), and upper (U) triangular parts: A = L + D + U. The iteration formula is x^(k+1) = D⁻¹(b − (L + U)x^k). Unlike Jacobi, it immediately incorporates updated values within the same iteration—improving efficiency but introducing dependency order sensitivity. Convergence hinges on spectral radius ρ(D⁻¹(L + U)) < 1; this fails when off-diagonal coupling dominates (e.g., weakly meshed mine grid with long overhead feeders), causing oscillations or divergence. Diagonal dominance—where each diagonal entry exceeds the sum of absolute off-diagonals in its row—is a sufficient (but not necessary) condition often violated in high-R/X ratio underground distribution networks.

📐 Iteration Update Formula

The Gauss-Seidel update computes each component x_i^(k+1) using all already-updated components from the current iteration and remaining components from the prior iteration. It's derived directly from the i-th equation in Ax = b.

Gauss-Seidel Iteration

x_i^{(k+1)} = \frac{1}{a_{ii}} \left( b_i - \sum_{j=1}^{i-1} a_{ij}x_j^{(k+1)} - \sum_{j=i+1}^{n} a_{ij}x_j^{(k)} \right)

Updates the i-th variable using latest available values for j < i and previous iteration values for j > i.

Variables:
SymbolNameUnitDescription
x_i^{(k+1)} Updated i-th variable per unit or SI unit (e.g., p.u., kV, MW) Solution estimate for variable i at iteration k+1
a_{ij} Coefficient matrix element dimensionless (p.u.) or Ω, S, etc. Element in row i, column j of system matrix A
b_i Right-hand side constant p.u. or physical unit (e.g., MW, MVAr) i-th entry of load vector b
Typical Ranges:
Radial mine distribution network (10–20 buses): ρ ∈ [0.4, 0.85]
Meshed substation interconnection: ρ ∈ [0.75, 0.98] (often unstable without SOR)

💡 Worked Example

Problem: Solve the 2×2 system: 4x₁ − x₂ = 8; −x₁ + 4x₂ = 7. Use initial guess x⁽⁰⁾ = [0, 0]ᵀ and perform two iterations.
1. Step 1: Rearrange equations for explicit x₁ and x₂: x₁ = (8 + x₂)/4; x₂ = (7 + x₁)/4
2. Step 2: First iteration (k=0): x₁⁽¹⁾ = (8 + 0)/4 = 2.0; x₂⁽¹⁾ = (7 + 2.0)/4 = 2.25
3. Step 3: Second iteration (k=1): x₁⁽²⁾ = (8 + 2.25)/4 = 2.5625; x₂⁽²⁾ = (7 + 2.5625)/4 = 2.3906
Answer: After two iterations: x ≈ [2.56, 2.39]ᵀ. Exact solution is [3, 2.5]ᵀ; error norm ||x⁽²⁾ − x*||₂ ≈ 0.47 — showing progressive improvement.

🏗️ Real-World Application

At Newmont’s Boddington Mine (Western Australia), a legacy SCADA-based reactive power optimization module used Gauss-Seidel with 1.2 relaxation (SOR) to update VAR dispatch across 12 radial feeders supplying crushing stations. When a 33-kV cable fault caused sudden topology change (reducing diagonal dominance), the solver diverged after 17 iterations—triggering automatic fallback to pre-fault settings. Post-event analysis revealed the Jacobian’s condition number jumped from 18 to 214; engineers added a diagonal loading term (εI) to restore convergence without hardware upgrades—a low-cost fix validated in ETAP v20.1.2 simulations.

📋 Case Connection

📋 Industrial Plant Power Design: Aluminum Smelter Load Flow Optimization

Severe voltage sag during anode changing cycles causing PLC trip cascades

📋 Hospital Power Systems: Emergency Generator Load Flow Validation

Voltage collapse observed during full transfer test due to motor inrush overwhelming AVR response

📚 References