En álgebra lineal numérica , el algoritmo de Bartels-Stewart se utiliza para resolver numéricamente la ecuación matricial de Sylvester . Desarrollado por RH Bartels y GW Stewart en 1971, [1] fue el primer método numéricamente estable que se pudo aplicar sistemáticamente para resolver tales ecuaciones. El algoritmo funciona utilizando las descomposiciones reales de Schur de y para transformar en un sistema triangular que luego se puede resolver mediante sustitución hacia adelante o hacia atrás. En 1979, G. Golub , C. Van Loan y S. Nash introdujeron una versión mejorada del algoritmo, [2] conocida como el algoritmo de Hessenberg-Schur. Sigue siendo un enfoque estándar para resolver ecuaciones de Sylvester cuando es de tamaño pequeño a moderado.
Sea , y supongamos que los valores propios de son distintos de los valores propios de . Entonces, la ecuación matricial tiene una solución única. El algoritmo de Bartels-Stewart realiza el cálculo aplicando los siguientes pasos: [2]
1.Calcular las descomposiciones reales de Schur
Las matrices y son matrices triangulares de bloque superior, con bloques diagonales de tamaño o .
2. Establecer
3. Resuelva el sistema simplificado , donde . Esto se puede hacer mediante sustitución hacia adelante en los bloques. Específicamente, si , entonces
donde es la columna n de . Cuando , las columnas deben concatenarse y resolverse simultáneamente.
4. Establecer
Usando el algoritmo QR , las descomposiciones de Schur reales en el paso 1 requieren aproximadamente flops, de modo que el costo computacional general es . [2]
En el caso especial en que y es simétrica, la solución también será simétrica. Esta simetría se puede aprovechar para que se encuentre de manera más eficiente en el paso 3 del algoritmo. [1]
El algoritmo de Hessenberg-Schur [2] reemplaza la descomposición en el paso 1 con la descomposición , donde es una matriz de Hessenberg superior . Esto conduce a un sistema de la forma que se puede resolver mediante sustitución hacia adelante. La ventaja de este enfoque es que se puede encontrar utilizando reflexiones de Householder a un costo de flops, en comparación con los flops necesarios para calcular la descomposición de Schur real de .
Las subrutinas necesarias para la variante Hessenberg-Schur del algoritmo Bartels-Stewart están implementadas en la biblioteca SLICOT y se utilizan en la caja de herramientas del sistema de control de MATLAB.
Para sistemas grandes, el costo del algoritmo Bartels-Stewart puede ser prohibitivo. Cuando y son dispersos o estructurados, de modo que las resoluciones lineales y las multiplicaciones de matrices vectoriales que los involucran son eficientes, los algoritmos iterativos pueden potencialmente tener un mejor desempeño. Estos incluyen métodos basados en proyección, que usan iteraciones del subespacio de Krylov , métodos basados en la iteración implícita de dirección alternada (ADI) e hibridaciones que involucran tanto la proyección como la ADI. [3] Los métodos iterativos también se pueden usar para construir directamente aproximaciones de bajo rango a cuando se resuelven .