43 votos

Integral de la matriz exponencial

Dejemos que $A$ ser un $n \times n$ matriz. Entonces la solución del problema de valor inicial \begin{align*} \dot{x}(t) = A x(t), \quad x(0) = x_0 \end{align*} viene dada por $x(t) = \mathrm{e}^{At} x_0$ .

Me interesa la siguiente matriz \begin{align*} \int_{0}^T \mathrm{e}^{At}\, dt \end{align*} para algunos $T>0$ . ¿Se puede escribir una solución general para esto sin distinguir los casos (por ejemplo $A$ no singulares)?

¿Esta matriz es siempre invertible?

1 votos

Se puede representar la matriz exponencial mediante series de potencias

1 votos

1 votos

El teorema espectral dice que si se toma una función analítica $f$ y aplicarlo a la matriz $A$ (sus velas propias tienen que estar en el dominio de la analaticidad de $f$ ), entonces los valores propios de $f(A)$ son $f(\text{eigenvalues of } A)$ . El exponente nunca es cero, por lo tanto $\exp(A)$ es siempre invertible, además, $\exp(A)^{-1}=\exp(-A)$ .

29voto

fianchetto Puntos 186

Caso I. Si $A$ es no singular, entonces $$ \int_0^T\mathrm{e}^{tA}\,dt=\big(\mathrm{e}^{TA}-I\big)A^{-1}, $$ donde $I$ es la matriz de identidad.

Caso II. Si $A$ es singular, entonces usando la forma de Jordan podemos escribir $A$ como $$ A=U^{-1}\left(\begin{matrix}B&0\\0&C\end{matrix}\right)U, $$ donde $C$ es no singular, y $B$ es estrictamente triangular superior. Entonces $$ \mathrm{e}^{tA}=U^{-1}\left(\begin{matrix}\mathrm{e}^{tB}&0\\0&\mathrm{e}^{tC} \end{matrix}\right)U, $$ y $$ \int_0^T\mathrm{e}^{tA}\,dt=U^{-1}\left(\begin{matrix}\int_0^T\mathrm{e}^{tB}dt&0\\0&C^{-1}\big(\mathrm{e}^{TC}-I\big) \end{matrix}\right)U $$ Pero $\int_0^T\mathrm{e}^{tB}dt$ pueden tener expresiones diferentes. Por ejemplo, si $$ B_1=\left(\begin{matrix}0&0\\0&0\end{matrix}\right), \quad B_2=\left(\begin{matrix}0&1\\0&0\end{matrix}\right), $$ entonces $$ \int_0^T\mathrm{e}^{tB_1}dt=\left(\begin{matrix}T&0\\0&T\end{matrix}\right), \quad \int_0^T\mathrm{e}^{tB_2}dt=\left(\begin{matrix}T&T^2/2\\0&T\end{matrix}\right). $$

0 votos

Qué haremos si utilizamos $A(t)$ en lugar de $tA$

0 votos

No hay nada malo en ello.

0 votos

