Recordemos la definición de valor y vector propio de una matriz cuadrada \(\mathbf{A}\):
Es decir, el “efecto” que tiene la matriz \(\mathbf{A}\) sobre el vector \(\mathbf{v}\) es alargándolo o reduciéndolo un factor \(\lambda\).
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.
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 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\).
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)}. \]
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*} \]
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\).
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.
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)}\).
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\).
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*} \]
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\).
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*} \]
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*} \]
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\).
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\).
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.
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. \]
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
\(\mathbf{x}=\frac{\mathbf{x}}{x_m}\).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\).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.)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.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\).
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: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:
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.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\).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\}\).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.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. \]
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: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\).
El algoritmo del método de la potencia para matrices simétricas es el siguiente:
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:
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}.\]
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*} \]
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.
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*} \]
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.
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}\).
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}\).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.)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.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}. \]
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*} \]
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*} \]
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.\)
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:
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.
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.
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\).
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)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\).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.)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.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.\)
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*} \]
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*} \]
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}\):
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\).
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:
\[ \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.
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}\).
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}.\)
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}. \]
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*} \]
\[ \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.
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}. \]
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}. \]
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.
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\)
Primero veamos los lemas siguientes:
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.
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}\).
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.
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*} \]
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)}. \]
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.
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)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}'\)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\)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)}\))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: