A function G G G from D ⊆ R n D \subseteq \mathbb{R}^n D ⊆ R n into R n \mathbb{R}^n R n has a fixed point at p ⃗ ∈ D \vec{p} \in D p ∈ D iff
G ( p ⃗ ) = p ⃗ G(\vec{p}) = \vec{p} G ( p ) = p
A nonlinear system F ( x ⃗ ) = 0 ⃗ F(\vec{x}) = \vec{0} F ( x ) = 0 can be rewritten in fixed-point form x ⃗ = G ( x ⃗ ) \vec{x} = G(\vec{x}) x = G ( x ) , so that a solution of F ( x ⃗ ) = 0 ⃗ F(\vec{x}) = \vec{0} F ( x ) = 0 is a fixed point of G G G .
Rearranging F to G
For each coordinate function f i ( x ⃗ ) = 0 f_i(\vec{x}) = 0 f i ( x ) = 0 , solve for one variable in terms of the rest to isolate x i x_i x i , giving x i = g i ( x ⃗ ) x_i = g_i(\vec{x}) x i = g i ( x ) . Stacking the g i g_i g i ‘s gives G = ( g 1 , … , g n ) T G = (g_1, \ldots, g_n)^T G = ( g 1 , … , g n ) T . This choice is not unique: f i = 0 f_i = 0 f i = 0 can be solved for any variable, and different choices give different G G G ‘s with different convergence behavior under the fixed-point theorem.
Fixed-Point Iteration
Given G G G and a starting vector x ⃗ ( 0 ) \vec{x}^{(0)} x ( 0 ) , generate
x ⃗ ( k ) = G ( x ⃗ ( k − 1 ) ) , k ≥ 1 \vec{x}^{(k)} = G(\vec{x}^{(k-1)}), \quad k \geq 1 x ( k ) = G ( x ( k − 1 ) ) , k ≥ 1
Fixed-Point Theorem in n-space
Let D = { ( x 1 , x 2 , … , x n ) T ∣ a i ≤ x i ≤ b i , i = 1 , 2 , … , n } D = \{(x_1, x_2, \ldots, x_n)^T \mid a_i \leq x_i \leq b_i, \; i = 1, 2, \ldots, n\} D = {( x 1 , x 2 , … , x n ) T ∣ a i ≤ x i ≤ b i , i = 1 , 2 , … , n } for constants a i , b i a_i, b_i a i , b i , and let G : D → R n G: D \rightarrow \mathbb{R}^n G : D → R n be continuous with G ( x ⃗ ) ∈ D G(\vec{x}) \in D G ( x ) ∈ D whenever x ⃗ ∈ D \vec{x} \in D x ∈ D . Then G G G has a fixed point in D D D .
If, in addition, every component function of G G G has continuous partial derivatives and a constant K < 1 K < 1 K < 1 exists with
∣ ∂ g i ( x ⃗ ) ∂ x j ∣ ≤ K n , ∀ x ⃗ ∈ D , i , j = 1 , 2 , … , n \left|\frac{\partial g_i(\vec{x})}{\partial x_j}\right| \leq \frac{K}{n}, \quad \forall \vec{x} \in D, \; i, j = 1, 2, \ldots, n ∂ x j ∂ g i ( x ) ≤ n K , ∀ x ∈ D , i , j = 1 , 2 , … , n
then:
G G G has a unique fixed point p ⃗ ∈ D \vec{p} \in D p ∈ D .
Fixed-point iteration converges to p ⃗ \vec{p} p for any x ⃗ ( 0 ) ∈ D \vec{x}^{(0)} \in D x ( 0 ) ∈ D .
∥ x ⃗ ( k ) − p ⃗ ∥ ∞ ≤ K k 1 − K ∥ x ⃗ ( 1 ) − x ⃗ ( 0 ) ∥ ∞ \lVert \vec{x}^{(k)} - \vec{p} \rVert_\infty \leq \dfrac{K^k}{1-K} \lVert \vec{x}^{(1)} - \vec{x}^{(0)} \rVert_\infty ∥ x ( k ) − p ∥ ∞ ≤ 1 − K K k ∥ x ( 1 ) − x ( 0 ) ∥ ∞ for each k ≥ 1 k \geq 1 k ≥ 1 .
Accelerating Convergence
Computing x ⃗ ( k ) \vec{x}^{(k)} x ( k ) with the already-updated components x 1 ( k ) , … , x i − 1 ( k ) x_1^{(k)}, \ldots, x_{i-1}^{(k)} x 1 ( k ) , … , x i − 1 ( k ) in place of x 1 ( k − 1 ) , … , x i − 1 ( k − 1 ) x_1^{(k-1)}, \ldots, x_{i-1}^{(k-1)} x 1 ( k − 1 ) , … , x i − 1 ( k − 1 ) , rather than waiting for the full previous iterate, is the Gauss-Seidel method applied to fixed-point iteration. It often converges faster, but not always.
Example
f 1 ( x 1 , x 2 , x 3 ) = 3 x 1 − cos ( x 2 x 3 ) − 1 2 f 2 ( x 1 , x 2 , x 3 ) = x 1 2 − 81 ( x 2 + 0.1 ) 2 + sin x 3 + 1.06 f 3 ( x 1 , x 2 , x 3 ) = e − x 1 x 2 + 20 x 3 + 10 π − 3 3 \begin{aligned}
f_1(x_1, x_2, x_3) &= 3x_1 - \cos(x_2 x_3) - \tfrac{1}{2} \\
f_2(x_1, x_2, x_3) &= x_1^2 - 81(x_2 + 0.1)^2 + \sin x_3 + 1.06 \\
f_3(x_1, x_2, x_3) &= e^{-x_1 x_2} + 20x_3 + \tfrac{10\pi - 3}{3}
\end{aligned} f 1 ( x 1 , x 2 , x 3 ) f 2 ( x 1 , x 2 , x 3 ) f 3 ( x 1 , x 2 , x 3 ) = 3 x 1 − cos ( x 2 x 3 ) − 2 1 = x 1 2 − 81 ( x 2 + 0.1 ) 2 + sin x 3 + 1.06 = e − x 1 x 2 + 20 x 3 + 3 10 π − 3
For the coordinate functions f 1 , f 2 , f 3 f_1, f_2, f_3 f 1 , f 2 , f 3 , solving each f i = 0 f_i = 0 f i = 0 for x i x_i x i gives the fixed-point form x ⃗ = G ( x ⃗ ) \vec{x} = G(\vec{x}) x = G ( x ) .
Solving f 1 = 3 x 1 − cos ( x 2 x 3 ) − 1 2 = 0 f_1 = 3x_1 - \cos(x_2x_3) - \tfrac{1}{2} = 0 f 1 = 3 x 1 − cos ( x 2 x 3 ) − 2 1 = 0 for x 1 x_1 x 1 :
3 x 1 = cos ( x 2 x 3 ) + 1 2 ⟹ x 1 = g 1 ( x ⃗ ) = 1 3 cos ( x 2 x 3 ) + 1 6 3x_1 = \cos(x_2x_3) + \tfrac{1}{2} \implies x_1 = g_1(\vec{x}) = \tfrac{1}{3}\cos(x_2 x_3) + \tfrac{1}{6} 3 x 1 = cos ( x 2 x 3 ) + 2 1 ⟹ x 1 = g 1 ( x ) = 3 1 cos ( x 2 x 3 ) + 6 1
Solving f 2 = x 1 2 − 81 ( x 2 + 0.1 ) 2 + sin x 3 + 1.06 = 0 f_2 = x_1^2 - 81(x_2+0.1)^2 + \sin x_3 + 1.06 = 0 f 2 = x 1 2 − 81 ( x 2 + 0.1 ) 2 + sin x 3 + 1.06 = 0 for x 2 x_2 x 2 :
( x 2 + 0.1 ) 2 = 1 81 ( x 1 2 + sin x 3 + 1.06 ) ⟹ x 2 = g 2 ( x ⃗ ) = 1 9 x 1 2 + sin x 3 + 1.06 − 0.1 (x_2+0.1)^2 = \tfrac{1}{81}\left(x_1^2 + \sin x_3 + 1.06\right) \implies x_2 = g_2(\vec{x}) = \tfrac{1}{9}\sqrt{x_1^2 + \sin x_3 + 1.06} - 0.1 ( x 2 + 0.1 ) 2 = 81 1 ( x 1 2 + sin x 3 + 1.06 ) ⟹ x 2 = g 2 ( x ) = 9 1 x 1 2 + sin x 3 + 1.06 − 0.1
(taking the positive root, since the solution near the expected root has x 2 + 0.1 > 0 x_2 + 0.1 > 0 x 2 + 0.1 > 0 )
Solving f 3 = e − x 1 x 2 + 20 x 3 + 10 π − 3 3 = 0 f_3 = e^{-x_1x_2} + 20x_3 + \tfrac{10\pi - 3}{3} = 0 f 3 = e − x 1 x 2 + 20 x 3 + 3 10 π − 3 = 0 for x 3 x_3 x 3 :
20 x 3 = − e − x 1 x 2 − 10 π − 3 3 ⟹ x 3 = g 3 ( x ⃗ ) = − 1 20 e − x 1 x 2 − 10 π − 3 60 20x_3 = -e^{-x_1x_2} - \tfrac{10\pi - 3}{3} \implies x_3 = g_3(\vec{x}) = -\tfrac{1}{20}e^{-x_1 x_2} - \tfrac{10\pi - 3}{60} 20 x 3 = − e − x 1 x 2 − 3 10 π − 3 ⟹ x 3 = g 3 ( x ) = − 20 1 e − x 1 x 2 − 60 10 π − 3
Verifying a Fixed Point Exists
Take D = { ( x 1 , x 2 , x 3 ) T ∣ − 1 ≤ x i ≤ 1 } D = \{(x_1, x_2, x_3)^T \mid -1 \leq x_i \leq 1\} D = {( x 1 , x 2 , x 3 ) T ∣ − 1 ≤ x i ≤ 1 } .
G ( D ) ⊆ D G(D) \subseteq D G ( D ) ⊆ D : for x ⃗ ∈ D \vec{x} \in D x ∈ D , x 2 x 3 ∈ [ − 1 , 1 ] x_2 x_3 \in [-1, 1] x 2 x 3 ∈ [ − 1 , 1 ] , so cos ( x 2 x 3 ) ∈ [ cos 1 , 1 ] = [ 0.5403 , 1 ] \cos(x_2x_3) \in [\cos 1, 1] = [0.5403, 1] cos ( x 2 x 3 ) ∈ [ cos 1 , 1 ] = [ 0.5403 , 1 ] , giving
g 1 ( x ⃗ ) ∈ [ 1 3 ( 0.5403 ) + 1 6 , 1 3 ( 1 ) + 1 6 ] = [ 0.3468 , 0.5 ] g_1(\vec{x}) \in \left[\tfrac{1}{3}(0.5403) + \tfrac{1}{6},\ \tfrac{1}{3}(1) + \tfrac{1}{6}\right] = [0.3468,\ 0.5] g 1 ( x ) ∈ [ 3 1 ( 0.5403 ) + 6 1 , 3 1 ( 1 ) + 6 1 ] = [ 0.3468 , 0.5 ]
Similarly x 1 2 + sin x 3 + 1.06 ∈ [ 0.2185 , 2.9015 ] x_1^2 + \sin x_3 + 1.06 \in [0.2185, 2.9015] x 1 2 + sin x 3 + 1.06 ∈ [ 0.2185 , 2.9015 ] (using sin x 3 ∈ [ − 0.8415 , 0.8415 ] \sin x_3 \in [-0.8415, 0.8415] sin x 3 ∈ [ − 0.8415 , 0.8415 ] , x 1 2 ∈ [ 0 , 1 ] x_1^2 \in [0, 1] x 1 2 ∈ [ 0 , 1 ] ), so
g 2 ( x ⃗ ) ∈ [ − 0.0481 , 0.0893 ] g_2(\vec{x}) \in [-0.0481,\ 0.0893] g 2 ( x ) ∈ [ − 0.0481 , 0.0893 ]
and x 1 x 2 ∈ [ − 1 , 1 ] x_1 x_2 \in [-1, 1] x 1 x 2 ∈ [ − 1 , 1 ] gives e − x 1 x 2 ∈ [ 0.3679 , 2.7183 ] e^{-x_1x_2} \in [0.3679, 2.7183] e − x 1 x 2 ∈ [ 0.3679 , 2.7183 ] , so
g 3 ( x ⃗ ) ∈ [ − 0.6095 , − 0.4920 ] g_3(\vec{x}) \in [-0.6095,\ -0.4920] g 3 ( x ) ∈ [ − 0.6095 , − 0.4920 ]
All three ranges lie in [ − 1 , 1 ] [-1, 1] [ − 1 , 1 ] , so G ( x ⃗ ) ∈ D G(\vec{x}) \in D G ( x ) ∈ D whenever x ⃗ ∈ D \vec{x} \in D x ∈ D . Every g i g_i g i is continuous on D D D , so by the Fixed-Point Theorem , G G G has a fixed point in D D D .
Verifying Uniqueness
The Jacobian matrix of G G G is
J G ( x ⃗ ) = ( 0 − 1 3 x 3 sin ( x 2 x 3 ) − 1 3 x 2 sin ( x 2 x 3 ) x 1 9 x 1 2 + sin x 3 + 1.06 0 cos x 3 18 x 1 2 + sin x 3 + 1.06 1 20 x 2 e − x 1 x 2 1 20 x 1 e − x 1 x 2 0 ) J_G(\vec{x}) =
\begin{pmatrix}
0 & -\tfrac{1}{3}x_3\sin(x_2x_3) & -\tfrac{1}{3}x_2\sin(x_2x_3) \\[6pt]
\dfrac{x_1}{9\sqrt{x_1^2+\sin x_3+1.06}} & 0 & \dfrac{\cos x_3}{18\sqrt{x_1^2+\sin x_3+1.06}} \\[6pt]
\tfrac{1}{20}x_2 e^{-x_1x_2} & \tfrac{1}{20}x_1 e^{-x_1x_2} & 0
\end{pmatrix} J G ( x ) = 0 9 x 1 2 + sin x 3 + 1.06 x 1 20 1 x 2 e − x 1 x 2 − 3 1 x 3 sin ( x 2 x 3 ) 0 20 1 x 1 e − x 1 x 2 − 3 1 x 2 sin ( x 2 x 3 ) 18 x 1 2 + sin x 3 + 1.06 cos x 3 0
Bounding each entry of J G ( x ⃗ ) J_G(\vec{x}) J G ( x ) on D D D (using ∣ x i ∣ ≤ 1 |x_i| \leq 1 ∣ x i ∣ ≤ 1 , ∣ sin ( x 2 x 3 ) ∣ ≤ sin 1 = 0.8415 |\sin(x_2x_3)| \leq \sin 1 = 0.8415 ∣ sin ( x 2 x 3 ) ∣ ≤ sin 1 = 0.8415 , x 1 2 + sin x 3 + 1.06 ≥ 0.2185 = 0.4675 \sqrt{x_1^2+\sin x_3+1.06} \geq \sqrt{0.2185} = 0.4675 x 1 2 + sin x 3 + 1.06 ≥ 0.2185 = 0.4675 , e − x 1 x 2 ≤ e = 2.7183 e^{-x_1x_2} \leq e = 2.7183 e − x 1 x 2 ≤ e = 2.7183 ):
∣ ∂ g 1 ∂ x 2 ∣ , ∣ ∂ g 1 ∂ x 3 ∣ ≤ 0.2805 , ∣ ∂ g 2 ∂ x 1 ∣ ≤ 0.2377 , ∣ ∂ g 2 ∂ x 3 ∣ ≤ 0.1189 , ∣ ∂ g 3 ∂ x 1 ∣ , ∣ ∂ g 3 ∂ x 2 ∣ ≤ 0.1359 \left|\frac{\partial g_1}{\partial x_2}\right|, \left|\frac{\partial g_1}{\partial x_3}\right| \leq 0.2805,
\quad
\left|\frac{\partial g_2}{\partial x_1}\right| \leq 0.2377,
\quad
\left|\frac{\partial g_2}{\partial x_3}\right| \leq 0.1189,
\quad
\left|\frac{\partial g_3}{\partial x_1}\right|, \left|\frac{\partial g_3}{\partial x_2}\right| \leq 0.1359 ∂ x 2 ∂ g 1 , ∂ x 3 ∂ g 1 ≤ 0.2805 , ∂ x 1 ∂ g 2 ≤ 0.2377 , ∂ x 3 ∂ g 2 ≤ 0.1189 , ∂ x 1 ∂ g 3 , ∂ x 2 ∂ g 3 ≤ 0.1359
The largest of these is 0.2805 0.2805 0.2805 , so taking K = 0.85 K = 0.85 K = 0.85 (so K / n = K / 3 = 0.2833 ≥ 0.2805 K/n = K/3 = 0.2833 \geq 0.2805 K / n = K /3 = 0.2833 ≥ 0.2805 ) satisfies ∣ ( J G ( x ⃗ ) ) i j ∣ ≤ K / n \left|\left(J_G(\vec{x})\right)_{ij}\right| \leq K/n ( J G ( x ) ) ij ≤ K / n for all i , j i,j i , j on D D D , with K < 1 K < 1 K < 1 . By the Fixed-Point Theorem, G G G therefore has a unique fixed point in D D D , and fixed-point iteration converges to it for any x ⃗ ( 0 ) ∈ D \vec{x}^{(0)} \in D x ( 0 ) ∈ D .
Iterating to the Fixed Point
Starting from x ⃗ ( 0 ) = ( 0.1 , 0.1 , − 0.1 ) T ∈ D \vec{x}^{(0)} = (0.1, 0.1, -0.1)^T \in D x ( 0 ) = ( 0.1 , 0.1 , − 0.1 ) T ∈ D and applying x ⃗ ( k ) = G ( x ⃗ ( k − 1 ) ) \vec{x}^{(k)} = G(\vec{x}^{(k-1)}) x ( k ) = G ( x ( k − 1 ) ) :
k k k x 1 ( k ) x_1^{(k)} x 1 ( k ) x 2 ( k ) x_2^{(k)} x 2 ( k ) x 3 ( k ) x_3^{(k)} x 3 ( k ) 0 0.10000 0.10000 -0.10000 1 0.49998 0.00944 -0.52310 2 0.49999 0.00003 -0.52336 3 0.50000 0.00001 -0.52360
For k = 1 k=1 k = 1 : x 2 ( 0 ) x 3 ( 0 ) = − 0.01 x_2^{(0)}x_3^{(0)} = -0.01 x 2 ( 0 ) x 3 ( 0 ) = − 0.01 , so g 1 = 1 3 cos ( − 0.01 ) + 1 6 = 0.49998 g_1 = \tfrac{1}{3}\cos(-0.01) + \tfrac{1}{6} = 0.49998 g 1 = 3 1 cos ( − 0.01 ) + 6 1 = 0.49998 ; ( x 1 ( 0 ) ) 2 + sin x 3 ( 0 ) + 1.06 = 0.97017 \left(x_1^{(0)}\right)^2 + \sin x_3^{(0)} + 1.06 = 0.97017 ( x 1 ( 0 ) ) 2 + sin x 3 ( 0 ) + 1.06 = 0.97017 , so g 2 = 1 9 0.97017 − 0.1 = 0.00944 g_2 = \tfrac{1}{9}\sqrt{0.97017} - 0.1 = 0.00944 g 2 = 9 1 0.97017 − 0.1 = 0.00944 ; x 1 ( 0 ) x 2 ( 0 ) = 0.01 x_1^{(0)}x_2^{(0)} = 0.01 x 1 ( 0 ) x 2 ( 0 ) = 0.01 , so g 3 = − 1 20 e − 0.01 − 10 π − 3 60 = − 0.52310 g_3 = -\tfrac{1}{20}e^{-0.01} - \tfrac{10\pi-3}{60} = -0.52310 g 3 = − 20 1 e − 0.01 − 60 10 π − 3 = − 0.52310 .
The iterates converge to p ⃗ = ( 0.5 , 0 , − π 6 ) ≈ ( 0.5 , 0 , − 0.52360 ) \vec{p} = \left(0.5,\ 0,\ -\tfrac{\pi}{6}\right) \approx (0.5, 0, -0.52360) p = ( 0.5 , 0 , − 6 π ) ≈ ( 0.5 , 0 , − 0.52360 ) , which checks out directly: g 1 ( p ⃗ ) = 1 3 cos ( 0 ) + 1 6 = 0.5 g_1(\vec{p}) = \tfrac{1}{3}\cos(0) + \tfrac{1}{6} = 0.5 g 1 ( p ) = 3 1 cos ( 0 ) + 6 1 = 0.5 , g 2 ( p ⃗ ) = 1 9 0.25 − 0.5 + 1.06 − 0.1 = 1 9 0.81 − 0.1 = 0 g_2(\vec{p}) = \tfrac{1}{9}\sqrt{0.25 - 0.5 + 1.06} - 0.1 = \tfrac{1}{9}\sqrt{0.81} - 0.1 = 0 g 2 ( p ) = 9 1 0.25 − 0.5 + 1.06 − 0.1 = 9 1 0.81 − 0.1 = 0 , g 3 ( p ⃗ ) = − 1 20 e 0 − 10 π − 3 60 = − 0.05 − 0.4736 = − π 6 g_3(\vec{p}) = -\tfrac{1}{20}e^0 - \tfrac{10\pi-3}{60} = -0.05 - 0.4736 = -\tfrac{\pi}{6} g 3 ( p ) = − 20 1 e 0 − 60 10 π − 3 = − 0.05 − 0.4736 = − 6 π .