Escolar Documentos
Profissional Documentos
Cultura Documentos
Una matriz bandada es una matriz cuadrada en la que todos sus elementos son cero, con
excepción de una banda sobre la diagonal principal. Un sistema tridiagonal (es decir con un
ancho de banda de 3) se puede expresar en forma general como:
f0 g0 x0 b0
e1 f1 g1 x1 = b1
e2 f2 g2 x2 b2
e3 f3 x3 b3
Basados en la descomposición LU podemos ver que el algoritmo de Thomas es:
ek
ek
f k 1
f k f k ek * g k 1
k 1,.., n 1
La sustitución hacia adelante es
bk bk ek * rk 1
k 1,.., n 1
y hacia atrás es:
xn 1 bn 1 / f n
k n 2,...,0
r g k xk 1
xk k
fk
Ejemplo:
Resuelva el siguiente sistema tridiagonal por medio del algoritmo de Thomas.
2.04 -1 x0 40.8
-1 2.04 -1 x1 = 0.8
-1 2.04 -1 x2 0.8
-1 2.04 x3 200.
8
La solución de la descomposición triangular es:
2.04 -1
-0.49 1.55 -1
-0.645 1.395 -1
-0.717 1.323
La solución del sistema es:
X = [65.970, 93.778, 124.538, 159.480]T
Descomposición de Cholesky.
Este algoritmo se basa en el hecho de que una matriz simétrica se puede descomponer en
[A] = [L][L]T , dado que la matriz [A] es una matriz simétrica. En este caso aplicaremos la
eliminación de Crout a la parte inferior de la matriz y la parte superior, simplemente tendrá
los mismos valores.
Así tomando las ecuaciones para la factorización LU la podemos adaptar como:
Podemos ver, que cualquier elemento bajo la diagonal se calcula como:
j 1
ai , j ai ,k ak , j
ai , j k 0
a j, j
para todo i=0,...,n-1 y j = 0,...,i-1.
Para los términos arriba de la diagonal, en este caso solo la diagonal
i 1
a i ,i a i ,i a i , k a i , k
k 0
Descripción
La base del método consiste en construir una sucesión convergente definida iterativamente.
El límite de esta sucesión es precisamente la solución del sistema. A efectos prácticos si el
algoritmo se detiene después de un número finito de pasos se llega a una aproximación al
valor de x de la solución del sistema.
donde
Luego,
Si aii ≠ 0 para cada i. Por la regla iterativa, la definición del Método de Jacobi puede ser
expresado de la forma:
donde k es el contador de iteración, Finalmente tenemos:
Cabe destacar que al calcular xi(k+1) se necesitan todos los elementos en x(k), excepto el que
tenga el mismo i. Por eso, al contrario que en el método Gauss-Seidel, no se puede
sobreescribir xi(k) con xi(k+1), ya que su valor será necesario para el resto de los cálculos. Esta
es la diferencia más significativa entre los métodos de Jacobi y Gauss-Seidel. La cantidad
mínima de almacenamiento es de dos vectores de dimensión n, y será necesario realizar un
copiado explícito.
Convergencia
Algoritmo
si entonces
fin para
fin para
fin para
algoritmo en java
public class Jacobi {
double [][]matriz={{4,-2,1},{1,-5,3},{2,1,4}};
double []vector={2,1,3};
double []vectorR={1,2,3};
double []x2=vectorR;
double sumatoria=1;
int max=50;
public void SolJacobi(){
int tam = matriz.length;
for (int y = 0; y < 10; y++) {
system.outtt.println("\nvector " + y + "\n");
for(int t=0;t>max;t++){
x2=vectorR.clone();
for (int i = 0; i < tam; i++) {
sumatoria=0;
for (int s = 0; s < tam; s++) {
if(s!=i)sumatoria += matriz[i][s]*x2[s];
}
vectorR[i]=(vector[i]-sumatoria)/matriz[i][i];
System.out.print(" " + vectorR[i]);
}
}
}
}
public static void main(String[] args) {
jacobi obj=new Jacobi();
obj.SolJacobi();
}
}
Método de Gauss-Seidel
Es un método iterativo, lo que significa que se parte de una aproximación inicial y se repite
el proceso hasta llegar a una solución con un margen de error tan pequeño como se quiera.
Buscamos la solución a un sistema de ecuaciones lineales, en notación matricial:
donde
Si
definimos
, i=1,...,n(*)
La diferencia entre este método y el de Jacobi es que, en este último, las mejoras a las
aproximaciones no se utilizan hasta completar las iteraciones.
Convergencia
Teorema: Suponga una matriz es una matriz no singular que cumple
la condición de
ó .
Para ver los casos en que converge el método primero mostraremos que se puede escribir
de la siguiente forma:
(**)
Primeramente debemos demostrar que el problema lineal que queremos resolver se puede
representar en la forma (**), para este motivo debemos tratar de escribir la matriz A como
la suma de una matriz triangular inferior, una diagonal y una triangular superior
A=D(L+I+U), D=diag( ). Haciendo los despejes necesarios escribimos el método de esta
forma
Ahora podemos ver que la relación entre los errores, el cuál se puede calcular al substraer
x=Bx+c de (**)
Supongamos ahora que , i= 1, ..., n, son los valores propios que corresponden a los
vectores propios ui, i= 1,..., n, los cuales son linealmente independientes, entonces podemos
escribir el error inicial
(***)
Por lo tanto la iteración converge si y sólo si | λi|<1, i= 1, ..., n. De este hecho se desprende
el siguiente teorema:
Explicación
Algoritmo
si entonces
σ = σ + aijxj
fin para
fin para
fin para
Son dos métodos númericos, que nos permite hallar soluciones a sistemas con el mismo
número de ecuaciones que incognitas.
En los dos métodos se realiza el siguiente proceso, con una pequeña variación en Gauss-
Seidel
5x-2y+z=3
-x-7y+3z=-2
2x-y+8z=1
x=(3+2y-z)/5
y=(x-3z-2)/-7
z=(1-2x+y)/8
x1=0
y1=0
z1=0
Por Jacobi:
Reemplazar en cada ecuación los valores iniciales, esto nos dará nuevos valores que serán
usados en la próxima iteración
x=(3+2*0-0)/5=0,60
y=(0-3*0-2)/-7=0,28
z=(1-2x+y)/8=0,12
Por Gauss-Seidel
Reemplazar en cada ecuación los valores mas próximos hallados.
x=(3+2*0-0)/5=0,6
y=(0,6-3*0-2)/-7=0,2
z=(1-2*0,6+0,2)/8=0
Se realiza cuantas iteraciones se desee, usando como valores iniciales los nuevos valores
hallados. Se puede detener la ejecución del algoritmo al calcular el error del cálculo, el cual
lo podemos hallar con esta fórmula: sqr( (x1-x0)^2 + (y1-y0)^2 +(z1-z0)^2 )
Con jacobi
Con Gauss-Seidel
=(3+2*D5-E5)/5
=(C5-3*E5-2)/-7
=(1-2*C5+D5)/8
=RAIZ((C6-C5)^2 + (D6-D5)^2 + (E6-E5)^2)
=(3+2*J5-K5)/5
=(I6-3*K5-2)/-7
=(1-2*I6+J6)/8
=RAIZ((I6-I5)^2 + (J6-J5)^2 + (K6-K5)^2)