Picard-Lindelöf (Cauchy-Lipschitz) Theorem #
In this file we prove that an ordinary differential equation $\dot x=v(t, x)$ such that $v$ is
Lipschitz continuous in $x$ and continuous in $t$ has a local solution, see
exists_forall_deriv_within_Icc_eq_of_lipschitz_of_continuous
.
Implementation notes #
In order to split the proof into small lemmas, we introduce a structure picard_lindelof
that holds
all assumptions of the main theorem. This structure and lemmas in the picard_lindelof
namespace
should be treated as private implementation details.
We only prove existence of a solution in this file. For uniqueness see ODE_solution_unique
and
related theorems in analysis.ODE.gronwall
.
Tags #
differential equation
- to_fun : ℝ → E → E
- t_min : ℝ
- t_max : ℝ
- t₀ : ↥(set.Icc self.t_min self.t_max)
- x₀ : E
- C : nnreal
- R : nnreal
- L : nnreal
- lipschitz' : ∀ (t : ℝ), t ∈ set.Icc self.t_min self.t_max → lipschitz_on_with self.L (self.to_fun t) (metric.closed_ball self.x₀ ↑(self.R))
- cont : ∀ (x : E), x ∈ metric.closed_ball self.x₀ ↑(self.R) → continuous_on (λ (t : ℝ), self.to_fun t x) (set.Icc self.t_min self.t_max)
- norm_le' : ∀ (t : ℝ), t ∈ set.Icc self.t_min self.t_max → ∀ (x : E), x ∈ metric.closed_ball self.x₀ ↑(self.R) → ∥self.to_fun t x∥ ≤ ↑(self.C)
- C_mul_le_R : ↑(self.C) * linear_order.max (self.t_max - ↑(self.t₀)) (↑(self.t₀) - self.t_min) ≤ ↑(self.R)
This structure holds arguments of the Picard-Lipschitz (Cauchy-Lipschitz) theorem. Unless you
want to use one of the auxiliary lemmas, use
exists_forall_deriv_within_Icc_eq_of_lipschitz_of_continuous
instead of using this structure.
Instances for picard_lindelof
- picard_lindelof.has_sizeof_inst
- picard_lindelof.has_coe_to_fun
- picard_lindelof.inhabited
Equations
- picard_lindelof.has_coe_to_fun = {coe := picard_lindelof.to_fun _inst_2}
The maximum of distances from t₀
to the endpoints of [t_min, t_max]
.
Projection $ℝ → [t_{\min}, t_{\max}]$ sending $(-∞, t_{\min}]$ to $t_{\min}$ and $[t_{\max}, ∞)$ to $t_{\max}$.
Equations
- v.proj = set.proj_Icc v.t_min v.t_max _
- to_fun : ↥(set.Icc v.t_min v.t_max) → E
- map_t₀' : self.to_fun v.t₀ = v.x₀
- lipschitz' : lipschitz_with v.C self.to_fun
The space of curves $γ \colon [t_{\min}, t_{\max}] \to E$ such that $γ(t₀) = x₀$ and $γ$ is Lipschitz continuous with constant $C$. The map sending $γ$ to $\mathbf Pγ(t)=x₀ + ∫_{t₀}^{t} v(τ, γ(τ))\,dτ$ is a contracting map on this space, and its fixed point is a solution of the ODE $\dot x=v(t, x)$.
Instances for picard_lindelof.fun_space
- picard_lindelof.fun_space.has_sizeof_inst
- picard_lindelof.fun_space.has_coe_to_fun
- picard_lindelof.fun_space.inhabited
- picard_lindelof.fun_space.metric_space
- picard_lindelof.fun_space.complete_space
Each curve in picard_lindelof.fun_space
is continuous.
Equations
- picard_lindelof.fun_space.to_continuous_map = {to_fun := λ (f : v.fun_space), {to_fun := ⇑f, continuous_to_fun := _}, inj' := _}
Equations
- picard_lindelof.fun_space.metric_space = metric_space.induced ⇑picard_lindelof.fun_space.to_continuous_map picard_lindelof.fun_space.metric_space._proof_1 infer_instance
Given a curve $γ \colon [t_{\min}, t_{\max}] → E$, v_comp
is the function
$F(t)=v(π t, γ(π t))$, where π
is the projection $ℝ → [t_{\min}, t_{\max}]$. The integral of this
function is the image of γ
under the contracting map we are going to define below.
The Picard-Lindelöf operator. This is a contracting map on picard_lindelof.fun_space v
such
that the fixed point of this map is the solution of the corresponding ODE.
More precisely, some iteration of this map is a contracting map.
Picard-Lindelöf (Cauchy-Lipschitz) theorem.
Picard-Lindelöf (Cauchy-Lipschitz) theorem.