@@ -7,6 +7,7 @@ Authors: Alexander Bentkamp
7
7
import field_theory.algebraic_closure
8
8
import linear_algebra.finsupp
9
9
import linear_algebra.matrix
10
+ import order.preorder_hom
10
11
11
12
/-!
12
13
# Eigenvectors and eigenvalues
@@ -295,9 +296,16 @@ begin
295
296
end
296
297
297
298
/-- The generalized eigenspace for a linear map `f`, a scalar `μ`, and an exponent `k ∈ ℕ` is the
298
- kernel of `(f - μ • id) ^ k`. (Def 8.10 of [ axler2015 ] )-/
299
- def generalized_eigenspace (f : End R M) (μ : R) (k : ℕ) : submodule R M :=
300
- ((f - algebra_map R (End R M) μ) ^ k).ker
299
+ kernel of `(f - μ • id) ^ k`. (Def 8.10 of [ axler2015 ] ). Furthermore, a generalized eigenspace for
300
+ some exponent `k` is contained in the generalized eigenspace for exponents larger than `k`. -/
301
+ def generalized_eigenspace (f : End R M) (μ : R) : ℕ →ₘ submodule R M :=
302
+ { to_fun := λ k, ((f - algebra_map R (End R M) μ) ^ k).ker,
303
+ monotone' := λ k m hm,
304
+ begin
305
+ simp only [← pow_sub_mul_pow _ hm],
306
+ exact linear_map.ker_le_ker_comp
307
+ ((f - algebra_map R (End R M) μ) ^ k) ((f - algebra_map R (End R M) μ) ^ (m - k)),
308
+ end }
301
309
302
310
/-- A nonzero element of a generalized eigenspace is a generalized eigenvector.
303
311
(Def 8.9 of [ axler2015 ] )-/
@@ -322,14 +330,24 @@ begin
322
330
exact h linear_map.ker_id
323
331
end
324
332
325
- /-- A generalized eigenspace for some exponent `k` is contained in
326
- the generalized eigenspace for exponents larger than `k`. -/
327
- lemma generalized_eigenspace_mono {f : End R M} {μ : R} {k : ℕ} {m : ℕ} (hm : k ≤ m) :
328
- f.generalized_eigenspace μ k ≤ f.generalized_eigenspace μ m :=
333
+ /-- The union of the kernels of `(f - μ • id) ^ k` over all `k`. -/
334
+ def maximal_generalized_eigenspace (f : End R M) (μ : R) : submodule R M :=
335
+ ⨆ k, f.generalized_eigenspace μ k
336
+
337
+ /-- If there exists a natural number `k` such that the kernel of `(f - μ • id) ^ k` is the
338
+ maximal generalized eigenspace, then this value is the least such `k`. If not, this value is not
339
+ meaningful. -/
340
+ noncomputable def maximal_generalized_eigenspace_index (f : End R M) (μ : R) :=
341
+ monotonic_sequence_limit_index (f.generalized_eigenspace μ)
342
+
343
+ /-- For an endomorphism of a Noetherian module, the maximal eigenspace is always of the form kernel
344
+ `(f - μ • id) ^ k` for some `k`. -/
345
+ lemma maximal_generalized_eigenspace_eq [h : is_noetherian R M] (f : End R M) (μ : R) :
346
+ maximal_generalized_eigenspace f μ =
347
+ f.generalized_eigenspace μ (maximal_generalized_eigenspace_index f μ) :=
329
348
begin
330
- simp only [generalized_eigenspace, ←pow_sub_mul_pow _ hm],
331
- exact linear_map.ker_le_ker_comp
332
- ((f - algebra_map R (End R M) μ) ^ k) ((f - algebra_map R (End R M) μ) ^ (m - k)),
349
+ rw is_noetherian_iff_well_founded at h,
350
+ exact (well_founded.supr_eq_monotonic_sequence_limit h (f.generalized_eigenspace μ) : _),
333
351
end
334
352
335
353
/-- A generalized eigenvalue for some exponent `k` is also
@@ -341,21 +359,22 @@ begin
341
359
unfold has_generalized_eigenvalue at *,
342
360
contrapose! hk,
343
361
rw [←le_bot_iff, ←hk],
344
- exact generalized_eigenspace_mono hm
362
+ exact (f.generalized_eigenspace μ).monotone hm,
345
363
end
346
364
347
365
/-- The eigenspace is a subspace of the generalized eigenspace. -/
348
- lemma eigenspace_le_generalized_eigenspace {f : End K V } {μ : K } {k : ℕ} (hk : 0 < k) :
366
+ lemma eigenspace_le_generalized_eigenspace {f : End R M } {μ : R } {k : ℕ} (hk : 0 < k) :
349
367
f.eigenspace μ ≤ f.generalized_eigenspace μ k :=
350
- generalized_eigenspace_mono (nat.succ_le_of_lt hk)
368
+ (f.generalized_eigenspace μ).monotone (nat.succ_le_of_lt hk)
351
369
352
370
/-- All eigenvalues are generalized eigenvalues. -/
353
371
lemma has_generalized_eigenvalue_of_has_eigenvalue
354
372
{f : End R M} {μ : R} {k : ℕ} (hk : 0 < k) (hμ : f.has_eigenvalue μ) :
355
373
f.has_generalized_eigenvalue μ k :=
356
374
begin
357
375
apply has_generalized_eigenvalue_of_has_generalized_eigenvalue_of_le hk,
358
- rwa [has_generalized_eigenvalue, generalized_eigenspace, pow_one]
376
+ rw [has_generalized_eigenvalue, generalized_eigenspace, preorder_hom.coe_fun_mk, pow_one],
377
+ exact hμ,
359
378
end
360
379
361
380
/-- All generalized eigenvalues are eigenvalues. -/
@@ -390,11 +409,11 @@ ker_pow_eq_ker_pow_findim_of_le hk
390
409
/-- If `f` maps a subspace `p` into itself, then the generalized eigenspace of the restriction
391
410
of `f` to `p` is the part of the generalized eigenspace of `f` that lies in `p`. -/
392
411
lemma generalized_eigenspace_restrict
393
- (f : End K V ) (p : submodule K V ) (k : ℕ) (μ : K ) (hfp : ∀ (x : V ), x ∈ p → f x ∈ p) :
412
+ (f : End R M ) (p : submodule R M ) (k : ℕ) (μ : R ) (hfp : ∀ (x : M ), x ∈ p → f x ∈ p) :
394
413
generalized_eigenspace (linear_map.restrict f hfp) μ k =
395
414
submodule.comap p.subtype (f.generalized_eigenspace μ k) :=
396
415
begin
397
- rw [generalized_eigenspace, generalized_eigenspace , ←linear_map.ker_comp],
416
+ simp only [generalized_eigenspace, preorder_hom.coe_fun_mk , ← linear_map.ker_comp],
398
417
induction k with k ih,
399
418
{ rw [pow_zero, pow_zero, linear_map.one_eq_id],
400
419
apply (submodule.ker_subtype _).symm },
@@ -409,7 +428,7 @@ begin
409
428
have h := calc
410
429
submodule.comap ((f - algebra_map _ _ μ) ^ findim K V) (f.generalized_eigenspace μ (findim K V))
411
430
= ((f - algebra_map _ _ μ) ^ findim K V * (f - algebra_map K (End K V) μ) ^ findim K V).ker :
412
- by { rw [generalized_eigenspace, ← linear_map.ker_comp], refl }
431
+ by { simpa only [generalized_eigenspace, preorder_hom.coe_fun_mk, ← linear_map.ker_comp], }
413
432
... = f.generalized_eigenspace μ (findim K V + findim K V) :
414
433
by { rw ←pow_add, refl }
415
434
... = f.generalized_eigenspace μ (findim K V) :
427
446
0 = findim K (⊥ : submodule K V) : by rw findim_bot
428
447
... < findim K (f.eigenspace μ) : submodule.findim_lt_findim_of_lt (bot_lt_iff_ne_bot.2 hx)
429
448
... ≤ findim K (f.generalized_eigenspace μ k) :
430
- submodule.findim_mono (generalized_eigenspace_mono (nat.succ_le_of_lt hk))
449
+ submodule.findim_mono ((f.generalized_eigenspace μ).monotone (nat.succ_le_of_lt hk))
431
450
432
451
/-- A linear map maps a generalized eigenrange into itself. -/
433
452
lemma map_generalized_eigenrange_le {f : End K V} {μ : K} {n : ℕ} :
0 commit comments