@ Yiorgos S. Smyrlis Así que estás diciendo que incluso si $A(t)$ y $A^{'}(t)$ no son conmutativos, esto funcionará

25voto

Jonah Braun Puntos 101

La fórmula general es la serie de potencias

$$ \int_0^T e^{At} dt = T \left( I + \frac{AT}{2!} + \frac{(AT)^2}{3!} + \dots + \frac{(AT)^{n-1}}{n!} + \dots \right) $$

Tenga en cuenta que también

$$ \left(\int_0^T e^{At} dt \right) A + I = e^{AT} $$

siempre se satisface.

Una condición suficiente para que esta matriz sea no singular es el llamado Teorema de Kalman-Ho-Narendra, que establece que la matriz $\int_0^T e^{At} dt$ es invertible si

$$ T(\mu - \lambda) \neq 2k \pi i $$

para cualquier número entero no nulo $k$ , donde $\lambda$ y $\mu$ son cualquier par de valores propios de $A$ .

Nota para los interesados: Esta matriz también proviene de la discretización de un sistema continuo lineal invariante en el tiempo. También se puede decir que la controlabilidad se preserva bajo la discretización si y sólo si esta matriz tiene una inversa.

0 votos

Gracias. Esta respuesta parece muy prometedora. Por cierto, ¡estoy mirando esta matriz exactamente por lo que has dicho sobre la discretización!

0 votos

Sólo quiero saber cuál es el libro o papel de referencia para Yiorgios u Obareey.

9voto

La forma en que me gusta hacerlo se basa en la siguiente observación: dejemos $$ \bar{A} := \begin{bmatrix} A & B \\ 0 & 0 \end{bmatrix}, $$

donde $0$ es la matriz cero (dimensiones s.t. $\bar{A}$ es cuadrado). Entonces, $$ \mathrm{e}^{\bar{A}t} = \begin{bmatrix} \mathrm{e}^{At} & \int_0^t\mathrm{e}^{A\tau}\mathrm{d}\tau B \\ 0 & I \end{bmatrix}. $$

Por lo tanto, para la integral basta con construir esta matriz de bloques con $B=I$ , calcular la matriz exponencial de la misma, y luego extraer el bloque superior derecho. En una forma más "cerrada": $$ \int_0^t\mathrm{e}^{A\tau}\mathrm{d}\tau B = \begin{bmatrix}I & 0\end{bmatrix}\mathrm{e}^{\bar{A}t}\begin{bmatrix}0 \\ I\end{bmatrix}. $$

La ventaja de este método con respecto a la utilización de la inversión de la matriz y/o la forma de Jordan es que este método es numéricamente estable incluso cuando $A$ es singular (o casi). La desventaja, por supuesto, es que toma una matriz 4 veces mayor como entrada.

Por qué funciona

De esta observación se deduce que si se tiene la EDO no homogénea $$ \dot{X}(t) = AX(t) + B, $$ su solución es $$ X(t) = \mathrm{e}^{At}X(0) + \int_0^t\mathrm{e}^{A\tau}\mathrm{d}\tau B. $$

Definir la variable auxiliar $U(t)$ que es constante (es decir, $U(t) = U(0)$ para todos los positivos $t$ ). Entonces $\dot{U}(t) = 0$ y tenemos el sistema de EDOs \begin{align*} \dot{X}(t) &= AX(t) + BU(t), \\ \dot{U}(t) &= 0, \end{align*}

que es una EDO homogénea en la variable aumentada $\begin{bmatrix} X(t) \\ U(t) \end{bmatrix}$ . Por lo tanto, tenemos

$$\begin{bmatrix} \dot{X}(t) \\ \dot{U}(t) \end{bmatrix} = \begin{bmatrix} A & B \\ 0 & 0 \end{bmatrix}\begin{bmatrix} {X}(t) \\ {U}(t) \end{bmatrix} = \bar{A}\begin{bmatrix} {X}(t) \\ {U}(t) \end{bmatrix}$$ cuya solución es $$\begin{bmatrix} {X}(t) \\ {U}(t) \end{bmatrix} = \mathrm{e}^{\bar{A}t}\begin{bmatrix} {X}(0) \\ {U}(0) \end{bmatrix},$$

pero también,

$$\begin{bmatrix} {X}(t) \\ {U}(t) \end{bmatrix} = \begin{bmatrix} \mathrm{e}^{At}X(0) + \int_0^t\mathrm{e}^{A\tau}\mathrm{d}\tau BU(0) \\ U(0) \end{bmatrix} = \begin{bmatrix} \mathrm{e}^{At} & \int_0^t\mathrm{e}^{A\tau}\mathrm{d}\tau B \\ 0 & I \end{bmatrix}\begin{bmatrix} X(0) \\ U(0) \end{bmatrix}.$$

0 votos

Muy buena implementación y explicación.

3voto

Shaowu Puntos 23

Una respuesta numérica de Python

Es sorprendentemente difícil para encontrar un paquete python adecuado para la integración numérica de la matriz. Sé que no es lo que la pregunta quiere, pero no puedo encontrar ningún otro lugar para publicar esto.

Aquí, proporciono una solución numérica para ello. Basta con llamar a la función

intergral_result = compute_exp_matrix_intergration(A,T)

será suficiente

import numpy as np
def compute_exp_matrix_intergration(A,T,nbins=100):
    f = lambda x: expm(A*x)
    xv = np.linspace(0,T,nbins)
    result = np.apply_along_axis(f,0,xv.reshape(1,-1))
    return np.trapz(result,xv)

0 votos

Obtengo un error de forma en result = ... . También, para quien pueda ayudar: el expm es de scipy.linalg .

1voto

Jesse Jackson Puntos 121

Otra implementación de Python

Aquí hay otra implementación en Python, por si le puede servir a alguien... (y ya que la respuesta de ArtificiallyIntelligence devuelve un error en mi configuración). El valor de la integral es integral y la última línea verifica la igualdad $\int_0^T e^{At}dt = A^{-1}(e^{tA}-I)$ , siempre y cuando $A$ es no singular (que es el caso genérico de las matrices generadas aleatoriamente).

import numpy as np
N = 5
t = 1
A = np.random.rand(N,N)
taylor = t*np.array([np.linalg.matrix_power(A*t,k)/np.math.factorial(k+1) for k in range(50)])
integral = taylor.sum(axis = 0)

print np.linalg.norm(integral - np.dot(np.linalg.inv(A),scipy.linalg.expm(t*A)-np.identity(N)))

Tenga en cuenta que debe ajustar el 50 en taylor = ... para comprobar la convergencia.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X