viernes, 9 de diciembre de 2011

SISTEMAS DE ECUACIONES LINEALES

Sistemas de ecuaciones lineales
Un sistema de ecuaciones lineales es:
a11x1+a12x2+a13x3++a1NxN
=
b1
a21x1+a22x2+a23x3++a2NxN
=
b2
a21x1+a22x2+a23x3++a2NxN
=
b3
=
aM1x1+aM2x2+aM3x3++aMNxN
=
bM

siempre puede expresarse de la forma
ax=b
Pero una formulación tan sencilla suele esconder grandes complicaciones. Todos coincidiremos en que aparentemente la solución del problema anterior es:
x=a-1b
Pero el problema numérico va mucho más allá. La inversa de una matriz sólo existe cuando ésta es regular y no siempre tendremos tanta suerte. Buscamos una solución al problema general de la forma
a(M N)x(N)=b(M)
En el que no siempre existe una inversa para a. Este análisis mucho más general requiere conocimientos que se escapan en parte de los cursos de cálculo numérico y plantea una dificultad adicional: el manejo intuitivo de matrices y vectores. Cuando uno se sumerge en el mundo del cálculo matricial es bueno que encuentre modos de equivocarse lo menos posible. Es muy común que multiplicaciones de matrices incompatibles acaben con un algoritmo brillante. No siempre trabajaremos con vectores columna post multiplicando matrices cuadradas. Un truco bastante utilizado en el cálculo numérico es utilizar una notación parecida a la de Einstein en la que aparecen las filas y columnas como coordenadas co variantes y contra variantes:
ajixi=bj
La regla mnemotécnica es que los índices que aparezcan repetidos como subíndices y superíndices de izquierda a derecha representan un sumatorio y desaparecen en el resultado final. La regla se mantiene en la solución, obviamente con permutación de los índices:
xi=(a-1)ijbj

Esta notación es especialmente útil porque ayuda a no equivocarse en los cálculos, subíndice son filas y superíndice son columnas. Por ejemplo para el producto de dos vectores el producto interno (producto escalar) sería:
xjyj=k
donde k es un escalar. En cambio si los dos vectores aparecen permutados obtenemos el producto externo de dos vectores en el que se amplían los índices:
yjxi=aji
Para entender perfectamente la siguiente operación utilizaremos Matlab:
>> y=ones(3,1);
>> x=2*ones(1,3);
>> x*y
ans = 6
>> y*x
ans =
  2  2  2
  2  2  2
  2  2  2

Todo ello es útil cuando tenemos operaciones un poco más complejas como la siguiente:
ykzkakixibj
¿Cuáles serán las dimensiones de la matriz (o vector o escalar) resultante? Tenemos claro desde un principio que a es una matriz, x un vector columna e y y z son vectores fila. Sin hacer ningún cálculo sabemos que la solución tiene la forma:
ykzkakixibj=cj
donde la repetición de índices en una misma posición significa operación escalar y no matricial. Vamos a exponer un ejemplo de la operación para conseguir una idea más gráfica:
octave:27> y
y =
  4  4  4
octave:28> z
z =
  5  5  5
octave:29> a
a =
  2  2  2
  2  2  2
  2  2  2
octave:30> x
x =
  3
  3
  3
octave:31> b
b =
  1
  1
  1
octave:32> (((y.*z)*a)*x)*b
ans =
  1080
  1080
  1080

Pero centrémonos más en el problema importante:
aijxj=bi
Es el problema más importante del análisis numérico. Casi todos algoritmos se reducen al planteamiento de un sistema de ecuaciones lineales. Los más interesantes son los que vienen de una ecuación en derivadas parciales. Las diferencias finitas, volúmenes finitos, elementos finitos y métodos espectrales terminan en la formulación de un problema de este tipo. El análisis preciso de estos problemas es una parte esencial de cualquier curso de análisis numérico y tiene muchos claros y oscuros dependiendo siempre de la forma de la matriz a. El siguiente árbol clasifica la mayoría de los problemas con su tratamiento:
  • a es cuadrada y regular
    • a no tiene ninguna estructura reconocible
      • La mayoría de los elementos de a son no nulos. Métodos directos o iterativos dependiendo del tamaño de la matriz.
      • La mayoría de los elementos de a son nulos. Matrices sparse. Resolución por métodos iterativos.
    • a tiene una estructura determinada
      • a es tridiagonal. Resolución por un método directo. No disponible en Matlab.
      • a es hermitiana (a=a⊤′). Resolución por un método directo. No disponible en Matlab.
  • a es subcondicionada o cuadrada singular. Descomposición en valores singulares o SVD (pseudoinversa)
  • a es sobrecondicionada, es decir, rectangular con más filas que columnas. Es un problema de mínimos cuadrados o de SVD (pseudoinversa)
No disponible en Matlab significa que no tiene ningún método especial para resolver este tipo de problemas. Debemos utilizar el método de resolución general, el operador resolución de sistemas de ecuaciones lineales .

No hay comentarios:

Publicar un comentario en la entrada