Splines cúbicos: ¿Cómo hacer que una partícula dibuje tu nombre?

¿O una flor? ¿O un pez? ¿Podríamos atacar una célula cancerígena o controlar una reacción química? Teóricamente por lo menos, sí (suponiendo que tenemos los controles adecuados).

La teoría de control, que trata de dirigir la evolución de un sistema, es un mundo muy amplio y tiene muchas más aplicaciones que las que hemos comentado y comentaremos aquí (se usa en aviones, coches, cohetes, móviles, fábricas, electrónica, microscopios de corriente túnel, etc.).

Hay distintas maneras de plantear el problema, pero nosotros usaremos la formulación geométrica de un sistema clásico donde el sistema se modeliza mediante una variedad y campos vectoriales. Vamos a ver cómo se formulan los problemas de control en este lenguaje. Más particularmente, nos restringiremos al problema de control de los splines cúbicos. La idea de un spline es juntar puntos mediante curvas suaves. La gracia aquí es que la curva sea la trayectoria de un sistema físico. Éste es pues el objetivo: cómo hacer un sistema clásico para por ciertos puntos que nosotros fijamos a tiempo finito.

Comentemos que aunque solo trataremos sistemas clásicos, también hay control cuántico (no rozaremos este tema porque es más difícil de imaginar y el formalismo matemático es más complejo).

En este artículo no entraremos en muchos detalles técnicos, sino que nos vamos a centrar en los conceptos. El lector habrá aprendido cómo se contestan a las preguntas del inicio del artículo de una manera matemática, introduciendo las ideas de controlabilidad de un sistema y la existencia de un control óptimo, el último reduciéndose a la resolución de un sistema de ecuaciones diferenciales con condiciones de contorno mixtas.

Formalismo matemático

Matemáticamente un sistema clásico se puede modelizar mediante un conjunto de estados y un campo vectorial que nos da la dinámica.

El conjunto de estados viene a denotar todos los posibles sistemas. Por ejemplo, en el caso de una partícula en una dimensión, una vez fijamos la posición q y el momento p (masa por velocidad), tenemos determinada toda su evolución. Si cambiamos x=(q,p) en principio la evolución natural será distinta, luego tiene sentido etiquetar a los distintos sistemas mediante los parámetros (q,p), las condiciones iniciales. Más generalmente, este conjunto de puntos (q,p) forma una variedad, que se puede imaginar como una superficie suave generalizada.

Fig1
Figura 1: A continuación se puede observar una imagen donde se representa una variedad M y un conjunto de vectores u(q) y u(p) en dos puntos q y p. Nota: aquí q y p son dos puntos distintos q=(q_1,p_1), p=(q_2,p_2) y no las coordenadas en la expresión (q,p). Los vectores e_1, e_2 son una base del espacio tangente a la variedad en cada uno de estos puntos. Fuente: Liu, Beibei, et al. “Discrete connection and covariant derivative for vector field analysis and design.” ACM Transactions on Graphics (TOG) 35.3 (2016): 23.

Para denotar la dinámica, o el cambio en el tiempo del sistema, usamos un campo vectorial que a cada punto de la variedad, que denota un posible sistema, se le asocia una “velocidad” V=\frac{dx}{dt}=\frac{d}{dt}(q,p)=\left( \frac{p}{m}, F \right) donde usamos la definición del momento p y la ley de Newton F=\frac{dp}{dt}, siendo F la fuerza.

Esta velocidad indica cómo nos vemos dentro del espacio de todos los sistemas. Integrando el campo vectorial conseguimos trayectorias del sistema en el espacio de estados (curvas integrales). Esta última idea es de gran importancia, e intuitivamente se puede entender del siguiente modo: si el campo vectorial representa la velocidad de un fluido, las curvas integrales son las trayectorias que haríamos si nos dejáramos llevar por el fluido.

Figura 2: En esta imagen se representa un campo vectorial y sus curvas integrales, a las cuales el campo es tangente. Fuente: “File:Slope Field.png.” Wikimedia Commons, the free media repository. 6 Jul 2018, 01:17 UTC. 3 Aug 2018, 09:44 Link

