Working on partial derivatives

This commit is contained in:
Stefan Kebekus 2024-05-07 09:49:56 +02:00
parent dc544308c8
commit 403605f7a0
2 changed files with 59 additions and 28 deletions

View File

@ -6,17 +6,13 @@ import Mathlib.Analysis.Calculus.ContDiff.Defs
import Mathlib.Analysis.Calculus.FDeriv.Basic import Mathlib.Analysis.Calculus.FDeriv.Basic
import Mathlib.Analysis.Calculus.FDeriv.Symmetric import Mathlib.Analysis.Calculus.FDeriv.Symmetric
import Nevanlinna.cauchyRiemann import Nevanlinna.cauchyRiemann
import Nevanlinna.partialDeriv
noncomputable def Real.partialDeriv : → () → () := by
intro v
intro f
exact fun w ↦ (fderiv f w) v
theorem CauchyRiemann₄ {f : } : (Differentiable f) theorem CauchyRiemann₄ {f : } : (Differentiable f)
→ Real.partialDeriv Complex.I f = Complex.I • Real.partialDeriv 1 f := by → Real.partialDeriv Complex.I f = Complex.I • Real.partialDeriv 1 f := by
intro h intro h
unfold Real.partialDeriv unfold Real.partialDeriv
conv => conv =>
left left
intro w intro w
@ -28,26 +24,15 @@ theorem CauchyRiemann₄ {f : } : (Differentiable f)
conv => conv =>
right right
right right
intro w intro w
rw [DifferentiableAt.fderiv_restrictScalars (h w)] rw [DifferentiableAt.fderiv_restrictScalars (h w)]
theorem partialDeriv_smul {f : } {a v : } : Real.partialDeriv v (a • f) = a • Real.partialDeriv v f := by
unfold Real.partialDeriv
have : a • f = fun y ↦ a • f y := by rfl
conv =>
left
intro w
rw [this]
rw [fderiv_const_smul]
sorry
noncomputable def Complex.laplace : () → () := by noncomputable def Complex.laplace : () → () := by
intro f intro f
let fx := Real.partialDeriv 1 f let fx := Real.partialDeriv 1 f
let fxx := Real.partialDeriv 1 fx let fxx := Real.partialDeriv 1 fx
let fy := Real.partialDeriv Complex.I f let fy := Real.partialDeriv Complex.I f
let fyy := Real.partialDeriv Complex.I fy let fyy := Real.partialDeriv Complex.I fy
exact fxx + fyy exact fxx + fyy
@ -86,6 +71,7 @@ lemma l₂ {f : } (hf : ContDiff 2 f) (z a b : ) :
· exact (contDiff_succ_iff_fderiv.1 hf).2.differentiable le_rfl z · exact (contDiff_succ_iff_fderiv.1 hf).2.differentiable le_rfl z
· simp · simp
#check partialDeriv_contDiff
theorem holomorphic_is_harmonic {f : } (h : Differentiable f) : theorem holomorphic_is_harmonic {f : } (h : Differentiable f) :
Harmonic f := by Harmonic f := by
@ -94,6 +80,14 @@ theorem holomorphic_is_harmonic {f : } (h : Differentiable f) :
have f_is_real_C2 : ContDiff 2 f := have f_is_real_C2 : ContDiff 2 f :=
ContDiff.restrict_scalars (Differentiable.contDiff h) ContDiff.restrict_scalars (Differentiable.contDiff h)
-- f is real differentiable
have f_is_real_differentiable : Differentiable f := by
exact (contDiff_succ_iff_fderiv.1 f_is_real_C2).left
have fI_is_real_differentiable : Differentiable (Real.partialDeriv 1 f) := by
let A := partialDeriv_contDiff f_is_real_C2 1
exact (contDiff_succ_iff_fderiv.1 A).left
-- f' is real C¹ -- f' is real C¹
have f'_is_real_C1 : ContDiff 1 (fderiv f) := have f'_is_real_C1 : ContDiff 1 (fderiv f) :=
(contDiff_succ_iff_fderiv.1 f_is_real_C2).right (contDiff_succ_iff_fderiv.1 f_is_real_C2).right
@ -117,16 +111,9 @@ theorem holomorphic_is_harmonic {f : } (h : Differentiable f) :
unfold Complex.laplace unfold Complex.laplace
rw [CauchyRiemann₄ h] rw [CauchyRiemann₄ h]
rw [partialDeriv_smul fI_is_real_differentiable]
have t₁a : (fderiv (fun w ↦ Complex.I * (fderiv f w) 1) z)
= Complex.I • (fderiv f_1 z) := by
rw [fderiv_const_mul]
fun_prop
rw [t₁a]
have t₂ : (fderiv f_1 z) Complex.I = (fderiv f_I z) 1 := by have t₂ : (fderiv f_1 z) Complex.I = (fderiv f_I z) 1 := by
let B := l₂ f_is_real_C2 z Complex.I 1 let B := l₂ f_is_real_C2 z Complex.I 1
rw [← B] rw [← B]
@ -146,7 +133,7 @@ theorem holomorphic_is_harmonic {f : } (h : Differentiable f) :
intro z intro z
simp [f_I] simp [f_I]
rw [CauchyRiemann₁ (h z)] rw [CauchyRiemann₁ (h z)]
rw [t₁a] rw [t₁a]
simp simp

View File

@ -0,0 +1,44 @@
import Mathlib.Data.Fin.Tuple.Basic
import Mathlib.Analysis.Complex.Basic
import Mathlib.Analysis.Complex.TaylorSeries
import Mathlib.Analysis.Calculus.LineDeriv.Basic
import Mathlib.Analysis.Calculus.ContDiff.Basic
import Mathlib.Analysis.Calculus.ContDiff.Defs
import Mathlib.Analysis.Calculus.FDeriv.Basic
import Mathlib.Analysis.Calculus.FDeriv.Symmetric
noncomputable def Real.partialDeriv : → () → () := by
intro v
intro f
exact fun w ↦ (fderiv f w) v
theorem partialDeriv_smul {f : } {a v : } (h : Differentiable f) : Real.partialDeriv v (a • f) = a • Real.partialDeriv v f := by
unfold Real.partialDeriv
have : a • f = fun y ↦ a • f y := by rfl
rw [this]
conv =>
left
intro w
rw [fderiv_const_smul (h w)]
theorem partialDeriv_contDiff {n : } {f : } (h : ContDiff (n + 1) f) : ∀ v : , ContDiff n (Real.partialDeriv v f) := by
unfold Real.partialDeriv
intro v
let A := (contDiff_succ_iff_fderiv.1 h).right
simp at A
have : (fun w => (fderiv f w) v) = (fun f => f v) ∘ (fun w => (fderiv f w)) := by
rfl
rw [this]
refine ContDiff.comp ?hg A
refine ContDiff.of_succ ?hg.h
refine ContDiff.clm_apply ?hg.h.hf ?hg.h.hg
exact contDiff_id
exact contDiff_const