Se puede
definir un vector residual 𝑟 como:
𝑟 = 𝑏 − 𝐴 𝑥̂
Donde 𝑥̂ es una aproximación a la solución del sistema (la que se modifica en cada
iteración). De esta manera, el objetivo de toda técnica iterativa es llevar la norma de dicho
vector a 0 (i.e ||𝑟|| → 0).
Note que existe un vector 𝑟 diferente para cada actualización del vector 𝑥. Esto quiere decir
que al actualizar una sola posición del vector 𝑥 se cambia el vector 𝑟. Teniendo esto en
cuenta se puede definir lo siguiente:
(𝑘)
𝑥(𝑖) ≔ 𝑣𝑒𝑐𝑡𝑜𝑟 𝑥 𝑑𝑒 𝑙𝑎 𝑖𝑡𝑒𝑟𝑎𝑐𝑖ó𝑛 𝑘 𝑎𝑐𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑑𝑜 ℎ𝑎𝑠𝑡𝑎 𝑙𝑎 𝑝𝑜𝑠𝑖𝑐𝑖ó𝑛 𝑖 − 1.
(𝑘) (𝑘) (𝑘) (𝑘) (𝑘−1) (𝑘−1) 𝑇
𝑥(𝑖) = [𝑥1 , 𝑥2 , … , 𝑥𝑖−1 , 𝑥𝑖 , … , 𝑥𝑛 ]
(𝑘)
𝑟𝑖 ≔ 𝑣𝑒𝑐𝑡𝑜𝑟 𝑟𝑒𝑠𝑖𝑑𝑢𝑎𝑙 𝑑𝑒 𝑙𝑎 𝑖𝑡𝑒𝑟𝑎𝑐𝑖ó𝑛 𝑘 𝑐𝑜𝑛 𝑒𝑙 𝑥 𝑎𝑐𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑑𝑜 ℎ𝑎𝑠𝑡𝑎 𝑙𝑎 𝑝𝑜𝑠𝑖𝑐𝑖ó𝑛 𝑖 − 1.
(𝑘) (𝑘)
𝑟𝑚𝑖 ≔ 𝑝𝑜𝑠𝑖𝑐𝑖ó𝑛 𝑚 𝑑𝑒𝑙 𝑣𝑒𝑐𝑡𝑜𝑟 𝑟𝑖
(𝑘) (𝑘) (𝑘) (𝑘) 𝑇
𝑟𝑖 = [𝑟1𝑖 , 𝑟2𝑖 , … , 𝑟𝑛𝑖 ]
Note que:
𝑖−1 𝑛
(𝑘) (𝑘) (𝑘−1)
𝑟𝑚𝑖 = 𝑏𝑚 − ∑ 𝑎𝑚𝑗 𝑥𝑗 − ∑ 𝑎𝑚𝑗 𝑥𝑗
𝑗=1 𝑗=𝑖
(𝑘)
Al observar la posición 𝑖 del vector 𝑟𝑖 , se obtiene:
𝑖−1 𝑛
(𝑘) (𝑘) (𝑘−1)
𝑟𝑖𝑖 = 𝑏𝑖 − ∑ 𝑎𝑖𝑗 𝑥𝑗 − ∑ 𝑎𝑖𝑗 𝑥𝑗
𝑗=1 𝑗=𝑖
𝑖−1 𝑛
(𝑘) (𝑘) (𝑘−1) (𝑘−1)
𝑟𝑖𝑖 = 𝑏𝑖 − ∑ 𝑎𝑖𝑗 𝑥𝑗 − ∑ 𝑎𝑖𝑗 𝑥𝑗 − 𝑎𝑖𝑖 𝑥𝑖 (1)
𝑗=1 𝑗=𝑖+1
En conclusión:
(𝑘)
(𝑘) (𝑘−1) 𝑟
𝑥𝑖 = 𝑥𝑖 + 𝑖𝑖
𝑎𝑖𝑖
(𝑘)
(𝑘) (𝑘−1) 𝑟
𝑥𝑖 = 𝑥𝑖 + 𝜔 𝑖𝑖 (2)
𝑎𝑖𝑖
Finalmente, para obtener la expresión del macroalgoritmo sólo hace falta reemplazar (1) en
(2).