scilib documentation

LeanChemicalTheories / physics.kinematic_equations

The equations of motion #

We define motion to be over an inner product space, which is a vector space endowed with an operator caleld the inner product. We generalize motion to be over a field that is either real or complex, and show that three of the four kinematic equations for constant acceleration hold in complex time. The fourth kinematic equation, as of now, can only be derived in real time.

We also define an extension of the motion class to require that our functions be continously differentiable n times. In the future, we plan to define another class extension which only requires the equations of motion to be differentiable on a set. These classes are defined seperatley from the motion class to give flexibility to motion's applicability. We also don't require the equations to be infinitley differentiable, but this can be achieved by using ⊀ for n.

Finally, at the end we derive the four equations of motion for the case of linear translation along a line. Currently, these derivations are independent of the motion class, but in the future, they will be unified with motion and shown to be examples of their vector coutner-part.

To-Do #

structure motion (π•œ : Type u_1) (E : Type u_2) [normed_add_comm_group E] [is_R_or_C π•œ] [inner_product_space π•œ E] :
Type (max u_1 u_2)
Instances for motion
  • motion.has_sizeof_inst
structure motion_cont_diff_everywhere (π•œ : Type u_1) (E : Type u_2) [normed_add_comm_group E] [is_R_or_C π•œ] [inner_product_space π•œ E] :
Type (max u_1 u_2)
Instances for motion_cont_diff_everywhere
  • motion_cont_diff_everywhere.has_sizeof_inst
theorem acceleration_eq_deriv2_position {π•œ : Type u_1} {E : Type u_2} [is_R_or_C π•œ] [normed_add_comm_group E] [inner_product_space π•œ E] (M : motion π•œ E) :
theorem deriv2_position_eq_deriv_velocity {π•œ : Type u_1} {E : Type u_2} [is_R_or_C π•œ] [normed_add_comm_group E] [inner_product_space π•œ E] (M : motion π•œ E) :
theorem velocity_eq_deriv1_position {π•œ : Type u_1} {E : Type u_2} [normed_add_comm_group E] [is_R_or_C π•œ] [inner_product_space π•œ E] {M : motion_cont_diff_everywhere π•œ E} :
theorem cont_diff_acceleration {π•œ : Type u_1} {E : Type u_2} [normed_add_comm_group E] [is_R_or_C π•œ] [inner_product_space π•œ E] {M : motion_cont_diff_everywhere π•œ E} {n : with_top β„•} (hn : 2 < n) :
theorem cont_diff_velocity {π•œ : Type u_1} {E : Type u_2} [normed_add_comm_group E] [is_R_or_C π•œ] [inner_product_space π•œ E] {M : motion_cont_diff_everywhere π•œ E} {n : with_top β„•} (hn : 1 < n) :
theorem cont_diff_position {π•œ : Type u_1} {E : Type u_2} [normed_add_comm_group E] [is_R_or_C π•œ] [inner_product_space π•œ E] {M : motion_cont_diff_everywhere π•œ E} {n : with_top β„•} (hn : 0 < n) :
theorem acceleration_differentiable {π•œ : Type u_1} {E : Type u_2} [normed_add_comm_group E] [is_R_or_C π•œ] [inner_product_space π•œ E] {M : motion_cont_diff_everywhere π•œ E} {n : with_top β„•} (hn : 2 < n) :
theorem velocity_differentiable {π•œ : Type u_1} {E : Type u_2} [normed_add_comm_group E] [is_R_or_C π•œ] [inner_product_space π•œ E] {M : motion_cont_diff_everywhere π•œ E} {n : with_top β„•} (hn : 1 < n) :
theorem position_differentiable {π•œ : Type u_1} {E : Type u_2} [normed_add_comm_group E] [is_R_or_C π•œ] [inner_product_space π•œ E] {M : motion_cont_diff_everywhere π•œ E} {n : with_top β„•} (hn : 1 < n) :

Kinematic equations for translation in a vector field #

theorem const_accel {π•œ : Type u_1} {E : Type u_2} [normed_add_comm_group E] [is_R_or_C π•œ] [inner_product_space π•œ E] {M : motion_cont_diff_everywhere π•œ E} {𝔸 : E} (accel_const : M.to_motion.acceleration = Ξ» (t : π•œ), 𝔸) {n : with_top β„•} (hn : 1 < n) :
M.to_motion.velocity = Ξ» (t : π•œ), t β€’ 𝔸 + M.to_motion.velocity 0
theorem const_accel' {π•œ : Type u_1} {E : Type u_2} [normed_add_comm_group E] [is_R_or_C π•œ] [inner_product_space π•œ E] {M : motion_cont_diff_everywhere π•œ E} {𝔸 : E} (accel_const : M.to_motion.acceleration = Ξ» (t : π•œ), 𝔸) {n : with_top β„•} (hn : 1 < n) :
M.to_motion.position = Ξ» (t : π•œ), (t ^ 2 / 2) β€’ 𝔸 + t β€’ M.to_motion.velocity 0 + M.to_motion.position 0
theorem const_accel'' {π•œ : Type u_1} {E : Type u_2} [normed_add_comm_group E] [is_R_or_C π•œ] [inner_product_space π•œ E] {M : motion_cont_diff_everywhere π•œ E} {𝔸 : E} (accel_const : M.to_motion.acceleration = Ξ» (t : π•œ), 𝔸) {n : with_top β„•} (hn : 1 < n) (t : π•œ) :

Kinematic equations for translation on a real line #

theorem velocity_eq_const_accel_mul_time {Ξ± : ℝ} (x v a : ℝ β†’ ℝ) (hf' : βˆ€ (t : ℝ), has_deriv_at x (v t) t) (hf'' : βˆ€ (t : ℝ), has_deriv_at v (a t) t) (accel_const : a = Ξ» (t : ℝ), Ξ±) :
v = Ξ» (t : ℝ), Ξ± * t + v 0
theorem pos_eq_const_accel_mul_time_sqr_add_velocity_mul_time {Ξ± : ℝ} (x v a : ℝ β†’ ℝ) (hf' : βˆ€ (t : ℝ), has_deriv_at x (v t) t) (hf'' : βˆ€ (t : ℝ), has_deriv_at v (a t) t) (accel_const : a = Ξ» (t : ℝ), Ξ±) :
x = Ξ» (t : ℝ), Ξ± * t ^ 2 / 2 + v 0 * t + x 0
theorem pos_eq_velocity_add_initial_mul_time {Ξ± : ℝ} (x v a : ℝ β†’ ℝ) (hf' : βˆ€ (t : ℝ), has_deriv_at x (v t) t) (hf'' : βˆ€ (t : ℝ), has_deriv_at v (a t) t) (accel_const : a = Ξ» (t : ℝ), Ξ±) (t : ℝ) :
x t = (v t + v 0) * t / 2 + x 0
theorem velocity_pow_two_eq_velocity_initial_pow_two_add_accel_mul_pos {Ξ± : ℝ} (x v a : ℝ β†’ ℝ) (hf' : βˆ€ (t : ℝ), has_deriv_at x (v t) t) (hf'' : βˆ€ (t : ℝ), has_deriv_at v (a t) t) (accel_const : a = Ξ» (t : ℝ), Ξ±) (t : ℝ) :
v t ^ 2 = v 0 ^ 2 + 2 * a t * (x t - x 0)