Matemáticamente, reunimos todo lo que hemos comentado

\frac{dx}{dt} = V(x(t),u(t))

donde V denota el campo vectorial que nos da la velocidad en cada punto x(t) a tiempo t. Este campo depende del punto de la variedad x(t) y además de una función u(t), que será el parámetro de control y lo escogemos nosotros (de la misma forma que elegimos cómo incidir con un láser o girar un volante).

Para simplificar, nos restringirnos a sistemas que dependen linealmente de u(t) por sencillez (sistemas “bilineales”):

\frac{dx}{dt} = V(x(t),u(t)) = X_0 + \sum_i u_i(t) X_i

donde X_0 es el campo que denota la evolución natural de un sistema y X_i distintos campos externos que podemos aplicar y que controlamos mediante u_i.

Un ejemplo más concreto de cómo se podría escribir un sistema de esta manera es el de un muelle (recuérdese la ley de Hooke, F=-kq, siendo k la constante del muelle), con el campo vectorial X_0 escrito en la Figura 3. En la figura se muestra la idea de lo dicho, con el caso particular de controles u_i binarios: 0 o 1 (cambiando a un cierto tiempo t). Entonces según el campo “activado” es uno u otro o varios, el sistema actúa de una forma distinta. Por “actúa”, se entiende que las trayectorias en el espacio de fases son distintas.

Figura 3: En esta imagen es importante entender la idea de curvas integrales. Según está activado un campo u otro (mientras un color está activado, los otros no; el campo “natural” o de deriva X_0 está siempre presente en este caso), tenemos trayectorias distintas en el espacio de fases, como se aprecia en la figura. De esta manera, podríamos pensar en hacer la partícula pasar por puntos que no serían accesibles si únicamente estaría influenciada por el muelle. Fuente imagen trayectorias: Fatima Leite, Introduction to geometric control theory

Controlabilidad

La pregunta sería, ¿es el sistema controlable? Concretizando más, si partimos desde un punto cualquiera, podemos llegar a cualquier otro cambiando el campo V(x(t),u(t)) mediante u(t)? La respuesta, cuando el campo viene escrito de manera general, viene dada por el Teorema de Chow (o Chow–Rashevskii), que en términos más intuitivos afirma lo siguiente:

Si tenemos una dinámica de la forma \frac{dx}{dt} = \sum_i u_i X_i entonces si los conmutadores [X_i,X_j] de los campos nos proporcionan direcciones nuevas de movimiento, llegando a saturar todos los grados de libertad (matemáticamente, la dimensión llega a ser la misma que la del espacio tangente a la variedad), entonces el sistema es controlable porque podemos desplazarnos en cualquier dirección desde cualquier punto.

El conmutador se define como [X_1,X_2] = X_1 X_2 - X_2 X_1 y en la Figura 4 se puede ver una representación visual de la acción del conmutador.

Figura 4: En esta imagen se representa la idea fundamental del conmutador. Resumidamente, es dejarse llevar por un campo y luego el otro, y después hacerlo en orden inverso. Ver el texto para más detalles. Fuente imagen: Tax, Chantal MW, et al. “Sheet Probability Index (SPI): Characterizing the geometrical organization of the white matter with diffusion MRI.” NeuroImage 142 (2016): 260-279.

Dados dos campos vectoriales, calculamos el conmutador siguiendo infinitesimalmente la curva integral de uno (el rojo), después la del otro (el azul) y después en sentido opuesto por al rojo y el azul otra vez. En principio, la intuición dice que deberíamos llegar al mismo punto, pero esto no es así.

Se pueden dar dos casos: si la diferencia entre el punto final e inicial se puede poner como combinación lineal de los campos rojos y azul en el punto p, entonces no ganamos nada nuevo, pero si no se puede poner como combinación lineal, entonces nos movemos en una dimensión distinta (la verde en la figura) y tenemos un grado de libertad adicional. Ahora tenemos tres campos: el rojo, azul y verde y podemos volver a conmutar todos con todos (verde con azul, verde con rojo) para ver si conseguimos todavía más grados de libertad. Hacemos esto hasta ya no tener más grados posibles, que es cuando tenemos la dimensión de espacio tangente. Si no llegamos a saturar el espacio tangente, entonces el sistema no es controlable porque no podemos ir en cualquier direcciones desde cualquier punto.

La cuestión es: aunque es bonito teóricamente, ¿cómo se implementaría en un laboratorio? Pensemos en un ejemplo particular: un láser y una molécula. “Dejarnos llevar” por el campo vectorial que modeliza el láser es simplemente actuarlo en una dirección y dejar el sistema evolucionar muy poco. Después lo aplicamos en otra dirección y evoluciona un poco y después lo mismo pero al revés. De esta manera vamos alternando muy rápidamente (comparado con la dinámica del sistema) el láser y el campo efectivo neto que aplicamos es el conmutado. Es muy importante que sea la acción lo más próxima a “infinitesimal” posible.

Figura 5: Un ejemplo más cotidiano de un conmutador sería el aparcar un coche: con dos grados de libertad o campos vectoriales (la acción de un campo es mover hacia adelante el coche y la del otro girar) podemos conseguir un movimiento neto en una dirección distinta, lateral, mediante el conmutador, que consiste en realizar las acciones escritas en inglés en la figura. Nótese que las acciones deberían ser infinitesimales, pero se consigue una buena aproximación con desplazamientos finitos, aunque acabemos moviéndonos en diagonal y no puramente de manera lateral. Fuente imagen: Fatima Leite, Introduction to geometric control theory

Resumiendo lo esencial, modelizamos matemáticamente nuestra acción mediante campos vectoriales. Alternándolos muy rápidamente en comparación con la dinámica del sistema (de modo que la evolución sea “infinitesimal”) conseguimos el campo conmutado, que puede, o no, ser un campo que nos permita movernos en una dirección nueva a la de los campos de partida. Con el nuevo campo conmutamos todo con todo otra vez, para ver si conseguimos más direcciones todavía. Cuando ya no hay más, comparamos la dimensión del conjunto de campos y vemos si es la del espacio tangente o no. Si lo es, entonces el sistema es controlable (porque podemos ir en cualquier dirección) pero si no, no.

Se debe comentar que en el caso del muelle, nuestro sistema no tiene la misma forma que en el teorema, sino que el campo X_0 es un término de arrastre (o “drift”) extra. En este caso el sistema no se puede decir que sea controlable sino meramente accesible, pero en la práctica salvo para algún caso patológico (ver el Apéndice A) es equivalente a controlable.

Control óptimo

Con la anterior sección hemos visto que tenemos un test para saber si dado un sistema, éste es controlable (consiste en conmutar todos los campos entre sí y los que nos dan grados nuevos de libertad “añadirlos al saco” y después vovler a repetir la acción). Aunque es muy abstracto el desarrollo, en la práctica se resume a realizar unas cuentas simbólicas.

Si el sistema es controlable, puede haber muchos controles que hagan lo que queremos (en este caso, hallar una trayectoria que pase por ciertos puntos). Debemos pues escoger un control. Una manera de pesar los distintos controles es mediante una función coste,

J(u(t))=\int_0^T \mathcal{L} dt + \frac{1}{\epsilon}G(x_f,x(T))

