Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 3fe67d6

Browse files
committed
feat(analysis/special_functions/integrals): integral of |x - a| ^ n over Ι a b (#9752)
Also use notation for `interval a b` and `interval_oc a b`.
1 parent 54e9e12 commit 3fe67d6

File tree

1 file changed

+41
-12
lines changed

1 file changed

+41
-12
lines changed

src/analysis/special_functions/integrals.lean

Lines changed: 41 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ integrate, integration, integrable, integrability
3030
-/
3131

3232
open real nat set finset
33-
open_locale real big_operators
33+
open_locale real big_operators interval
3434
variables {a b : ℝ} (n : ℕ)
3535

3636
namespace interval_integral
@@ -66,14 +66,14 @@ lemma interval_integrable.div (h : interval_integrable f ν a b) :
6666
interval_integrable (λ x, f x / c) ν a b :=
6767
interval_integrable.mul_const c⁻¹ h
6868

69-
lemma interval_integrable_one_div (h : ∀ x : ℝ, x ∈ interval a b → f x ≠ 0)
70-
(hf : continuous_on f (interval a b)) :
69+
lemma interval_integrable_one_div (h : ∀ x : ℝ, x ∈ [a, b] → f x ≠ 0)
70+
(hf : continuous_on f [a, b]) :
7171
interval_integrable (λ x, 1 / f x) μ a b :=
7272
(continuous_on_const.div hf h).interval_integrable
7373

7474
@[simp]
75-
lemma interval_integrable_inv (h : ∀ x : ℝ, x ∈ interval a b → f x ≠ 0)
76-
(hf : continuous_on f (interval a b)) :
75+
lemma interval_integrable_inv (h : ∀ x : ℝ, x ∈ [a, b] → f x ≠ 0)
76+
(hf : continuous_on f [a, b]) :
7777
interval_integrable (λ x, (f x)⁻¹) μ a b :=
7878
by simpa only [one_div] using interval_integrable_one_div h hf
7979

@@ -83,12 +83,12 @@ continuous_exp.interval_integrable a b
8383

8484
@[simp]
8585
lemma interval_integrable.log
86-
(hf : continuous_on f (interval a b)) (h : ∀ x : ℝ, x ∈ interval a b → f x ≠ 0) :
86+
(hf : continuous_on f [a, b]) (h : ∀ x : ℝ, x ∈ [a, b] → f x ≠ 0) :
8787
interval_integrable (λ x, log (f x)) μ a b :=
8888
(continuous_on.log hf h).interval_integrable
8989

9090
@[simp]
91-
lemma interval_integrable_log (h : (0:ℝ) ∉ interval a b) :
91+
lemma interval_integrable_log (h : (0:ℝ) ∉ [a, b]) :
9292
interval_integrable log μ a b :=
9393
interval_integrable.log continuous_on_id $ λ x hx, ne_of_mem_of_not_mem hx h
9494

@@ -188,6 +188,35 @@ begin
188188
norm_num [div_sub_div_same, continuous_on_pow],
189189
end
190190

191+
/-- Integral of `|x - a| ^ n` over `Ι a b`. This integral appears in the proof of the
192+
Picard-Lindelöf/Cauchy-Lipschitz theorem. -/
193+
lemma integral_pow_abs_sub_interval_oc :
194+
∫ x in Ι a b, |x - a| ^ n = |b - a| ^ (n + 1) / (n + 1) :=
195+
begin
196+
cases le_or_lt a b with hab hab,
197+
{ calc ∫ x in Ι a b, |x - a| ^ n = ∫ x in a..b, |x - a| ^ n :
198+
by rw [interval_oc_of_le hab, ← integral_of_le hab]
199+
... = ∫ x in 0..(b - a), x ^ n :
200+
begin
201+
simp only [integral_comp_sub_right (λ x, |x| ^ n), sub_self],
202+
refine integral_congr (λ x hx, congr_arg2 has_pow.pow (abs_of_nonneg $ _) rfl),
203+
rw interval_of_le (sub_nonneg.2 hab) at hx,
204+
exact hx.1
205+
end
206+
... = |b - a| ^ (n + 1) / (n + 1) : by simp [abs_of_nonneg (sub_nonneg.2 hab)] },
207+
{ calc ∫ x in Ι a b, |x - a| ^ n = ∫ x in b..a, |x - a| ^ n :
208+
by rw [interval_oc_of_lt hab, ← integral_of_le hab.le]
209+
... = ∫ x in b - a..0, (-x) ^ n :
210+
begin
211+
simp only [integral_comp_sub_right (λ x, |x| ^ n), sub_self],
212+
refine integral_congr (λ x hx, congr_arg2 has_pow.pow (abs_of_nonpos $ _) rfl),
213+
rw interval_of_le (sub_nonpos.2 hab.le) at hx,
214+
exact hx.2
215+
end
216+
... = |b - a| ^ (n + 1) / (n + 1) :
217+
by simp [integral_comp_neg (λ x, x ^ n), abs_of_neg (sub_neg.2 hab)] }
218+
end
219+
191220
@[simp]
192221
lemma integral_id : ∫ x in a..b, x = (b ^ 2 - a ^ 2) / 2 :=
193222
by simpa using integral_pow 1
@@ -197,7 +226,7 @@ lemma integral_one : ∫ x in a..b, (1 : ℝ) = b - a :=
197226
by simp only [mul_one, smul_eq_mul, integral_const]
198227

199228
@[simp]
200-
lemma integral_inv (h : (0:ℝ) ∉ interval a b) : ∫ x in a..b, x⁻¹ = log (b / a) :=
229+
lemma integral_inv (h : (0:ℝ) ∉ [a, b]) : ∫ x in a..b, x⁻¹ = log (b / a) :=
201230
begin
202231
have h' := λ x hx, ne_of_mem_of_not_mem hx h,
203232
rw [integral_deriv_eq_sub' _ deriv_log' (λ x hx, differentiable_at_log (h' x hx))
@@ -213,7 +242,7 @@ integral_inv $ not_mem_interval_of_lt ha hb
213242
lemma integral_inv_of_neg (ha : a < 0) (hb : b < 0) : ∫ x in a..b, x⁻¹ = log (b / a) :=
214243
integral_inv $ not_mem_interval_of_gt ha hb
215244

216-
lemma integral_one_div (h : (0:ℝ) ∉ interval a b) : ∫ x : ℝ in a..b, 1/x = log (b / a) :=
245+
lemma integral_one_div (h : (0:ℝ) ∉ [a, b]) : ∫ x : ℝ in a..b, 1/x = log (b / a) :=
217246
by simp only [one_div, integral_inv h]
218247

219248
lemma integral_one_div_of_pos (ha : 0 < a) (hb : 0 < b) : ∫ x : ℝ in a..b, 1/x = log (b / a) :=
@@ -227,7 +256,7 @@ lemma integral_exp : ∫ x in a..b, exp x = exp b - exp a :=
227256
by rw integral_deriv_eq_sub'; norm_num [continuous_on_exp]
228257

229258
@[simp]
230-
lemma integral_log (h : (0:ℝ) ∉ interval a b) :
259+
lemma integral_log (h : (0:ℝ) ∉ [a, b]) :
231260
∫ x in a..b, log x = b * log b - a * log a - b + a :=
232261
begin
233262
obtain ⟨h', heq⟩ := ⟨λ x hx, ne_of_mem_of_not_mem hx h, λ x hx, mul_inv_cancel (h' x hx)⟩,
@@ -286,7 +315,7 @@ begin
286315
have h : ∀ α β γ : ℝ, α * (β * α * γ) = β * (α * α * γ) := λ α β γ, by ring,
287316
have hu : ∀ x ∈ _, has_deriv_at (λ y, sin y ^ (n + 1)) ((n + 1) * cos x * sin x ^ n) x :=
288317
λ x hx, by simpa [mul_right_comm] using (has_deriv_at_sin x).pow,
289-
have hv : ∀ x ∈ interval a b, has_deriv_at (-cos) (sin x) x :=
318+
have hv : ∀ x ∈ [a, b], has_deriv_at (-cos) (sin x) x :=
290319
λ x hx, by simpa only [neg_neg] using (has_deriv_at_cos x).neg,
291320
have H := integral_mul_deriv_eq_deriv_mul hu hv _ _,
292321
calc ∫ x in a..b, sin x ^ (n + 2)
@@ -358,7 +387,7 @@ begin
358387
have h : ∀ α β γ : ℝ, α * (β * α * γ) = β * (α * α * γ) := λ α β γ, by ring,
359388
have hu : ∀ x ∈ _, has_deriv_at (λ y, cos y ^ (n + 1)) (-(n + 1) * sin x * cos x ^ n) x :=
360389
λ x hx, by simpa [mul_right_comm, -neg_add_rev] using (has_deriv_at_cos x).pow,
361-
have hv : ∀ x ∈ interval a b, has_deriv_at sin (cos x) x := λ x hx, has_deriv_at_sin x,
390+
have hv : ∀ x ∈ [a, b], has_deriv_at sin (cos x) x := λ x hx, has_deriv_at_sin x,
362391
have H := integral_mul_deriv_eq_deriv_mul hu hv _ _,
363392
calc ∫ x in a..b, cos x ^ (n + 2)
364393
= ∫ x in a..b, cos x ^ (n + 1) * cos x : by simp only [pow_succ']

0 commit comments

Comments
 (0)