Cálculo de valores y vectores propios

Introducción

Recordemos la definición de valor y vector propio de una matriz cuadrada \(\mathbf{A}\):

Definición de valor y vector propio de una matriz. Dada una matriz cuadrada \(\mathbf{A}\), \(n\times n\), diremos que \(\mathbf{v}\neq 0\) es un vector propio de valor propio \(\lambda\) de la matriz \(\mathbf{A}\) si \[\mathbf{A}\cdot \mathbf{v}=\lambda\mathbf{v}.\]

Es decir, el “efecto” que tiene la matriz \(\mathbf{A}\) sobre el vector \(\mathbf{v}\) es alargándolo o reduciéndolo un factor \(\lambda\).

Introducción

El cálculo de valores y vectores propios tiene multitud de aplicaciones en machine learning, entre otras,

  • El cálculo de los vectores y valores propios es clave en la diagonalización de una matriz \(\mathbf{A}\), es decir, los vectores propios son representativos de dicha matriz y realizan una tarea similar a los codificadores automáticos en las redes neuronales profundas.

  • El análisis de componentes principales (ACP) es una herramienta para encontrar patrones en datos multidimensionales como puede ser en análisis de imágenes. Los profesionales del aprendizaje automático a veces usan el ACP para preprocesar datos para sus redes neuronales. Al centrar, rotar y escalar los datos, el ACP prioriza la dimensionalidad y puede mejorar la velocidad de convergencia de la red neuronal y la calidad general de los resultados.

Introducción

Recordemos que para hallar los valores propios de una matriz \(\mathbf{A}\), hemos de hallar los ceros de la denominada ecuación característica de \(\mathbf{A}\): \[ p_A(\lambda)=\mathrm{det}(\mathbf{A}-\lambda\cdot\mathbf{I}_n)=0. \] La función \(p_A(\lambda)\) es un polinomio de grado \(n\) en \(\lambda\). Por tanto, hallar valores propios es equivalente a hallar ceros del polinomio característico \(p_A(\lambda)\).

Una vez hallado un valor propio \(\lambda_1\) de la matriz \(A\), para hallar los vectores propios \(\mathbf{v}_1\) de valor propio \(\lambda_1\), hemos de resolver la ecuación: \[ \mathbf{A}\cdot\mathbf{v}_1 =\lambda_1\mathbf{v}_1,\ \Rightarrow (\mathbf{A}-\lambda_1\mathbf{I}_n)\cdot\mathbf{v}_1=\mathbf{0}. \] La ecuación anterior es lineal, homogénea e indeterminada, es decir, tiene muchas soluciones.

Repasar el capítulo de Álgebra lineal numérica para ver algún ejemplo de cálculo así como las propiedades de los valores y vectores propios de una matriz cuadrada \(\mathbf{A}\).

El método de la potencia

Introducción

El método de la potencia es un método iterativo que calcula el valor propio de módulo máximo con un vector propio asociado de la matriz cuadrada.

Usando variaciones del método, se pueden hallar los demás valores propios junto con los vectores propios asociados.

Para poder aplicar el método de la potencia, necesitamos suponer que la matriz \(\mathbf{A}\), de dimensiones \(n\times n\) es diagonalizable, es decir, que \(\mathbf{A}\) tiene \(n\) valores propios \(\lambda_1,\lambda_2,\ldots,\lambda_n\) que supondremos ordenados donde \(\lambda_1\) tiene el módulo máximo: \[ |\lambda_1|>|\lambda_2|\geq |\lambda_3|\geq\cdots\geq |\lambda_n|. \] Fijémonos que los valores propios \(\lambda_i\), \(i=2,\ldots,n\) pueden ser repetidos.

Como la matriz \(\mathbf{A}\) es diagonalizable, sean \(\mathbf{v}^{(1)},\mathbf{v}^{(2)},\ldots,\mathbf{v}^{(n)}\) unos vectores propios asociados a cada valor propio \(\lambda_i\), es decir, \(\mathbf{A}\mathbf{v}^{(i)}=\lambda_i\mathbf{v}^{(i)}\), \(i=1,\ldots,n\).

Método de la potencia. Preliminares

Veamos cómo funciona el método.

Sea \(\mathbf{x}\) un vector cualquiera. Como los vectores propios \(\mathbf{v}^{(1)},\mathbf{v}^{(2)},\ldots,\mathbf{v}^{(n)}\) son linealmente independientes, forman una base del espacio vectorial \(\mathbb{R}^n\), y por tanto, existen unos valores \(\alpha_1,\ldots,\alpha_n\) tal que: \[ \mathbf{x}=\alpha_1\mathbf{v}^{(1)}+\cdots +\alpha_n\mathbf{v}^{(n)}=\sum_{i=1}^n\alpha_i\mathbf{v}^{(i)}. \]

Método de la potencia. Preliminares

Si calculamos los vectores \(\mathbf{A}\mathbf{x},\mathbf{A}^2\mathbf{x},\ldots,\mathbf{A}^k\mathbf{x},\ldots,\) obtenemos: \[ \begin{align*} \mathbf{A}\mathbf{x} & = \mathbf{A}(\alpha_1\mathbf{v}^{(1)}+\cdots +\alpha_n\mathbf{v}^{(n)})=\alpha_1\mathbf{A}\mathbf{v}^{(1)}+\cdots +\alpha_n\mathbf{A}\mathbf{v}^{(n)}\\ &=\alpha_1\lambda_1\mathbf{v}^{(1)}+\cdots +\alpha_n\lambda_n\mathbf{v}^{(n)}=\sum_{i=1}^n\alpha_i\lambda_i\mathbf{v}^{(i)},\\ & \vdots\\ \mathbf{A}^k\mathbf{x} & = \mathbf{A}^k(\alpha_1\mathbf{v}^{(1)}+\cdots +\alpha_n\mathbf{v}^{(n)})=\alpha_1\mathbf{A}^k\mathbf{v}^{(1)}+\cdots +\alpha_n\mathbf{A}^k\mathbf{v}^{(n)}\\ &=\alpha_1\lambda_1^k\mathbf{v}^{(1)}+\cdots +\alpha_n\lambda_n^k\mathbf{v}^{(n)}=\sum_{i=1}^n\alpha_i\lambda_i^k\mathbf{v}^{(i)},\\ & \vdots \end{align*} \]

Método de la potencia. Preliminares

Tenemos por tanto que, en general para un entero \(k\) positivo, \(\displaystyle \mathbf{A}^k\mathbf{x}=\sum_{i=1}^n\alpha_i\lambda_i^k\mathbf{v}^{(i)}\). La expresión se puede escribir de la forma siguiente: \[ \mathbf{A}^k\mathbf{x}=\sum_{i=1}^n\alpha_i\lambda_i^k\mathbf{v}^{(i)}=\lambda_1^k\sum_{i=1}^n\alpha_i\left(\frac{\lambda_i}{\lambda_1}\right)^k\mathbf{v}^{(i)}. \] Como \(|\lambda_1|>|\lambda_i|\), para \(i=2,\ldots,n\), tenemos que \(\left|\frac{\lambda_i}{\lambda_1}\right|<1\) y, por tanto, \(\displaystyle\lim_{k\to\infty}\left(\frac{\lambda_i}{\lambda_1}\right)^k=0\).

Método de la potencia. Preliminares

Usando la expresión anterior, podemos afirmar que si \(\alpha_1\neq 0\), \[ \lim_{k\to\infty}\mathbf{A}^k\mathbf{x}=\lim_{k\to\infty}\lambda_1^k\alpha_1\mathbf{v}^{(1)}=\begin{cases} \mathbf{0}, & \mbox{si }|\lambda_1|<1,\\ \infty, & \mbox{si }|\lambda_1|>1,\\ \alpha_1\mathbf{v}^{(1)}, & \mbox{si }\lambda_1 =1,\\ \mbox{diverge}, & \mbox{si }|\lambda_1|=1\mbox{ y } \lambda_1\neq 1.\end{cases} \]

Una vez vistos los preliminares, expliquemos cómo podemos hallar el valor propio \(\lambda_1\) junto con un vector propio \(\mathbf{v}^{(1)}\) hallando una sucesión de valores reales \((\mu^{(n)})_{n=0,1,\ldots}\) y una sucesión de vectores \((\mathbf{x}^{(n)})_{n=0,1,\ldots}\) que convergen a \(\lambda_1\) y \(\mathbf{v}^{(1)}\) respectivamente.

Método de la potencia.

  • Paso 1. Supongamos que elegimos un vector \(\mathbf{x}^{(0)}\neq \mathbf{0}\) tal que el coeficiente \(\alpha_1\) en la descomposición de \(\mathbf{x}^{(0)}\) usando los vectores propios no es cero: \[ \mathbf{x}^{(0)}=\alpha_1\mathbf{v}^{(1)}+\cdots +\alpha_n\mathbf{v}^{(n)}=\sum_{i=1}^n\alpha_i\mathbf{v}^{(i)},\quad \alpha_1\neq 0. \] Supongamos también que \(\|\mathbf{x}^{(0)}\|_\infty =1\). Si no fuera así, consideramos: \(\frac{\mathbf{x}^{(0)}}{\|\mathbf{x}^{(0)}\|_\infty}\) como vector inicial \(\mathbf{x}^{(0)}\) y ya se verificará. Recordemos que \(\|\mathbf{x}^{(0)}\|_\infty=\max_{i=1,\ldots,n}|x_i^{(0)}|=1\). Por tanto, existirá una componente del vector \(\mathbf{x}^{(0)}\) a la que llamaremos \(m_0\) tal que \(|x^{(0)}_{m_0}|=1\). Definimos \(\displaystyle\mathbf{y}^{(1)}=\mathbf{A}\mathbf{x}^{(0)}=\sum_{i=1}^n\alpha_i\lambda_i\mathbf{v}^{(i)}\). Definimos \(\mu^{(1)}=\frac{y^{(1)}_{m_0}}{x^{(0)}_{m_0}}\), es decir, el cociente entre las componentes \(m_0\) de los vectores \(\mathbf{y}^{(1)}\) y \(\mathbf{x}^{(0)}\).

Método de la potencia.

  • Paso 1. (continuación) Podemos escribir \(\mu^{(1)}\) como: \[ \mu^{(1)}=\frac{y^{(1)}_{m_0}}{x^{(0)}_{m_0}}=\frac{\alpha_1\lambda_1{v}^{(1)}_{m_0}+\sum_{i=2}^n\alpha_i\lambda_i{v}^{(i)}_{m_0}}{\alpha_1\mathbf{v}^{(1)}_{m_0}+\sum_{i=2}^n\alpha_i {v}^{(i)}_{m_0}}. \] Definimos \(\mathbf{x}^{(1)}=\frac{\mathbf{y}^{(1)}}{\|\mathbf{y}^{(1)}\|_\infty}\).

  • Paso 2. Como \(\|\mathbf{x}^{(1)}\|_\infty =1\), existe una componente de dicho vector \(m_1\) tal que \(|x^{(1)}_{m_1}|=1\). Definimos \(\displaystyle\mathbf{y}^{(2)}=\mathbf{A}\mathbf{x}^{(1)}=\frac{1}{\|\mathbf{y}^{(1)}\|_\infty}\mathbf{A}\mathbf{y}^{(1)}=\frac{1}{\|\mathbf{y}^{(1)}\|_\infty}\mathbf{A}^2\mathbf{x}^{(0)}=\frac{1}{\|\mathbf{y}^{(1)}\|_\infty}\sum_{i=1}^n\alpha_i\lambda_i^2\mathbf{v}^{(i)}\). Definimos \(\mu^{(2)}=\frac{y^{(2)}_{m_1}}{x^{(1)}_{m_1}}\), es decir, el cociente entre las componentes \(m_1\) de los vectores \(\mathbf{y}^{(2)}\) y \(\mathbf{x}^{(1)}\).

Método de la potencia.

  • Paso 2. (continuación) Podemos escribir \(\mu^{(2)}\) como: \[ \begin{align*} \mu^{(2)} & =\frac{y^{(2)}_{m_1}}{x^{(1)}_{m_1}}=\frac{(\alpha_1\lambda_1^2{v}^{(1)}_{m_1}+\sum_{i=2}^n\alpha_i\lambda_i^2 {v}^{(i)}_{m_1})/\|\mathbf{y}^{(1)}\|_\infty}{(\alpha_1\lambda_1 {v}^{(1)}_{m_1}+\sum_{i=2}^n\alpha_i\lambda_i {v}^{(i)}_{m_1})/\|\mathbf{y}^{(1)}\|_\infty}\\ & =\lambda_1\left( \frac{\alpha_1 {v}^{(1)}_{m_1}+\sum_{i=2}^n\alpha_i(\lambda_i/\lambda_1)^2 {v}^{(i)}_{m_1}}{\alpha_1 {v}^{(1)}_{m_1}+\sum_{i=2}^n\alpha_i(\lambda_i/\lambda_1) {v}^{(i)}_{m_1}}\right) \end{align*} \] Definimos \(\mathbf{x}^{(2)}=\frac{\mathbf{y}^{(2)}}{\|\mathbf{y}^{(2)}\|_\infty}\).
  • \(\vdots\)

Método de la potencia.

  • Paso \(k\). En este paso, tenemos definidos
    • dos secuencias de vectores \(\mathbf{x}^{(j)}\), para \(j=0,\ldots,k-1\) y \(\mathbf{y}^{(j)}\), \(j=1,\ldots,k-1\) cumpliendo:
      • \(\mathbf{y}^{(j)}=\mathbf{A}\mathbf{x}^{(j-1)}\),
      • \(\mathbf{x}^{(j)}=\frac{1}{\prod_{l=1}^j \|\mathbf{y}^{(l)}\|_\infty}\mathbf{A}^j\mathbf{x}^{(0)}\) y \(\|\mathbf{x}^{(j)}\|_\infty=1\).
    • una secuencia de valores reales \(\mu^{(j)}\), \(j=1,\ldots,k-1\) y una secuencia de valores enteros \(m_j\), \(j=0,\ldots,k-2\) tal que: \[ \mu^{(j)}=\frac{y^{(j)}_{m_{j-1}}}{x^{(j-1)}_{m_{j-1}}}=\lambda_1\left( \frac{\alpha_1 {v}^{(1)}_{m_{j-1}}+\sum_{i=2}^n\alpha_i(\lambda_i/\lambda_1)^j {v}^{(i)}_{m_{j-1}}}{\alpha_1 {v}^{(1)}_{m_{j-1}}+\sum_{i=2}^n\alpha_i(\lambda_i/\lambda_1)^{j-1} {v}^{(i)}_{m_{j-1}}}\right) \]

