mechanics.sls 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. ;;; Copyright © 2016 Federico Beffa
  2. ;;;
  3. ;;; This program is free software; you can redistribute it and/or modify it
  4. ;;; under the terms of the GNU General Public License as published by
  5. ;;; the Free Software Foundation; either version 3 of the License, or (at
  6. ;;; your option) any later version.
  7. ;;;
  8. ;;; This program is distributed in the hope that it will be useful, but
  9. ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
  10. ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. ;;; GNU General Public License for more details.
  12. ;;;
  13. ;;; You should have received a copy of the GNU General Public License
  14. ;;; along with this program. If not, see <http://www.gnu.org/licenses/>.
  15. ;;; Code
  16. #!chezscheme
  17. (library (scmutils mechanics)
  18. (export
  19. ;;;./scmutils/mechanics/rotation.scm ; OK
  20. ;;rotate-x-matrix-2 rotate-x-matrix
  21. Rx-matrix
  22. ;;rotate-y-matrix-2 rotate-y-matrix
  23. Ry-matrix
  24. ;;rotate-z-matrix-2 rotate-z-matrix
  25. Rz-matrix
  26. angle&axis->rotation-matrix
  27. ;;rotate-x-tuple-2
  28. rotate-x-tuple
  29. ;;rotate-y-tuple-2
  30. rotate-y-tuple
  31. ;;rotate-z-tuple-2
  32. rotate-z-tuple
  33. ;;rotate-x-2
  34. rotate-x
  35. ;;rotate-y-2
  36. rotate-y
  37. ;;rotate-z-2
  38. rotate-z wcross->w
  39. ;;;./scmutils/mechanics/Lagrangian.scm
  40. coordinate-tuple velocity-tuple acceleration-tuple
  41. momentum-tuple ->local ->state ->L-state state->n-dof
  42. state->t state->q state->qdot state->qddot time coordinate
  43. velocity acceleration coordinates velocities accelerations Q
  44. Qdot Qdotdot literal-Lagrangian-state path->state-path Gamma
  45. make-Lagrangian Lagrange-equations Lagrangian->acceleration
  46. Lagrange-equations-1 local-state-derivative qv->local-path
  47. Lagrangian->state-derivative Lagrangian->energy
  48. Lagrangian->power-loss
  49. ;;;./scmutils/mechanics/action.scm ; OK
  50. Lagrangian-action
  51. make-path
  52. parametric-path-action
  53. find-path
  54. linear-interpolants
  55. ;;;./scmutils/mechanics/Lagrangian-evolution.scm ; OK
  56. ;;;./scmutils/mechanics/gamma-bar.scm ; OK
  57. Gamma-bar osculating-path Dt-procedure Dt
  58. Euler-Lagrange-operator trim-last-argument LE
  59. Lagrange-equations-operator clip-state clip generalized-LE
  60. ;;;./scmutils/mechanics/Lagrangian-transformations.scm ; OK
  61. F->C rectangular->polar r->p polar->rectangular
  62. p->r spherical->rectangular s->r rectangular->spherical r->s
  63. Rx Ry Rz
  64. ;;;./scmutils/mechanics/Noether.scm ; OK
  65. Noether-integral
  66. ;;;./scmutils/mechanics/rigid.scm ; OK
  67. m:antisymmetric? antisymmetric->column-matrix
  68. 3vector-components->antisymmetric M-of-q->omega-of-t
  69. M-of-q->omega-body-of-t M->omega
  70. M->omega-body T-body L-body L-space Euler->M Euler->omega
  71. Euler->omega-body Euler-state->omega-body
  72. T-body-Euler T-rigid-body L-body-Euler Euler-state->L-body
  73. L-space-Euler Euler-state->L-space relative-error
  74. quaternion-state->omega-body quaternion-state->omega-space
  75. qw-state->L-body qw-state->L-space T-quaternion-state
  76. ;;;./scmutils/mechanics/Hamiltonian.scm
  77. ->H-state H-state? compatible-H-state? state->p momentum
  78. momenta P state->qp literal-Hamiltonian-state Lstate->Hstate
  79. Hstate->Lstate H-state->matrix matrix->H-state
  80. degrees-of-freedom make-Hamiltonian Hamilton-equations
  81. qp->H-state-path Hamiltonian->state-derivative D-phase-space
  82. Legendre-transform-procedure
  83. Lagrangian->Hamiltonian-procedure
  84. Hamiltonian->Lagrangian-procedure Poisson-bracket
  85. commutator anticommutator Lie-derivative flow-derivative
  86. ;;;./scmutils/mechanics/Routhian.scm
  87. Lagrangian->Routhian Routh-equations Routh-equations-bad
  88. Routhian->acceleration-bad Routhian->acceleration
  89. Routhian->state-derivative Lagrangian-state->Routhian-state
  90. Routhian-state->Lagrangian-state
  91. ;;;./scmutils/mechanics/Hamiltonian-evolution.scm ; OK
  92. ;;;./scmutils/mechanics/qualitative.scm
  93. unstable-manifold
  94. fixed-point-eigen
  95. radially-mapping-points
  96. find-invariant-curve
  97. which-way?
  98. ;;;./scmutils/mechanics/point-transformation.scm
  99. F->CH F->CT F->K
  100. ;;;./scmutils/mechanics/canonical.scm
  101. canonical? compositional-canonical? J-func T-func canonical-H?
  102. canonical-K? linear-function->multiplier Phi Phi*
  103. time-independent-canonical? polar-canonical
  104. polar-canonical-inverse two-particle-center-of-mass
  105. two-particle-center-of-mass-canonical
  106. multiplicative-transpose transpose-function
  107. ;;;./scmutils/mechanics/symplectic.scm
  108. symplectic-two-form canonical-transform? J-matrix symplectic?
  109. symplectic-transform? qp-submatrix symplectic-matrix?
  110. symplectic-unit
  111. ;;;./scmutils/mechanics/generating-functions.scm ; OK
  112. ;;;./scmutils/mechanics/time-evolution.scm
  113. shift-t C->Cp H->Hp
  114. ;;;./scmutils/mechanics/Lie-transform.scm
  115. Lie-transform flow-transform
  116. ;;;./scmutils/mechanics/pendulum.scm
  117. Hpendulum pendulum-sysder pendulum-Hamiltonian
  118. pendulum-oscillating-frequency pendulum-oscillating-angle
  119. pendulum-oscillating-angular-momentum
  120. pendulum-oscillating-action pendulum-oscillating-action-to-E
  121. pendulum-oscillating-phase pendulum-oscillating-dt
  122. pendulum-oscillating-aa-state-to-state
  123. pendulum-oscillating-state-to-aa-state
  124. pendulum-circulating-frequency pendulum-circulating-angle
  125. pendulum-circulating-angular-momentum
  126. pendulum-circulating-action pendulum-circulating-action-to-E
  127. pendulum-circulating-phase pendulum-circulating-dt
  128. pendulum-circulating-aa-state-to-state
  129. pendulum-circulating-state-to-aa-state pendulum-f pendulum-g
  130. pendulum-inverse-f pendulum-inverse-g
  131. pendulum-separatrix-angle
  132. pendulum-separatrix-angular-momentum gudermannian
  133. inverse-gudermannian pendulum-separatrix-action
  134. pendulum-advance pendulum-integration pendulum-frequency
  135. pendulum-state-to-global-aa-state
  136. pendulum-global-aa-state-to-state
  137. )
  138. (import (except (rnrs base) error assert
  139. inexact? zero? sqrt exp log sin cos tan
  140. asin acos abs = < <= > >= + - * / expt gcd make-rectangular
  141. make-polar real-part imag-part magnitude angle
  142. atan apply)
  143. (rename (only (rnrs base) string<?) (string<? string:<?))
  144. (rnrs eval)
  145. (rnrs mutable-pairs)
  146. (rnrs io simple)
  147. (rnrs io ports)
  148. (rnrs r5rs)
  149. (rnrs conditions)
  150. (rnrs control)
  151. (rnrs syntax-case)
  152. (rename (except (rnrs lists) filter) (remq delq) (remv delv))
  153. (except (mit core) assert) ; assert is defined in general/logic-utils.scm
  154. (except (mit arithmetic) conjugate)
  155. (mit list)
  156. (except (mit vector) flo:subvector) ; flo:subvector in
  157. ; numerics/signal/cph-dsp/flovec.scm
  158. (mit curry)
  159. (except (mit arity) procedure-arity) ; use version in apply-hook
  160. (mit apply-hook)
  161. (mit hash-tables)
  162. (mit environment)
  163. (mit streams)
  164. (only (srfi :1) reduce reduce-right delete any every lset-adjoin
  165. make-list append-map)
  166. (srfi :9)
  167. (srfi :14) ; char-set
  168. (rename (srfi :41) (stream-cons cons-stream)
  169. (stream-fold stream-accumulate))
  170. (only (chezscheme) include import compile module eval-when
  171. last-pair environment? scheme-environment
  172. copy-environment interaction-environment
  173. make-parameter parameterize
  174. iota reverse! list-head random
  175. waiter-write console-output-port with-output-to-string
  176. void vector-copy)
  177. (scmutils base)
  178. (scmutils generic))
  179. ;;; **** mechanics **********************************
  180. (include "./scmutils/mechanics/rotation.scm")
  181. ;;; Chapter 1
  182. ;;; FBE: we include this in '(scmutils generic)
  183. ;;(include "./scmutils/mechanics/universal.scm")
  184. (include "./scmutils/mechanics/Lagrangian.scm")
  185. (include "./scmutils/mechanics/action.scm")
  186. (include "./scmutils/mechanics/Lagrangian-evolution.scm")
  187. (include "./scmutils/mechanics/gamma-bar.scm")
  188. (include "./scmutils/mechanics/Lagrangian-transformations.scm")
  189. (include "./scmutils/mechanics/Noether.scm")
  190. ;;; Chapter 2
  191. (include "./scmutils/mechanics/rigid.scm")
  192. ;;; Chapter 3
  193. ;; defines 'Lie-derivative'. A more general definition is in calculus/Lie.scm
  194. (include "./scmutils/mechanics/Hamiltonian.scm")
  195. (include "./scmutils/mechanics/Routhian.scm")
  196. (include "./scmutils/mechanics/Hamiltonian-evolution.scm")
  197. ;;; FBE: this is loaded into (scmutils base)
  198. ;;(include "./scmutils/mechanics/sections.scm" scmutils-base-environment)
  199. ;;; Chapter 4
  200. (include "./scmutils/mechanics/qualitative.scm")
  201. ;;; Chapter 5
  202. (include "./scmutils/mechanics/point-transformation.scm")
  203. (include "./scmutils/mechanics/canonical.scm")
  204. (include "./scmutils/mechanics/symplectic.scm")
  205. (include "./scmutils/mechanics/time-varying.scm")
  206. (include "./scmutils/mechanics/generating-functions.scm")
  207. (include "./scmutils/mechanics/time-evolution.scm")
  208. (include "./scmutils/mechanics/Lie-transform.scm")
  209. ;;; Chapter 6
  210. (include "./scmutils/mechanics/pendulum.scm")
  211. )