El coste terminal es \frac{1}{\epsilon}G(x_f,x(T)) y nos pesa el final de la trayectoria comparándolo con algún estado objetivo al que queremos llegar. Puede tomar la forma de la norma usual, G(x_f,x(T)=\vert x_f - x(T) \vert ^2. El término \epsilon nos permite escoger lo exigentes que somo: cuanto de cerca queremos que pase realmente. Si vale cero, entonces tiene que pasar el estado exactamente por dichos x_f.

El coste evolutivo es \int_0^T \mathcal{L} dt y nos mide cómo llegamos al punto final, no solamente llegar a él. Por ejemplo, podríamos requerir que se llegue de una manera que minimice la energía.

El nombre general del problema de minimizar un coste J(u(t)) de esta forma es problema tipo Bolza. Si el coste terminal es nulo, se llama problema de Lagrange. Si el coste evolutivo es nulo, es un problema de Meyer. Aquí hemos usado un único intervalo [0,T] para representar el coste para hacer el sistema pasar por un cierto punto a tiempo t=T, pero fácilmente se puede generalizar a n puntos.

Ahora, tenemos una ligadura: queremos encontrar un u(t) que minimice J(u(t)), pero también queremos que se satisfaga la dinámica del sistema, que nos da la ligadura \frac{dx}{dt} - V(x(t),u(t)) = 0. Para resolver un problema de minimización con ligaduras, hacemos uso de multiplicadores de Lagrange. Se puede ver una visualización de la idea en la Figura 6.

Figura 6: En esta figura se ve una representación visual de la idea detrás de los multiplicadores de Lagrange. La curva roja se ve como una ligadura y las azules serían distintas curvas de nivel de la función que se quiere minimizar o maximizar. El punto óptimo se encuentra cuando los gradientes de ambas funciones son proporcionales. Esto tiene sentido si interpretamos al gradiente como la dirección de máximo aumento de la función. Si nos movemos sobra la curva roja, podemos ver la proyección del gradiente de f sobre el vector tangente a la curva. Si la proyección es no nula, entonces hay una dirección en la que nos podemos mover para aumentar el valor de f, pero si la proyección es nula (cuando los gradientes de f y g son proporcionales) entonces no hay ninguna dirección en la que moverse para aumentar f y estamos en un valor extremal. Fuente: “File:LagrangeMultipliers2D.svg.” Wikimedia Commons, the free media repository. 8 Sep 2017, 22:15 UTC. 3 Aug 2018, 09:28 Link.

Saltando los detalles técnicos, se llega a un sistema de ecuaciones diferenciales con condiciones mixtas de contorno, que es la dificultad que supone el usar este método. Estas ecuaciones son difíciles de resolver, pero no imposibles. Al resolverlas, conseguimos hallar no sólo en control u(t) sino la propia evolución óptima del sistema, que en este caso particular consiste en guiar al sistema a pasar por unos puntos predeterminados del espacio de estados.

De esta manera, si ponemos muchos puntos, podemos conseguir una curva continua que es la trayectoria y que dibuja una cierta forma determinada por los puntos resolviendo el problema inicial planteado.

Conclusiones

Como resumen, hemos explicado una manera entre varias de cómo plantear matemáticamente el control de sistemas clásicos, hemos visto la idea fundamental detrás de la conmutación de campos y cómo esto nos da información sobre si el sistema es controlable o no. Por último, minimizando una función coste (que nos pesa lo lejos que estamos de los puntos a los cuales deseamos llegar y la manera en la que llegamos a ellos) tenemos un criterio que nos permite elegir un control “óptimo”.

 

Apéndices

Apéndice A: Caso patológico

En el teorema de Chow tenemos el sistema escrito en la forma genérica

\frac{dx}{dt} = \sum_i u_i X_i

pero más generalmente, si hacemos u_0 = 1 entonces tenemos

\frac{dx}{dt} = X_0 \sum_{i=1}^{n} u_i X_i

Este término X_0 se denomina de “drift” o arrastre. Puede ser peligroso de cara al teorema de controlabilidad. Por ejemplo, en el caso siguiente:

\dot{x}_1 = x_2^2
\dot{x}_2 = u_1

donde el punto denota derivada. Se pueden calcular los conmutadores y se ve que se llega a la dimensión del espacio tangente, pero sin embargo la derivada de x_1 es siempre positiva, luego nunca podemos ir más “atrás” que la condición inicial de partida, significando que el sistema no es controlable.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies
A %d blogueros les gusta esto: