Documentation

LeanPool.PoincareThreeBody.KeplerOrbit

Elliptic Kepler orbits in eccentric anomaly #

This file gives the real elliptic Kepler orbit attached to Delaunay action I₁ and eccentricity e. It verifies the radius, radial momentum, and energy formulas directly. The mean anomaly is the first Delaunay angle along the unperturbed flow.

noncomputable def LeanPool.PoincareThreeBody.eccentricRadius (firstAction eccentricity anomaly : ) :

Radius of an elliptic Kepler orbit as a function of eccentric anomaly.

Equations
Instances For
    noncomputable def LeanPool.PoincareThreeBody.eccentricRadialMomentum (firstAction eccentricity anomaly : ) :

    Radial momentum of an elliptic Kepler orbit as a function of eccentric anomaly.

    Equations
    Instances For
      noncomputable def LeanPool.PoincareThreeBody.eccentricMeanAnomaly (eccentricity anomaly : ) :

      Mean anomaly as a function of eccentric anomaly (Kepler's equation).

      Equations
      Instances For
        noncomputable def LeanPool.PoincareThreeBody.eccentricKeplerTime (firstAction eccentricity anomaly : ) :

        Physical Kepler time, normalized to vanish with the mean anomaly.

        Equations
        Instances For
          noncomputable def LeanPool.PoincareThreeBody.eccentricPolarState (firstAction eccentricity anomaly polarAngle : ) :

          A polar phase-space point on the elliptic Kepler orbit. Its angular coordinate is free because the inertial Kepler energy is rotation invariant.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            theorem LeanPool.PoincareThreeBody.one_sub_eccentricity_mul_cos_pos {eccentricity anomaly : } (heccentricity : 0 eccentricity) (heccentricityOne : eccentricity < 1) :
            0 < 1 - eccentricity * Real.cos anomaly
            theorem LeanPool.PoincareThreeBody.eccentricRadius_pos {firstAction eccentricity anomaly : } (hfirstAction : firstAction 0) (heccentricity : 0 eccentricity) (heccentricityOne : eccentricity < 1) :
            0 < eccentricRadius firstAction eccentricity anomaly
            theorem LeanPool.PoincareThreeBody.eccentricRadius_le_apoapsis_bound {firstAction eccentricity anomaly : } (heccentricity : 0 eccentricity) :
            eccentricRadius firstAction eccentricity anomaly firstAction ^ 2 * (1 + eccentricity)
            theorem LeanPool.PoincareThreeBody.hasDerivAt_eccentricMeanAnomaly (eccentricity anomaly : ) :
            HasDerivAt (eccentricMeanAnomaly eccentricity) (1 - eccentricity * Real.cos anomaly) anomaly
            theorem LeanPool.PoincareThreeBody.hasDerivAt_eccentricRadius (firstAction eccentricity anomaly : ) :
            HasDerivAt (eccentricRadius firstAction eccentricity) (firstAction ^ 2 * eccentricity * Real.sin anomaly) anomaly
            theorem LeanPool.PoincareThreeBody.hasDerivAt_eccentricKeplerTime (firstAction eccentricity anomaly : ) :
            HasDerivAt (eccentricKeplerTime firstAction eccentricity) (firstAction ^ 3 * (1 - eccentricity * Real.cos anomaly)) anomaly
            theorem LeanPool.PoincareThreeBody.eccentricRadialMomentum_eq_radiusDeriv_div_timeDeriv {firstAction eccentricity anomaly : } (hfirstAction : firstAction 0) (hdenominator : 1 - eccentricity * Real.cos anomaly 0) :
            eccentricRadialMomentum firstAction eccentricity anomaly = firstAction ^ 2 * eccentricity * Real.sin anomaly / (firstAction ^ 3 * (1 - eccentricity * Real.cos anomaly))

            The radial momentum is dr/dt along the eccentric-anomaly parameterization.

            theorem LeanPool.PoincareThreeBody.strictMono_eccentricMeanAnomaly {eccentricity : } (heccentricity : 0 eccentricity) (heccentricityOne : eccentricity < 1) :
            theorem LeanPool.PoincareThreeBody.eccentricMeanAnomaly_add_two_pi (eccentricity anomaly : ) :
            eccentricMeanAnomaly eccentricity (anomaly + 2 * Real.pi) = eccentricMeanAnomaly eccentricity anomaly + 2 * Real.pi
            theorem LeanPool.PoincareThreeBody.eccentricMeanAnomaly_add_nat_mul_two_pi (eccentricity anomaly : ) (turns : ) :
            eccentricMeanAnomaly eccentricity (anomaly + turns * (2 * Real.pi)) = eccentricMeanAnomaly eccentricity anomaly + turns * (2 * Real.pi)
            theorem LeanPool.PoincareThreeBody.eccentricMeanAnomaly_lower_bound {eccentricity anomaly : } (heccentricity : 0 eccentricity) :
            anomaly - eccentricity eccentricMeanAnomaly eccentricity anomaly
            theorem LeanPool.PoincareThreeBody.eccentricMeanAnomaly_upper_bound {eccentricity anomaly : } (heccentricity : 0 eccentricity) :
            eccentricMeanAnomaly eccentricity anomaly anomaly + eccentricity
            theorem LeanPool.PoincareThreeBody.surjective_eccentricMeanAnomaly {eccentricity : } (heccentricity : 0 eccentricity) :
            theorem LeanPool.PoincareThreeBody.bijective_eccentricMeanAnomaly {eccentricity : } (heccentricity : 0 eccentricity) (heccentricityOne : eccentricity < 1) :
            noncomputable def LeanPool.PoincareThreeBody.eccentricAnomaly (eccentricity meanAnomaly : ) :

            The unique eccentric anomaly solving Kepler's equation for a given mean anomaly.

            Equations
            Instances For
              theorem LeanPool.PoincareThreeBody.eccentricMeanAnomaly_eccentricAnomaly {eccentricity : } (heccentricity : 0 eccentricity) (meanAnomaly : ) :
              eccentricMeanAnomaly eccentricity (eccentricAnomaly eccentricity meanAnomaly) = meanAnomaly
              theorem LeanPool.PoincareThreeBody.eccentricAnomaly_eccentricMeanAnomaly {eccentricity : } (heccentricity : 0 eccentricity) (heccentricityOne : eccentricity < 1) (anomaly : ) :
              eccentricAnomaly eccentricity (eccentricMeanAnomaly eccentricity anomaly) = anomaly
              theorem LeanPool.PoincareThreeBody.eccentricAnomaly_add_two_pi {eccentricity meanAnomaly : } (heccentricity : 0 eccentricity) (heccentricityOne : eccentricity < 1) :
              eccentricAnomaly eccentricity (meanAnomaly + 2 * Real.pi) = eccentricAnomaly eccentricity meanAnomaly + 2 * Real.pi
              theorem LeanPool.PoincareThreeBody.eccentricAnomaly_add_nat_mul_two_pi {eccentricity meanAnomaly : } (turns : ) (heccentricity : 0 eccentricity) (heccentricityOne : eccentricity < 1) :
              eccentricAnomaly eccentricity (meanAnomaly + turns * (2 * Real.pi)) = eccentricAnomaly eccentricity meanAnomaly + turns * (2 * Real.pi)
              theorem LeanPool.PoincareThreeBody.continuous_eccentricAnomaly {eccentricity : } (heccentricity : 0 eccentricity) (heccentricityOne : eccentricity < 1) :
              theorem LeanPool.PoincareThreeBody.hasDerivAt_eccentricAnomaly {eccentricity meanAnomaly : } (heccentricity : 0 eccentricity) (heccentricityOne : eccentricity < 1) :
              HasDerivAt (eccentricAnomaly eccentricity) (1 / (1 - eccentricity * Real.cos (eccentricAnomaly eccentricity meanAnomaly))) meanAnomaly
              theorem LeanPool.PoincareThreeBody.analyticAt_eccentricAnomaly {eccentricity meanAnomaly : } (heccentricity : 0 eccentricity) (heccentricityOne : eccentricity < 1) :
              AnalyticAt (eccentricAnomaly eccentricity) meanAnomaly
              noncomputable def LeanPool.PoincareThreeBody.delaunayRadius (firstAction eccentricity meanAnomaly : ) :

              Radius expressed as a function of the first Delaunay angle.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                theorem LeanPool.PoincareThreeBody.delaunayRadius_pos {firstAction eccentricity meanAnomaly : } (hfirstAction : firstAction 0) (heccentricity : 0 eccentricity) (heccentricityOne : eccentricity < 1) :
                0 < delaunayRadius firstAction eccentricity meanAnomaly
                theorem LeanPool.PoincareThreeBody.delaunayRadius_add_two_pi {firstAction eccentricity meanAnomaly : } (heccentricity : 0 eccentricity) (heccentricityOne : eccentricity < 1) :
                delaunayRadius firstAction eccentricity (meanAnomaly + 2 * Real.pi) = delaunayRadius firstAction eccentricity meanAnomaly
                theorem LeanPool.PoincareThreeBody.delaunayRadius_add_nat_mul_two_pi {firstAction eccentricity meanAnomaly : } (turns : ) (heccentricity : 0 eccentricity) (heccentricityOne : eccentricity < 1) :
                delaunayRadius firstAction eccentricity (meanAnomaly + turns * (2 * Real.pi)) = delaunayRadius firstAction eccentricity meanAnomaly
                theorem LeanPool.PoincareThreeBody.analyticAt_delaunayRadius {firstAction eccentricity meanAnomaly : } (heccentricity : 0 eccentricity) (heccentricityOne : eccentricity < 1) :
                AnalyticAt (delaunayRadius firstAction eccentricity) meanAnomaly
                theorem LeanPool.PoincareThreeBody.polarKeplerEnergy_eccentricPolarState {firstAction eccentricity anomaly polarAngle : } (hfirstAction : firstAction 0) (heccentricity : 0 eccentricity) (heccentricityOne : eccentricity < 1) :
                polarKeplerEnergy (eccentricPolarState firstAction eccentricity anomaly polarAngle) = -1 / (2 * firstAction ^ 2)

                The eccentric-anomaly formulas lie on the inertial Kepler energy shell -1 / (2 * I₁²).