En química computacional , un algoritmo de restricción es un método para satisfacer el movimiento newtoniano de un cuerpo rígido que consta de puntos de masa. Se utiliza un algoritmo de restricción para garantizar que se mantenga la distancia entre los puntos de masa. Los pasos generales involucrados son: (i) elegir nuevas coordenadas no restringidas (coordenadas internas), (ii) introducir fuerzas de restricción explícitas, (iii) minimizar las fuerzas de restricción implícitamente mediante la técnica de los multiplicadores de Lagrange o métodos de proyección.
Los algoritmos de restricción se aplican a menudo a simulaciones de dinámica molecular . Aunque estas simulaciones a veces se realizan utilizando coordenadas internas que satisfacen automáticamente las restricciones de longitud de enlace, ángulo de enlace y ángulo de torsión, las simulaciones también se pueden realizar utilizando fuerzas de restricción explícitas o implícitas para estas tres restricciones. Sin embargo, las fuerzas restrictivas explícitas dan lugar a ineficiencia; se requiere más potencia de cálculo para obtener una trayectoria de una longitud determinada. Por lo tanto, generalmente se prefieren las coordenadas internas y los solucionadores de restricciones de fuerza implícita.
Los algoritmos de restricción logran eficiencia computacional al descuidar el movimiento a lo largo de algunos grados de libertad. Por ejemplo, en la dinámica molecular atomística, normalmente la longitud de los enlaces covalentes al hidrógeno está restringida; sin embargo, los algoritmos de restricción no deben usarse si las vibraciones a lo largo de estos grados de libertad son importantes para el fenómeno que se está estudiando.
Fondo matemático
El movimiento de un conjunto de N partículas se puede describir mediante un conjunto de ecuaciones diferenciales ordinarias de segundo orden, la segunda ley de Newton, que se puede escribir en forma matricial
donde M es un matriz de masa y q es el vector de coordenadas generalizadas que describen las posiciones de las partículas. Por ejemplo, el vector q puede ser un 3N coordenadas cartesianas de las posiciones de las partículas r k , donde k va de 1 a N ; en ausencia de restricciones, M sería la matriz cuadrada diagonal 3N x 3N de las masas de partículas. El vector f representa las fuerzas generalizadas y el escalar V ( q ) representa la energía potencial, ambas funciones de las coordenadas generalizadas q .
Si hay M restricciones, las coordenadas también deben satisfacer M ecuaciones algebraicas independientes del tiempo.
donde el índice j va de 1 a M . Por brevedad, estas funciones g i se agrupan en un vector M -dimensional g a continuación. La tarea es resolver el conjunto combinado de ecuaciones algebraicas diferenciales (DAE), en lugar de solo las ecuaciones diferenciales ordinarias (ODE) de la segunda ley de Newton.
Este problema fue estudiado en detalle por Joseph Louis Lagrange , quien expuso la mayoría de los métodos para resolverlo. [1] El enfoque más simple es definir nuevas coordenadas generalizadas que no estén restringidas; este enfoque elimina las ecuaciones algebraicas y reduce el problema una vez más a resolver una ecuación diferencial ordinaria. Este enfoque se utiliza, por ejemplo, para describir el movimiento de un cuerpo rígido; la posición y la orientación de un cuerpo rígido se puede describir mediante seis coordenadas independientes y sin restricciones, en lugar de describir las posiciones de las partículas que lo componen y las restricciones entre ellas que mantienen sus distancias relativas. El inconveniente de este enfoque es que las ecuaciones pueden volverse difíciles de manejar y complejas; por ejemplo, la matriz de masas M puede volverse no diagonal y depender de las coordenadas generalizadas.
Un segundo enfoque es introducir fuerzas explícitas que trabajen para mantener la restricción; por ejemplo, se podrían introducir fuertes fuerzas de resorte que refuercen las distancias entre los puntos de masa dentro de un cuerpo "rígido". Las dos dificultades de este enfoque son que las restricciones no se satisfacen exactamente, y las fuerzas fuertes pueden requerir pasos de tiempo muy cortos, lo que hace que las simulaciones sean ineficientes computacionalmente.
Un tercer enfoque es utilizar un método como los multiplicadores de Lagrange o la proyección a la variedad de restricciones para determinar los ajustes de coordenadas necesarios para satisfacer las restricciones. Finalmente, existen varios enfoques híbridos en los que diferentes conjuntos de restricciones se satisfacen mediante diferentes métodos, por ejemplo, coordenadas internas, fuerzas explícitas y soluciones de fuerza implícita.
Métodos de coordenadas internas
El enfoque más simple para satisfacer las restricciones en la minimización de energía y la dinámica molecular es representar el sistema mecánico en las llamadas coordenadas internas correspondientes a los grados de libertad independientes no restringidos del sistema. Por ejemplo, los ángulos diedros de una proteína son un conjunto independiente de coordenadas que especifican las posiciones de todos los átomos sin requerir ninguna restricción. La dificultad de tales enfoques de coordenadas internas es doble: las ecuaciones de movimiento newtonianas se vuelven mucho más complejas y las coordenadas internas pueden ser difíciles de definir para sistemas cíclicos de restricciones, por ejemplo, en el fruncimiento de anillos o cuando una proteína tiene un enlace disulfuro.
Los métodos originales para la minimización eficiente de energía recursiva en coordenadas internas fueron desarrollados por Gō y sus compañeros de trabajo. [2] [3]
Los solucionadores de restricciones de coordenadas internas eficientes, recursivos, se extendieron a la dinámica molecular. [4] [5] Posteriormente se aplicaron métodos análogos a otros sistemas. [6] [7] [8]
Métodos basados en multiplicadores de Lagrange
En la mayoría de las simulaciones de dinámica molecular que utilizan algoritmos de restricción, las restricciones se aplican mediante el método de los multiplicadores de Lagrange . Dado un conjunto de n restricciones lineales ( holonómicas ) en el tiempo t ,
dónde y son las posiciones de las dos partículas involucradas en la k- ésima restricción en el momento t y es la distancia prescrita entre partículas.
Las fuerzas debidas a estas restricciones se suman en las ecuaciones de movimiento, lo que da como resultado, para cada una de las N partículas en el sistema
Sumar las fuerzas de restricción no cambia la energía total, ya que el trabajo neto realizado por las fuerzas de restricción (tomado sobre el conjunto de partículas sobre las que actúan las restricciones) es cero.
De integrar ambos lados de la ecuación con respecto al tiempo, las coordenadas restringidas de las partículas en ese momento, , son dados,
dónde es la posición no restringida (o no corregida) de la i- ésima partícula después de integrar las ecuaciones de movimiento no restringidas.
Para satisfacer las limitaciones en el siguiente paso de tiempo, los multiplicadores de Lagrange deben determinarse como la siguiente ecuación,
Esto implica resolver un sistema de ecuaciones no lineales
simultáneamente para el multiplicadores de Lagrange desconocidos .
Este sistema de ecuaciones no lineales en Las incógnitas se resuelven comúnmente usando el método de Newton-Raphson donde el vector de solución se actualiza usando
dónde es el jacobiano de las ecuaciones σ k :
Dado que no todas las partículas contribuyen a todas las restricciones, es una matriz de bloques y se puede resolver individualmente a la unidad de bloque de la matriz. En otras palabras, se puede resolver individualmente para cada molécula.
En lugar de actualizar constantemente el vector , la iteración se puede iniciar con , lo que resulta en expresiones más simples para y . En este caso
luego se actualiza a
Después de cada iteración, las posiciones de partículas no restringidas se actualizan usando
Luego, el vector se restablece a
El procedimiento anterior se repite hasta la solución de las ecuaciones de restricción, , converge a una tolerancia prescrita de un error numérico.
Aunque hay varios algoritmos para calcular los multiplicadores de Lagrange, estas diferencias se basan solo en los métodos para resolver el sistema de ecuaciones. Para estos métodos, se utilizan comúnmente métodos cuasi-Newton .
El algoritmo SETTLE
El algoritmo SETTLE [9] resuelve analíticamente el sistema de ecuaciones no lineales paralimitaciones en tiempo constante. Aunque no escala a un mayor número de restricciones, se utiliza muy a menudo para restringir moléculas de agua rígidas, que están presentes en casi todas las simulaciones biológicas y generalmente se modelan utilizando tres restricciones (por ejemplo, modelos de agua SPC / E y TIP3P ).
El algoritmo SHAKE
El algoritmo SHAKE se desarrolló por primera vez para satisfacer una restricción de geometría de enlace durante las simulaciones de dinámica molecular . [10] Luego, el método se generalizó para manejar cualquier restricción holonómica, como las necesarias para mantener constantes los ángulos de enlace o la rigidez molecular. [11]
En el algoritmo SHAKE, el sistema de ecuaciones de restricción no lineal se resuelve usando el método de Gauss-Seidel que aproxima la solución del sistema lineal de ecuaciones usando el método de Newton-Raphson ;
Esto equivale a asumir que es diagonalmente dominante y resuelve el la ecuación sólo para el desconocido. En la práctica, calculamos
para todos iterativamente hasta que las ecuaciones de restricción se resuelven con una tolerancia determinada.
El costo de cálculo de cada iteración es , y las iteraciones mismas convergen linealmente.
Posteriormente se desarrolló una forma no iterativa de SHAKE. [12]
Existen varias variantes del algoritmo SHAKE. Aunque difieren en cómo calculan o aplican las restricciones en sí mismas, las restricciones todavía se modelan usando multiplicadores de Lagrange que se calculan usando el método de Gauss-Seidel .
El algoritmo SHAKE original es capaz de restringir moléculas rígidas y flexibles (por ejemplo, agua, benceno y bifenilo ) e introduce un error insignificante o deriva de energía en una simulación de dinámica molecular. [13] Un problema con SHAKE es que el número de iteraciones necesarias para alcanzar un cierto nivel de convergencia aumenta a medida que la geometría molecular se vuelve más compleja. Para alcanzar una precisión de computadora de 64 bits (una tolerancia relativa de) en una simulación de dinámica molecular típica a una temperatura de 310 K, un modelo de agua de 3 sitios que tiene 3 restricciones para mantener la geometría molecular requiere un promedio de 9 iteraciones (que es 3 por sitio por paso de tiempo). Un modelo de butano de 4 sitios con 5 restricciones necesita 17 iteraciones (22 por sitio), un modelo de benceno de 6 sitios con 12 restricciones necesita 36 iteraciones (72 por sitio), mientras que un modelo de bifenilo de 12 sitios con 29 restricciones requiere 92 iteraciones ( 229 por sitio por intervalo de tiempo). [13] Por lo tanto, los requisitos de CPU del algoritmo SHAKE pueden llegar a ser significativos, particularmente si un modelo molecular tiene un alto grado de rigidez.
Una extensión posterior del método, QSHAKE ( Quaternion SHAKE) se desarrolló como una alternativa más rápida para moléculas compuestas de unidades rígidas, pero no es de uso general. [14] Funciona satisfactoriamente para bucles rígidos como los sistemas de anillos aromáticos , pero QSHAKE falla para los bucles flexibles, como cuando una proteína tiene un enlace disulfuro. [15]
Otras extensiones incluyen RATTLE, [16] WIGGLE, [17] y MSHAKE. [18]
Mientras que RATTLE funciona de la misma manera que SHAKE, [19] pero usando el esquema de integración de tiempo de Velocity Verlet , WIGGLE extiende SHAKE y RATTLE usando una estimación inicial para los multiplicadores de Lagrange basado en las velocidades de las partículas. Cabe mencionar que MSHAKE calcula correcciones sobre las fuerzas de restricción , logrando una mejor convergencia.
Una última modificación del algoritmo SHAKE es el algoritmo P-SHAKE [20] que se aplica a moléculas muy rígidas o semirrígidas . P-SHAKE calcula y actualiza un preacondicionador que se aplica a los gradientes de restricción antes de la iteración SHAKE, provocando el jacobianopara volverse diagonal o fuertemente diagonalmente dominante. Las restricciones así desacopladas convergen mucho más rápido (cuadráticamente en lugar de linealmente) a un costo de.
El algoritmo M-SHAKE
El algoritmo M-SHAKE [21] resuelve el sistema de ecuaciones no lineales utilizando el método de Newton directamente. En cada iteración, el sistema lineal de ecuaciones
se resuelve exactamente usando una descomposición LU . Cada iteración cuestaoperaciones, sin embargo, la solución converge cuadráticamente , requiriendo menos iteraciones que SHAKE.
Esta solución se propuso por primera vez en 1986 por Ciccotti y Ryckaert [11] con el título "el método de la matriz", sin embargo, difieren en la solución del sistema lineal de ecuaciones. Ciccotti y Ryckaert sugieren invertir la matrizdirectamente, pero haciéndolo solo una vez, en la primera iteración. La primera iteración cuesta operaciones, mientras que las siguientes iteraciones cuestan solo operaciones (para la multiplicación matriz-vector). Sin embargo, esta mejora tiene un costo, dado que el jacobiano ya no se actualiza, la convergencia es solo lineal , aunque a un ritmo mucho más rápido que para el algoritmo SHAKE.
Barth et al estudiaron varias variantes de este enfoque basadas en técnicas de matriz dispersa . . [22]
Algoritmo SHAPE
El algoritmo SHAPE [23] es un análogo multicéntrico de SHAKE para restringir cuerpos rígidos de tres o más centros. Al igual que SHAKE, se da un paso sin restricciones y luego se corrige calculando y aplicando directamente la matriz de rotación del cuerpo rígido que satisface:
Este enfoque implica una diagonalización de matriz única de 3 × 3 seguida de tres o cuatro iteraciones rápidas de Newton para determinar la matriz de rotación. SHAPE proporciona la trayectoria idéntica que se proporciona con SHAKE iterativo totalmente convergente, sin embargo, se encuentra que es más eficiente y más preciso que SHAKE cuando se aplica a sistemas que involucran tres o más centros. Extiende la capacidad de SHAKE como restricciones a sistemas lineales con tres o más átomos, sistemas planos con cuatro o más átomos y a estructuras rígidas significativamente más grandes donde SHAKE es intratable. También permite que los cuerpos rígidos se vinculen con uno o dos centros comunes (por ejemplo, planos de péptidos) resolviendo las restricciones de los cuerpos rígidos de manera iterativa de la misma manera básica que se usa SHAKE para átomos que involucran más de una restricción SHAKE.
Algoritmo LINCS
Un método alternativo de restricción, LINCS (Linear Constraint Solver) fue desarrollado en 1997 por Hess, Bekker, Berendsen y Fraaije, [24] y se basó en el método de 1986 de Edberg, Evans y Morriss (EEM), [25] y una modificación del mismo por Baranyai y Evans (BE). [26]
LINCS aplica multiplicadores de Lagrange a las fuerzas de restricción y resuelve los multiplicadores usando una expansión en serie para aproximar el inverso del jacobiano.:
en cada paso de la iteración de Newton. Esta aproximación solo funciona para matrices con valores propios menores que 1, lo que hace que el algoritmo LINCS sea adecuado solo para moléculas con baja conectividad.
Se ha informado que LINCS es de 3 a 4 veces más rápido que SHAKE. [24]
Métodos híbridos
También se han introducido métodos híbridos en los que las restricciones se dividen en dos grupos; las restricciones del primer grupo se resuelven usando coordenadas internas mientras que las del segundo grupo se resuelven usando fuerzas de restricción, por ejemplo, mediante un multiplicador de Lagrange o un método de proyección. [27] [28] [29] Este enfoque fue iniciado por Lagrange , [1] y da como resultado ecuaciones de Lagrange del tipo mixto . [30]
Ver también
- Dinámica molecular
- Software para modelado de mecánica molecular
Referencias y notas a pie de página
- ↑ a b Lagrange, GL (1788). Mécanique analytique .
- ^ Noguti T, Toshiyuki; Gō N (1983). "Un método de cálculo rápido de una segunda matriz derivada de energía conformacional para moléculas grandes". Revista de la Sociedad de Física de Japón . 52 (10): 3685–3690. Código Bibliográfico : 1983JPSJ ... 52.3685N . doi : 10.1143 / JPSJ.52.3685 .
- ^ Abe, H; Braun W; Noguti T; Gō N (1984). "Cálculo rápido de 1ª y 2ª derivadas de energía conformacional con respecto a ángulos diedros para proteínas: Ecuaciones generales recurrentes". Informática y Química . 8 (4): 239–247. doi : 10.1016 / 0097-8485 (84) 85015-9 .
- ^ Bae, DS; Haug EJ (1988). "Una formulación recursiva para la dinámica de sistemas mecánicos restringidos: parte I. Sistemas de bucle abierto". Mecánica de Estructuras y Máquinas . 15 (3): 359–382. doi : 10.1080 / 08905458708905124 .
- ^ Jain, A; Vaidehi N; Rodríguez G (1993). "Un algoritmo recursivo rápido para simulación de dinámica molecular". Revista de Física Computacional . 106 (2): 258–268. Código bibliográfico : 1993JCoPh.106..258J . doi : 10.1006 / jcph.1993.1106 .
- ^ Arroz, LM; Brünger AT (1994). "Dinámica del ángulo de torsión: muestreo conformacional variable reducido mejora el refinamiento de la estructura cristalográfica". Proteínas: estructura, función y genética . 19 (4): 277–290. doi : 10.1002 / prot.340190403 . PMID 7984624 .
- ^ Mathiowetz, AM; Jain A; Karasawa N; Goddard III, WA (1994). "Simulaciones de proteínas utilizando técnicas adecuadas para sistemas muy grandes: el método de múltiples polos de células para interacciones no unidas y el método de operador de masa inversa de Newton-Euler para la dinámica de coordenadas internas". Proteínas: estructura, función y genética . 20 (3): 227–247. doi : 10.1002 / prot.340200304 . PMID 7892172 .
- ^ Mazur, AK (1997). "Ecuaciones de movimiento cuasi-hamiltonianas para dinámica molecular de coordenadas internas de polímeros". Revista de Química Computacional . 18 (11): 1354-1364. arXiv : física / 9703019 . doi : 10.1002 / (SICI) 1096-987X (199708) 18:11 <1354 :: AID-JCC3> 3.0.CO; 2-K .
- ^ Miyamoto, S; Kollman PA (1992). "SETTLE: una versión analítica del algoritmo SHAKE y RATTLE para modelos de agua rígida". Revista de Química Computacional . 13 (8): 952–962. doi : 10.1002 / jcc.540130805 .
- ^ Ryckaert, JP; Ciccotti G; Berendsen HJC (1977). "Integración numérica de las ecuaciones cartesianas de movimiento de un sistema con restricciones: dinámica molecular de n- alcanos". Revista de Física Computacional . 23 (3): 327–341. Código Bibliográfico : 1977JCoPh..23..327R . CiteSeerX 10.1.1.399.6868 . doi : 10.1016 / 0021-9991 (77) 90098-5 .
- ^ a b Ciccotti, G .; JP Ryckaert (1986). "Simulación de dinámica molecular de moléculas rígidas". Informes de Física Informática . 4 (6): 345–392. Código Bibliográfico : 1986CoPhR ... 4..346C . doi : 10.1016 / 0167-7977 (86) 90022-5 .
- ^ Yoneya, M; Berendsen HJC; Hirasawa K (1994). "Un método de matriz no literativa para simulaciones de dinámica molecular de restricción". Simulaciones moleculares . 13 (6): 395–405. doi : 10.1080 / 08927029408022001 .
- ^ a b Hammonds, KD; Heyes DM (2020). "Shadow Hamiltonian en simulaciones clásicas de dinámica molecular NVE: un camino hacia la estabilidad a largo plazo". Revista de Física Química . 152 : 024114_1–024114_15. doi : 10.1063 / 1.5139708 .
- ^ Forester, TR; Smith W. (1998). "Sacudir, vibrar y rodar: algoritmos de restricción eficientes para cuerpos rígidos enlazados". Revista de Química Computacional . 19 : 102-111. doi : 10.1002 / (SICI) 1096-987X (19980115) 19: 1 <102 :: AID-JCC9> 3.0.CO; 2-T .
- ^ McBride, C; Wilson MR; Howard JAK (1998). "Simulaciones de dinámica molecular de fases de cristal líquido utilizando potenciales atomísticos". Física molecular . 93 (6): 955–964. Código Bibliográfico : 1998MolPh..93..955C . doi : 10.1080 / 002689798168655 .
- ^ Andersen, Hans C. (1983). "RATTLE: una versión de" velocidad "del algoritmo SHAKE para cálculos de dinámica molecular". Revista de Física Computacional . 52 (1): 24–34. Código Bibliográfico : 1983JCoPh..52 ... 24A . CiteSeerX 10.1.1.459.5668 . doi : 10.1016 / 0021-9991 (83) 90014-1 .
- ^ Lee, Sang-Ho; Kim Palmo; Samuel Krimm (2005). "WIGGLE: un nuevo algoritmo de dinámica molecular restringida en coordenadas cartesianas". Revista de Física Computacional . 210 (1): 171–182. Código Bibliográfico : 2005JCoPh.210..171L . doi : 10.1016 / j.jcp.2005.04.006 .
- ^ Lambrakos, SG; JP Boris; ES Orán; I. Chandrasekhar; M. Nagumo (1989). "Un algoritmo SHAKE modificado para mantener enlaces rígidos en simulaciones de dinámica molecular de moléculas grandes". Revista de Física Computacional . 85 (2): 473–486. Código Bibliográfico : 1989JCoPh..85..473L . doi : 10.1016 / 0021-9991 (89) 90160-5 .
- ^ Leimkuhler, Benedict; Robert Skeel (1994). "Integradores numéricos simplécticos en sistemas hamiltonianos restringidos". Revista de Física Computacional . 112 (1): 117-125. Código bibliográfico : 1994JCoPh.112..117L . doi : 10.1006 / jcph.1994.1085 .
- ^ Gonnet, Pedro (2007). "P-SHAKE: Un SHAKE cuadráticamente convergente en". Journal of Computational Physics . 220 (2): 740–750. Código bibliográfico : 2007JCoPh.220..740G . Doi : 10.1016 / j.jcp.2006.05.032 .
- ^ Kräutler, Vincent; WF van Gunsteren; PH Hünenberger (2001). "Un algoritmo SHAKE rápido para resolver ecuaciones de restricción de distancia para moléculas pequeñas en simulaciones de dinámica molecular". Revista de Química Computacional . 22 (5): 501–508. doi : 10.1002 / 1096-987X (20010415) 22: 5 <501 :: AID-JCC1021> 3.0.CO; 2-V .
- ^ Barth, Eric; K. Kuczera; B. Leimkuhler; R. Skeel (1995). "Algoritmos de dinámica molecular restringida". Revista de Química Computacional . 16 (10): 1192–1209. doi : 10.1002 / jcc.540161003 .
- ^ Tao, Peng; Xiongwu Wu; Bernard R. Brooks (2012). "Mantener estructuras rígidas en simulaciones de dinámica molecular cartesiana basadas en Verlet" . La Revista de Física Química . 137 (13): 134110. Código Bibliográfico : 2012JChPh.137m4110T . doi : 10.1063 / 1.4756796 . PMC 3477181 . PMID 23039588 .
- ^ a b Hess, B; Bekker H; Berendsen HJC; Fraaije JGEM (1997). "LINCS: un solucionador de restricciones lineales para simulaciones moleculares". Revista de Química Computacional . 18 (12): 1463–1472. CiteSeerX 10.1.1.48.2727 . doi : 10.1002 / (SICI) 1096-987X (199709) 18:12 <1463 :: AID-JCC4> 3.0.CO; 2-H .
- ^ Edberg, R; Evans DJ; Morriss GP (1986). "Simulaciones de dinámica molecular restringida de alcanos líquidos con un nuevo algoritmo". Revista de Física Química . 84 (12): 6933–6939. Código Bibliográfico : 1986JChPh..84.6933E . doi : 10.1063 / 1.450613 .
- ^ Baranyai, A; Evans DJ (1990). "Nuevo algoritmo para simulación de dinámica molecular restringida de benceno líquido y naftaleno". Física molecular . 70 (1): 53–63. Código Bibliográfico : 1990MolPh..70 ... 53B . doi : 10.1080 / 00268979000100841 .
- ^ Mazur, AK (1999). "Integración simpléctica de la dinámica de cuerpos rígidos de cadena cerrada con ecuaciones de movimiento de coordenadas internas". Revista de Física Química . 111 (4): 1407-1414. Código Bibliográfico : 1999JChPh.111.1407M . doi : 10.1063 / 1.479399 .
- ^ Bae, DS; Haug EJ (1988). "Una formulación recursiva para la dinámica de sistemas mecánicos restringidos: parte II. Sistemas de bucle cerrado". Mecánica de Estructuras y Máquinas . 15 (4): 481–506. doi : 10.1080 / 08905458708905130 .
- ^ Rodríguez, G; Jain A; Kreutz-Delgado K (1991). "Un álgebra de operador espacial para el modelado y control de manipuladores". La Revista Internacional de Investigación en Robótica . 10 (4): 371–381. doi : 10.1177 / 027836499101000406 . hdl : 2060/19900020578 .
- ^ Sommerfeld, Arnold (1952). Conferencias sobre física teórica, vol. I: Mecánica . Nueva York: Academic Press. ISBN 978-0-12-654670-5.