Fixed point and Newton
2026-04-06
\(G : \Omega \subset \mathbb{R}^n \rightarrow \mathbb{R}^m\) is Lipshitz if \[ \|G(x)-G(y)\| \leq \alpha \|x-y\| \] A contraction if \(G(\Omega) \subset \Omega\) and \(\alpha < 1\).
If
then \[ x^{k+1} = G(x^k) \rightarrow x^* \] where \(x^* = G(x^*)\) is a unique fixed point of \(G\).
For fixed point iteration with a contraction:
Why?
\[ G(x) = \frac{1}{4} \begin{bmatrix} x_1 - \cos(x_2) \\ x_2 - \sin(x_1) \end{bmatrix} \]
Claim: Contraction with \(\alpha = 1/2\).
Let \(e^k = x^k-x^*\). Then \[ e^{k+1} \approx G'(x^*) e^k \] Asymptotic convergence determined by \(\rho(G'(x^*))\)
Goal: Solve \(F(x) = 0\) for \(F : \mathbb{R}^n \rightarrow \mathbb{R}^n\)
Idea: Linearize about \(x^k\), set approximation to zero \[ 0 = \bar{F}(x^{k+1}) = F(x^k) + F'(x^k)(x^{k+1}-x^k) \] Iteration equation: \[ x^{k+1} = x^k - F'(x^k)^{-1} F(x^k) \]
\[F(x) = x-G(x) = \frac{1}{4} \begin{bmatrix} 3x_1 + \cos(x_2) \\ 3x_2 + \sin(x_1) \end{bmatrix}\]
What is the Jacobian \(F'(x)\)?
Newton has quadratic convergence:
\[ \|e^{k+1}\| = O(\|e^k\|^2) \]
For \(x \in [0,1]\) with \(x(0) = x(1) = 0\), temperature \(u(x,t)\) is \[ \frac{\partial u}{\partial t} = \frac{\partial^2 u}{\partial x^2} + \lambda \exp(u) \]
For \(x \in [0,1]\) with \(x(0) = x(1) = 0\), equilibrium \(u(x)\) satisfies \[ \frac{d^2 u}{d x^2} + \lambda \exp(u) = 0 \]
Estimate second derivative by centered difference: \[ \frac{d^2 u}{d x^2} = \frac{u(x-h)-2u(x)+u(x+h)}{h^2} + O(h^2) \] On regular mesh of points \(x_0, \ldots x_{N+1}\) with \(x_j = jh\), \(h=1/(N+1)\), discretized equation is: \[ \frac{u_{j+1} - 2u_j + u_{j-1}}{h^2} + \lambda \exp(u_j) = 0 \]
In math: \[ F(u) = -h^{-2} T u + \lambda \exp(u) = 0. \]
In code:
exp.(u))\[ F(u) = -h^{-2} T u + \lambda \exp(u) = 0. \] What is the Jacobian \(F'(u)\)?
The function \(\hat{u}(x) = \alpha x (1-x)\) satisfies
Try this as a starting point.
function newton_autocatalytic(α, N=100, nsteps=50, rtol=1e-8;
monitor=(u, resid)->nothing)
u_all = [α*x*(1-x) for x in range(0.0, 1.0, length=N+2)]
u = u_all[2:N+1]
for step = 1:nsteps
fu = Fautocatalytic(u)
resid = norm(fu)
monitor(u, resid)
if resid < rtol
u_all[2:N+1] = u
return u_all
end
u -= Jautocatalytic(u)\fu
end
error("Newton did not converge after $nsteps steps")
endfunction fp_autocatalytic(α, N=100, nsteps=500, rtol=1e-8;
monitor=(u, resid)->nothing)
u_all = [α*x*(1-x) for x in range(0.0, 1.0, length=N+2)]
u = u_all[2:N+1]
TN = SymTridiagonal(2.0*ones(N), -ones(N-1))
F = ldlt(TN)
for step = 1:nsteps
fu = Fautocatalytic(u)
resid = norm(fu)
monitor(u, resid)
if resid < rtol
u_all[2:N+1] = u
return u_all
end
u[:] = F\(exp.(u)/(N+1)^2)
end
error("Fixed point iteration did not converge after $nsteps steps (α=$α)")
end\[x_{k+1} = G(x_k), \quad G(x) = \gamma x (1-\tanh(x))\]