2 votos

¿hay alguna forma eficiente de calcular fácilmente las siguientes ecuaciones matriciales

Dejemos que $A$ y $D$ son $n\times n$ matrices de diagnóstico, y $B$ es un $n\times n$ matriz ortogonal. ¿Existe alguna forma eficiente de calcular las ecuaciones matriciales siguientes de forma sencilla?

$\sum_{i=0}^{k} A^i \cdot B^T \cdot D \cdot B \cdot A^i$

2voto

jcho360 Puntos 128

Bien, esta es mi opinión sobre este cálculo: en primer lugar, observe que si $E$ es cualquier $n \times n$ matriz cuadrada, y $\Lambda$ es la matriz diagonal $diag(\lambda_{1}, \lambda_{2}, . . ., \lambda_{n})$ entonces $E \Lambda$ simplemente multiplica el $j$ -en la columna de $E$ por $\lambda_{j}$ para cada $j$ , $1 \le j \le n$ . Igualmente, $\Lambda E$ multiplica el $l$ -en la fila de $E$ por $\lambda_{l}$ . Tomando $A = diag(a_{1}, a_{2}, . . ., a_{n})$ tenemos $A^{k} = diag(a_{s}^{k})$ donde he hecho la (espero) obvia abreviación de la notación. Así, $A^{m}EA^{m}$ multiplica el $lj$ entrada de $E$ Llámalo $e_{lj}$ (para que $E = [e_{lj}]$ ), por $a_{l}^{m}a_{j}^{m} = (a_{l}a_{j})^m$ : $A^{m}EA^{m} = [e_{lj}(a_{l}a_{j})^{m}]$ Así que $\sum_{i=0}^{i=k}A^{k}EA^{k} = [e_{lj}\sum_{i=0}^{i=k}(a_{l}a_{j})^i]$ . Se puede obtener una simplificación adicional observando que $\sum_{i=0}^{i=k}(a_{l}a_{j})^{i} = ((a_{l}a_{j})^{k+1} -1)/(a_{l}a_{j} - 1)$ si $a_{l}a_{j} \ne 1$ y $\sum_{i=0}^{i=k}(a_{l}a_{j})^{i} =k + 1$ si $a_{l}a_{j} = 1$ Ahora considere $B^{T}DB$ ya que $D$ es diagonal, podemos agruparlo con $B^{T}$ o $B$ y utilizar el mismo truco aplicado anteriormente para $\Lambda E$ , $E \Lambda$ para simplificar una de las multiplicaciones de la matriz. Pero parece que nuestra suerte termina ahí, tendrás que hacer la simple multiplicación matricial a la vieja usanza en cualquiera de los dos $(B^{T}D)B$ o $B^{T}(DB)$ (a tu elección). A continuación, tome $E = B^{T}DB$ y proceder como se ha descrito anteriormente para obtener la suma.

No estoy seguro de la complejidad de este método, hay al menos una multiplicación de matriz completa involucrada en el cálculo de $B^{T}DB$ que es $O(n^{3})$ el resto parece que podría ser $O(kn^{2})$ ya que hemos eliminado la multiplicación matricial completa en favor de de multiplicar cada elemento por un valor. Solo estoy adivinando, pero son las 3 de la mañana y he tenido que que luchar con MathJax esta noche, así que esto tomó más tiempo para escribir de lo previsto. Demasiado sueño para pensar mucho más . . . pero, cuestiones de complejidad a un lado, hay otra manera de verlo.

Por cierto, parece que la idea de Gerry Myerson se puede arreglar poniendo $C = A^{k+1}B^{T}DBA^{k+1} -B^{T}DB$ es decir, restando el $i = 0$ plazo.

@Peter: $AXA - X = C$ es un sistema lineal en las entradas de $X$ la solución es estándar. La técnica técnica que he descrito evita algunos de los problemas que pueden surgir en la solución de sistemas lineales es decir, el mal condicionamiento de las matrices de coeficientes. Hay un ton de literatura sobre esto; Le sugiero que busque en Google un poco.

1voto

lterrier Puntos 31

Sea S(j) la suma de los primeros j términos de su suma. Entonces S(2j-1) = S(j-1) + A^j S(j-1) A^j. Así que puedes organizar el trabajo de manera que requiera O(log k) multiplicaciones.

Gerhard "Ask Me About System Design" Paseman, 2011.02.18

0voto

Gerry Myerson Puntos 23836

Voy a suponer que el problema es que $k$ puede ser grande (y que "eficaz" debía ser "eficiente", y "digonal" debía ser "diagonal"). Llamemos a la suma $X$ . Entonces $AXA-X=A^{k+1}B^TDBA^{k+1}=C$ es fácil de calcular. Además, es fácil relacionar las entradas de $AXA$ a los de $X$ , por lo que es fácil de resolver $AXA-X=C$ para $X$ .

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