PhysLean Documentation

PhysLean.ClassicalMechanics.WaveEquation.Basic

Wave equation #

i. Overview #

In this module we define the wave equation in d-dimensional Euclidean space, and prove that plane waves are solutions to the wave equation. By a plne wave we mean a function of the form f(t, x) = f₀(⟪x, s⟫_ℝ - c * t) where s is a direction vector and c is the propagation speed.

ii. Key results #

iii. Table of contents #

iv. References #

A. The wave equation #

def ClassicalMechanics.WaveEquation {d : } (f : TimeSpace dEuclideanSpace (Fin d)) (t : Time) (x : Space d) (c : ) :

The general form of the wave equation where c is the propagation speed.

Equations
Instances For

    B. Plane wave solutions #

    B.1. Definition of a plane wave #

    noncomputable def ClassicalMechanics.planeWave {d : } (f₀ : EuclideanSpace (Fin d)) (c : ) (s : Space.Direction d) :

    A vector-valued plane wave travelling in the direction of s with propagation speed c.

    Equations
    Instances For
      theorem ClassicalMechanics.planeWave_eq {t : Time} {d : } {f₀ : EuclideanSpace (Fin d)} {c : } {x : Space d} {s : Space.Direction d} :
      planeWave f₀ c s t x = f₀ (inner x s.unit - c * t.val)

      B.2. Differentiablity conditions #

      theorem ClassicalMechanics.planeWave_differentiable_time {d : } {f₀ : EuclideanSpace (Fin d)} {c : } {x : Space d} {s : Space.Direction d} (h' : Differentiable f₀) :
      Differentiable fun (t : Time) => planeWave f₀ c s t x
      theorem ClassicalMechanics.planeWave_differentiable_space {d : } {f₀ : EuclideanSpace (Fin d)} {c : } {t : Time} {s : Space.Direction d} (h' : Differentiable f₀) :
      Differentiable fun (x : Space d) => planeWave f₀ c s t x

      B.3. Time derivatives of plane waves #

      theorem ClassicalMechanics.planeWave_time_deriv {d : } {f₀ : EuclideanSpace (Fin d)} {c : } {x : Space d} {s : Space.Direction d} (h' : Differentiable f₀) :
      (Time.deriv fun (x_1 : Time) => planeWave f₀ c s x_1 x) = -c fun (t : Time) => planeWave (fun (x : ) => (fderiv f₀ x) 1) c s t x
      theorem ClassicalMechanics.planeWave_time_deriv_time_deriv {d : } {f₀ : EuclideanSpace (Fin d)} {c : } {x : Space d} {s : Space.Direction d} (h' : ContDiff 2 f₀) :
      Time.deriv (Time.deriv fun (x_1 : Time) => planeWave f₀ c s x_1 x) = c ^ 2 fun (t : Time) => planeWave (iteratedDeriv 2 f₀) c s t x

      B.4. Space derivatives of plane waves #

      theorem ClassicalMechanics.planeWave_space_deriv {t : Time} {d : } {f₀ : EuclideanSpace (Fin d)} {c : } {s : Space.Direction d} (h' : Differentiable f₀) (i : Fin d) :
      Space.deriv i (planeWave f₀ c s t) = s.unit.val i fun (x : Space d) => planeWave (fun (x : ) => (fderiv f₀ x) 1) c s t x
      theorem ClassicalMechanics.planeWave_apply_space_deriv {t : Time} {d : } {f₀ : EuclideanSpace (Fin d)} {c : } {s : Space.Direction d} (h' : Differentiable f₀) (i j : Fin d) :
      (Space.deriv i fun (x : Space d) => (planeWave f₀ c s t x).ofLp j) = s.unit.val i fun (x : Space d) => (planeWave (fun (x : ) => (fderiv f₀ x) 1) c s t x).ofLp j
      theorem ClassicalMechanics.planeWave_space_deriv_space_deriv {t : Time} {d : } {f₀ : EuclideanSpace (Fin d)} {c : } {s : Space.Direction d} (h' : ContDiff 2 f₀) (i : Fin d) :
      Space.deriv i (Space.deriv i (planeWave f₀ c s t)) = s.unit.val i ^ 2 fun (x : Space d) => planeWave (fun (x : ) => iteratedDeriv 2 f₀ x) c s t x
      theorem ClassicalMechanics.planeWave_apply_space_deriv_space_deriv {t : Time} {d : } {f₀ : EuclideanSpace (Fin d)} {c : } {s : Space.Direction d} (h' : ContDiff 2 f₀) (i j : Fin d) :
      Space.deriv i (Space.deriv i fun (x : Space d) => (planeWave f₀ c s t x).ofLp j) = s.unit.val i ^ 2 fun (x : Space d) => (planeWave (fun (x : ) => iteratedDeriv 2 f₀ x) c s t x).ofLp j

      B.5. Laplacian of plane waves #

      theorem ClassicalMechanics.planeWave_laplacian {t : Time} {d : } {f₀ : EuclideanSpace (Fin d)} {c : } {s : Space.Direction d} (h' : ContDiff 2 f₀) :
      Space.laplacianVec (planeWave f₀ c s t) = fun (x : Space d) => planeWave (fun (x : ) => iteratedDeriv 2 f₀ x) c s t x

      B.6. Plane waves satisfy the wave equation #

      theorem ClassicalMechanics.planeWave_waveEquation {d : } (c : ) (s : Space.Direction d) (f₀ : EuclideanSpace (Fin d)) (hf₀ : ContDiff 2 f₀) (t : Time) (x : Space d) :
      WaveEquation (planeWave f₀ c s) t x c

      The plane wave satisfies the wave equation.

      C. Old lemmas used throughout files #

      These lemmas will eventually be moved, renamed and/or replaced.

      theorem ClassicalMechanics.wave_differentiable {d : } {t : } {s : Space.Direction d} {c : } {x : Space d} :
      DifferentiableAt (fun (x : Space d) => inner x s.unit - c * t) x
      theorem ClassicalMechanics.wave_dx2 {d : } {c t : } {x : Space d} {u v : Fin d} {s : Space.Direction d} {f₀' f₀'' : →L[] EuclideanSpace (Fin d)} (h'' : ∀ (x : ), HasFDerivAt (fun (x' : ) => (f₀' x') 1) (f₀'' x) x) :
      (fderiv (fun (x' : Space d) => inner ((f₀' (inner x' s.unit - c * t)) (s.unit.val u)) (EuclideanSpace.single v 1)) x) (Space.basis u) = inner (s.unit.val u ^ 2 (f₀'' (inner x s.unit - c * t)) 1) (EuclideanSpace.single v 1)
      theorem ClassicalMechanics.space_fderiv_of_inner_product_wave_eq_space_fderiv {d : } {c : } {x : Space d} {t : Time} {f₀ : EuclideanSpace (Fin d)} {s : Space.Direction d} {u v : Fin d} (h' : Differentiable f₀) :
      c * (fun (x' : Space d) => (fderiv (fun (x : Space d) => inner (f₀ (inner x s.unit - c * t.val)) (EuclideanSpace.single v 1)) x') (Space.basis u)) x = -s.unit.val u * (Time.deriv (fun (t : Time) => f₀ (inner x s.unit - c * t.val)) t).ofLp v

      If f₀ is a function of (inner ℝ x s - c * t), the fderiv of its components with respect to spatial coordinates is equal to the corresponding component of the propagation direction s times time derivative.

      theorem ClassicalMechanics.time_differentiable_of_eq_planewave {d : } {c : } {x : Space d} {s : Space.Direction d} {f₀ : EuclideanSpace (Fin d)} {f : TimeSpace dEuclideanSpace (Fin d)} (h' : Differentiable f₀) (hf : f = planeWave f₀ c s) :
      Differentiable fun (t : Time) => f t x
      theorem ClassicalMechanics.crossProduct_time_differentiable_of_right_eq_planewave {c : } {x : Space} {t : Time} {s : Space.Direction} {f₀ : EuclideanSpace (Fin 3)} {f : TimeSpaceEuclideanSpace (Fin 3)} (h' : Differentiable f₀) (hf : f = planeWave f₀ c s) :
      DifferentiableAt (fun (t : Time) => (fun (a b : WithLp 2 (Fin 3)) => (WithLp.equiv 2 (Fin 3)).symm ((crossProduct ((WithLp.equiv 2 (Fin 3)) a)) ((WithLp.equiv 2 (Fin 3)) b))) (Space.basis.repr (s.unit 3)) (f t x)) t
      theorem ClassicalMechanics.crossProduct_differentiable_of_right_eq_planewave {u : } {s : Space.Direction} {f₀ : EuclideanSpace (Fin 3)} (h' : Differentiable f₀) :
      DifferentiableAt (fun (u : ) => (fun (a b : WithLp 2 (Fin 3)) => (WithLp.equiv 2 (Fin 3)).symm ((crossProduct ((WithLp.equiv 2 (Fin 3)) a)) ((WithLp.equiv 2 (Fin 3)) b))) (Space.basis.repr (s.unit 3)) (f₀ u)) u
      theorem ClassicalMechanics.wave_fderiv_inner_eq_inner_fderiv_proj {d : } {c t : } {f₀ : EuclideanSpace (Fin d)} {s : Space.Direction d} {i : Fin d} (h' : Differentiable f₀) (x y : Space d) :
      s.unit.val i * ((fderiv (fun (x : Space d) => f₀ (inner x s.unit - c * t)) x) y).ofLp i = inner y s.unit * (fderiv (fun (x : Space d) => (f₀ (inner x s.unit - c * t)).ofLp i) x) (Space.basis i)