Método de la potencia.

  • Paso \(k\) (continuación) Como \(\|\mathbf{x}^{(k-1)}\|=1\), existe una componente de dicho vector \(m_{k-1}\) tal que \(|x^{(k-1)}_{m_{k-1}}|=1\). Definimos \[ \mathbf{y}^{(k)}=\mathbf{A}\mathbf{x}^{(k-1)}=\frac{1}{\prod_{l=1}^{k-1}\|\mathbf{y}^{(l)}\|_\infty}\mathbf{A}^k\mathbf{x}^{(0)}=\frac{1}{\prod_{l=1}^{k-1}\|\mathbf{y}^{(l)}\|_\infty}\sum_{i=1}^n\alpha_i\lambda_i^k\mathbf{v}^{(i)}. \] Definimos \(\mu^{(k)}=\frac{y^{(k)}_{m_{k-1}}}{x^{(k-1)}_{m_{k-1}}}\), es decir, el cociente entre las componentes \(m_{k-1}\) de los vectores \(\mathbf{y}^{(k)}\) y \(\mathbf{x}^{(k-1)}\).

Método de la potencia.

  • Paso \(k\) (continuación). Podemos escribir \(\mu^{(k)}\) como: \[ \begin{align*} \mu^{(k)} & =\frac{y^{(k)}_{m_{k-1}}}{x^{(k-1)}_{m_{k-1}}}=\frac{(\alpha_1\lambda_1^k{v}^{(1)}_{m_{k-1}}+\sum_{i=2}^n\alpha_i\lambda_i^k {v}^{(i)}_{m_{k-1}})/\prod_{l=1}^{k-1}\|\mathbf{y}^{(l)}\|}{(\alpha_1\lambda_1^{k-1} {v}^{(1)}_{m_{k-1}}+\sum_{i=2}^n\alpha_i\lambda_i^{k-1} {v}^{(i)}_{m_{k-1}})/\prod_{l=1}^{k-1}\|\mathbf{y}^{(l)}\|}\\ & =\lambda_1\left( \frac{\alpha_1 {v}^{(1)}_{m_{k-1}}+\sum_{i=2}^n\alpha_i(\lambda_i/\lambda_1)^k {v}^{(i)}_{m_{k-1}}}{\alpha_1 {v}^{(1)}_{m_{k-1}}+\sum_{i=2}^n\alpha_i(\lambda_i/\lambda_1)^{k-1} {v}^{(i)}_{m_{k-1}}}\right). \end{align*} \] Por último definimos: \(\mathbf{x}^{(k)}=\frac{\mathbf{y}^{(k)}}{\|\mathbf{y}^{(k)}\|_\infty}\).
  • \(\vdots\)

Método de la potencia.

Usando la ecuación de la sucesión \(\mu^{(k)}\), podemos afirmar que la sucesión de números reales \((\mu^{(k)})_{k\geq 1}\) tiende hacia el valor propio \(\lambda_1\): \[ \lim_{k\to\infty}\mu^{(k)}=\lim_{k\to\infty}\lambda_1\left( \frac{\alpha_1 {v}^{(1)}_{m_{k-1}}+\sum_{i=2}^n\alpha_i(\lambda_i/\lambda_1)^k {v}^{(i)}_{m_{k-1}}}{\alpha_1 {v}^{(1)}_{m_{k-1}}+\sum_{i=2}^n\alpha_i(\lambda_i/\lambda_1)^{k-1} {v}^{(i)}_{m_{k-1}}}\right) =\lambda_1, \] ya que \(\left|\frac{\lambda_i}{\lambda_1}\right|<1\) y por tanto \(\displaystyle\lim_{k\to\infty}\left(\frac{\lambda_i}{\lambda_1}\right)^k=0\), para \(k=2,\ldots,n\).

Método de la potencia.

Además como \(\mathbf{x}^{(k)}=\frac{\mathbf{y}^{(k)}}{\|\mathbf{y}^{(k)}\|}\) y \(\mathbf{x}^{(k)}=\frac{1}{\prod_{l=1}^k\|\mathbf{y}^{(l)}\|}\mathbf{A}^k\mathbf{x}^{(0)}\), tenemos que: \[ \begin{align*} \mathbf{y}^{(k)} & =\mathbf{A}\mathbf{x}^{(k-1)}=\frac{1}{\prod_{l=1}^{k-1}\|\mathbf{y}^{(l)}\|}\mathbf{A}^k\mathbf{x}^{(0)},\ \Rightarrow \\ \mathbf{x}^{(k)} & =\frac{\mathbf{y}^{(k)}}{\|\mathbf{y}^{(k)}\|}=\frac{\mathbf{A}^k\mathbf{x}^{(0)}/\prod_{l=1}^{k-1}\|\mathbf{y}^{(l)}\|}{\left\|\mathbf{A}^k\mathbf{x}^{(0)}/\prod_{l=1}^{k-1}\|\mathbf{y}^{(l)}\|\right\|}=\frac{\mathbf{A}^k\mathbf{x}^{(0)}}{\left\|\mathbf{A}^k\mathbf{x}^{(0)}\right\|}\\ & = \frac{\alpha_1\lambda_1^k\mathbf{v}^{(1)}+\sum_{i=2}^n \alpha_i\lambda_i^k\mathbf{v}^{(i)}}{\left\|\alpha_1\lambda_1^k\mathbf{v}^{(1)}+\sum_{i=2}^n \alpha_i\lambda_i^k\mathbf{v}^{(i)}\right\|}\\ & =\left(\frac{\lambda_1}{|\lambda_1|}\right)^k \frac{\alpha_1 \mathbf{v}^{(1)}+\sum_{i=2}^n \alpha_i(\lambda_i/\lambda_1)^k\mathbf{v}^{(i)}}{\left\|\alpha_1 \mathbf{v}^{(1)}+\sum_{i=2}^n \alpha_i(\lambda_i/\lambda_1)^k\mathbf{v}^{(i)}\right\|}. \end{align*} \]

Método de la potencia.

Entonces, \[ \lim_{k\to\infty}\mathbf{x}^{(k)}=\pm\mathbf{v}^{(1)}, \] es decir la sucesión de vectores \(\mathbf{x}^{(k)}\) tiende hacia un vector propio de valor propio \(\lambda_1\).

En resumen, hemos obtenido una sucesión de números reales \((\mu^{(k)})_{k\geq 1}\) que tiende al valor propio de módulo máximo \(\lambda_1\) y una sucesión de vectores \((\mathbf{x}^{(k)})_{k\geq 0}\) de módulo \(1\) que tiende a un vector propio de valor propio \(\lambda_1\).

Método de la potencia.

Observación 1.

Podemos escribir que para \(k\) grande: \[ \mu^{(k)}\approx \lambda_1+O\left(\left|\frac{\lambda_i}{\lambda_1}\right|\right)^k, \] ya que: \[ \begin{align*} \mu^{(k)} & \approx \lambda_1\left( \frac{\alpha_1 {v}^{(1)}_{m_{k-1}}+\sum_{i=2}^n\alpha_i(\lambda_i/\lambda_1)^k {v}^{(i)}_{m_{k-1}}}{\alpha_1 {v}^{(1)}_{m_{k-1}}+\sum_{i=2}^n\alpha_i(\lambda_i/\lambda_1)^{k-1} {v}^{(i)}_{m_{k-1}}}\right)\\ & \approx\lambda_1\left( \frac{\alpha_1 {v}^{(1)}_{m_{k-1}}+\sum_{i=2}^n\alpha_i(\lambda_i/\lambda_1)^k {v}^{(i)}_{m_{k-1}}}{\alpha_1 {v}^{(1)}_{m_{k-1}}}\right)\\ & =\lambda_1 \left(1+\frac{\sum_{i=2}^n\alpha_i(\lambda_i/\lambda_1)^k {v}^{(i)}_{m_{k-1}}}{\alpha_1 {v}^{(1)}_{m_{k-1}}}\right)\approx \lambda_1+O\left(\left|\frac{\lambda_i}{\lambda_1}\right|\right)^k. \end{align*} \]

Método de la potencia.

Observación 1 (continuación).

De la misma manera podemos escribir que para \(k\) grande: \[ \mathbf{x}^{(k)}\approx \pm \frac{\mathbf{v}^{(1)}}{\|\mathbf{v}^{(1)}\|}+O\left(\left|\frac{\lambda_i}{\lambda_1}\right|\right)^k. \] ya que: \[ \begin{align*} \mathbf{x}^{(k)} &\approx\pm \frac{\alpha_1 \mathbf{v}^{(1)}+\sum_{i=2}^n \alpha_i(\lambda_i/\lambda_1)^k\mathbf{v}^{(i)}}{\left\|\alpha_1 \mathbf{v}^{(1)}+\sum_{i=2}^n \alpha_i(\lambda_i/\lambda_1)^k\mathbf{v}^{(i)}\right\|}\\ & \approx \pm \frac{\alpha_1 \mathbf{v}^{(1)}+\sum_{i=2}^n \alpha_i(\lambda_i/\lambda_1)^k\mathbf{v}^{(i)}}{\left\|\alpha_1 \mathbf{v}^{(1)}\right\|}=\pm \frac{\mathbf{v}^{(1)}}{\|\mathbf{v}^{(1)}\|}+O\left(\left|\frac{\lambda_i}{\lambda_1}\right|\right)^k. \end{align*} \]

Método de la potencia.

Observación 1 (continuación).

El resumen, el orden de convergencia de las sucesiones \(\mu^{(k)}\) y \(\mathbf{x}^{(k)}\) vale \(O\left(\frac{\max_{i=2,\ldots,n}|\lambda_i|}{|\lambda_1|}\right)^k\).

Observación 2.

Aunque la matriz \(\mathbf{A}\) tenga un valor propio dominante \(\lambda_1\) con multiplicidad \(r>1\), el método de la potencia seguirá convergiendo a \(\lambda_1\) y los vectores \(\mathbf{x}^{(k)}\) seguirán convergiendo a un vector propio de valor propio \(\lambda_1\).

Método de la potencia.

Observación 3.

Puede haber matrices \(\mathbf{A}\) en las que cuando hallamos la sucesión \(\mathbf{x}^{(k)}\) usando el método de la potencia, puede haber alternancias de signo, es decir, que para valores de \(k\) relativamente grandes, las aproximaciones del vector propio \(\mathbf{v}^{(1)}\) de valor propio dominante \(\lambda_1\) aparecen de la forma siguiente: \[ \ldots, \mathbf{x}^{(k)}\approx\frac{\mathbf{v}^{(1)}}{\|\mathbf{v}^{(1)}\|_\infty},\mathbf{x}^{(k+1)}\approx -\frac{\mathbf{v}^{(1)}}{\|\mathbf{v}^{(1)}\|_\infty},\mathbf{x}^{(k+2)}\approx \frac{\mathbf{v}^{(1)}}{\|\mathbf{v}^{(1)}\|_\infty},\mathbf{x}^{(k+3)}\approx -\frac{\mathbf{v}^{(1)}}{\|\mathbf{v}^{(1)}\|_\infty}\ldots \] Si nos encontramos en situaciones como la descrita, no podemos usar como criterio de parada la condición \(\|\mathbf{x}^{(k)}-\mathbf{x}^{(k-1)}\|_\infty <\epsilon\), donde \(\epsilon\) es la tolerancia permitida ya que \(\|\mathbf{x}^{(k)}-\mathbf{x}^{(k-1)}\|_\infty\approx 2\left\|\frac{\mathbf{v}^{(1)}}{\|\mathbf{v}^{(1)}\|_\infty}\right\|_\infty =2\) y el algoritmo nunca pararía.

Método de la potencia.

Observación 3. (continuación)

Una manera de arreglar esta situación es cambiar el criterio de parada de la manera siguiente: \[ \min\{\|\mathbf{x}^{(k)}-\mathbf{x}^{(k-1)}\|_\infty,\|\mathbf{x}^{(k)}+\mathbf{x}^{(k-1)}\|_\infty\}<\epsilon. \]

Método de la potencia. Pseudocódigo

  • INPUT matriz del sistema \(\mathbf{A}=(a_{ij})_{i=1,\ldots,n,j=1,\ldots,n}\), valor inicial \(\mathbf{X0}=\mathbf{x}\) con \(\|\mathbf{x}\|_\infty =1\), error absoluto o tolerancia TOL, número máximo de iteraciones Nmax.
  • Set \(k=1\) (inicializamos el contador de la iteraciones)
  • Hallamos el entero más pequeño \(m\) tal que \(|x_m|=\|x\|_\infty\).
  • Set \(\mathbf{x}=\frac{\mathbf{x}}{x_m}\).

Método de la potencia. Pseudocódigo

  • While \(k\leq Nmax\) (mientras no se llegue al número máximo de iteraciones, hacer lo siguiente)
    • Set \(\mathbf{y}=\mathbf{A}\mathbf{x}\)
    • Set \(\mu =y_m\).
    • Hallamos el entero más pequeño \(m\) tal que \(|y_m|=\|y\|_\infty\).
    • If \(y_m=0\) then print(la matriz A tiene 0 como valor propio. Escoger otro vector inicial).
    • Set \(\mathbf{x}_1=\frac{\mathbf{y}}{y_m}\)
    • Set error=\(\min\left\{\left\|\mathbf{x}-\mathbf{x}_1\right\|_\infty,\left\|\mathbf{x}+\mathbf{x}_1\right\|_\infty\right\}\).
    • If error<TOL print(\(\mu,\mathbf{x}\)). (El método ha acabado. Tenemos el valor propio y un vector propio con un error menor que la tolerancia permitida.)

Método de la potencia. Pseudocódigo

    • Set \(\mathbf{x}=\mathbf{x}_1\).
    • Set \(k=k+1\).
  • Print Hemos alcanzado el máximo número de iteraciones. El método de la potencia no converge en este caso.

Ejemplo

Consideremos la matriz \(\mathbf{A}=\begin{bmatrix}5&6&6&5 \\6&6&8&5 \\6&6&2&6 \\5&4&7&4 \\\end{bmatrix}.\)

Apliquemos el método de la potencia para hallar una aproximación del valor propio de módulo máximo de \(\mathbf{A}\) junto con un vector propio asociado con una tolerancia \(\epsilon=0.000001\).

