El mayor problema de esta derivada es que las matrices no son necesariamente conmutables. Este puesto debería darle una idea de las dificultades que uno puede encontrar.
No obstante, vamos a intentarlo. Pero primero, generalicemos un poco el problema considerando el mapa
$$ f\colon\mathbb S^n_+\longrightarrow\mathbb S^n_+,\, X\longmapsto X^{\alpha} \overset{\text{def}}{=} \exp(\alpha\log(X))$$
que asigna una matriz simétrica definida positiva a su potencia matricial, definida mediante el exponencial matricial y el logaritmo matricial. Se puede comprobar fácilmente que $\sqrt{X} = X^{1/2}$ diagonalizando.
1. El caso conmutativo
Si $\Delta X$ conmuta con $X$ entonces todo es fácil, porque entonces $\log(X\cdot\Delta X)=\log(X) + \log(\Delta X)$ y $\exp(X+\Delta X) = \exp(X)\cdot\exp(\Delta X)$ que no se cumple en el caso general
En el caso conmutativo tenemos
$$\begin{aligned} \log(X+\Delta X)-\log(X) &= \log(X+\Delta X) + \log(X^{-1}) \\&= \log((X+\Delta X)X^{-1}) \\&= \log(I+X^{-1}\Delta X) \\&= \sum_{k=1}^{\infty}(-1)^{k+1} \frac{(X^{-1}\Delta X)^{k}}{k} \sim X^{-1}\Delta X \\ \exp(X+\Delta X) - \exp(X) &= \exp(X)\exp(\Delta X) - \exp(X) \\&= \exp(X)\big(\exp(\Delta X) -I\big)\\ &= \exp(X)\sum_{k=1}^{\infty} \frac{1}{k!}\Delta X^k \sim \exp(X)\Delta X \end{aligned}$$ Por lo tanto $\partial_{\Delta X}\log(X) = X^{-1}$ y $\partial_{\Delta X} \exp(X) = \exp(X)$ en el caso de conmutación $[X, \Delta X]=0$ . En particular, mediante la regla de la cadena se deduce que tenemos $\partial_{\Delta X} X^\alpha = \alpha X^{\alpha-1}$ que satisface nuestras expectativas.
2. El caso no conmutativo
Este es mucho más difícil, se puede tratar de utilizar el Fórmula Baker-Campbell-Hausdorff y/o el Fórmula Zassenhaus pero el resultado final no será bonito. En general, la bonita fórmula de antes ya no vale. Por ejemplo, si $\alpha=2$ entonces una vez puede comprobar fácilmente que
$$(X+\Delta X)^2-X^2 \sim X\cdot\Delta X + \Delta X \cdot X \neq 2X\cdot\Delta X$$
También podemos comprobarlo numéricamente, por ejemplo con el programa python (3.7) que se muestra a continuación. Los residuos son estables al aumentar el tamaño de la muestra $N$ en el caso conmutativo, pero serán cada vez mayores en el caso general. (Tomar muestras aleatorias de matrices con un conmutador extremadamente grande es bastante raro...)
import numpy as np
from scipy.linalg import norm, fractional_matrix_power as powm
from scipy.stats import ortho_group, wishart # to sample orthogonal/ spd matrices
alphas = np.linspace(0.5, 5, 10)
N = 100 # sample size
eps = 10**-8
n=6 # matrix size
print("Commutative case")
# using simultaneous diagonalizable => commuting
for a in alphas:
r = 0
for _ in range(N):
D = np.diag(np.random.rand(n))
S = np.diag(np.random.rand(n))
U = ortho_group.rvs(n)
X = U.T @ D @ U
DX = eps* U.T@ S @ U
num = powm(X+DX, a) - powm(X, a) # numerical derivative
ana = a*powm(X, a-1) @ DX # formula
r =max(r, norm( num-ana))
print(F"alpha: {a:.2f}, max residual {r}")
# residuals should be numerically close to zero
print("General case")
for a in alphas:
r = 0
for _ in range(N):
X = wishart(scale=np.eye(n)).rvs()
DX= eps*wishart(scale=np.eye(n)).rvs()
num = powm(X+DX, a) - powm(X, a) # numerical derivative
ana = a*powm(X, a-1) @ DX # formula
r =max(r, norm( num-ana))
print(F"alpha: {a:.2f}, max residual {r}")
# residuals should be much larger