Escolar Documentos
Profissional Documentos
Cultura Documentos
3.6
ICM ESPOL
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
ANLISIS NUMRICO
ICM ESPOL
a n,1
a 1,2
a 2,2
...
a n,2
... a 1,m
... a 2,m
...
...
... a n,m
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 ,
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.
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.
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
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:
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)
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
+ 0.64x4 = -0.28
- 1.92x4 = -0.16
x3 + 1.68x4 = 0.64
ANLISIS NUMRICO
ICM ESPOL
- 4x4 = -2
- 2x4 = 1
x3 + 2x4 = 1
0x4 = 3
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
+ 0.75x4 = 25.41
- 0.50x4 = 2.83
+ 0.75x4 = 8.75
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)
ANLISIS NUMRICO
ICM ESPOL
Vector solucin
Variable libre
Matriz reducida
ANLISIS NUMRICO
ICM ESPOL
(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
ANLISIS NUMRICO
ICM ESPOL
ANLISIS NUMRICO
ICM ESPOL
x2
x5
x8
x3
x6
x9
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
ANLISIS NUMRICO
ICM ESPOL
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
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
x 2 g2
c2
x3
w2
x1 g1
c1
x2
w1
(2)
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
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).
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
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
Solucin calculada