Está en la página 1de 2

Miguel Adrin Parra Valverde Anlisis Numrico

Algoritmo de Thomas
En Mathlab function x = TDMAsolver(a,b,c,d) %a, b, c are the column vectors for the compressed tridiagonal matrix, d is the right vector n = length(d); % n is the number of rows % Modify the first-row coefficients c(1) = c(1) / b(1); % Division by zero risk. d(1) = d(1) / b(1); % Division by zero would imply a singular matrix. for i = 2:n-1 temp = b(i) - a(i) * c(i-1); c(i) = c(i) / temp; d(i) = (d(i) - a(i) * d(i-1))/temp; end d(n) = (d(n) - a(n) * d(n-1))/( b(n) - a(n) * c(n-1)); % Now back substitute. x(n) = d(n); for i = n-1:-1:1 x(i) = d(i) - c(i) * x(i + 1); end end

El algoritmo de Thomas se utiliza cuando la matriz de los coeficientes del sistema es tridiagonal.

En este mtodo se trabaja con las filas en forma similar al mtodo de eliminacin de Gauss. Aqu se reemplaza cada fila por una combinacin lineal de filas apropiada, de manera que se anulen los elementos de la diagonal inferior y los elementos de la diagonal principal sean unos. Para ello en la primera fila, se dividen los coeficientes por b 1 y en las filas subsiguientes, se trabaja de la siguiente manera:

Fila i-1: Fila i:

00 00

1 ai

ci-1 bi

0 ci

00 00

di-1 di

Se reemplaza la fila i por la combinacin lineal fila (i) - ai. fila (i-1), resultando: Nueva fila i: 00 ai - ai bi- ai ci-1 ci 00 di -aidi-1

Para que el elemento correspondiente a la diagonal principal sea 1, se divide toda la fila por bi- ai ci-1

i,

Resumiendo, la nueva matriz tendr por coeficientes: ai=0, bi= 1, para cada

Una vez obtenida la matriz triangular superior, que en este caso particular tiene slo dos diagonales no nulas, se aplica el algoritmo de sustitucin hacia atrs: xn =dn y x1 =di - x1+1ci (i = n-1, n-2, . . ., 1)

El algoritmo de Thomas es particularmente econmico: requiere una cantidad de operaciones Op(n) = 8 n - 6, que crece linealmente con la cantidad de incgnitas. Para prevenir problemas de mal condicionamiento, es necesario que se cumpla la condicin: |bi|>|ai| + |ci| El algoritmo de Thomas puede generalizarse sin dificultades para sistemas cuya matriz de coeficientes es pentadiagonal o tridiagonal en bloques.

También podría gustarte