Documentation

TauCeti.Geometry.Manifold.Riemannian.Gradient.Basic

The gradient of a function on a Riemannian manifold #

On a manifold M whose tangent spaces carry a Riemannian metric, the gradient of a function f : M → ℝ at x is the tangent vector grad f x dual to the differential df_x through the metric: ⟪grad f x, v⟫ = df_x v for every tangent vector v. It is the fibrewise Riesz dual Riemannian.Tensor.rieszDual of df_x.

The gradient within a subset is similarly the fibrewise Riesz dual of mvfderivWithin. Its characteristic equations, uniqueness, vanishing, and neighbourhood-restriction laws require only the pointwise Riemannian bundle structure.

For a C^{n+1} function and a C^n metric, the gradient is a C^n vector field: the evaluations of df on a chart-local frame are C^n, and so is the Riesz dual of such a field of covectors (Riemannian.Tensor.contMDiffAt_rieszDual).

Main declarations #

noncomputable def TauCeti.Manifold.mgradient {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] (I : ModelWithCorners ℝ E H) {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] (f : M → ℝ) (x : M) :

The gradient of a function f : M → ℝ at x for the Riemannian metric: the tangent vector dual to the differential df_x, so that ⟪grad f x, v⟫ = df_x v.

Instances For
    theorem TauCeti.Manifold.mgradient_def {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] (f : M → ℝ) (x : M) :

    The gradient is the fibrewise Riesz dual of the manifold derivative.

    @[simp]
    theorem TauCeti.Manifold.inner_mgradient {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {f : M → ℝ} {x : M} (v : TangentSpace I x) :
    inner ℝ (mgradient I f x) v = (d% f x) v

    The characteristic property of the gradient: ⟪grad f x, v⟫ = df_x v.

    @[simp]
    theorem TauCeti.Manifold.inner_mgradient_right {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {f : M → ℝ} {x : M} (v : TangentSpace I x) :
    inner ℝ v (mgradient I f x) = (d% f x) v

    The characteristic property of the gradient: ⟪v, grad f x⟫ = df_x v.

    theorem TauCeti.Manifold.eq_mgradient_iff {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {f : M → ℝ} {x : M} {w : TangentSpace I x} :
    w = mgradient I f x ↔ ∀ (v : TangentSpace I x), inner ℝ w v = (d% f x) v

    A tangent vector is the gradient exactly when its inner product with every vector v is df_x v.

    theorem TauCeti.Manifold.mvfderiv_apply_mgradient {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {f : M → ℝ} {x : M} :
    (d% f x) (mgradient I f x) = inner ℝ (mgradient I f x) (mgradient I f x)

    The differential of f in the direction of its gradient is the squared length of the gradient.

    @[simp]
    theorem TauCeti.Manifold.mgradient_eq_zero_iff {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {f : M → ℝ} {x : M} :
    mgradient I f x = 0 ↔ d% f x = 0

    The gradient vanishes exactly where the differential does.

    The gradient of a compactly supported function is compactly supported, since it vanishes off the support of the function.

    theorem HasCompactSupport.inner_mgradient {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {f : M → ℝ} (hf : HasCompactSupport f) (X : (x : M) → TangentSpace I x) :

    Pairing the gradient of a compactly supported function with any vector field gives a compactly supported scalar function. No differentiability assumption is needed.

    The gradient has the same length as the differential it represents: the Riesz equivalence is an isometry.

    @[simp]
    theorem TauCeti.Manifold.mgradient_const {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] (c : ℝ) :
    (mgradient I fun (x : M) => c) = 0

    The gradient of a constant function is zero.

    theorem TauCeti.Manifold.mgradient_add {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {f g : M → ℝ} (hf : MDiff f) (hg : MDiff g) :
    mgradient I (f + g) = mgradient I f + mgradient I g

    The gradient is additive on differentiable functions.

    theorem TauCeti.Manifold.mgradient_mul {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {f g : M → ℝ} (hf : MDiff f) (hg : MDiff g) :
    mgradient I (f * g) = fun (x : M) => f x • mgradient I g x + g x • mgradient I f x

    The gradient satisfies the scalar product rule for differentiable functions.

    @[simp]
    theorem TauCeti.Manifold.mgradient_smul {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {f : M → ℝ} (c : ℝ) :
    mgradient I (c • f) = c • mgradient I f

    The gradient commutes with multiplication by a real constant.

    theorem TauCeti.Manifold.norm_sq_mgradient_add_smul {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {f g : M → ℝ} (hf : MDiff f) (hg : MDiff g) (t : ℝ) (x : M) :
    ‖mgradient I (f + t • g) x‖ ^ 2 = ‖mgradient I f x‖ ^ 2 + 2 * t * inner ℝ (mgradient I g x) (mgradient I f x) + t ^ 2 * ‖mgradient I g x‖ ^ 2

    Along the line f + t g, the squared length of the gradient is the quadratic polynomial ‖grad f‖² + 2 t ⟪grad g, grad f⟫ + t² ‖grad g‖² in t.

    @[simp]
    theorem TauCeti.Manifold.mgradient_neg {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {f : M → ℝ} {x : M} :
    mgradient I (-f) x = -mgradient I f x

    The gradient of -f is the opposite of the gradient of f.

    noncomputable def TauCeti.Manifold.mgradientWithin {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] (I : ModelWithCorners ℝ E H) {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] (f : M → ℝ) (s : Set M) (x : M) :

    The Riemannian gradient within a set, obtained by taking the fibrewise Riesz dual of the manifold derivative within that set. Like the derivative, it is total.

    Instances For
      theorem TauCeti.Manifold.mgradientWithin_def {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] (f : M → ℝ) (s : Set M) (x : M) :

      The gradient within a set is the Riesz dual of the relative differential.

      @[simp]
      theorem TauCeti.Manifold.inner_mgradientWithin_left {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {f : M → ℝ} {x : M} {s : Set M} (v : TangentSpace I x) :
      inner ℝ (mgradientWithin I f s x) v = (d[s] f x) v

      Pairing the relative gradient with a tangent vector evaluates the relative differential.

      @[simp]
      theorem TauCeti.Manifold.inner_mgradientWithin_right {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {f : M → ℝ} {x : M} {s : Set M} (v : TangentSpace I x) :
      inner ℝ v (mgradientWithin I f s x) = (d[s] f x) v

      The symmetric form of the relative gradient's characteristic equation.

      @[simp]

      On the whole manifold the relative gradient is the gradient.

      theorem TauCeti.Manifold.eq_mgradientWithin_iff {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {f : M → ℝ} {x : M} {s : Set M} {w : TangentSpace I x} :
      w = mgradientWithin I f s x ↔ ∀ (v : TangentSpace I x), inner ℝ w v = (d[s] f x) v

      The relative gradient is uniquely characterized by its inner products.

      @[simp]
      theorem TauCeti.Manifold.mgradientWithin_eq_zero_iff {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {f : M → ℝ} {x : M} {s : Set M} :
      mgradientWithin I f s x = 0 ↔ d[s] f x = 0

      The relative gradient vanishes exactly where the relative differential vanishes.

      theorem TauCeti.Manifold.mgradientWithin_of_mem_nhds {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {f : M → ℝ} {x : M} {s : Set M} (hs : s ∈ nhds x) :

      Restriction to a neighbourhood does not change the gradient.

      theorem TauCeti.Manifold.contMDiffAt_mgradient {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {f : M → ℝ} {x : M} {n : WithTop ℕ∞} [IsManifold I (n + 1) M] [IsContMDiffRiemannianBundle I n E fun (x : M) => TangentSpace I x] (hf : ContMDiffAt I (modelWithCornersSelf ℝ ℝ) (n + 1) f x) :
      ContMDiffAt I I.tangent n (fun (y : M) => ⟨y, mgradient I f y⟩) x

      The gradient is smooth. For a C^n Riemannian metric, the gradient of a C^{n+1} function is a C^n vector field at a point.

      theorem TauCeti.Manifold.contMDiff_mgradient {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {f : M → ℝ} {n : WithTop ℕ∞} [IsManifold I (n + 1) M] [IsContMDiffRiemannianBundle I n E fun (x : M) => TangentSpace I x] (hf : ContMDiff I (modelWithCornersSelf ℝ ℝ) (n + 1) f) :
      ContMDiff I I.tangent n fun (x : M) => ⟨x, mgradient I f x⟩

      The gradient is smooth. For a C^n Riemannian metric, the gradient of a C^{n+1} function is a C^n vector field.

      theorem TauCeti.Manifold.mdifferentiable_mgradient {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {f : M → ℝ} [IsManifold I 2 M] [IsContMDiffRiemannianBundle I 1 E fun (x : M) => TangentSpace I x] (hf : ContMDiff I (modelWithCornersSelf ℝ ℝ) 2 f) :
      MDiff fun (x : M) => ⟨x, mgradient I f x⟩

      A C² function has a differentiable Riemannian gradient section.

      theorem TauCeti.Manifold.contMDiff_neg_mgradient {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {f : M → ℝ} {n : WithTop ℕ∞} [IsManifold I (n + 1) M] [IsContMDiffRiemannianBundle I n E fun (x : M) => TangentSpace I x] (hf : ContMDiff I (modelWithCornersSelf ℝ ℝ) (n + 1) f) :
      ContMDiff I I.tangent n fun (x : M) => ⟨x, -mgradient I f x⟩

      The negative gradient is smooth. For a C^n Riemannian metric, the negative gradient of a C^{n+1} function is a C^n vector field.

      theorem TauCeti.Manifold.contMDiff_neg_mgradient_one {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {f : M → ℝ} [IsManifold I 2 M] [IsContMDiffRiemannianBundle I 1 E fun (x : M) => TangentSpace I x] (hf : ContMDiff I (modelWithCornersSelf ℝ ℝ) 2 f) :
      ContMDiff I I.tangent 1 fun (y : M) => ⟨y, (-mgradient I f) y⟩

      TauCeti.Manifold.contMDiff_neg_mgradient at n = 1, with the smoothness order 1 + 1 written as 2, in the form taken by the integral-curve API.

      theorem TauCeti.Manifold.contMDiff_inner_mgradient {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {f : M → ℝ} {n : WithTop ℕ∞} [IsManifold I (n + 1) M] [IsContMDiffRiemannianBundle I n E fun (x : M) => TangentSpace I x] {g : M → ℝ} (hf : ContMDiff I (modelWithCornersSelf ℝ ℝ) (n + 1) f) (hg : ContMDiff I (modelWithCornersSelf ℝ ℝ) (n + 1) g) :
      ContMDiff I (modelWithCornersSelf ℝ ℝ) n fun (x : M) => inner ℝ (mgradient I f x) (mgradient I g x)

      For a C^n Riemannian metric, the inner product of the gradients of two C^{n+1} functions is C^n.

      For a C^n Riemannian metric, the squared norm of the gradient of a C^{n+1} function is C^n.

      theorem TauCeti.Manifold.continuous_inner_mgradient {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {H : Type u_2} [TopologicalSpace H] {I : ModelWithCorners ℝ E H} {M : Type u_3} [TopologicalSpace M] [ChartedSpace H M] [IsManifold I 1 M] [Bundle.RiemannianBundle fun (x : M) => TangentSpace I x] {f : M → ℝ} [IsContinuousRiemannianBundle E fun (x : M) => TangentSpace I x] {g : M → ℝ} (hf : ContMDiff I (modelWithCornersSelf ℝ ℝ) 1 f) (hg : ContMDiff I (modelWithCornersSelf ℝ ℝ) 1 g) :
      Continuous fun (x : M) => inner ℝ (mgradient I f x) (mgradient I g x)

      The inner product of two gradients is continuous. For a continuous Riemannian metric, the pointwise inner product ⟪grad f, grad g⟫ of two C¹ functions is a continuous function.

      For a continuous Riemannian metric, the squared length ‖grad f‖² of the gradient of a C¹ function is continuous.

      For a continuous Riemannian metric, the length ‖grad f‖ of the gradient of a C¹ function is continuous.

      Comparison with the differential in a chart #

      The differential in a chart is controlled by the gradient. Near p, the Fréchet derivative of the coordinate expression of a function f in the extended chart at p is bounded by a fixed multiple of the Riemannian length of the gradient of f. The constant and the neighbourhood depend only on the metric, not on f: the constant bounds the operator norm of the inverse of the tangent chart, measured with the metric on its target, which is locally bounded for a continuous metric.

      The gradient is sharply controlled by the differential in a chart. For a continuous metric and any r > 1, near p the Riemannian length of the gradient of f is at most r times the length of the coordinate differential of f in the extended chart at p, transported to the tangent space at p by the tangent chart and measured with the metric at p. The constant r can be taken arbitrarily close to 1 because the metric read in the chart is continuous.