Ejemplo (continuación)

  • Paso 1: consideramos \(\mathbf{x}^{(0)}=\begin{bmatrix}1 \\1 \\1 \\1 \\\end{bmatrix}.\)
    • El valor \(m_0\) será \(m_0=1\) ya que \(|x_1^{(0)}|=\|\mathbf{x}^{(0)}\|_\infty=1\).
    • Hallamos \(\mathbf{y}^{(1)}=\mathbf{A}\mathbf{x}^{(0)}=\begin{bmatrix}22 \\25 \\20 \\20 \\\end{bmatrix}.\)
    • El valor \(\mu^{(1)}\) vale: \(\mu^{(1)}=\frac{y_1^{(1)}}{x_1^{(0)}}=\frac{22}{1}=22.\)
    • Hallamos \(\mathbf{x}^{(1)}=\frac{\mathbf{y}^{(1)}}{\|\mathbf{y}^{(1)}\|_\infty}=\frac{1}{25}\begin{bmatrix}22 \\25 \\20 \\20 \\\end{bmatrix}=\begin{bmatrix}0.88 \\1 \\0.8 \\0.8 \\\end{bmatrix}.\)

Ejemplo (continuación)

  • Como \[ \begin{align*} & \min\{\|\mathbf{x}^{(1)}-\mathbf{x}^{(0)}\|_\infty,\|\mathbf{x}^{(1)}+\mathbf{x}^{(0)}\|_\infty\} \\ \qquad & = \min\left\{\left\|\left(\begin{bmatrix}0.88 \\1 \\0.8 \\0.8 \\\end{bmatrix}-\begin{bmatrix}1 \\1 \\1 \\1 \\\end{bmatrix}\right)\right\|_\infty,\left\|\left(\begin{bmatrix}0.88 \\1 \\0.8 \\0.8 \\\end{bmatrix}+\begin{bmatrix}1 \\1 \\1 \\1 \\\end{bmatrix}\right)\right\|_\infty\right\} \\ \qquad & = \min\left\{\left\|\begin{bmatrix}-0.12 \\0 \\-0.2 \\-0.2 \\\end{bmatrix}\right\|_\infty,\left\|\begin{bmatrix}1.88 \\2 \\1.8 \\1.8 \\\end{bmatrix}\right\|_\infty\right\} =\min\{0.2,2\}=0.2>\epsilon, \end{align*} \] continuamos:

Ejemplo (continuación)

  • Paso 2:
    • El valor \(m_1\) será \(m_1=2\) ya que \(|x_2^{(1)}|=\|\mathbf{x}^{(1)}\|_\infty=1\).
    • Hallamos \(\mathbf{y}^{(2)}=\mathbf{A}\mathbf{x}^{(1)}=\begin{bmatrix}19.2 \\21.68 \\17.68 \\17.2 \\\end{bmatrix}.\)
    • El valor \(\mu^{(2)}\) vale: \(\mu^{(2)}=\frac{y_2^{(2)}}{x_2^{(1)}}=\frac{21.68}{1}=21.68.\)
    • Hallamos \(\mathbf{x}^{(2)}=\frac{\mathbf{y}^{(2)}}{\|\mathbf{y}^{(2)}\|_\infty}=\frac{1}{21.68}\begin{bmatrix}19.2 \\21.68 \\17.68 \\17.2 \\\end{bmatrix}=\begin{bmatrix}0.885609 \\1 \\0.815498 \\0.793358 \\\end{bmatrix}.\)

Ejemplo (continuación)

  • Como \[ \begin{align*} & \min\{\|\mathbf{x}^{(2)}-\mathbf{x}^{(1)}\|_\infty,\|\mathbf{x}^{(2)}+\mathbf{x}^{(1)}\|_\infty\} \\ \qquad & = \min\left\{\left\|\left(\begin{bmatrix}0.885609 \\1 \\0.815498 \\0.793358 \\\end{bmatrix}-\begin{bmatrix}0.88 \\1 \\0.8 \\0.8 \\\end{bmatrix}\right)\right\|_\infty,\left\|\left(\begin{bmatrix}0.885609 \\1 \\0.815498 \\0.793358 \\\end{bmatrix}+\begin{bmatrix}0.88 \\1 \\0.8 \\0.8 \\\end{bmatrix}\right)\right\|_\infty\right\} \\ \qquad & = \min\left\{\left\|\begin{bmatrix}0.005609 \\0 \\0.015498 \\-0.006642 \\\end{bmatrix}\right\|_\infty,\left\|\begin{bmatrix}1.765609 \\2 \\1.615498 \\1.593358 \\\end{bmatrix}\right\|_\infty\right\} =\min\{0.015498,2\}=0.015498>\epsilon, \end{align*} \] continuamos:

Ejemplo (continuación)

  • Paso 3:
    • El valor \(m_2\) será \(m_2=2\) ya que \(|x_2^{(2)}|=\|\mathbf{x}^{(2)}\|_\infty=1\).
    • Hallamos \(\mathbf{y}^{(3)}=\mathbf{A}\mathbf{x}^{(2)}=\begin{bmatrix}19.287823 \\21.804428 \\17.704797 \\17.309963 \\\end{bmatrix}.\)
    • El valor \(\mu^{(3)}\) vale: \(\mu^{(3)}=\frac{y_2^{(3)}}{x_2^{(2)}}=\frac{21.804428}{1}=21.804428.\)
    • Hallamos \(\mathbf{x}^{(3)}=\frac{\mathbf{y}^{(3)}}{\|\mathbf{y}^{(3)}\|_\infty}=\frac{1}{21.804428}\begin{bmatrix}19.287823 \\21.804428 \\17.704797 \\17.309963 \\\end{bmatrix}=\begin{bmatrix}0.884583 \\1 \\0.811982 \\0.793874 \\\end{bmatrix}.\)

Ejemplo (continuación)

Y así sucesivamente hasta llegar a realizar \(9\) pasos o iteraciones. Los valores de las aproximaciones del valor propio valen: \[ 22, 21.68, 21.804428, 21.7727196, 21.7791069, 21.777788, 21.77806, 21.7780039, 21.7780155 \] Las aproximaciones del vector propio son las siguientes (en columnas): \[ \begin{bmatrix}1&0.88&0.885609&0.884583&0.884785&0.884743&0.884752&0.88475&0.884751&0.88475 \\1&1&1&1&1&1&1&1&1&1 \\1&0.8&0.815498&0.811982&0.812701&0.812552&0.812583&0.812577&0.812578&0.812578 \\1&0.8&0.793358&0.793874&0.793759&0.793782&0.793777&0.793778&0.793778&0.793778 \\\end{bmatrix}. \]

El método se encuentra implementado en:

Aceleración de la convergencia.

Si aplicamos el método de Aitken (ver el capítulo de ceros) a la sucesión \((\mu^{(n)})_{n\geq 1}\) obtenemos una sucesión que converge más rápidamente al valor propio de módulo máximo \(\lambda_1\).

Concretamente, consideramos la sucesión \((\tilde{\mu}^{(n)})_{n\geq 1}\) definida de la forma siguiente: \[ \tilde{\mu}^{(n)}=\mu^{(n)}-\frac{(\mu^{(n+1)}-\mu^{(n)})^2}{\mu^{(n+2)}-2\mu^{(n+1)}+\mu^{(n)}}. \]

Para aplicar la aceleración anterior, modificamos el pseudódigo del método de la potencia de la manera siguiente:

Aceleración de Aitken. Pseudocódigo

  • INPUT matriz del sistema \(\mathbf{A}=(a_{ij})_{i=1,\ldots,n,j=1,\ldots,n}\), valor inicial \(\mathbf{X0}=\mathbf{x}\) con \(\|\mathbf{x}\|_\infty =1\), error absoluto o tolerancia TOL, número máximo de iteraciones Nmax.
  • Set \(k=1\) (inicializamos el contador de la iteraciones)
  • Set \(\mu_0=0\).
  • Set \(\mu_1=0\). (inicializamos los dos primeros valores de la sucesión \((\mu^{(n)})_{n\geq 1}\) para poder aplicar la aceleración de Aitken.
  • Hallamos el entero más pequeño \(m\) tal que \(|x_m|=\|\mathbf{x}\|_\infty\).

Aceleración de Aitken. Pseudocódigo

  • While \(k\leq Nmax\) (mientras no se llegue al número máximo de iteraciones, hacer lo siguiente)
    • Set \(\mathbf{y}=\mathbf{A}\mathbf{x}\)
    • Set \(\mu =y_m\).
    • Hallamos el entero más pequeño \(m\) tal que \(|y_m|=\|\mathbf{y}\|_\infty\).
    • If \(y_m=0\) then print(la matriz A tiene 0 como valor propio. Escoger otro vector inicial).
    • Set \(\hat{\mu}=\mu_0-\frac{(\mu_1-\mu_0)^2}{\mu-2\mu_1+\mu_0}\). (Aplicamos aceleración de Aitken)
    • Set \(\mathbf{x}_1=\frac{\mathbf{y}}{y_m}\).
    • Set error=\(\min\left\{\left\|\mathbf{x}-\mathbf{x}_1\right\|_\infty,\left\|\mathbf{x}+\mathbf{x}_1\right\|_\infty\right\}\).

Aceleración de Aitken. Pseudocódigo

    • If error<TOL print(\(\mu,\mathbf{x}\)). (El método ha acabado. Tenemos el valor propio y un vector propio con un error menor que la tolerancia permitida.)
    • Set \(\mathbf{x}=\mathbf{x}_1\).
    • Set \(k=k+1\).
    • Set \(\mu_0=\mu_1\).
    • Set \(\mu_1=\mu\). (Actualizamos los valores \(\mu^{(n)}\))
  • Print Hemos alcanzado el máximo número de iteraciones. El método de la potencia no converge en este caso.

Ejemplo anterior

Vamos a aplicar el método de aceleración de Aitken al ejemplo anterior.

Recordemos las aproximaciones del valor propio de módulo máximo: \[ 22, 21.68, 21.804428, 21.7727196, 21.7791069, 21.777788, 21.77806, 21.7780039, 21.7780155. \] Usando que \(\mu_0=\mu_1=0\), el primer valor de la sucesión acelerada \(\tilde{\mu}^{(n)}\) será: \[ \tilde{\mu}^{(1)}=\mu_0-\frac{(\mu_1-\mu_0)^2}{\mu-2\mu_1+\mu_0}=0-\frac{(0-0)^2}{22-2\cdot 0+0}=0. \] Ahora cambiamos los valores de \(\mu_0\) y \(\mu_1\) por \(\mu_0=0\), \(\mu_1=22\). El segundo valor será: \[ \tilde{\mu}^{(2)}=\mu_0-\frac{(\mu_1-\mu_0)^2}{\mu-2\mu_1+\mu_0}=0-\frac{(22-0)^2}{21.68-2\cdot 22+0}=21.684588. \]

Ahora cambiamos los valores de \(\mu_0\) y \(\mu_1\) por \(\mu_0=22\), \(\mu_1=21.68\). El tercer valor será: \[ \tilde{\mu}^{(3)}=\mu_0-\frac{(\mu_1-\mu_0)^2}{\mu-2\mu_1+\mu_0}=22-\frac{(21.68-22)^2}{21.804428-2\cdot 21.68+22}=21.769591. \]

Ejemplo anterior

Y asi sucesivamente. Los valores de la sucesión \(\hat{\mu}^{(n)}\) son los siguientes: \[ 0, 21.6845878, 21.7695915, 21.779159, 21.778036, 21.7780137, 21.7780135, 21.7780135, 21.7780135. \] Observar que la sucesión \(\hat{\mu}^{(n)}\) converge más rápidamente que la sucesión \(\mu^{(n)}\) hacia el valor propio dominante de la matriz.

El método se encuentra implementado en:

Matrices simétricas

Recordemos que si la matriz \(\mathbf{A}\) es simétrica existe una base de vectores propios ortogonal, es decir, existen vectores propios \(\mathbf{v}^{(1)},\ldots,\mathbf{v}^{(n)}\) de valores propios \(\lambda_1,\ldots,\lambda_n\), respectivamente, con \((\mathbf{v}^{(i)})^\top \mathbf{v}^{(j)}=0\) si \(i\neq j\).

Igual que en las secciones anteriores, supondremos que \(\lambda_1\) es el valor propio dominante: \(|\lambda_1|>|\lambda_2|\geq \cdots \geq |\lambda_n|\).

En este caso, vamos a modificar el método de la potencia para conseguir una mayor velocidad de convergencia de la sucesión \(\mu^{(n)}\) que converge hacia \(\lambda_1\).

Concretamente, vamos a definir dos sucesiones \(\mu^{(k)}\) y \(\mathbf{x}^{(k)}\) que convergen hacia \(\lambda_1\) y un vector propio de valor propio \(\lambda_1\), la primera en orden \(O\left(\left|\frac{\lambda_i}{\lambda_1}\right|\right)^{2k}\) y la segunda en orden \(O\left(\left|\frac{\lambda_i}{\lambda_1}\right|\right)^{k}\), \(i=2,\ldots,n\).

Otra modificación a tener en cuenta es que usaremos la norma euclídea \(\|\cdot\|_2\) en lugar de la norma infinito \(\|\cdot\|_\infty\).

Matrices simétricas. Algoritmo

El algoritmo del método de la potencia para matrices simétricas es el siguiente:

  • Paso \(1\):
    • Consideramos \(\mathbf{x}^{(0)}\) un vector inicial con \(\|\mathbf{x}^{(0)}\|_2=1\). Si \(\mathbf{x}^{(0)}\) no tuviese normal euclídea igual a 1, consideraríamos \(\frac{\mathbf{x}^{(0)}}{\|\mathbf{x}^{(0)}\|_2}\) y este último ya tendría norma euclídea igual a \(1\).
    • Definimos \(\mathbf{y}^{(1)}=\mathbf{A}\mathbf{x}^{(0)}\).
    • Definimos \(\mu^{(1)}=(\mathbf{x}^{(0)})^\top \mathbf{y}^{(1)}\).
    • Por último, definimos \(\mathbf{x}^{(1)}=\frac{\mathbf{y}^{(1)}}{\|\mathbf{y}^{(1)}\|_2}\).
  • \(\vdots\)

Matrices simétricas. Algoritmo

  • Paso \(k\). Suponemos definidos \(\mathbf{x}^{(0)},\ldots,\mathbf{x}^{(k-1)}\), \(\mathbf{y}^{(1)},\ldots,\mathbf{y}^{(k-1)}\), \(\mu^{(1)},\ldots,\mu^{(k-1)}\).
    • Definimos \(\mathbf{y}^{(k)}=\mathbf{A}\mathbf{x}^{(k-1)}\).
    • Definimos \(\mu^{(k)}=(\mathbf{x}^{(k-1)})^\top \mathbf{y}^{(k)}\).
    • Definimos \(\mathbf{x}^{(k)}=\frac{\mathbf{y}^{(k)}}{\|\mathbf{y}^{(k)}\|_2}\).

Matrices simétricas. Algoritmo

Para demostrar que la sucesión \(\mu^{(k)}\) tiene orden de convergencia \(O\left(\left|\frac{\lambda_i}{\lambda_1}\right|\right)^{2k}\), necesitamos usar el resultado siguiente:

Proposición.

Para todo valor de \(k\geq 0\), el vector \(\mathbf{x}^{(k)}\) puede escribirse como: \[\mathbf{x}^{(k)}=\frac{\mathbf{A}^k\mathbf{x}^{(0)}}{\|\mathbf{A}^k\mathbf{x}^{(0)}\|_2}=\frac{\alpha_1\lambda_1^k\mathbf{v}^{(1)}+\sum_{i=2}^n\alpha_i\lambda_i^k\mathbf{v}^{(i)}}{\|\alpha_1\lambda_1^k\mathbf{v}^{(1)}+\sum_{i=2}^n\alpha_i\lambda_i^k\mathbf{v}^{(i)}\|_2}.\]

Matrices simétricas. Algoritmo

Demostración

Veamos la primera expresión, es decir, veamos que el vector \(\mathbf{x}^{(k)}\) puede escribirse como: \(\mathbf{x}^{(k)}=\frac{\mathbf{A}^k\mathbf{x}^{(0)}}{\|\mathbf{A}^k\mathbf{x}^{(0)}\|_2}\): \[ \begin{align*} \mathbf{x}^{(k)} & =\frac{\mathbf{y}^{(k)}}{\|\mathbf{y}^{(k)}\|_2}=\frac{\mathbf{A}\mathbf{x}^{(k-1)}}{\|\mathbf{y}^{(k)}\|_2}=\frac{\mathbf{A}\frac{\mathbf{y}^{(k-1)}}{\|\mathbf{y}^{(k-1)}\|_2}}{\|\mathbf{y}^{(k)}\|_2}=\frac{\mathbf{A}\mathbf{y}^{(k-1)}}{\|\mathbf{y}^{(k-1)}\|_2\|\mathbf{y}^{(k)}\|_2}=\frac{\mathbf{A}^2\mathbf{x}^{(k-2)}}{\|\mathbf{y}^{(k-1)}\|_2\|\mathbf{y}^{(k)}\|_2}\\ & = \cdots = \frac{\mathbf{A}^k\mathbf{x}^{(0)}}{\prod_{l=1}^k\|\mathbf{y}^{(l)}\|_2},\ \Rightarrow\\ \mathbf{y}^{(k)} & =\mathbf{A}\mathbf{x}^{(k-1)}=\mathbf{A}\frac{\mathbf{A}^{k-1}\mathbf{x}^{(0)}}{\prod_{l=1}^{k-1}\|\mathbf{y}^{(l)}\|_2}=\frac{\mathbf{A}^{k}\mathbf{x}^{(0)}}{\prod_{l=1}^{k-1}\|\mathbf{y}^{(l)}\|_2},\ \Rightarrow\\ \mathbf{x}^{(k)} & =\frac{\mathbf{y}^{(k)}}{\|\mathbf{y}^{(k)}\|_2}=\frac{\mathbf{A}^k\mathbf{x}^{(0)}/\prod_{l=1}^{k-1}\|\mathbf{y}^{(l)}\|_2}{\left\|\mathbf{A}^k\mathbf{x}^{(0)}/\prod_{l=1}^{k-1}\|\mathbf{y}^{(l)}\|_2\right\|}=\frac{\mathbf{A}^k\mathbf{x}^{(0)}}{\left\|\mathbf{A}^k\mathbf{x}^{(0)}\right\|_2}. \end{align*} \]

Matrices simétricas. Algoritmo

En segundo lugar, veamos la segunda igualdad.

Supongamos que el vector inicial \(\mathbf{x}^{(0)}\) se puede escribir como: \[ \mathbf{x}^{(0)}=\alpha_1\mathbf{v}^{(1)}+\cdots +\alpha_n\mathbf{v}^{(n)}=\sum_{i=1}^n\alpha_i\mathbf{v}^{(i)},\quad \alpha_1\neq 0, \] donde recordemos que \(\mathbf{v}^{(1)},\ldots,\mathbf{v}^{(n)}\) eran la base de vectores propios ortogonales de valores propios \(\lambda_1,\ldots,\lambda_n\), respectivamente.

El vector \(\mathbf{A}^k\mathbf{x}^{(0)}\), usando la descomposición anterior, puede escribirse como: \[ \mathbf{A}^k\mathbf{x}^{(0)}=\alpha_1\lambda_1^k\mathbf{v}^{(1)}+\sum_{i=2}^n\alpha_i\lambda_i^k\mathbf{v}^{(i)}. \] Por tanto, \[ \mathbf{x}^{(k)} =\frac{\mathbf{A}^k\mathbf{x}^{(0)}}{\left\|\mathbf{A}^k\mathbf{x}^{(0)}\right\|_2}=\frac{\alpha_1\lambda_1^k\mathbf{v}^{(1)}+\sum_{i=2}^n\alpha_i\lambda_i^k\mathbf{v}^{(i)}}{\|\alpha_1\lambda_1^k\mathbf{v}^{(1)}+\sum_{i=2}^n\alpha_i\lambda_i^k\mathbf{v}^{(i)}\|_2}, \] tal como queríamos demostrar.

Matrices simétricas. Algoritmo

La sucesión \(\mu^{(k)}\), usando la proposición anterior, puede escribirse como: \[ \begin{align*} \mu^{(k)} & =(\mathbf{x}^{(k-1)})^\top \mathbf{y}^{(k)}=(\mathbf{x}^{(k-1)})^\top \mathbf{A}\mathbf{x}^{(k-1)}\\ & =\frac{(\alpha_1\lambda_1^{k-1}\mathbf{v}^{(1)}+\sum_{i=2}^n\alpha_i\lambda_i^{k-1}\mathbf{v}^{(i)})^\top \mathbf{A}(\alpha_1\lambda_1^{k-1}\mathbf{v}^{(1)}+\sum_{i=2}^n\alpha_i\lambda_i^{k-1}\mathbf{v}^{(i)})}{\|\alpha_1\lambda_1^{k-1}\mathbf{v}^{(1)}+\sum_{i=2}^n\alpha_i\lambda_i^{k-1}\mathbf{v}^{(i)}\|_2^2}\\ & =\frac{(\alpha_1\lambda_1^{k-1}\mathbf{v}^{(1)}+\sum_{i=2}^n\alpha_i\lambda_i^{k-1}\mathbf{v}^{(i)})^\top (\alpha_1\lambda_1^{k}\mathbf{v}^{(1)}+\sum_{i=2}^n\alpha_i\lambda_i^{k}\mathbf{v}^{(i)})}{\|\alpha_1\lambda_1^{k-1}\mathbf{v}^{(1)}+\sum_{i=2}^n\alpha_i\lambda_i^{k-1}\mathbf{v}^{(i)}\|_2^2}. \end{align*} \]

Matrices simétricas. Algoritmo

Usando la ortogonalidad de los vectores propios \(\mathbf{v}^{(i)}\), podemos escribir \(\mu^{(k)}\) como: \[ \begin{align*} \mu^{(k)} & =\frac{\alpha_1^2\lambda_1^{2k-1}+\sum_{i=2}^n \alpha_i^2\lambda_i^{2k-1}}{\alpha_1^2\lambda_1^{2k-2}+\sum_{i=2}^n \alpha_i^2\lambda_i^{2k-2}}=\frac{\alpha_1^2\lambda_1^{2k-1}\left(1+\sum_{i=2}^n(\alpha_i/\alpha_1)^2 (\lambda_i/\lambda_1)^{2k-1}\right)}{\alpha_1^2\lambda_1^{2k-2}\left(1+\sum_{i=2}^n(\alpha_i/\alpha_1)^2 (\lambda_i/\lambda_1)^{2k-2}\right)}\\ & = \lambda_1 \frac{\left(1+\sum_{i=2}^n(\alpha_i/\alpha_1)^2 (\lambda_i/\lambda_1)^{2k-1}\right)}{\left(1+\sum_{i=2}^n(\alpha_i/\alpha_1)^2 (\lambda_i/\lambda_1)^{2k-2}\right)}\\ & \approx \lambda_1 \left(1+\sum_{i=2}^n(\alpha_i/\alpha_1)^2 (\lambda_i/\lambda_1)^{2k-1}\right)=\lambda_1+O\left(\left|\frac{\lambda_i}{\lambda_1}\right|\right)^{2k}, \end{align*} \] tal como queríamos ver.

Matrices simétricas. Algoritmo

Los vectores \(\mathbf{x}^{(k)}\), usando la proposición anterior, se pueden escribir como: \[ \begin{align*} \mathbf{x}^{(k)} & =\frac{\alpha_1\lambda_1^k\mathbf{v}^{(1)}+\sum_{i=2}^n\alpha_i\lambda_i^k\mathbf{v}^{(i)}}{\|\alpha_1\lambda_1^k\mathbf{v}^{(1)}+\sum_{i=2}^n\alpha_i\lambda_i^k\mathbf{v}^{(i)}\|_2}\\ & =\frac{\alpha_1\lambda_1^k\left(\mathbf{v}^{(1)}+\sum_{i=2}^n(\alpha_i/\alpha_1)(\lambda_i/\lambda_1)^k\mathbf{v}^{(i)}\right)}{\|\alpha_1\lambda_1^k\left(\mathbf{v}^{(1)}+\sum_{i=2}^n(\alpha_i/\alpha_1)(\lambda_i/\lambda_1)^k\mathbf{v}^{(i)}\right)\|_2}\\ & \approx \frac{\alpha_1\lambda_1^k\left(\mathbf{v}^{(1)}+\sum_{i=2}^n(\alpha_i/\alpha_1)(\lambda_i/\lambda_1)^k\mathbf{v}^{(i)}\right)}{\|\alpha_1\lambda_1^k\left(\mathbf{v}^{(1)}\right)\|_2}=\pm \frac{\mathbf{v}^{(1)}}{\|\mathbf{v}^{(1)}\|_2}+O\left(\left|\frac{\lambda_i}{\lambda_1}\right|\right)^{k}, \end{align*} \] es decir, la sucesión \(\mathbf{x}^{(k)}\) converge hacia un vector propio de valor propio \(\lambda_1\) con orden de convergencia \(O\left(\left|\frac{\lambda_i}{\lambda_1}\right|\right)^{k}\).

Matrices simétricas. Pseudocódigo

  • INPUT matriz del sistema \(\mathbf{A}=(a_{ij})_{i=1,\ldots,n,j=1,\ldots,n}\), valor inicial \(\mathbf{X0}=\mathbf{x}\neq \mathbf{0}\) con \(\|\mathbf{x}\|_2 =1\), error absoluto o tolerancia TOL, número máximo de iteraciones Nmax.
  • Set \(k=1\) (inicializamos el contador de la iteraciones)
  • Set \(\mathbf{x}=\frac{\mathbf{x}}{\|\mathbf{x}\|_2}\).

Matrices simétricas. Pseudocódigo

  • While \(k\leq Nmax\) (mientras no se llegue al número máximo de iteraciones, hacer lo siguiente)
    • Set \(\mathbf{y}=\mathbf{A}\mathbf{x}\)
    • Set \(\mu =\mathbf{x}^\top \mathbf{y}\).
    • If \(\|\mathbf{y}\|_2=0\) then print(A tiene 0 como valor propio. Escoge otro vector propio inicial).
    • Set \(\mathbf{x}_1=\frac{\mathbf{y}}{\|\mathbf{y}\|_2}\)
    • Set error=\(\min\left\{\left\|\mathbf{x}-\mathbf{x}_1\right\|_2,\left\|\mathbf{x}+\mathbf{x}_1\right\|_2\right\}\).
    • If error<TOL print(\(\mu,\mathbf{x}\)). (El método ha acabado. Tenemos el valor propio y un vector propio con un error menor que la tolerancia permitida.)

Matrices simétricas. Pseudocódigo

    • Set \(\mathbf{x}=\mathbf{x}_1\).
    • Set \(k=k+1\).
  • Print Hemos alcanzado el máximo número de iteraciones. El método de la potencia no converge en este caso.

Ejemplo

Vamos a aplicar la modificación del método de la potencia a la matriz simétrica: \[ \mathbf{A}=\begin{bmatrix}-5.6&0.4&3&-5.4 \\0.4&-6.4&1.6&2.4 \\3&1.6&2.8&-1 \\-5.4&2.4&-1&2 \\\end{bmatrix}. \]

  • Paso \(1\). Consideramos \(\mathbf{x}^{(0)}=\begin{bmatrix}1 \\1 \\1 \\1 \\\end{bmatrix}.\) A continuación lo normalizamos \(\mathbf{x}^{(0)}=\frac{\mathbf{x}^{(0)}}{\|\mathbf{x}^{(0)}\|_2}=\frac{\begin{bmatrix}1 \\1 \\1 \\1 \\\end{bmatrix}}{2}=\begin{bmatrix}0.5 \\0.5 \\0.5 \\0.5 \\\end{bmatrix}\).

Ejemplo (continuación)

Seguidamente, calculamos \[ \begin{align*} \mathbf{y}^{(1)} & =\mathbf{A}\mathbf{x}^{(0)}=\begin{bmatrix}-5.6&0.4&3&-5.4 \\0.4&-6.4&1.6&2.4 \\3&1.6&2.8&-1 \\-5.4&2.4&-1&2 \\\end{bmatrix}\begin{bmatrix}0.5 \\0.5 \\0.5 \\0.5 \\\end{bmatrix}=\begin{bmatrix}-3.8 \\-1 \\3.2 \\-1 \\\end{bmatrix},\\ \mu^{(1)}& =(\mathbf{x}^{(0)})^\top \mathbf{y}^{(1)}=\begin{bmatrix}0.5&0.5&0.5&0.5 \\\end{bmatrix}\cdot\begin{bmatrix}-3.8 \\-1 \\3.2 \\-1 \\\end{bmatrix}=-1.3,\\ \mathbf{x}^{(1)} & = \frac{\mathbf{y}^{(1)}}{\|\mathbf{y}^{(1)}\|_2}=\frac{\begin{bmatrix}-3.8 \\-1 \\3.2 \\-1 \\\end{bmatrix}}{5.1652686}=\begin{bmatrix}-0.735683 \\-0.193601 \\0.619522 \\-0.193601 \\\end{bmatrix}. \end{align*} \]

Ejemplo (continuación)

  • Paso \(2\). Calculamos: \[ \begin{align*} \mathbf{y}^{(2)} & =\mathbf{A}\mathbf{x}^{(1)}=\begin{bmatrix}-5.6&0.4&3&-5.4 \\0.4&-6.4&1.6&2.4 \\3&1.6&2.8&-1 \\-5.4&2.4&-1&2 \\\end{bmatrix}\begin{bmatrix}-0.735683 \\-0.193601 \\0.619522 \\-0.193601 \\\end{bmatrix}=\begin{bmatrix}6.946396 \\1.471366 \\-0.588546 \\2.501322 \\\end{bmatrix},\\ \mu^{(2)}& =(\mathbf{x}^{(1)})^\top \mathbf{y}^{(2)}=\begin{bmatrix}-0.735683&-0.193601&0.619522&-0.193601 \\\end{bmatrix}\cdot\begin{bmatrix}6.946396 \\1.471366 \\-0.588546 \\2.501322 \\\end{bmatrix}=-6.244078,\\ \mathbf{x}^{(2)} & = \frac{\mathbf{y}^{(2)}}{\|\mathbf{y}^{(2)}\|_2}=\frac{\begin{bmatrix}6.946396 \\1.471366 \\-0.588546 \\2.501322 \\\end{bmatrix}}{7.551181}=\begin{bmatrix}0.919909 \\0.194852 \\-0.077941 \\0.331249 \\\end{bmatrix}. \end{align*} \]

Ejemplo (continuación)

  • Paso \(3\). Calculamos: \[ \begin{align*} \mathbf{y}^{(3)} & =\mathbf{A}\mathbf{x}^{(2)}=\begin{bmatrix}-5.6&0.4&3&-5.4 \\0.4&-6.4&1.6&2.4 \\3&1.6&2.8&-1 \\-5.4&2.4&-1&2 \\\end{bmatrix}\begin{bmatrix}0.919909 \\0.194852 \\-0.077941 \\0.331249 \\\end{bmatrix}=\begin{bmatrix}-7.096115 \\-0.2088 \\2.522006 \\-3.759421 \\\end{bmatrix},\\ \mu^{(3)}& =(\mathbf{x}^{(2)})^\top \mathbf{y}^{(3)}=\begin{bmatrix}0.919909&0.194852&-0.077941&0.331249 \\\end{bmatrix}\cdot\begin{bmatrix}-7.096115 \\-0.2088 \\2.522006 \\-3.759421 \\\end{bmatrix}=-8.010335,\\ \mathbf{x}^{(3)} & = \frac{\mathbf{y}^{(3)}}{\|\mathbf{y}^{(3)}\|_2}=\frac{\begin{bmatrix}-7.096115 \\-0.2088 \\2.522006 \\-3.759421 \\\end{bmatrix}}{8.419751}=\begin{bmatrix}-0.842794 \\-0.024799 \\0.299534 \\-0.4465 \\\end{bmatrix}. \end{align*} \]

Ejemplo (continuación)

  • Paso \(4\). Calculamos: \[ \begin{align*} \mathbf{y}^{(4)} & =\mathbf{A}\mathbf{x}^{(3)}=\begin{bmatrix}-5.6&0.4&3&-5.4 \\0.4&-6.4&1.6&2.4 \\3&1.6&2.8&-1 \\-5.4&2.4&-1&2 \\\end{bmatrix}\begin{bmatrix}-0.842794 \\-0.024799 \\0.299534 \\-0.4465 \\\end{bmatrix}=\begin{bmatrix}8.019431 \\-0.770751 \\-1.282863 \\3.299035 \\\end{bmatrix},\\ \mu^{(4)}& =(\mathbf{x}^{(3)})^\top \mathbf{y}^{(4)}=\begin{bmatrix}-0.842794&-0.024799&0.299534&-0.4465 \\\end{bmatrix}\cdot\begin{bmatrix}8.019431 \\-0.770751 \\-1.282863 \\3.299035 \\\end{bmatrix}=-8.596896,\\ \mathbf{x}^{(4)} & = \frac{\mathbf{y}^{(4)}}{\|\mathbf{y}^{(4)}\|_2}=\frac{\begin{bmatrix}8.019431 \\-0.770751 \\-1.282863 \\3.299035 \\\end{bmatrix}}{8.799699}=\begin{bmatrix}0.91133 \\-0.087588 \\-0.145785 \\0.374903 \\\end{bmatrix}. \end{align*} \]

Ejemplo (continuación)

Y así sucesivamente.

La sucesión de aproximaciones del valor propio dominante \(\mu^{(k)}\) es la siguiente: \[ \begin{align*} & -1.3, -6.244078, -8.0103347, -8.5968963, -8.9177995, -9.1067134, -9.2126819, -9.2697446, -9.2997529,\\ & -9.3153399, -9.3233874, -9.3275312, -9.329663, -9.3307597, -9.3313241, -9.3316147, -9.3317644\\ & -9.3318416, -9.3318814, -9.331902, -9.3319126, -9.3319181, -9.3319209, -9.3319224, -9.3319232,\ldots \end{align*} \] Las aproximaciones del vector propio del valor propio dominante \(\mathbf{x}^{(k)}\) son las siguientes: \[ \begin{align*} & \begin{bmatrix}0.5&-0.735683&0.919909&-0.842794&0.91133&-0.841788&0.86404&-0.821256&0.827263 \\0.5&-0.193601&0.194852&-0.024799&-0.087588&0.176282&-0.247659&0.294467&-0.332135 \\0.5&0.619522&-0.077941&0.299534&-0.145785&0.200553&-0.132299&0.152284&-0.118669 \\0.5&-0.193601&0.331249&-0.4465&0.374903&-0.469145&0.417848&-0.464367&0.43731 \\\end{bmatrix}\\ & \begin{bmatrix}-0.803978&0.805152&-0.793088&0.792992&-0.786868&0.786542&-0.78346&0.783175 \\0.356299&-0.375595&0.38805&-0.397933&0.404377&-0.409458&0.412805&-0.415425 \\0.126865&-0.110283&0.113689&-0.10554&0.106932&-0.102931&0.10348&-0.101514 \\-0.458885&0.445529&-0.455525&0.449082&-0.453743&0.450667&-0.452852&0.451391 \\\end{bmatrix}\\ \end{align*} \]

Ejemplo (continuación)

Observaciones:

  • Vemos que la sucesión de aproximaciones del valor propio dominante \(\mu^{(k)}\) converge más rápidamente que la sucesión de aproximaciones de los vectores propios asociados al valor propio dominante \(\mathbf{x}^{(k)}\) tal como vimos anteriormente.

  • En este ejemplo, observamos que hay un cambio de signo en dos aproximaciones sucesivas de los vectores propios \(\mathbf{x}^{(k)}\).

  • Con una tolerancia de \(0.000001\), necesitaríamos \(k=42\) iteraciones para que se verifique que \(\min\{\|\mathbf{x}^{(k)}-\mathbf{x}^{(k-1)}\|_2,\|\mathbf{x}^{(k)}+\mathbf{x}^{(k-1)}\|_2\}<0.000001\). La lentitud de la convergencia en este caso es debida al cociente \(\frac{\max_{i=2,\ldots,n}|\lambda_i|}{|\lambda_1|}\) que en este caso vale \(0.7208616,\) cuyo valor es relativamente grande. Recordemos que: \[ \mathbf{x}^{(k)}=\pm\frac{\mathbf{v}^{(1)}}{\|\mathbf{v}^{(1)}\|_2}+O\left(\frac{\max_{i=2,\ldots,n}|\lambda_i|}{|\lambda_1|}\right)^k, \] donde \(\mathbf{v}^{(1)}\) es un vector propio de valor propio de módulo máximo \(-9.331924.\)

Método de la potencia inversa

Dada una matriz \(\mathbf{A}\), el método de la potencia nos proporciona el vector propio junto con el vector propio correspondiente de módulo máximo de dicha matriz.

Sin embargo, el método de la potencia puede modificarse para que halle el valor propio junto con el vector propio correspondiente más cercano a un determinado valor real \(a\).

Antes de ver cómo poder realizar dicha modificación necesitamos el resultado siguiente:

Proposición.

Sea \(\mathbf{A}\) una matriz \(n\times n\) con valores propios \(\lambda_1,\lambda_2,\ldots,\lambda_n\) junto con vectores propios asociados \(\mathbf{v}^{(1)},\mathbf{v}^{(2)},\ldots,\mathbf{v}^{(n)}\). Sea \(a\) un número real. Entonces la matriz \((\mathbf{A}-a\mathbf{I})^{-1}\) tiene como valores propios \(\frac{1}{a-\lambda_1},\frac{1}{a-\lambda_2},\ldots,\frac{1}{a-\lambda_n}\) junto con los mismos vectores propios anteriores asociados a dichos valores propios.

Demostración de la proposición

Como \(\mathbf{v}^{(i)}\) es un vector propio de valor propio \(\lambda_i\), \(i=1,\ldots,n\), tenemos que: \(\mathbf{A}\mathbf{v}^{(i)}=\lambda_i\mathbf{v}^{(i)}\).

Entonces: \[ (\mathbf{A}-a\mathbf{I})\mathbf{v}^{(i)}=\mathbf{A}\mathbf{v}^{(i)}-a\mathbf{v}^{(i)}=\lambda_i\mathbf{v}^{(i)}-a\mathbf{v}^{(i)}=(\lambda_i-a)\mathbf{v}^{(i)},\ \Rightarrow \mathbf{v}^{(i)}=(\lambda_i-a)(\mathbf{A}-a\mathbf{I})^{-1}\mathbf{v}^{(i)}, \] o, escrito de otra forma: \[ \frac{1}{\lambda_i-a}\mathbf{v}^{(i)}=(\mathbf{A}-a\mathbf{I})^{-1}\mathbf{v}^{(i)}. \] En conclusión, el vector \(\mathbf{v}^{(i)}\) es un vector propio de la matriz \((\mathbf{A}-a\mathbf{I})^{-1}\) de valor propio \(\frac{1}{\lambda_i-a}\), \(i=1,\ldots,n\), tal como queríamos demostrar.

Método de la potencia inversa

Dado un valor real \(a\), usando la proposición anterior, si aplicamos el método de la potencia a la matriz \((\mathbf{A}-a\mathbf{I})^{-1}\) hallaremos el valor propio de la matriz \(\mathbf{A}\) más cercano a \(a\) junto con el vector propio correspondiente.

Veamos por qué: sean \(\lambda_1,\ldots,\lambda_n\) los valores propios de la matriz \(\mathbf{A}\). La proposición anterior dice que \(\frac{1}{\lambda_1-a},\ldots,\frac{1}{\lambda_n-a}\) son los valores propios de la matriz \((\mathbf{A}-a\mathbf{I})^{-1}\). Por tanto el método de la potencia hallará el valor propio \(\lambda_j\) tal que: \[ \left|\frac{1}{\lambda_j-a}\right|=\frac{1}{|\lambda_j-a|}=\max_{i=1,\ldots,n}\left|\frac{1}{\lambda_i-a}\right|=\frac{1}{\min_{i=1,\ldots,n}|\lambda_i-a|}, \] es decir, \(|\lambda_j-a|=\min_{i=1,\ldots,n}|\lambda_i-a|\), lo que significa que \(\lambda_j\) es el valor propio de la matriz \(\mathbf{A}\) más cercano al valor \(a\).

Método de la potencia inversa. Pseudocódigo

  • INPUT matriz del sistema \(\mathbf{A}=(a_{ij})_{i=1,\ldots,n,j=1,\ldots,n}\), valor inicial \(\mathbf{X0}=\mathbf{x}\) con \(\|\mathbf{x}\|_\infty =1\), valor \(a\), error absoluto o tolerancia TOL, número máximo de iteraciones Nmax.
  • Set \(k=1\) (inicializamos el contador de la iteraciones)
  • Hallamos el entero más pequeño \(m\) tal que \(|x_m|=\|\mathbf{x}\|_\infty\).

Método de la potencia inversa. Pseudocódigo

  • While \(k\leq Nmax\) (mientras no se llegue al número máximo de iteraciones, hacer lo siguiente)
    • Resolver el sistema \((\mathbf{A}-a\mathbf{I})\mathbf{y}=\mathbf{x}\)
    • If el sistema anterior no tiene solución única, significa que \(a\) es un valor propio de la matriz \(\mathbf{A}\).
    • Set \(\mu =y_m\).
    • Hallamos el entero más pequeño \(m\) tal que \(|y_m|=\|\mathbf{y}\|_\infty\).
    • Set \(\mathbf{x}_1=\frac{\mathbf{y}}{\|\mathbf{y}\|_\infty}\)
    • Set error=\(\min\left\{\left\|\mathbf{x}-\mathbf{x}_1\right\|_\infty,\left\|\mathbf{x}+\mathbf{x}_1\right\|_\infty\right\}\).
    • If error<TOL print(\(a+\frac{1}{\mu},\mathbf{x}\)). (El método ha acabado. Tenemos el valor propio de la matriz \(\mathbf{A}\) más cercano a \(a\) y un vector propio con un error menor que la tolerancia permitida.)

Método de la potencia inversa. Pseudocódigo

    • Set \(\mathbf{x}=\mathbf{x}_1\).
    • Set \(k=k+1\).
  • Print Hemos alcanzado el máximo número de iteraciones. El método de la potencia no converge en este caso.

Método de la potencia inversa

Observaciones:

  • El valor \(\mathbf{y}\) en el paso \(k\)-ésimo del método de la potencia aplicado a la matriz \((\mathbf{A}-a\mathbf{I})^{-1}\) es \(\mathbf{y}=(\mathbf{A}-a\mathbf{I})^{-1}\mathbf{x}\). Sin embargo, hallar una inversa es muy costoso desde el punto de vista numérico. En su lugar, como \((\mathbf{A}-a\mathbf{I})\mathbf{y}=\mathbf{x}\), hemos de resolver un sistema de ecuaciones. Se suele usar el método de Gauss con pivotaje o la descomposición \(LU\). Como la matriz del sistema es la misma en todas las iteraciones, la descomposición \(LU\) o la transformación de la matriz del sistema en una matriz triangular superior sólo se realiza una vez.
  • El método de la potencia aplicado a la matriz \((\mathbf{A}-a\mathbf{I})^{-1}\) nos da el valor propio de la forma \(\mu_j =\frac{1}{\lambda_j-a}\). Por tanto, \(\lambda_j=\frac{1}{\mu_j}+a\) que es el valor que nos interesa cuando el error es menor que la tolerancia.

Ejemplo

Vamos a aplicar el método de la potencia inversa a la matriz vista anteriormente: \[ \mathbf{A}=\begin{bmatrix}5&6&6&5 \\6&6&8&5 \\6&6&2&6 \\5&4&7&4 \\\end{bmatrix}, \] hallando el valor propio de \(\mathbf{A}\) más cercano a \(0\) con una tolerancia de \(\epsilon =0.0000001.\)

Ejemplo (continuación)

  • Paso 1: consideramos \(\mathbf{x}^{(0)}=\begin{bmatrix}1 \\1 \\1 \\1 \\\end{bmatrix}.\)
    • El valor \(m_0\) será \(m_0=1\) ya que \(|x_1^{(0)}|=\|\mathbf{x}^{(0)}\|_\infty=1\).
    • Hallamos \(\mathbf{y}^{(1)}\) resolviendo la ecuación \((\mathbf{A}-0\mathbf{I})\mathbf{y}^{(1)}=\mathbf{x}^{(0)}\): \[ \begin{bmatrix}5&6&6&5 \\6&6&8&5 \\6&6&2&6 \\5&4&7&4 \\\end{bmatrix}\mathbf{y}^{(1)}=\begin{bmatrix}1 \\1 \\1 \\1 \\\end{bmatrix},\ \Rightarrow \mathbf{y}^{(1)}=\begin{bmatrix}-0.181818 \\-0.227273 \\0.090909 \\0.545455 \\\end{bmatrix} \]
    • El valor \(\mu_1\) vale: \(\mu_1=\frac{y_1^{(1)}}{x_1^{(0)}}=\frac{-0.1818182}{1}=-0.1818182.\) La aproximación del valor propio valdrá: \(\frac{1}{\mu_1}=\frac{1}{-0.181818}+0=-5.5.\)
    • Hallamos \(\mathbf{x}^{(1)}=\frac{\mathbf{y}^{(1)}}{\|\mathbf{y}^{(1)}\|_\infty}=\frac{1}{0.545455}\begin{bmatrix}-0.181818 \\-0.227273 \\0.090909 \\0.545455 \\\end{bmatrix}=\begin{bmatrix}-0.333333 \\-0.416667 \\0.166667 \\1 \\\end{bmatrix}.\)

Ejemplo (continuación)

  • Como \[ \begin{align*} & \min\{\|\mathbf{x}^{(1)}-\mathbf{x}^{(0)}\|_\infty,\|\mathbf{x}^{(1)}+\mathbf{x}^{(0)}\|_\infty\} \\ \qquad & = \min\left\{\left\|\left(\begin{bmatrix}-0.333333 \\-0.416667 \\0.166667 \\1 \\\end{bmatrix}-\begin{bmatrix}1 \\1 \\1 \\1 \\\end{bmatrix}\right)\right\|_\infty,\left\|\left(\begin{bmatrix}-0.333333 \\-0.416667 \\0.166667 \\1 \\\end{bmatrix}+\begin{bmatrix}1 \\1 \\1 \\1 \\\end{bmatrix}\right)\right\|_\infty\right\} \\ \qquad & = \min\left\{\left\|\begin{bmatrix}-1.333333 \\-1.416667 \\-0.833333 \\0 \\\end{bmatrix}\right\|_\infty,\left\|\begin{bmatrix}0.666667 \\0.583333 \\1.166667 \\2 \\\end{bmatrix}\right\|_\infty\right\} =\min\{1.416667,2\}=1.416667>\epsilon, \end{align*} \] continuamos:

Ejemplo (continuación)

  • Paso 2:
    • El valor \(m_1\) será \(m_1=4\) ya que \(|x_4^{(1)}|=\|\mathbf{x}^{(1)}\|_\infty=1\).
    • Hallamos \(\mathbf{y}^{(2)}\) resolviendo la ecuación \((\mathbf{A}-0\mathbf{I})\mathbf{y}^{(2)}=\mathbf{x}^{(1)}\): \[ \begin{bmatrix}5&6&6&5 \\6&6&8&5 \\6&6&2&6 \\5&4&7&4 \\\end{bmatrix}\mathbf{y}^{(2)}=\begin{bmatrix}-0.333333 \\-0.416667 \\0.166667 \\1 \\\end{bmatrix},\ \Rightarrow \mathbf{y}^{(2)}=\begin{bmatrix}-0.613636 \\-1.621212 \\0.265152 \\2.174242 \\\end{bmatrix} \]
    • El valor \(\mu_2\) vale: \(\mu_2=\frac{y_4^{(2)}}{x_4^{(1)}}=\frac{2.1742424}{1}=2.1742424.\) La aproximación del valor propio valdrá: \(\frac{1}{\mu_2}=\frac{1}{2.174242}+0=0.45993.\)
    • Hallamos \(\mathbf{x}^{(2)}=\frac{\mathbf{y}^{(2)}}{\|\mathbf{y}^{(2)}\|_\infty}=\frac{1}{2.174242}\begin{bmatrix}-0.613636 \\-1.621212 \\0.265152 \\2.174242 \\\end{bmatrix}=\begin{bmatrix}-0.28223 \\-0.745645 \\0.121951 \\1 \\\end{bmatrix}.\)

Ejemplo (continuación)

  • Como \[ \begin{align*} & \min\{\|\mathbf{x}^{(2)}-\mathbf{x}^{(1)}\|_\infty,\|\mathbf{x}^{(2)}+\mathbf{x}^{(1)}\|_\infty\} \\ \qquad & = \min\left\{\left\|\left(\begin{bmatrix}-0.28223 \\-0.745645 \\0.121951 \\1 \\\end{bmatrix}-\begin{bmatrix}-0.333333 \\-0.416667 \\0.166667 \\1 \\\end{bmatrix}\right)\right\|_\infty,\left\|\left(\begin{bmatrix}-0.28223 \\-0.745645 \\0.121951 \\1 \\\end{bmatrix}+\begin{bmatrix}-0.333333 \\-0.416667 \\0.166667 \\1 \\\end{bmatrix}\right)\right\|_\infty\right\} \\ \qquad & = \min\left\{\left\|\begin{bmatrix}0.051103 \\-0.328978 \\-0.044715 \\0 \\\end{bmatrix}\right\|_\infty,\left\|\begin{bmatrix}-0.615563 \\-1.162311 \\0.288618 \\2 \\\end{bmatrix}\right\|_\infty\right\} =\min\{0.328978,2\}=0.328978>\epsilon, \end{align*} \] continuamos:

Ejemplo (continuación)

  • Paso 3:
    • El valor \(m_2\) será \(m_2=4\) ya que \(|x_4^{(2)}|=\|\mathbf{x}^{(2)}\|_\infty=1\).
    • Hallamos \(\mathbf{y}^{(3)}\) resolviendo la ecuación \((\mathbf{A}-0\mathbf{I})\mathbf{y}^{(3)}=\mathbf{x}^{(2)}\): \[ \begin{bmatrix}5&6&6&5 \\6&6&8&5 \\6&6&2&6 \\5&4&7&4 \\\end{bmatrix}\mathbf{y}^{(3)}=\begin{bmatrix}-0.28223 \\-0.745645 \\0.121951 \\1 \\\end{bmatrix},\ \Rightarrow \mathbf{y}^{(3)}=\begin{bmatrix}-1.217295 \\-2.017263 \\0.37694 \\3.129237 \\\end{bmatrix} \]
    • El valor \(\mu_3\) vale: \(\mu_3=\frac{y_4^{(3)}}{x_4^{(2)}}=\frac{3.1292366}{1}=3.1292366.\) La aproximación del valor propio valdrá: \(\frac{1}{\mu_3}=\frac{1}{3.129237}+0=0.319567.\)
    • Hallamos \(\mathbf{x}^{(3)}=\frac{\mathbf{y}^{(3)}}{\|\mathbf{y}^{(3)}\|_\infty}=\frac{1}{3.129237}\begin{bmatrix}-1.217295 \\-2.017263 \\0.37694 \\3.129237 \\\end{bmatrix}=\begin{bmatrix}-0.389007 \\-0.64465 \\0.120458 \\1 \\\end{bmatrix}.\)

Ejemplo (continuación)

Y así sucesivamente hasta llegar a realizar \(27\) pasos o iteraciones. Los valores de las aproximaciones del valor propio valen: \[ \begin{align*} & -0.181818, 2.174242, 3.129237, 2.688389, 2.921774, 2.789825, 2.86181, 2.82171, 2.843796, 2.831554, 2.838316,\\ & 2.834574, 2.836643, 2.835498, 2.836131, 2.835781, 2.835975, 2.835868, 2.835927, 2.835894, 2.835912, 2.835902,\\ & 2.835908, 2.835905, 2.835906, 2.835905, 2.835906. \end{align*} \] Las aproximaciones del valor propio de la matriz \(\mathbf{A}\) más cercano a \(0\) serán: \[ \begin{align*} & \frac{1}{-0.181818}+0=-5.5, \frac{1}{2.174242}+0=0.45993, \frac{1}{3.129237}+0=0.319567, \frac{1}{2.688389}+0=0.37197,\\ & 0.342258, 0.358445, 0.349429, 0.354395, 0.351643, 0.353163, 0.352322, 0.352787, 0.352529, 0.352672, 0.352593,\\ & 0.352637, 0.352612, 0.352626, 0.352618, 0.352622, 0.35262, 0.352621, 0.352621, 0.352621, 0.352621, 0.352621,\\ & 0.352621. \end{align*} \]

Ejemplo (continuación)

Las aproximaciones del vector propio son las siguientes (en columnas): \[ \begin{align*} & \begin{bmatrix}1&-0.333333&-0.28223&-0.389007&-0.333559&-0.364995&-0.347841&-0.357397&-0.352134 \\1&-0.416667&-0.745645&-0.64465&-0.698718&-0.668206&-0.684849&-0.675578&-0.680684 \\1&0.166667&0.121951&0.120458&0.119234&0.120008&0.119578&0.119818&0.119686 \\1&1&1&1&1&1&1&1&1 \\\end{bmatrix},\\ & \begin{bmatrix}-0.355051&-0.35344&-0.354331&-0.353838&-0.354111&-0.35396&-0.354044&-0.353998 \\-0.677854&-0.679418&-0.678552&-0.679031&-0.678766&-0.678912&-0.678832&-0.678876 \\0.119759&0.119719&0.119741&0.119729&0.119736&0.119732&0.119734&0.119733 \\1&1&1&1&1&1&1&1 \\\end{bmatrix},\\ & \begin{bmatrix}-0.354023&-0.354009&-0.354017&-0.354012&-0.354015&-0.354014&-0.354014&-0.354014 \\-0.678851&-0.678865&-0.678858&-0.678862&-0.678859&-0.678861&-0.67886&-0.67886 \\0.119733&0.119733&0.119733&0.119733&0.119733&0.119733&0.119733&0.119733 \\1&1&1&1&1&1&1&1 \\\end{bmatrix},\\ & \begin{bmatrix}-0.354014&-0.354014 \\-0.67886&-0.67886 \\0.119733&0.119733 \\1&1 \\\end{bmatrix},\\ \end{align*} \]

Ejemplo (continuación)

El método puede encontrarse implementado en:

Técnicas de deflación

Introducción

Los métodos de la potencia y el de la potencia inversa nos permiten hallar valores propios de una matriz \(\mathbf{A}\) que cumplan una serie de condiciones: el primero nos calcula el valor propio de módulo máximo y el segundo nos calcula el valor propio más cercano a un número concreto \(a\).

En esta sección vamos a ver una técnica denominada deflación de Wielandt que nos permite hallar los valores propios restantes de una matriz \(\mathbf{A}\) una vez hallado uno de ellos.

Concretamente, dada una matriz \(\mathbf{A}\) de la que hemos hallado un valor propio \(\lambda_1\) junto con un correspondiente vector propio \(\mathbf{v}^{(1)}\), hallaremos otra matriz \(\mathbf{B}\) que tiene los mismos valores propios que la matriz \(\mathbf{A}\) excepto el valor propio \(\lambda_1\). Además, los vectores propios de la matriz original \(\mathbf{A}\) se podrán hallar a partir de los vectores propios de la nueva matriz \(\mathbf{B}\):

Deflación de Wielandt

Teorema. Deflación de Wielandt.

Sea \(\mathbf{A}\) una matriz con valores propios \(\lambda_1,\lambda_2\ldots,\lambda_n\) junto con vectores propios asociados \(\mathbf{v}^{(1)},\mathbf{v}^{(2)},\ldots,\mathbf{v}^{(n)}\). Supongamos que el valor propio \(\lambda_1\) tiene multiplicidad \(1\). Sea \(\mathbf{x}\) un vector que verifica \(\mathbf{x}^\top \mathbf{v}^{(1)}=1\). Entonces la matriz: \[ \mathbf{B}=\mathbf{A}-\lambda_1\mathbf{v}^{(1)}\mathbf{x}^\top, \] tiene valores propios \(0,\lambda_2,\ldots,\lambda_n\) con vectores asociados \(\mathbf{v}^{(1)},\mathbf{w}^{(2)},\ldots,\mathbf{w}^{(n)}\), donde la relación entre los vectores propios \(\mathbf{v}^{(i)}\) y \(\mathbf{w}^{(i)}\) es la siguiente: \[ \mathbf{v}^{(i)}=(\lambda_i-\lambda_1)\mathbf{w}^{(i)}+\lambda_1 (\mathbf{x}^\top \mathbf{w}^{(i)})\mathbf{v}^{(1)}, \] para \(i=2,3,\ldots,n\).

Deflación de Wielandt

Una posible elección del vector \(\mathbf{x}\) del Teorema anterior podría ser la siguiente. Sea \(v_i^{(1)}\neq 0\) una componente del vector \(\mathbf{v}^{(1)}\) diferente de \(0\). Entonces, consideramos: \[ \mathbf{x}=\frac{1}{\lambda_1 v_i^{(1)}}\begin{bmatrix}a_{i1}\\ a_{i2}\\\vdots\\ a_{in}\end{bmatrix}, \] donde el vector columna \(\begin{bmatrix}a_{i1}\\ a_{i2}\\\vdots\\ a_{in}\end{bmatrix}\) es la fila \(i\)-ésima de la matriz \(\mathbf{A}\).

Véamoslo:

Deflación de Wielandt

\[ \mathbf{x}^\top \mathbf{v}^{(1)}=\frac{1}{\lambda_1 v_i^{(1)}}(a_{i1}, a_{i2},\ldots, a_{in})\begin{bmatrix}v_{1}^{(1)}\\ v_{2}^{(1)}\\\vdots\\ v_{n}^{(1)}\end{bmatrix}=\frac{1}{\lambda_1 v_i^{(1)}}\sum_{j=1}^n a_{ij}v_j^{(1)}. \] Como el vector \(\mathbf{v}^{(1)}\) es un vector propio de la matriz \(\mathbf{A}\) de valor propio \(\lambda_1\), tenemos que \(\mathbf{A}\mathbf{v}^{(1)}=\lambda_1\mathbf{v}^{(1)}\). La componente \(i\)-ésima de la igualdad anterior será: \(\displaystyle\sum_{j=1}^n a_{ij}v_j^{(1)}=\lambda_1 v_i^{(1)}\). Sustituyendo a la expresión anterior, tenemos que: \[ \mathbf{x}^\top \mathbf{v}^{(1)}=\frac{1}{\lambda_1 v_i^{(1)}}\sum_{j=1}^n a_{ij}v_j^{(1)}=\frac{1}{\lambda_1 v_i^{(1)}}\lambda_1 v_i^{(1)}=1, \] tal como queríamos ver.

Deflación de Wielandt

Para poder aplicar el Teorema anterior, dada una matriz \(\mathbf{A}\) imaginemos que hemos calculado un valor propio \(\lambda_1\) junto con un vector propio asociado \(\mathbf{v}^{(1)}\) usando por ejemplo el método de la potencia o de la potencia inversa.

Entonces, para hallar los demás, calculamos la matriz \(\mathbf{B}\) dada por el Teorema anterior y aplicamos el método de la potencia a la matriz \(\mathbf{B}\). Como en dicha matriz, el valor propio \(\lambda_1\) ha sido “sustituido” por el valor propio \(0\), dicho valor propio nunca será hallado ya que tiene módulo mínimo y recordemos que el método de la potencia calcula el valor propio de módulo máximo.

Además, como iremos calculando los vectores propios \(\mathbf{w}^{(i)}\), \(i=2,\ldots,n\) de la matriz \(\mathbf{B}\) la relación entre los vectores propios que da el teorema permite calcular los vectores propios \(\mathbf{v}^{(i)}\) de la matriz \(\mathbf{A}\).

Deflación de Wielandt

Por último, veamos cómo reducir la dimensión de la matriz \(\mathbf{B}\) en una unidad, simplificando de esta manera el coste computacional para el cálculo de los valores propios restantes de la matriz \(\mathbf{A}\).

Sea \(\lambda\neq 0\) un valor propio distinto de \(0\) de la matriz \(\mathbf{B}\) junto con un vector propio asociado \(\mathbf{w}\). Supongamos que hemos elegido el vector \(\mathbf{x}\) como hemos indicado antes: \(\mathbf{x}=\frac{1}{\lambda_1 v_i^{(1)}}\begin{bmatrix}a_{i1}\\ a_{i2}\\\vdots\\ a_{in}\end{bmatrix}.\)

Para fijar ideas y no perdernos con las notaciones, supongamos sin pérdida de generalidad que \(v_1^{(1)}\neq 0\), es decir, el vector \(\mathbf{x}\) sería: \(\mathbf{x}=\frac{1}{\lambda_1 v_1^{(1)}}\begin{bmatrix}a_{11}\\ a_{12}\\\vdots\\ a_{1n}\end{bmatrix}.\)

Deflación de Wielandt

Entonces, en este caso \(w_1=0\), es decir, la primera componente del vector propio de valor propio \(\lambda\) de la matriz \(\mathbf{B}\) es nulo. Veámoslo: \[ \mathbf{B}\mathbf{w}=\lambda\mathbf{w},\ \Rightarrow (\mathbf{A}-\lambda_1\mathbf{v}^{(1)}\mathbf{x}^\top)\mathbf{w}=\lambda\mathbf{w}. \]

Deflación de Wielandt

La matriz \(\mathbf{v}^{(1)}\mathbf{x}^\top\) sería: \[ \begin{align*} \mathbf{v}^{(1)}\mathbf{x}^\top & =\begin{bmatrix} v_1^{(1)}\\ v_2^{(1)}\\\vdots\\ v_n^{(1)}\end{bmatrix}(x_1,x_2,\ldots,x_n)=\begin{bmatrix}v_1^{(1)}x_1 &v_1^{(1)}x_2 & \ldots &v_1^{(1)}x_n\\ v_2^{(1)}x_1 &v_2^{(1)}x_2 & \ldots &v_2^{(1)}x_n\\ \vdots & \vdots & \vdots &\vdots\\ v_n^{(1)}x_1 &v_n^{(1)}x_2 & \ldots &v_n^{(1)}x_n \end{bmatrix}\\ & = \begin{bmatrix}v_1^{(1)}\frac{1}{\lambda_1 v_1^{(1)}}a_{11} &v_1^{(1)}\frac{1}{\lambda_1 v_1^{(1)}}a_{12} & \ldots &v_1^{(1)}\frac{1}{\lambda_1 v_1^{(1)}}a_{1n}\\ v_2^{(1)}x_1 &v_2^{(1)}x_2 & \ldots &v_2^{(1)}x_n\\ \vdots & \vdots & \vdots &\vdots\\ v_n^{(1)}x_1 &v_n^{(1)}x_2 & \ldots &v_n^{(1)}x_n \end{bmatrix} \end{align*} \]

Deflación de Wielandt

\[ \mathbf{v}^{(1)}\mathbf{x}^\top = \begin{bmatrix}\frac{a_{11}}{\lambda_1} &\frac{a_{12}}{\lambda_1} & \ldots &\frac{a_{1n}}{\lambda_1}\\ v_2^{(1)}x_1 &v_2^{(1)}x_2 & \ldots &v_2^{(1)}x_n\\ \vdots & \vdots & \vdots &\vdots\\ v_n^{(1)}x_1 &v_n^{(1)}x_2 & \ldots &v_n^{(1)}x_n \end{bmatrix} \] Entonces como \((\mathbf{A}-\lambda_1\mathbf{v}^{(1)}\mathbf{x}^\top)\mathbf{w}=\lambda \mathbf{w}\), la primera componente de la igualdad anterior será: \[ \sum_{j=1}^n \left(a_{1j}-\lambda_1 \frac{a_{1j}}{\lambda_1}\right)w_j =\lambda w_1,\ \sum_{j=1}^n \left(a_{1j}-a_{1j}\right)w_j =\lambda w_1,\ \Rightarrow 0=w_1, \] tal como queríamos ver.

Deflación de Wielandt

Entonces en la igualdad \(\mathbf{B}\mathbf{w}=\lambda\mathbf{w}\), la primera columna de \(\mathbf{B}\) no interviene para nada ya que el vector \(\mathbf{w}\) es de la forma: \(\mathbf{w}=\begin{bmatrix}0\\ w_2\\\vdots\\ w_n\end{bmatrix}\) y si escribimos la igualdad \(\mathbf{B}\mathbf{w}=\lambda\mathbf{w}\) en componentes, tendremos: \[ \begin{bmatrix} b_{11} & b_{12}& \ldots & b_{1n}\\ b_{21} & b_{22}& \ldots & b_{2n}\\ \vdots & \vdots & \vdots & \vdots \\ b_{n1} & b_{n2} & \ldots & b_{nn} \end{bmatrix} \begin{bmatrix} 0\\ w_2\\ \vdots \\ w_n \end{bmatrix} =\lambda\begin{bmatrix} 0\\ w_2\\ \vdots \\ w_n \end{bmatrix}. \]

Deflación de Wielandt

Fijémonos que podríamos cambiar la primera columna \(\begin{bmatrix}b_{11}\\b_{21}\\\vdots\\ b_{n1}\end{bmatrix}\) de la matrix \(\mathbf{B}\) como deseamos y la igualdad anterior seguiría siendo cierta.

La idea entonces es considerar la matriz \(\mathbf{B}'\) eliminando la primera fila y columna de la matriz anterior \(\mathbf{B}\) de cara a calcular los valores propios y vectores propios: \[ \mathbf{B}'=\begin{bmatrix} b_{12}& \ldots & b_{1n}\\ b_{22}& \ldots & b_{2n}\\ \vdots & \vdots & \vdots \\ b_{n2} & \ldots & b_{nn} \end{bmatrix}. \]

Deflación de Wielandt

De la igualdad \(\mathbf{B}\mathbf{w}=\lambda\mathbf{w}\), podemos deducir la igualdad \(\mathbf{B}'\mathbf{w}'=\lambda\mathbf{w}'\), con \(\mathbf{w}'=\begin{bmatrix} w_2\\ \vdots \\ w_n \end{bmatrix}\), es decir, \(\mathbf{w}'\) es un vector propio de la matriz \(\mathbf{B}'\) del mismo valor propio \(\lambda\). Entonces \(\mathbf{B}'\) tiene los mismos valores propios que la matriz \(\mathbf{B}\). Por tanto, podemos aplicar el método de la potencia a la matriz \(\mathbf{B}'\) y una vez hallado \(\lambda\) y \(\mathbf{w}'\) hallamos \(\mathbf{w}\) como \(\mathbf{w}=\begin{bmatrix}0\\\mathbf{w}'\end{bmatrix}\).

Si en lugar de ser la primera componente del vector propio \(\mathbf{v}^{(1)}\) la que es diferente de cero, \(v_1^{(1)}\neq 0\), es la \(i\)-ésima, \(v_i^{(1)}\neq 0\), hacemos el mismo proceso anterior pero en lugar de eliminar la primera fila y primera columna para hallar la matriz \(\mathbf{B}'\), eliminamos la fila y la columna \(i\)-ésimas.

Deflación de Wielandt

Veamos cómo hallar todos los valores propios y vectores propios de una matriz \(\mathbf{A}\).

Primeramente, de cara a simplificar los cálculos, como la matriz \(\mathbf{B}\) vale \(\mathbf{B}=\mathbf{A}-\lambda_1\mathbf{v}^{(1)}\mathbf{x}^\top\) y \(\mathbf{x}=\frac{a_{i\cdot}}{\lambda_1 v_i^{(1)}}\), donde \(a_{i\cdot}\) indica la fila \(i\)-ésima de la matriz \(\mathbf{A}\), podemos escribir la matriz \(\mathbf{B}\) como \(\mathbf{B}=\mathbf{A}-\frac{1}{v_i^{(1)}}\mathbf{v}^{(1)}a_{i\cdot}^\top\)

  • Paso \(1\). Hallamos el valor propio de módulo máximo \(\lambda_1\) junto con un correspondiente vector propio \(\mathbf{v}^{(1)}\) usando el método de la potencia.

Deflación de Wielandt

  • Paso \(2\). Consideramos una componente de \(\mathbf{v}^{(1)}\) diferente de cero, \(v_i^{(1)}\neq 0\). Para minimizar los errores de redondeo consideramos \(i\) tal que \(|v_i^{(1)}|=\max_{j=1,\ldots,n}|v_j^{(1)}|\).
    • Definimos \(\mathbf{x}=\frac{1}{v_i^{(1)}}\begin{bmatrix}a_{i1}\\ a_{i2}\\\vdots\\ a_{in}\end{bmatrix}\).
    • Consideramos la matriz \(\mathbf{B}=\mathbf{A}-\frac{1}{v_i^{(1)}}\mathbf{v}^{(1)}\mathbf{a_{i\cdot}}^\top\).
  • Paso \(3\). Eliminamos las filas y columnas \(i\)-ésimas de la matriz \(\mathbf{B}\) obteniendo la matriz \(\mathbf{B}'\).

Deflación de Wielandt

  • Paso \(4\). Aplicamos el método de la potencia a la matriz \(\mathbf{B}'\) hallando el siguiente valor propio de módulo máximo \(\lambda_2\) de la matriz \(\mathbf{A}\). Sea \(\mathbf{w}'\) el vector propio asociado de la matriz \(\mathbf{B}'\).
  • Paso \(5\). Calculamos el vector propio \(\mathbf{w}\) de la matriz \(\mathbf{B}\): \(\mathbf{w}=\begin{bmatrix} w_1'\\\vdots \\ 0(\mathrm{componente\ i})\\ \vdots\\ w_n'\end{bmatrix}\).
  • Paso \(6\). Calculamos el vector propio \(\mathbf{v}^{(2)}\) de valor propio \(\lambda_2\) de la matriz \(\mathbf{A}\): \(\mathbf{v}^{(2)}=(\lambda_2-\lambda_1)\mathbf{w}+\frac{1}{v_i^{(1)}}(\mathbf{a_{i\cdot}}^\top \mathbf{w})\mathbf{v}^{(1)}.\)

Demostración del Teorema

Primero veamos los lemas siguientes:

Lema 1.

Sean \(\mathbf{a},\mathbf{b}\in\mathbb{R}^n\), entonces: \((\mathbf{a}^\top \mathbf{b})\mathbf{a}=\mathbf{a}(\mathbf{b}^\top \mathbf{a})\).

La demostración del lema anterior se realiza usando que el producto escalar es conmutativo.

Lema 2.

Sean \(\mathbf{a},\mathbf{b},\mathbf{c}\in\mathbb{R}^n\), entonces: \((\mathbf{a}\mathbf{b}^\top)\mathbf{c}=\mathbf{a}(\mathbf{b}^\top \mathbf{c})=(\mathbf{b}^\top \mathbf{c})\mathbf{a}\).

Demostración del Lema 2

Si escribimos \(\mathbf{a}=\begin{bmatrix}a_1\\\vdots\\a_n\end{bmatrix},\mathbf{b}=\begin{bmatrix}b_1\\\vdots\\b_n\end{bmatrix},\mathbf{c}=\begin{bmatrix}c_1\\\vdots\\c_n\end{bmatrix},\) tenemos que: \[ \begin{align*} (\mathbf{a}\mathbf{b}^\top)\mathbf{c} & =\left(\begin{bmatrix}a_1\\\vdots\\a_n\end{bmatrix}(b_1,\ldots,b_n)\right)\begin{bmatrix}c_1\\\vdots\\c_n\end{bmatrix}=\begin{bmatrix}a_1 b_1 & \ldots & a_1 b_n\\ \vdots & \vdots & \vdots \\ a_n b_1 & \ldots & a_n b_n \end{bmatrix}\begin{bmatrix}c_1\\\vdots\\c_n\end{bmatrix}=\begin{bmatrix}a_1\sum_{i=1}^n b_i c_i\\ \vdots \\ a_n \sum_{i=1}^n b_i c_i\end{bmatrix} \\ & = \left(\sum_{i=1}^n b_i c_i\right) \begin{bmatrix}a_1\\\vdots\\a_n\end{bmatrix}=(\mathbf{b}^\top \mathbf{c})\mathbf{a}, \end{align*} \] tal como queríamos demostrar.

Demostración del Teorema

Veamos que la matriz \(\mathbf{B}\) tiene el vector \(\mathbf{v}^{(1)}\) como valor propio de valor propio \(0\): \[ \mathbf{B}\mathbf{v}^{(1)}=\mathbf{A}\mathbf{v}^{(1)}-\lambda_1(\mathbf{v}^{(1)}\mathbf{x}^\top)\mathbf{v}^{(1)}=\lambda_1\mathbf{v}^{(1)}-\lambda_1\mathbf{v}^{(1)}(\mathbf{x}^\top\mathbf{v}^{(1)})=\lambda_1\mathbf{v}^{(1)}-\lambda_1\mathbf{v}^{(1)}=0. \] Escribimos los vectores propios de la matriz \(\mathbf{B}\), \(\mathbf{w}^{(i)}\) de la forma: \[ \mathbf{w}^{(i)}=\alpha_i \mathbf{v}^{(i)}+\beta_i\mathbf{v}^{(1)}. \] Veamos que es posible hallar unos \(\alpha_i\) y \(\beta_i\) de tal forma que el vector \(\mathbf{w}^{(i)}\) sea vector propio de la matriz \(\mathbf{B}\) de valor propio \(\lambda_i\), para \(i=2,\ldots,n\): \[ \begin{align*} \mathbf{B}\mathbf{w}^{(i)} & = (\mathbf{A}-\lambda_1\mathbf{v}^{(1)}\mathbf{x}^\top)(\alpha_i\mathbf{v}^{(i)}+\beta_i\mathbf{v}^{(1)})\\ & =\alpha_i\lambda_i\mathbf{v}^{(i)}+\beta_i\lambda_1\mathbf{v}^{(1)}-\lambda_1 \alpha_i(\mathbf{x}^\top \mathbf{v}^{(i)})\mathbf{v}^{(1)}-\lambda_1\beta_i(\mathbf{x}^\top \mathbf{v}^{(1)})\mathbf{v}^{(1)}, \end{align*} \] donde en la última igualdad hemos aplicado los lemas 1 y 2.

Entonces: \[ \begin{align*} \mathbf{B}\mathbf{w}^{(i)} & =\alpha_i\lambda_i\mathbf{v}^{(i)}+\beta_i\lambda_1\mathbf{v}^{(1)}-\lambda_1 \alpha_i(\mathbf{x}^\top \mathbf{v}^{(i)})\mathbf{v}^{(1)}-\lambda_1\beta_i\mathbf{v}^{(1)}=\alpha_i\lambda_i\mathbf{v}^{(i)}-\lambda_1 \alpha_i(\mathbf{x}^\top \mathbf{v}^{(i)})\mathbf{v}^{(1)}\\ & =\alpha_i (\lambda_i\mathbf{v}^{(i)}-\lambda_1(\mathbf{x}^\top \mathbf{v}^{(i)})\mathbf{v}^{(1)}). \end{align*} \]

Demostración del Teorema (continuación)

Si queremos que el vector \(\mathbf{w}^{(i)}\) sea vector propio de la matriz \(\mathbf{B}\) de valor propio \(\lambda_i\), se tiene que cumplir que \[ \mathbf{B}\mathbf{w}^{(i)}=\lambda_i\mathbf{w}^{(i)} =\lambda_i (\alpha_i\mathbf{v}^{(i)}+\beta_i\mathbf{v}^{(1)}). \] Entonces: \[ \frac{\lambda_i\alpha_i}{\alpha_i\lambda_i}=1=\frac{\lambda_i \beta_i}{-\alpha_i\lambda_1(\mathbf{x}^\top \mathbf{v}^{(i)})}. \] Elegimos \(\alpha_i\) y \(\beta_i\) tal que \(\lambda_i\beta_i =-\alpha_i\lambda_1(\mathbf{x}^\top \mathbf{v}^{(i)})\).

El vector propio \(\mathbf{w}^{(i)}\) considerado será (consideramos \(\alpha_i=1\)): \(\mathbf{w}^{(i)}=\mathbf{v}^{(i)}-\frac{\lambda_1}{\lambda_i}(\mathbf{x}^\top \mathbf{v}^{(i)})\mathbf{v}^{(1)}\).

Fijémonos que hemos acabado de demostrar que dicho vector es un vector propio de la matriz \(\mathbf{B}\) de valor propio \(\lambda_i\). Por tanto, la matriz \(\mathbf{B}\) tiene como valores propios \(0,\lambda_2,\ldots,\lambda_n\).

Lo único que falta demostrar es la relación entre los vectores propios de la matriz \(\mathbf{A}\), \(\mathbf{v}^{(i)}\) y los vectores propios de la matriz \(\mathbf{B}\), \(\mathbf{w}^{(i)}\): \[ \mathbf{v}^{(i)}=(\lambda_i-\lambda_1)\mathbf{w}^{(i)}+\lambda_1 (\mathbf{x}^\top \mathbf{w}^{(i)})\mathbf{v}^{(1)}. \]

Demostración del Teorema (continuación)

Hemos demostrado lo siguiente despejando \(\mathbf{v}^{(i)}\): \[ \mathbf{v}^{(i)}=\mathbf{w}^{(i)}+\frac{\lambda_1}{\lambda_i}(\mathbf{x}^\top \mathbf{v}^{(i)})\mathbf{v}^{(1)}. \] Hemos de ver que las dos relaciones anteriores se refieren al mismo vector propio \(\mathbf{v}^{(i)}\) de la matriz \(\mathbf{A}\). Esto es equivalente a demostrar: \[ \frac{1}{\lambda_i-\lambda_1}=\frac{\frac{\lambda_1}{\lambda_i}(\mathbf{x}^\top \mathbf{v}^{(i)})}{\lambda_1 (\mathbf{x}^\top \mathbf{w}^{(i)})},\ \Rightarrow\frac{\lambda_i}{\lambda_i-\lambda_1}=\frac{\mathbf{x}^\top \mathbf{v}^{(i)}}{\mathbf{x}^\top \mathbf{w}^{(i)}}. \] Es decir, hemos de ver que \(\lambda_i\mathbf{x}^\top \mathbf{w}^{(i)}=(\lambda_i-\lambda_1)\mathbf{x}^\top \mathbf{v}^{(i)}\): \[ \begin{align*} \lambda_i\mathbf{x}^\top \mathbf{w}^{(i)} & =\lambda_i \mathbf{x}^\top (\mathbf{v}^{(i)}-\frac{\lambda_1}{\lambda_i}(\mathbf{x}^\top \mathbf{v}^{(i)})\mathbf{v}^{(1)})=\lambda_i\mathbf{x}^\top \mathbf{v}^{(i)}-\lambda_1 (\mathbf{x}^\top \mathbf{v}^{(1)})(\mathbf{x}^\top \mathbf{v}^{(i)})=\lambda_i\mathbf{x}^\top \mathbf{v}^{(i)}-\lambda_1 (\mathbf{x}^\top \mathbf{v}^{(i)})\\ & =(\lambda_i-\lambda_1)\mathbf{x}^\top \mathbf{v}^{(i)}, \end{align*} \] tal como queríamos demostrar.

Deflación de Wielandt. Pseudocódigo

  • INPUT matriz del sistema \(\mathbf{A}=(a_{ij})_{i=1,\ldots,n,j=1,\ldots,n}\), aproximación del valor propio \(\lambda\) con vector propio \(\mathbf{v}\), error absoluto o tolerancia TOL, número máximo de iteraciones Nmax.
  • Set \(i\) el menor entero entre \(1\) y \(n\) tal que \(|v_i|=\max{|v_j|}\).
  • For \(k=1,\ldots,n\) (definimos la matriz \(\mathbf{B}=\mathbf{A}-\frac{1}{v_i} \mathbf{v}\mathbf{x}^\top\))
    • For \(j=1,\ldots,n\)
      • Set \(b_{kj}=a_{kj}-\frac{v_k a_{ij}}{v_i}\).
  • Set \(\mathbf{B}'=\mathbf{B}[-i,-i]\) (definimos la matriz \(\mathbf{B}'\) como la matriz \(\mathbf{B}\) de la que hemos eliminados la fila y columna \(i\)-ésima)

Deflación de Wielandt. Pseudocódigo

  • Aplicamos método de la potencia a la matriz \(\mathbf{B}'\) con aproximación inicial \(\mathbf{x}\). Obtenemos valor propio \(\mu\) y vector propio \(\mathbf{w}'\in\mathbb{R}^{n-1}\).
  • If \(i\neq 1\) y \(i\neq n\) (definimos el vector \(\mathbf{w}\))
    • For \(j=1,\ldots,i-1\)
      • Set \(w_j=w_j'\)
    • Set \(w_i=0\).
    • For \(j=i+1,\ldots,n\)
      • Set \(w_j=w_{j-1}'\)

Deflación de Wielandt. Pseudocódigo

  • Else
    • If \(i=1\)
      • Set \(w_1=0\)
      • For \(j=2,\ldots,n\)
        • Set \(w_j=w_{j-1}'\)
    • Else (\(i=n\))
      • For \(j=1,\ldots,n-1\)
        • Set \(w_j=w_j'\)
      • Set \(w_n=0\)

Deflación de Wielandt. Pseudocódigo

  • Set \(\mathbf{v}^{(i)}=(\mu-\lambda)\mathbf{w}+\left(\sum_{j=1}^n \frac{a_{ij}w_j}{v_i}\right)\mathbf{v}\) (calculamos el vector propio \(\mathbf{v}^{(i)}\) de la matriz \(\mathbf{A}\))
  • Print \(\mu\), \(\mathbf{v}^{(i)}\) (damos el nuevo valor propio \(\mu\) con el vector propio correspondiente \(\mathbf{v}^{(i)}\))

Ejemplo

Consideremos la matriz \(\mathbf{A}=\begin{bmatrix}5&6&6&5 \\6&6&8&5 \\6&6&2&6 \\5&4&7&4 \\\end{bmatrix}\) de la que ya hemos calculado el valor propio de módulo máximo y el vector propio correspondiente en un ejemplo anterior usando el método de la potencia: \[ \lambda_1=21.7780135, \quad\mathbf{v}^{(1)}=\begin{bmatrix}0.88475 \\1 \\0.812578 \\0.793778 \\\end{bmatrix}. \] Vamos a usar la deflación de Wielandt para hallar el siguiente valor propio junto con el vector propio correspondiente:

Ejemplo (continuación)

  • Paso \(1\). Ya tenemos calculado \(\lambda_1\) y \(\mathbf{v}^{(1)}\).
  • Paso \(2\). Calculamos \(i\) tal que \(|v_i^{(1)}|=\max\{0.8847505, 1, 0.8125776, 0.793778\}=1\). El valor de \(i\) será \(i=2\).
    • Calculamos el vector \(\mathbf{x}\): \[ \mathbf{x}=\frac{1}{v_{2}^{(1)}}\begin{bmatrix}a_{21}\\ a_{22}\\ a_{23}\\ a_{24}\end{bmatrix}=\frac{1}{1}\begin{bmatrix}5 \\6 \\6 \\5 \\\end{bmatrix}=\begin{bmatrix}5 \\6 \\6 \\5 \\\end{bmatrix}. \]

Ejemplo (continuación)

    • Calculamos la matriz \(\mathbf{B}\): \[ \begin{align*} \mathbf{B} & =\mathbf{A}-\frac{1}{v_{2}^{(1)}}\mathbf{v}^{(1)}\mathbf{a_{2\cdot}}^\top = \begin{bmatrix}5&6&6&5 \\6&6&8&5 \\6&6&2&6 \\5&4&7&4 \\\end{bmatrix}-\frac{1}{1}\begin{bmatrix}0.88475 \\1 \\0.812578 \\0.793778 \\\end{bmatrix}(6, 6, 8, 5)\\ & =\begin{bmatrix}5&6&6&5 \\6&6&8&5 \\6&6&2&6 \\5&4&7&4 \\\end{bmatrix}-\begin{bmatrix}5.308503&5.308503&7.078004&4.423752 \\6&6&8&5 \\4.875466&4.875466&6.500621&4.062888 \\4.762668&4.762668&6.350224&3.96889 \\\end{bmatrix}\\ & = \begin{bmatrix}-0.308503&0.691497&-1.078004&0.576248 \\0&0&0&0 \\1.124534&1.124534&-4.500621&1.937112 \\0.237332&-0.762668&0.649776&0.03111 \\\end{bmatrix}. \end{align*} \]

Ejemplo (continuación)

  • Paso \(3\). Eliminamos la \(2\)a. fila y la \(2\)a. columna de la matriz \(\mathbf{B}\): \[ \mathbf{B}'=\begin{bmatrix}-0.308503&-1.078004&0.576248 \\1.124534&-4.500621&1.937112 \\0.237332&0.649776&0.03111 \\\end{bmatrix}. \]
  • Paso \(4\). Aplicamos el método de la potencia a la matriz \(\mathbf{B}'\) hallando el valor propio \(\lambda_2\) y el vector propio asociado \(\mathbf{w}'\): \[ \lambda_2=-4.4930206,\quad \mathbf{w}'=\begin{bmatrix}0.279414 \\1 \\-0.158282 \\\end{bmatrix}. \]
  • Paso \(5\). Calculamos el vector propio \(\mathbf{w}\) de la matriz \(\mathbf{B}\): \[ \mathbf{w}=\begin{bmatrix}0.279414 \\0 \\1 \\-0.158282 \\\end{bmatrix}. \]

Ejemplo (continuación)

  • Paso \(6\). Calculamos el vector propio \(\mathbf{v}^{(2)}\) de valor propio \(\lambda_2=-4.4930206\) de la matriz \(\mathbf{A}\): \[ \begin{align*} \mathbf{v}^{(2)} & =(\lambda_2-\lambda_1)\mathbf{w}+\frac{1}{v_i^{(1)}}(\mathbf{a_{2\cdot}}^\top \mathbf{w})\mathbf{v}^{(1)}\\ & = (-4.493021-21.778014)\begin{bmatrix}0.279414 \\0 \\1 \\-0.158282 \\\end{bmatrix}+\frac{(8.885073)}{1}\begin{bmatrix}0.88475 \\1 \\0.812578 \\0.793778 \\\end{bmatrix}=\begin{bmatrix}0.520573 \\8.885073 \\-19.051223 \\11.211017 \\\end{bmatrix}. \end{align*} \] Podemos normalizar \(\mathbf{v}^{(2)}\) para que verifique que \(\|\mathbf{v}^{(2)}\|_\infty =1\): \[ \mathbf{v}^{(2)}=\frac{1}{19.051223}\begin{bmatrix}0.520573 \\8.885073 \\-19.051223 \\11.211017 \\\end{bmatrix}=\begin{bmatrix}0.027325 \\0.466378 \\-1 \\0.588467 \\\end{bmatrix}. \]

Ejemplo (continuación)

La deflación de Wiedlandt puede encontrarse implementada en: