Equilibria of the Lorenz system
We prove the existence of the equilibria of the Lorenz system
\[\begin{aligned} \dot{u}^{(1)} &= \sigma (u^{(2)} - u^{(1)}), \\ \dot{u}^{(2)} &= u^{(1)}(\rho - u^{(3)}) - u^{(2)}, \\ \dot{u}^{(3)} &= u^{(1)} u^{(2)} - \beta u^{(3)}, \end{aligned} \qquad (\sigma, \rho, \beta) = (10, 28, 8/3).\]
The unknowns are a point of $\mathbb{R}^3$ rather than a number, which is the simplest possible setting in which to meet the library's cartesian spaces.
Proves the equilibria of the Lorenz system.
Compares the Radii Polynomial Theorem in its first- and second-order form: three bounds, $Y$, $Z_1$ and $Z_2$.
Involves an unknown with components: ScalarSpace, ^, component and the inner/outer split of NormedCartesianSpace.
Assumes A first validation.
Step 1: Formulation
The equilibria are the zeros of the vector field itself, $F(u) = 0$ with $u = (u^{(1)}, u^{(2)}, u^{(3)}) \in \mathbb{R}^3$. We take $\mathscr{X} = \mathbb{R}^3$ with the norm $\|u\|_{\mathscr{X}} = \max\left(|u^{(1)}|, |u^{(2)}|, |u^{(3)}| \right)$.
In the library, $\mathbb{R}^3$ is constructed via ScalarSpace()^3: a CartesianPower of the space of plain numbers ScalarSpace. A Sequence in that space just wraps a 3-coefficient vector and a LinearOperator acting on them wraps a 3-by-3 matrix.
using RadiiPolynomial, LinearAlgebrafunction F(u, params) σ, ρ, β = params u1, u2, u3 = u[1], u[2], u[3] return Sequence(space(u), [σ*(u2 - u1), u1*(ρ - u3) - u2, u1*u2 - β*u3])endfunction DF(u, params) σ, ρ, β = params u1, u2, u3 = u[1], u[2], u[3] return LinearOperator(space(u), space(u), [ -σ σ zero(u1) ρ - u3 -one(u1) -u1 u2 u1 -β ])endThe norm is prescribed separately, and the maximum of the components absolute value is embodied by $\ell^\infty$.
X = ScalarSpace()^3X_norm = EllInf()Step 2: Approximation (floating-point arithmetic)
The approximate zero
params = (10.0, 28.0, 8/3)u_bar, converged = newton(u -> (F(u, params), DF(u, params)), Sequence(X, [8.0, 8.0, 26.0]))(Sequence(ScalarSpace()³, [8.48528137423857, 8.48528137423857, 27.0]), true)The components are reachable with component, which is how to retrieve a block of a cartesian unknown:
component(u_bar, 3)Sequence in 𝕂 with coefficients SubArray{Float64, 1, Vector{Float64}, Tuple{UnitRange{Int64}}, true}:
27.0The approximate inverse
$DF(\num)$ is a $3 \times 3$ matrix, so A is simply an approximate matrix inverse.
A = inv(DF(u_bar, params))Step 3: Bounds (interval arithmetic)
$\beta = 8/3$ is not a representable floating-point number, so the parameters must be enclosed rather than converted. interval(8)/interval(3) produces the tightest interval containing $8/3$; writing interval(8/3) instead would enclose the double nearest $8/3$, which is a different real number.
params_i = (interval(10), interval(28), interval(8)/interval(3))u_i = interval(u_bar)A_i = interval(A)Y = norm(A_i * F(u_i, params_i), X_norm)[0.0, 1.67477e-15]_comFirst-order validation
The first-order Radii Polynomial Theorem needs a bound on $\|I - A DF(u)\|$ over an entire ball. As in A first validation, interval arithmetic supplies it by making every component an interval of radius $R$ and evaluate DF there.
R = 10sup(Y)u_R = Sequence(X, interval.(coefficients(u_bar), R; format = :midpoint))Z₁_R = opnorm(I - A_i * DF(u_R, params_i), X_norm)ie_first, proved_first = interval_of_existence(Y, Z₁_R, R)inf(ie_first), sup(ie_first), proved_first(1.6747652892627036e-15, 1.6747652892626938e-14, true)That is already a complete proof, and it needed only $F$ and $DF$. But the chosen value of $R$, which bounds the uniqueness radius, must be small for $A$ to accuratly approximate uniformly $DF(u)^{-1}$ for all $u \in B(\num, R)$. The first-order theorem is not ideal to certify a large uniqueness radius.
The second-order bound
To do better, we put the limiting constraint $Z_1 < 1$ at the center of the ball $\|I - A DF(\num)\| < 1$ and we control how fast $DF$ varies nearby.
Z₁ = opnorm(I - A_i * DF(u_i, params_i), X_norm)[0.0, 6.66134e-16]_com_NGWriting $h = u - \num$, every entry of $DF$ is affine in $u$, so the difference is exactly
\[DF(u) - DF(\num) = \begin{pmatrix} 0 & 0 & 0\\ -h^{(3)} & 0 & -h^{(1)}\\ h^{(2)} & h^{(1)} & 0 \end{pmatrix}.\]
The $\ell^\infty$-induced norm of a matrix is its largest row sum, here $\max\left(0, |h^{(3)}| + |h^{(1)}|, |h^{(2)}| + |h^{(1)}|\right) \le 2 \|h\|_X$. Hence
\[\|A (DF(u) - DF(\num))\|_{\mathscr{L}(X,X)} \le 2 \|A\|_{\mathscr{L}(X,X)} \|u - \num\|_X, \qquad Z_2 \bydef 2 \|A\|_{\mathscr{L}(X,X)}.\]
This $Z_2$ is independent of $R$. That is to be expected since $F$ is quadratic, so $DF$ is affine and $DF(u) - DF(\num)$ is linear in $u - \num$. Thus, its Lipschitz constant is global. We may therefore take $R = \infty$.
R = InfZ₂ = exact(2) * opnorm(A_i, X_norm)ie, proved = interval_of_existence(Y, Z₁, Z₂, R)inf(ie), sup(ie), proved(3.399208571853739e-15, 2.18695349393644, true)Step 4: Conclusion
There exists an exact equilibrium of the Lorenz system within inf(ie) of u_bar, and it is the only one within sup(ie).
The next table compares the two validations.
error bound inf(ie) | uniqueness radius sup(ie) | needs | |
|---|---|---|---|
| first-order | $\approx 2.4 \times 10^{-15}$ | $1$, same as the $R$ we chose | $F$, $DF$ |
| second-order | $\approx 3.9 \times 10^{-15}$ | $\approx 2.19$, comes from the problem itself | $F$, $DF$, $\mathrm{Lip}(DF)$ |