@@ -63,12 +63,16 @@ theorem rayleigh_smul (x : E) {c : 𝕜} (hc : c ≠ 0) :
6363 · simp [hx]
6464 simp [field, norm_smul, T.reApplyInnerSelf_smul]
6565
66+ theorem rayleighQuotient_add (S : E →L[𝕜] E) {x : E} :
67+ (T + S).rayleighQuotient x = T.rayleighQuotient x + S.rayleighQuotient x := by
68+ simp [rayleighQuotient, reApplyInnerSelf_apply, inner_add_left, add_div]
69+
6670theorem image_rayleigh_eq_image_rayleigh_sphere {r : ℝ} (hr : 0 < r) :
6771 rayleighQuotient T '' {0 }ᶜ = rayleighQuotient T '' sphere 0 r := by
6872 ext a
6973 constructor
7074 · rintro ⟨x, hx : x ≠ 0 , hxT⟩
71- let c : 𝕜 := ↑ ‖x‖⁻¹ * r
75+ let c : 𝕜 := ‖x‖⁻¹ * r
7276 have : c ≠ 0 := by simp [c, hx, hr.ne']
7377 refine ⟨c • x, ?_, ?_⟩
7478 · simp [field, c, norm_smul, abs_of_pos hr]
@@ -131,8 +135,6 @@ theorem linearly_dependent_of_isLocalExtrOn (hT : IsSelfAdjoint T) {x₀ : F}
131135 apply smul_right_injective (F →L[ℝ] ℝ) (two_ne_zero : (2 : ℝ) ≠ 0 )
132136 simpa only [two_smul, smul_add, add_smul, add_zero] using h₂
133137
134- -- Non-terminal simp, used to be field_simp
135- set_option linter.flexible false in
136138open scoped InnerProductSpace in
137139theorem eq_smul_self_of_isLocalExtrOn_real (hT : IsSelfAdjoint T) {x₀ : F}
138140 (hextr : IsLocalExtrOn T.reApplyInnerSelf (sphere (0 : F) ‖x₀‖) x₀) :
@@ -149,9 +151,7 @@ theorem eq_smul_self_of_isLocalExtrOn_real (hT : IsSelfAdjoint T) {x₀ : F}
149151 linear_combination (norm := match_scalars <;> field) b⁻¹ • h₂
150152 set c : ℝ := -b⁻¹ * a
151153 convert hc
152- have := congr_arg (fun x => ⟪x, x₀⟫_ℝ) hc
153- simp [field, inner_smul_left, mul_comm a] at this ⊢
154- exact this
154+ simpa [field, inner_smul_left, mul_comm a] using congr_arg (fun x => ⟪x, x₀⟫_ℝ) hc
155155
156156end Real
157157
@@ -161,7 +161,7 @@ variable [CompleteSpace E] {T : E →L[𝕜] E}
161161
162162theorem eq_smul_self_of_isLocalExtrOn (hT : IsSelfAdjoint T) {x₀ : E}
163163 (hextr : IsLocalExtrOn T.reApplyInnerSelf (sphere (0 : E) ‖x₀‖) x₀) :
164- T x₀ = (↑( T.rayleighQuotient x₀) : 𝕜) • x₀ := by
164+ T x₀ = (T.rayleighQuotient x₀ : 𝕜) • x₀ := by
165165 letI := InnerProductSpace.rclikeToReal 𝕜 E
166166 let hSA := hT.isSymmetric.restrictScalars.toSelfAdjoint.prop
167167 exact hSA.eq_smul_self_of_isLocalExtrOn_real hextr
@@ -170,7 +170,7 @@ theorem eq_smul_self_of_isLocalExtrOn (hT : IsSelfAdjoint T) {x₀ : E}
170170centred at the origin is an eigenvector of `T`. -/
171171theorem hasEigenvector_of_isLocalExtrOn (hT : IsSelfAdjoint T) {x₀ : E} (hx₀ : x₀ ≠ 0 )
172172 (hextr : IsLocalExtrOn T.reApplyInnerSelf (sphere (0 : E) ‖x₀‖) x₀) :
173- HasEigenvector (T : E →ₗ[𝕜] E) (↑( T.rayleighQuotient x₀) ) x₀ := by
173+ HasEigenvector (T : E →ₗ[𝕜] E) (T.rayleighQuotient x₀) x₀ := by
174174 refine ⟨?_, hx₀⟩
175175 rw [Module.End.mem_eigenspace_iff]
176176 exact hT.eq_smul_self_of_isLocalExtrOn hextr
@@ -180,7 +180,7 @@ at the origin is an eigenvector of `T`, with eigenvalue the global supremum of t
180180quotient. -/
181181theorem hasEigenvector_of_isMaxOn (hT : IsSelfAdjoint T) {x₀ : E} (hx₀ : x₀ ≠ 0 )
182182 (hextr : IsMaxOn T.reApplyInnerSelf (sphere (0 : E) ‖x₀‖) x₀) :
183- HasEigenvector (T : E →ₗ[𝕜] E) (↑( ⨆ x : { x : E // x ≠ 0 }, T.rayleighQuotient x) ) x₀ := by
183+ HasEigenvector (T : E →ₗ[𝕜] E) (⨆ x : { x : E // x ≠ 0 }, T.rayleighQuotient x : ℝ ) x₀ := by
184184 convert hT.hasEigenvector_of_isLocalExtrOn hx₀ (Or.inr hextr.localize)
185185 have hx₀' : 0 < ‖x₀‖ := by simp [hx₀]
186186 have hx₀'' : x₀ ∈ sphere (0 : E) ‖x₀‖ := by simp
@@ -199,7 +199,7 @@ at the origin is an eigenvector of `T`, with eigenvalue the global infimum of th
199199quotient. -/
200200theorem hasEigenvector_of_isMinOn (hT : IsSelfAdjoint T) {x₀ : E} (hx₀ : x₀ ≠ 0 )
201201 (hextr : IsMinOn T.reApplyInnerSelf (sphere (0 : E) ‖x₀‖) x₀) :
202- HasEigenvector (T : E →ₗ[𝕜] E) (↑( ⨅ x : { x : E // x ≠ 0 }, T.rayleighQuotient x) ) x₀ := by
202+ HasEigenvector (T : E →ₗ[𝕜] E) (⨅ x : { x : E // x ≠ 0 }, T.rayleighQuotient x : ℝ ) x₀ := by
203203 convert hT.hasEigenvector_of_isLocalExtrOn hx₀ (Or.inl hextr.localize)
204204 have hx₀' : 0 < ‖x₀‖ := by simp [hx₀]
205205 have hx₀'' : x₀ ∈ sphere (0 : E) ‖x₀‖ := by simp
@@ -228,7 +228,7 @@ namespace IsSymmetric
228228/-- The supremum of the Rayleigh quotient of a symmetric operator `T` on a nontrivial
229229finite-dimensional vector space is an eigenvalue for that operator. -/
230230theorem hasEigenvalue_iSup_of_finiteDimensional [Nontrivial E] (hT : T.IsSymmetric) :
231- HasEigenvalue T ↑ (⨆ x : { x : E // x ≠ 0 }, RCLike.re ⟪T x, x⟫ / ‖(x : E)‖ ^ 2 : ℝ) := by
231+ HasEigenvalue T (⨆ x : { x : E // x ≠ 0 }, RCLike.re ⟪T x, x⟫ / ‖(x : E)‖ ^ 2 : ℝ) := by
232232 haveI := FiniteDimensional.proper_rclike 𝕜 E
233233 let T' := hT.toSelfAdjoint
234234 obtain ⟨x, hx⟩ : ∃ x : E, x ≠ 0 := exists_ne 0
@@ -247,7 +247,7 @@ theorem hasEigenvalue_iSup_of_finiteDimensional [Nontrivial E] (hT : T.IsSymmetr
247247/-- The infimum of the Rayleigh quotient of a symmetric operator `T` on a nontrivial
248248finite-dimensional vector space is an eigenvalue for that operator. -/
249249theorem hasEigenvalue_iInf_of_finiteDimensional [Nontrivial E] (hT : T.IsSymmetric) :
250- HasEigenvalue T ↑ (⨅ x : { x : E // x ≠ 0 }, RCLike.re ⟪T x, x⟫ / ‖(x : E)‖ ^ 2 : ℝ) := by
250+ HasEigenvalue T (⨅ x : { x : E // x ≠ 0 }, RCLike.re ⟪T x, x⟫ / ‖(x : E)‖ ^ 2 : ℝ) := by
251251 haveI := FiniteDimensional.proper_rclike 𝕜 E
252252 let T' := hT.toSelfAdjoint
253253 obtain ⟨x, hx⟩ : ∃ x : E, x ≠ 0 := exists_ne 0
0 commit comments