The Maximum Principle for the Heat Equation on a Finite Interval #
Main Result #
heat_maximum_principle_finite_interval: The (weak) maximum principle states that the maximum value of a solution to the heat equation on a finite space-time domain agrees with either the maximum at the initial time or on the spatial boundary.
References #
This formalizes Theorem 7.7.
theorem
HeatEquation.local_max_implies_second_deriv_nonpos
{f : ℝ → ℝ}
{x₀ : ℝ}
(h_smooth : ContDiffAt ℝ 2 f x₀)
(h_max : IsLocalMax f x₀)
:
theorem
HeatEquation.isLocalMin_of_iteratedFDeriv
{f : ℝ → ℝ}
{x₀ : ℝ}
(hf : ((iteratedFDeriv ℝ 2 f x₀) fun (x : Fin 2) => 1) > 0)
(hd : deriv f x₀ = 0)
(hc : ContinuousAt f x₀)
:
IsLocalMin f x₀
theorem
HeatEquation.heat_equation_perturbation_ineq
{l T α ε : ℝ}
{u v : ℝ → ℝ → ℝ}
(hα : 0 < α)
(hε : 0 < ε)
(hv_def : v = fun (x t : ℝ) => u x t + ε * x ^ 2)
(h_smooth : ContDiffOn ℝ 2 (fun (p : ℝ × ℝ) => u p.1 p.2) (Ω_T l T))
(h_pde :
∀ (x t : ℝ),
(x, t) ∈ Interior l T →
deriv (fun (t' : ℝ) => u x t') t = α * deriv (fun (x' : ℝ) => deriv (fun (x'' : ℝ) => u x'' t) x') x)
(x t : ℝ)
:
theorem
HeatEquation.pde_boundary_val
{l T α ε x₀ : ℝ}
{u : ℝ → ℝ → ℝ}
(hT : 0 < T)
(hl : 0 < l)
(hx_pos : 0 < x₀)
(hx_lt : x₀ < l)
(h_smooth : ContDiffOn ℝ 2 (fun (p : ℝ × ℝ) => u p.1 p.2) (Ω_T l T))
(h_pde :
∀ (x t : ℝ),
(x, t) ∈ Interior l T →
deriv (fun (t' : ℝ) => u x t') t = α * deriv (fun (x' : ℝ) => deriv (fun (x'' : ℝ) => u x'' t) x') x)
:
theorem
HeatEquation.heat_equation_no_interior_max
{l T α ε : ℝ}
{u v : ℝ → ℝ → ℝ}
(hα : 0 < α)
(hv_def : v = fun (x t : ℝ) => u x t + ε * x ^ 2)
(h_smooth : ContDiffOn ℝ 2 (fun (p : ℝ × ℝ) => u p.1 p.2) (Ω_T l T))
(h_int_nhds : ∀ p ∈ Interior l T, Ω_T l T ∈ nhds p)
(h_v_pde_ineq :
∀ (x t : ℝ),
(x, t) ∈ Interior l T →
deriv (fun (t' : ℝ) => v x t') t - α * deriv (fun (x' : ℝ) => deriv (fun (x'' : ℝ) => v x'' t) x') x < 0)
(x₀ t₀ : ℝ)
:
theorem
HeatEquation.deriv_nonneg_of_isLocalMaxOn_Icc_right
{f : ℝ → ℝ}
{T : ℝ}
(hT : 0 < T)
(hC1 : ContDiffOn ℝ 1 f (Set.Icc 0 T))
(hmax : IsLocalMaxOn f (Set.Icc 0 T) T)
:
theorem
HeatEquation.heat_equation_no_top_edge_max
{l T α ε : ℝ}
{u v : ℝ → ℝ → ℝ}
(hT : 0 < T)
(hl : 0 < l)
(hα : 0 < α)
(hε : 0 < ε)
(hv_def : v = fun (x t : ℝ) => u x t + ε * x ^ 2)
(h_smooth : ContDiffOn ℝ 2 (fun (p : ℝ × ℝ) => u p.1 p.2) (Ω_T l T))
(h_pde :
∀ (x t : ℝ),
(x, t) ∈ Interior l T →
deriv (fun (t' : ℝ) => u x t') t = α * deriv (fun (x' : ℝ) => deriv (fun (x'' : ℝ) => u x'' t) x') x)
(x₀ : ℝ)
:
theorem
HeatEquation.max_v_on_S_boundary
{l T : ℝ}
{v : ℝ → ℝ → ℝ}
(hT : 0 < T)
(h_compact : IsCompact (Ω_T l T))
(h_nonempty : (Ω_T l T).Nonempty)
(h_v_cont : ContinuousOn (fun (p : ℝ × ℝ) => v p.1 p.2) (Ω_T l T))
(h_no_int : ∀ (x₀ t₀ : ℝ), (x₀, t₀) ∈ Interior l T → ¬IsMaxOn (fun (p : ℝ × ℝ) => v p.1 p.2) (Ω_T l T) (x₀, t₀))
(h_no_top : ∀ (x₀ : ℝ), 0 < x₀ → x₀ < l → ¬IsMaxOn (fun (p : ℝ × ℝ) => v p.1 p.2) (Ω_T l T) (x₀, T))
:
∃ s_max ∈ S_boundary l T, ∀ p ∈ Ω_T l T, v p.1 p.2 ≤ v s_max.1 s_max.2
theorem
HeatEquation.heat_equation_max_principle
(l T α : ℝ)
(u : ℝ → ℝ → ℝ)
(hl : 0 < l)
(hT : 0 < T)
(hα : 0 < α)
(h_smooth : ContDiffOn ℝ 2 (fun (p : ℝ × ℝ) => u p.1 p.2) (Ω_T l T))
(h_pde :
∀ (x t : ℝ),
(x, t) ∈ Interior l T →
deriv (fun (t' : ℝ) => u x t') t = α * deriv (fun (x' : ℝ) => deriv (fun (x'' : ℝ) => u x'' t) x') x)
: