Você está na página 1de 16

ANLISIS NUMRICO

3.6

ICM ESPOL

Sistemas de Ecuaciones Lineales Casos Especiales

3.6.1 Sistemas Singulares


En esta seccin se desarrolla un mtodo directo para resolver un sistema lineal propuesto de n
ecuaciones con m variables, n<m. Estos sistemas tambin se obtienen como resultado de la
reduccin de un sistema dado originalmente con m ecuaciones y m variables. En ambos casos la
matriz mxm de coeficientes contendr una o ms filas nulas y por lo tanto no tienen inversa y se
dice que la matriz es singular, en este caso tambin diremos que el sistema es singular. Estos
sistemas no admiten una solucin nica.
Sin embargo, si el sistema es un modelo que representa algn problema de inters, es importante
detectar si el sistema es incompatible para el cual no existe solucin, o se trata de un sistema
incompleto para el cual existe infinidad de soluciones. Ms an, es til determinar cuales son las
variables libres, a las que se pueden asignar valores arbitrarios para analizar las soluciones
resultantes en trminos de stas variables y su relacin con el problema que se analiza.
Para facilitar el anlisis de estos sistemas, es conveniente convertirlo en una forma ms simple. La
estrategia que usaremos es llevarlo a la forma de la matriz identidad hasta donde sea posible
Se desea resolver el sistema de n ecuaciones lineales con m variables, siendo nm
a1,1x1 a1,2 x 1 ... a1,m x m b1
a 2,1x1 a 2,2 x1 ... a 2,m x m b2
...
an,1x1 an,2 x1 ... an,m x m bn

En donde
ai,j : Coeficientes

bi : Constantes
xi : Variables cuyo valor debe determinarse
En notacin matricial:
a1,1
a
2,1
...

an,1

a1,2
a 2,2

...
...

an,1

...

a1,m x 1 b1
a 2,m x 2 b 2

... ... ...

an,m x m bn

Simblicamente: AX = B, en donde
a1,1
a
2,1
A
...

an,1

a1,2
a2,2

...
...

an,1

...

a1,m
a2,m
; B
...

an,m

b1
b
2 ; X
...

bn

x1
x
2
...

xm

Para unificar la descripcin algortmica, es conveniente aumentar la matriz A con el vector B pues
en ambos deben realizarse simultneamente las mismas operaciones:
a 1,1
a
2,1
A |B
...

a n,1

a 1,2

... a 1,m

a 2,2
...

... a 2,m
... ...

a n,2

... a n,m

a 1,m 1
a 2,m 1
...

a n,m 1

Siendo ai,m+1 = bi, i = 1, 2, 3, ..., n

Ing. Luis Rodrguez Ojeda, MSc.

ANLISIS NUMRICO

ICM ESPOL

El procedimiento consiste en transformar la matriz aumentada, que representa al sistema de


ecuaciones, mediante operaciones lineales que no modifican la solucin del sistema original:
a) Multiplicar alguna fila por una constante no nula
b) Sumar alguna fila a otra fila
c) Intercambiar filas
Este procedimiento se realiza en n etapas. El objetivo es reducir la matriz aumentada a una forma
escalonada con 1s en la diagonal mediante intercambios de filas hasta donde sea posible hacerlo.
Si n<m la matriz transformada finalmente tendr la siguiente forma
a 1,1
a
2,1
A |B
...

a n,1

a 1,2
a 2,2
...
a n,2

... a 1,m
... a 2,m
...

...

... a n,m

1 0 ... 0 a1,n 1 ... a1,m a1,m 1


a 1,m 1

0 1 ... 0 a2,n 1 ... a2,m a2,m1


a 2,m 1
...
... ... ... ... ... ... ...
...
...

a n,m 1
0 0 ... 1 an,n 1 ... an,m an,m1

En el sistema resultante, las variables xn+1, xn+2, , xm se denominan variables libres y pueden
tomar valores arbitrarios, normalmente asociados al problema que se analiza, mientras que las
otras variables x1, x2, , xn pueden tomar valores dependientes de las variables libres. Los valores
ai,j que aparecen en la matriz reducida, son los valores resultantes de las transformaciones
aplicadas. La forma final facilita asignar valores a estas variables.
En cada etapa, primero se har que el elemento en la diagonal tome el valor 1. Luego se har que
los dems elementos de la columna correspondiente, tomen el valor 0. Realizando previamente
intercambios de filas para colocar como divisor el elemento de mayor magnitud. Esta estrategia se
denomina pivoteo parcial y se usa para determinar si el sistema es singular.
La siguiente formulacin realiza esta transformacin. La deduccin es similar al mtodo de GaussJordan descrito en una seccin anterior, pero incluyendo el registro de variables libres.
Etapa e = 1, 2, . . ., n
Normalizar la fila e:
ae,j ae,j / ae,e ,

j=e, e+1, ..., m+1;

Reducir las otras filas:


ai,j ai,j ai,e ae,j ,
j=e, e+1, ..., m+1;

a e,e 0

i=1, 2, 3, ..., n;

ie

En cada etapa e se elije entre las filas restantes i=e, e+1,..., n el coeficiente ae,e de mayor
magnitud. Si este coeficiente es cero, el sistema es singular, se registra la variable libre y la
transformacin continua.

Previamente la matriz es estandarizada dividiendo por el elemento de mayor magnitud para reducir
el error de truncamiento y detectar en forma consistente si el sistema es singular.

Ing. Luis Rodrguez Ojeda, MSc.

ANLISIS NUMRICO

ICM ESPOL

Instrumentacin computacional
La instrumentacin se realiza mediante una funcin con el nombre slin utilizando la notacin
compacta de matrices de MATLAB. En la codificacin se incluyen algunos comentarios ilustrativos.
Por los errores de redondeo se considerar que cero es cualquier valor cuya magnitud es menor
-10
que 10 .
Parmetros de entrada
a: matriz de coeficientes
b: vector de constantes
Parmetros de salida
x: vector solucin
v: vector de variables libres
a: matriz de coeficientes reducida a la forma escalonada
Puede llamarse a la funcin slin especificando nicamente un parmetro de salida, el vector
solucin:
>> x=slin(a,b)
Si se obtiene como respuesta un vector nulo
x=
[]
Entonces se puede llamar usando los tres parmetros de salida para analizar el resultado de la
transformacin matricial, como se indicar en los ejemplos posteriores:
>> [x,v,c]=slin(a,b)
Si el vector solucin no es un vector nulo, entonces el sistema es consistente y la solucin
obtenida es nica. El vector de variables libres estar vaco y la matriz se habr reducido a la
matriz identidad.
Si el vector solucin es un vector nulo, entonces el sistema es singular. Si el vector de variables
libres no es nulo, el sistema es redundante. Es decir tiene infinidad de soluciones que se las puede
construir en trminos de las variables libres reescribiendo las ecuaciones a partir del sistema
reducido.
Sin embargo, si el vector solucin es nulo y tambin el vector de variables libres es nulo, entonces
es un sistema singular con ecuaciones incompatibles. La matriz reducida contendr proposiciones
(ecuaciones) falsas.

Ing. Luis Rodrguez Ojeda, MSc.

ANLISIS NUMRICO

ICM ESPOL

function [x,v,a]=slin(a,b)
%Autor: Luis Rodrguez Ojeda
[n,m]=size(a);
z=max(max(abs(a)));
v=[n+1:m];
%Vector inicial de variables libres
a(1:n,m+1)=b;
%Matriz aumentada A
if n>m
%Mas ecuaciones que variables
x=[ ];
v=[ ];
a=[ ];
return;
end
a=a/z
%Estandariza la matriz para reducir error
for e=1:n
%Ciclo para n etapas
[z,p]=max(abs(a(e:n,e)));
%Pivoteo por filas
p=p+e-1;
t=a(e,e:m+1);
%Cambiar filas
a(e,e:m+1)=a(p,e:m+1);
a(p,e:m+1)=t;
if abs(a(e,e))<1.0e-10
%Sistema singular
v=[v, e];
%Agregar variable libre y continuar
else
a(e,e:m+1)=a(e,e:m+1)/a(e,e);
%Normalizar la fila e
for i=1:n
%Reducir otras filas
if i~=e
a(i,e:m+1)=a(i,e:m+1)-a(i,e)*a(e,e:m+1);
end
end
end
end
v=sort(v)';
%Vector de variables libres
x=[ ];
if length(v)==0;
%Sistema consistente
x=a(1:n,m+1);
%El vector X es la ltima columna de A
a(:,m+1)=[ ];
%Eliminar la ltima columna de A
return;
end
for i=1:n
%Sistema inconsistente o redundante
if sum(abs(a(i,1:m)))<1.0e-10 & abs(abs(a(i,m+1)))>1.0e-10
x=[ ];
v=[ ];
return;
end
end

Ing. Luis Rodrguez Ojeda, MSc.

ANLISIS NUMRICO

ICM ESPOL

Ejemplos
En los siguientes ejemplos se utiliza una notacin informal para identificar cada tipo de sistema
que se resuelve. Los resultados obtenidos deben interpretarse segn lo descrito en la
instrumentacin computacional de la funcin slin.
Sistema completo:
Sistema incompleto:

Tiene n ecuaciones y n variables


Tiene n ecuaciones y m variables, n<m. Puede ser dado inicialmente o
puede ser resultado del proceso de transformacin matricial en el que
algunas ecuaciones desaparecen pues son linealmente dependientes.
Sistema consistente: Tiene una solucin nica
Sistema redundante: Contiene variables libres, y por lo tanto infinidad de soluciones
Sistema incompatible: Sistema que contiene ecuaciones incompatibles. La transformacin
matricial reduce el sistema a un sistema con proposiciones falsas
1) Sistema consistente
x1
+ 2x3 + 4x4 = 1
x2 + 2x3
=0
x1 + 2x2 + x3
=0
x1 + x 2
+ 2x4 = 2
>> a = [1 0 2 4; 0 1 2 0; 1 2 1 0; 1 1 0 2]
a=
1 0 2 4
0 1 2 0
1 2 1 0
1 1 0 2
>> b=[1; 0; 0; 2]
b=
1
0
0
2
>> x=slin(a,b)
x=
Vector solucin nico
-3.0000
2.0000
-1.0000
1.5000

2) Sistema completo reducido a incompleto redundante


>> a=[1 1 2 2;1 2 2 4;2 4 2 4 ;1 3 0 2]
a=
1 1 2 2
1 2 2 4
2 4 2 4
1 3 0 2
>> b=[1; 2; 2; 1]
b=
1
2
2
1
>> x=slin(a,b)
Vector solucin nulo
x=
[]

Ing. Luis Rodrguez Ojeda, MSc.

ANLISIS NUMRICO

ICM ESPOL

>> [x,v,c]=slin(a,b)
Llamar a slin con
x=
todos los parmetros
[]
v=
Variable libre
4
c=
1 0 0 -4 -2
0 1 0 2 1
Una ecuacin se anul
0 0 1 2 1
0 0 0 0 0
Se obtiene un sistema equivalente, conveniente para asignar soluciones en funcin de la variable
libre x4 :
x1
- 4x4 = -2
x1 = 4x4 - 2
x2
- 2x4 = 1
x2 = 2x4 + 1
x3 + 2x4 = 1
x3 = -2x4 + 1
Sea x4 = t, t R, entonces el conjunto solucin es {4t-2, 2t+1, -2t +1}
3) Sistema incompleto
>> a=[1 0 2 4;4 1 2 4;2 4 5 2]
a=
1 0 2 4
4 1 2 4
2 4 5 2
>> b=[1; 0; 2]
b=
1
0
2
>> x=slin(a,b)
Vector solucin nulo
x=
[]
>> [x,v,c]=slin(a,b)

Llamar a slin con


todos los parmetros

x=
[]
Variable libre
v=
4
c=
1.0000
0
0 0.6400 -0.2800
0 1.0000
0 -1.9200 -0.1600
0
0 1.0000 1.6800 0.6400

Sistema reducido

Se obtiene un sistema equivalente, conveniente para asignar soluciones en funcin de la variable


libre x4 :
x1
x2

+ 0.64x4 = -0.28
- 1.92x4 = -0.16
x3 + 1.68x4 = 0.64

Ing. Luis Rodrguez Ojeda, MSc.

ANLISIS NUMRICO

ICM ESPOL

4) Sistema completo reducido a incompleto incompatible


>> a=[1 1 2 2;1 2 2 4;2 4 2 4 ;1 3 0 2]
a=
1 1 2 2
1 2 2 4
2 4 2 4
1 3 0 2
>> b=[1; 2; 2; 4]
b=
1
2
2
4
>> x=slin(a,b)
x=
[]
>> [x,v,c]=slin(a,b)
x=
[]
v=
[]
c=
1 0 0 -4 -2
0 1 0 2 1
0 0 1 2 1
0 0 0 0 3
Sistema equivalente:
x1
x2

- 4x4 = -2
- 2x4 = 1
x3 + 2x4 = 1
0x4 = 3

Se obtiene una proposicin nula.


El sistema es incompatible

Ing. Luis Rodrguez Ojeda, MSc.

ANLISIS NUMRICO

ICM ESPOL

Aplicaciones
1) Problema de mezclas
Una empresa produce cuatro productos: P1, P2, P3, P4 usando tres tipos de materiales M1, M2,
M3. Cada Kg. de producto requiere la siguiente cantidad de cada material, en Kg.:
P1
0.2
0.3
0.5

M1
M2
M3

P2
0.5
0
0.5

P3
0.4
0.5
0.1

P4
0.2
0.6
0.2

La cantidad disponible de cada material es: 10, 12, 15 Kg. respectivamente, los cuales deben
usarse completamente. Se quiere analizar una estrategia de produccin sabiendo que se puede
producir una cantidad mxima de 20 kg del producto P4.
Sean x1, x2, x3, x4 cantidades en Kg. producidas de P1, P2, P3, P4, respectivamente
Se obtienen las ecuaciones:
0.2x1 + 0.5x2 + 0.4x3 + 0.2x4 = 10
0.3x1
+ 0.5x3 + 0.6x4 = 12
0.5x1 + 0.5x2 + 0.1x3 + 0.2x4 = 15
Es un sistema de tres ecuaciones y cuatro variables. En notacin matricial
x1
0.2 0.5 0.4 0.2 10
0.3 0 0.5 0.6 x 2 12

x
0.5 0.5 0.1 0.2 3 15
x 4
Reduccin con el mtodo de Gauss-Jordan usando pivoteo

1.00
0

1.00
-0.30
0.30

0.20
0.44
0.36

0.40
0.48
0.12

30.00
3.00
4.00

1.00
0

0
1.00
0

1.66
-1.46
0.80

2.00
-1.60
0.60

40.00
-10.00
7.00

1.00
0

0
1.00
0

0
0
1.00

0.75
-0.50
0.75

25.41
2.83
8.75

Sistema equivalente reducido:


x1
x2
x3

+ 0.75x4 = 25.41
- 0.50x4 = 2.83
+ 0.75x4 = 8.75

El resultado muestra que x4 es una variable libre:


Sea

x4 = t, t0, t
x3 = 8.75 - 0.75 t t 11.66
x2 = 2.83 + 0.50 t t 0
x1 = 25.41 - 0.75 t t 33.88

(variable libre)
(la produccin no puede tener valores negativos)

Ing. Luis Rodrguez Ojeda, MSc.

ANLISIS NUMRICO

ICM ESPOL

Se concluye que 0 t 11.66


Esta informacin puede ser til para decidir la cantidad que debe producirse de cada artculo
usando todos los recursos disponibles. Si se decide producir 10 Kg del producto P4, entonces para
que no sobren materiales, la produccin ser:
t=10 x3=1.25, x2=7.83, x1=17.91
Solucin con la funcin slin
>> a=[0.2 0.5 0.4 0.2;0.3 0 0.5 0.6;0.5 0.5 0.1 0.2]
a=
0.2000 0.5000 0.4000 0.2000
0.3000
0 0.5000 0.6000
0.5000 0.5000 0.1000 0.2000
>> b=[10;12;15]
b=
10
12
15
>> [x,v,c]=slin(a,b)
x=
25.4167
2.8333
8.7500
v=
4
c=
1.0000
0
0 0.7500
0 1.0000
0 -0.5000
0
0 1.0000 0.7500

Vector solucin

Variable libre
Matriz reducida

Ing. Luis Rodrguez Ojeda, MSc.

ANLISIS NUMRICO

ICM ESPOL

2) Problema de flujo de un producto

(1)

Mi: Productores
W i: Distribuidores
Ri: Vendedores

Obtencin de ecuaciones
Igualando el flujo que entra y sale de cada nodo
Distribuidores
W1:
200 + x1 = x4 + x5
W2:
300 + x2 = 300 + x6
W3:
x3 = 100 + x1
Vendedores
R1:
x4 = 400
R2:
300 + x5 = x8
R3:
100 + x6 = 200
R4:
x7 = 500
Total de flujo que entra es igual al total de flujo que sale
200 + x1 + x2 + 300 + x3 = 400 + x8 + 200 + 500
Que conforman un sistema lineal de 8 ecuaciones con 8 variables
1
0

0
0

0
0

0 0 1 1
1 0

0 1

0 0

0 0

0 0

0 0

1 1

0 x1 200
1 0 0 x 2 0
0 1 0 x 3 100

0 0 0 x 4 400

0 0 1 x 5 300

1 0 0 x 6 100
0 1 0 x 7 500

0 0 1 x 8 600
0

(1) Problema propuesto en el libro Linear Algebra, W. W. L. Chen

Ing. Luis Rodrguez Ojeda, MSc.

ANLISIS NUMRICO

ICM ESPOL

Solucin con slin


>> a=[1 0 0 -1 -1 0 0 0;0 1 0 0 0 -1 0 0;0 0 1 0 0 0 -1 0;0 0 0 1 0 0 0 0;0 0 0 0 1 0 0 -1;
0 0 0 0 0 1 0 0;0 0 0 0 0 0 1 0;1 1 1 0 0 0 0 -1]
a=
1 0 0 -1 -1 0 0 0
0 1 0 0 0 -1 0 0
0 0 1 0 0 0 -1 0
0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 -1
0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0
1 1 1 0 0 0 0 -1
>> b=[-200;0;100;400;-300;100;500;600];
>> [x,v,c]=slin(a,b)
x=
-100
100
600
400
-300
100
500
0
v=
8
c=
1 0 0 0 0 0 0 -1
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 -1
0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0
Resulta un sistema incompleto con una variable libre: x8
Finalmente, con la matriz reducida se puede construir una solucin en trminos de la variable libre
x8 = t
x7 = 500
x6 = 100
x5 = t - 300
x4 = 400
x3 = 600
x2 = 100
x1 = t - 100
Se concluye que t300 para que el flujo sea positivo.
El modelo resultante permite evaluar diferentes situaciones para diferentes valores de algunas
variables.

Ing. Luis Rodrguez Ojeda, MSc.

ANLISIS NUMRICO

ICM ESPOL

3) Construccin de un cuadrado mgico


En un cuadrado mgico la suma de cada fila, columna o diagonal debe dar el mismo resultado y
los valores en cada casilla deben ser diferentes.
Suponga que se quiere completar un cuadrado mgico de 3 por 3 que contenga los primeros 9
nmeros naturales. La suma de los elementos es 1+2+3++9 = 45. Por lo tanto cada suma de fila,
columna o diagonal debe ser igual a 15
Obtencin de las ecuaciones:
x1
x4
x7

x2
x5
x8

x3
x6
x9

Recorriendo filas, columnas y diagonales se obtienen las ecuaciones en notacin matricial

Es un sistema incompleto de 8 ecuaciones con 9 variables


Solucin con la funcin slin
>> a=[1 1 1 0 0 0 0 0 0; 0 0 0 1 1 1 0 0 0; 0 0 0 0 0 0 1 1 1; 1 0 0 1 0 0 1 0 0; 0 1 0 0 1 0 0 1 0;
0 0 1 0 0 1 0 0 1; 1 0 0 0 1 0 0 0 1; 0 0 1 0 1 0 1 0 0]
>> b=[15; 15; 15; 15; 15; 15; 15; 15];
>> [x,v,c]=slin(a,b)
x=
10.0000
10.0000
-5.0000
-10.0000
5.0000
20.0000
15.0000
0
v=
8
9
c=
1.0000
0
0
0
0
0
0 0.0000 1.0000
0 1.0000
0
0
0
0
0 1.0000
0
0
0 1.0000
0
0
0
0 -1.0000 -1.0000
0
0
0 1.0000
0
0
0 -1.0000 -2.0000
0
0
0
0 1.0000
0
0 -0.0000
0
0
0
0
0
0 1.0000
0 1.0000 2.0000
0
0
0
0
0
0 1.0000 1.0000 1.0000
0
0
0
0
0
0
0
0
0
Se obtiene un sistema reducido de 7 ecuaciones con dos variables libres: x8 y x9

Ing. Luis Rodrguez Ojeda, MSc.

ANLISIS NUMRICO

ICM ESPOL

Para completar el sistema, se pueden asignar diferentes valores a las variables libres: x8 y x9 para
luego resolverlo y encontrar la solucin respectiva. En forma equivalente, se puede usar la matriz
reducida para expresar la solucin simblicamente en trminos de las variables libres y luego
usarla para encontrar directamente los valores de las variables para los valores asignados a las
variables libres.
Luego de varias pruebas se usaron los valores 7 y 2 definiendo las ecuaciones: x8=7 y x9=2.
En MATLAB se debe escribir nuevamente el sistema con los valores de la matriz reducida c
agregando las dos ecuaciones. Tambin se puede usar el editor de arreglos del workspace para
cambiar la matriz con facilidad
>> a=[1 0 0 0 0 0 0 0 1;0 1 0 0 0 0 0 1 0;0 0 1 0 0 0 0 -1 -1;0 0 0 1 0 0 0 -1 -2;0 0 0 0 1 0 0 0 0;
0 0 0 0 0 1 0 1 2;0 0 0 0 0 0 1 1 1;0 0 0 0 0 0 0 1 0;0 0 0 0 0 0 0 0 1]
a=
1 0 0 0 0 0 0 0 1
0 1 0 0 0 0 0 1 0
0 0 1 0 0 0 0 -1 -1
0 0 0 1 0 0 0 -1 -2
0 0 0 0 1 0 0 0 0
0 0 0 0 0 1 0 1 2
0 0 0 0 0 0 1 1 1
0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 1
>> b=[10;10;-5;-10;5;20;15;7;2];
>> [x,v,c]=slin(a,b)
x=
8
3
4
1
5
9
6
7
2
v=
[]
c=
1 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0
0 0 0 0 1 0 0 0 0
0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 1
Se obtiene un sistema consistente cuya solucin se coloca en el cuadrado mgico:
8
1
6

3
5
7

4
9
2

Ing. Luis Rodrguez Ojeda, MSc.

ANLISIS NUMRICO

ICM ESPOL

3.6.2 Sistemas Tridiagonales


En un sistema tridiagonal la matriz de los coeficientes contiene todos sus componentes iguales a
cero excepto en las tres diagonales principales. Estos sistemas se presentan en la aplicacin de
cierto tipo de mtodos numricos como el caso de los trazadores cbicos y en la solucin de
ecuaciones diferenciales con diferencias finitas.
Se puede disear un mtodo directo para resolver un sistema tridiagonal con eficiencia de primer
orden: T(n)=O(n) lo cual representa una enorme mejora respecto a los mtodos directos generales
3
para resolver sistemas de ecuaciones lineales, cuya eficiencia es T(n)=O(n ).
Formulacin de un mtodo directo para resolver un sistema tridiagonal
Un sistema tridiagonal de n ecuaciones expresado en notacin matricial:

b1 c1
x1 d1
a b c
x d
2
2
2
2 2

x3 d3
a3 b3 c3


... ... ... ... ...

an bn xn dn
Para obtener la formulacin se puede considerar nicamente un sistema de tres ecuaciones para
luego extenderla al caso general. Las transformaciones son aplicadas a la matriz aumentada:
d1
b1 c1

a2 b2 c 2 d2

a3 b3 d3
1) Sea w 1 b1 . Dividir la primera fila para w1

a2

2) Sea g1

c1
w1
b2

c2

a3

b3

d1
w1

d2

d3

d1
. Restar de la segunda fila, la primera multiplicada por a2
w1

0 b2

c1
w1
a2

c1

1 w
1

0 1

a3

c1
w1

a3

3) Sea w2 b2 a2

d2 a2g1

d3

g1

c2
b3

c1
. Dividir la segunda fila para w2
w1

d2 a2g1

w2

d3

g1

c2
w2
b3

Ing. Luis Rodrguez Ojeda, MSc.

ANLISIS NUMRICO

4) Sea g2

ICM ESPOL

d2 a2 g1
. Restar de la tercera fila, la segunda multiplicada por a3
w2

c1
g1
1

w
1

c2
g2
0 1

w2

c2

0 b3 a3
d3 a3g2
w2

c
5) Sea w 3 b3 a3 2 . Dividir la tercera fila para w3
w2

c1
1
w
1

0 1

6) Sea g3

g2

d3 a3g2

w3

g1

c2
w2
1

d3 a3 g2
. Finalmente se obtiene:
w3

c1

g1
1 w
1

c2
g2
0 1
w2

0
1 g3

De donde se puede hallar directamente la solucin


x 3 g3

x 2 g2

c2
x3
w2

x1 g1

c1
x2
w1

La formulacin se extiende al caso general

(2)

Transformacin matricial de un sistema tridiagonal de n ecuaciones lineales


w 1 b1
g1

d1
w1

w i bi

ai ci 1
,
w i1

di aigi 1
,
wi
Obtencin de la solucin
x n gn
gi

x i gi
(2)

ci x i 1
,
wi

i 2,3,...,n
i 2,3,...,n

i n 1, n 2,...,2,1

Algoritmo de Thomas

Ing. Luis Rodrguez Ojeda, MSc.

ANLISIS NUMRICO

ICM ESPOL

El algoritmo incluye un ciclo dependiente del tamao del problema n para reducir la matriz y otro
ciclo externo dependiente de n para obtener la solucin. Por lo tanto es un algoritmo con eficiencia
T(n)=O(n).

3.6.2 Instrumentacin computacional en MATLAB


Con la formulacin anterior se escribe una funcin para resolver un sistema tridiagonal de n
ecuaciones lineales. La funcin recibe los coeficientes y las constantes en los vectores a, b, c, d.
La solucin es entregada en el vector x

function x = tridiagonal(a, b, c, d)
n = length(d);
w(1) = b(1);
g(1) = d(1)/w(1);
for i = 2:n
w(i) = b(i) - a(i)*c(i-1)/w(i-1);
g(i) = (d(i) - a(i)*g(i-1))/w(i);
end
x(n) = g(n);
for i = n-1:-1:1
x(i) = g(i) - c(i)*x(i+1)/w(i);
end

Ejemplo.
anterior

%Transformacin matricial

%Obtencin de la solucin

Resuelva el siguiente sistema tridiagonal de ecuaciones lineales usando la funcin

7 5
x1 6
2 8 1 x 5

6 4 3 x3 7


9 8 x 4 8

>> a = [0 2 6 9];
>> b = [7 -8 4 8];
>> c = [5 1 3 0];
>> d = [6 5 7 8];
>> x = tridiagonal(a, b, c, d)
x=
0.7402
0.1637
4.8288
-4.4324

Vectores con las diagonales (completas)

Solucin calculada

Ing. Luis Rodrguez Ojeda, MSc.

Você também pode gostar