Está en la página 1de 16

Métodos Numéricos I

Sistemas lineales

Alessandri Canchoa Q.

Agosto 2020
Contents

0.1 Método de Gauss-Jordan . . . . . . . . . . . . . . . . . . . . . . . 1


0.1.1 Sistema tridiangular superior . . . . . . . . . . . . . . . . 1
0.1.2 Algoritmo de Gauss-Jordan con pivoteo parcial escalado . 8
0.1.3 La factorización LU . . . . . . . . . . . . . . . . . . . . . 10
0.1.4 In‡uencia de errores por redondeo . . . . . . . . . . . . . 12
0.1.5 Condición de una matriz . . . . . . . . . . . . . . . . . . . 13

0.1 Método de Gauss-Jordan


0.1.1 Sistema tridiangular superior
Consideremos el siguiente sistema triangular superior

a11 x1 +a12 x2 + a13 x3 +a14 x4 + +a1n xn = b1


a22 x2 + a23 x3 +a24 x4 + +a2n xn = b2
a33 x3 +a34 x4 + +a3n xn = b3
..
.
ai;i xi + +ain xn = bi
.. ..
. .
ann xn = bn

donde aii 6= 0 para i = 1; 2; ; n.


Algoritmo para solucionar un sistema triangular superior:

Entrada: A = (ai;j ) 2 Rn n matriz triangular superior


b := (b1 ; ; bn )T 2 Rn lado derecho
Calcular xn := bn =an;n

Para i = (n 1) ; (n 2) ; ;1
n
X
Calcular xi := (bi aij xj )=ai;i
j=i+1

Salida: Solución x = (x1 ; ; xn )T de Ax = b

1
Algoritmo de Gauss - Jordan con pivoteo parcial escalado
Se trata de llevar un sistema lineal a la forma equivalente de un sistema
triangular superior.
1. Se busca el coe…ciente de la primera columna de la matriz (Ajb) que
posea el valor absoluto más grande.

jar1 j = maxfja11 j; ja21 j; ; jan1 jg

2. Cambiar la primera ecuación con la r-ésima. La matriz obtenida será

2
A := (ajk ), el lado derecho b := (b1 ; ; bn )T . Resulta entonces:

a1k : = ark ; ark := a1k ; k = 1; ; n;


ajk : = ajk ; j = 2; ; n; j 6= r;
b1 : = br ; br := b1 ;
bj : = bj ; j = 2; ; n; j 6= r:

3. Eliminar en el sistema Ax = b la incógnita x1 de la segunda hasta


la n-ésima ecuación, por sustracción de la j-ésima ecuación el producto de la
primera ecuación con el factor aj1 =a11 , para j = 2; ; n. Resultando:

a11 x1 +a12 x2 + +a1n xn = b1


(1) (1) (1)
a22 x2 + +a2n xn = b2
.. .. .. ..
. . . .
(1) (1) (1)
an2 x2 + +ann xn = bn
con
(1) aj1
ajk := ajk a1k j; k = 2; ;n
a11
(1) aj1
bj := bj b1 j = 2; ;n
a11
Se sigue aplicando este método al sistema que nos queda, en las …las 2 hasta
la n:
Aplicar el pivoteo parcial buscando
(1) (1) (1)
jar(1) 2 j = maxfja22 j; ; jan2 jg

Intercambiando las …las se obtiene


(1) (1) (1) (1)
a2k := ar(1) k ; ar(1) k := a2k ; k = 2; ; n;

(1) (1) (1)


b2 := br(1) ; br(1) := b2 :
Eliminación: Sustraer a la ecuación a la j-ésima el producto de la segunda
ecuación con
(1)
aj2
(1)
; j = 3; ;n
a22
Resultando
a11 x1 +a12 x2 + a13 x3 + +a1n xn = b1
(1) (1) (1) (1)
a22 x2 + a23 x3 + +a2n xn = b2
(2) (2) (2)
a33 x3 + +a3n xn = b3
.. .. .. ..
. . . .
(2) (2) (2)
an3 x3 + ann xn = bn

3
con
(2) (1) aj2 (1)
ajk := ajk a22 a2k j; k = 3; ;n
(1)
(2) (1) aj2 (1)
bj := bj (1) b2 j = 3; ;n
a22

Por lo general:
Pivoteo: Buscar r(k 1)
tal que
(k 1) (k 1) (k 1)
jar(k 1) k j = maxfjakk j; ; jank jg

Cambiar las ecuaciones k y r(k 1) .


Eliminar xk de las ecuaciones con los números k + 1; ; n, substrayendo
(k 1)
ajk
el (k 1) múltiple de la k-ésima ecuación, de las ecuaciones con los números
akk
j = k + 1; ; n.
En la n-ésima …la, la eliminación no es necesaria. Al …nal resulta el siguiente
sistema:
a11 x1 +a12 x2 + a13 x3 +a14 x4 + +a1n xn = b1
(1) (1) (1) (1) (1)
a22 x2 + a23 x3 +a24 x4 + +a2n xn = b2
(2) (2) (2) (2)
a33 x3 +a34 x4 + +a3n xn = b3
(3) (3) (3)
+a44 x4 + +a4n xn = b4
.. ..
. .
(n 1) (n 1)
ann xn = bn

NOTACION:
Operación Signi…cado
fj fk : Intercambiar la …la j por la …la k
fj fj L fk : Restar al …la j la …la k multiplicado por L

Ejemplo Solucione el siguiente sistema lineal mediante el algoritmo de Gauss-


jordan cálculando con seis cifras decimales.

6x1 + 8x2 x3 4x4 =5


3x1 + x2 + 4x3 + 11x4 =2
10x1 7x2 + 3x3 + 5x4 =6
5x1 9x2 2x3 + 4x4 =7

Consideramos la matriz asociada al sistema lineal


0 1
6 8 1 4 5
B 3 1 4 11 2 C
W=(Ajb)=@ B C
10 7 3 5 6 A
5 9 2 4 7

4
Los cálculos deben realizarse con la mayor precisión, con la mayor cantidad
de decimales. En este caso sin pérdida de precisión, por comodidad y para tener
una mejor visualización no se colocaran los ceros a la derecha de los números.
Iniciando con la 1ra columna W[1:n];1 ;, cuyo mayor elemento en valor absoluto
es w31 = 10, ubicado en la 3ra …la. Intercambiamos la 1ra …la con la 3ra .
0 1
6 8 1 4 5
B 3 1 4 11 2 C
W = B @ 10
Cf f
7 3 5 6 A 1 !3
5 9 2 4 7
0 1
10 7 3 5 6
B 3 1 4 11 2 C
W=B @ 6
C
8 1 4 5 A
5 9 2 4 7

Elemento pivote w11 = 10.


En la 2da …la: L = w21 =w11 = 3=10 = 0:3

f2 L f1 = [3 1 4 11 2] 0:3 [10 7 3 5 6])


= [0 3:1 3:1 9:5 0:2]

Luego

f2 f2 L f1
W ;
= f2 0:3 f1
0 1
10 7 3 5 6
B 0 3:1 3:1 9:5 0:2 C
W=B@ 6 8
C
1 4 5 A
5 9 2 4 7

En la 3da …la: L = w31 =w11 = 6=10 = 0:6

f3 L f1 = [ 6 8 1 4 5] ( 0:6) [10 7 3 5 6])


= [0 3:8 0:8 1 8:6]

W f3 f3 L f1
0 1
10 7 3 5 6
B 0 3:1 3:1 9:5 0:2 C
B
W=@ C
0 3:8 0:8 1 8:6 A
5 9 2 4 7

En la 4ta …la: L = w41 =w11 = 5=10 = 0:5

5
f4 L f1 = [5 9 2 4 7] (0:5) [10 7 3 5 6]
= [0 5:5 3:5 1:5 4]

Luego

W f4 f4 L f1
0 1
10 7 3 5 6
B 0 3:1 3:1 9:5 0:2 C
W=B
@ 0
C
3:8 0:8 1 8:6 A
0 5:5 3:5 1:5 4
1 0
0 1
w22 3:1
Continuamos con la 2da sub-columna W[2:n];2 = @ w32 A = @ 3:8 A,
w42 5:5
cuyo elemento mayor en valor absoluto es w42 = 5:5, ubicado en la 4ta …la.
Luego intercambiamos la 2da …la con la 4ta .
0 1
10 7 3 5 6
B 0 5:5 3:5 1:5 4 C
W f2 f4 W = B @ 0
C
3:8 0:8 1 8:6 A
0 3:1 3:1 9:5 0:2
Elemento pivote w22 = 5:5
En la 3da …la: L = w32 =w22 = 3:8=( 5:5) = 0:690909

f3 L f2 = [3:8 0:8 1 8:6]


( 0:690909) [ 5:5 3:5 1:5 4])
= [0 1:618182 0:036363 11:363636]

W f3 f3 L f2
0 1
10 7 3 5 6
B 0 5:5 3:5 1:5 4 C
W =B
@ 0
C
0 1:618182 0:036363 11:363636 A
0 3:1 3:1 9:5 0:2

En la 4ta …la: L = w42 =w22 = 3:1=( 5:5) = 0:563636

f4 L f2 = [3:1 3:1 9:5 0:2]


( 0:563636) [ 5:5 3:5 1:5 4])
= [0 1:127274 10:345454 2:454544]

6
W f4 f4 L f2
0 1
10 7 3 5 6
B 0 5:5 3:5 1:5 4 C
W =B
@ 0
C
0 1:618182 0:036363 11:363636 A
0 0 1:127274 10:345454 2:454544

w33 1:618182
Continuamos con la 3ra sub-columna W[3:n];3 = = ,
w4;3 1:127274
cuyo elemento mayor en valor absoluto es w3;3 = 1:618182, ubicado en la 3ta
…la, luego no hay necesidad de intercambiar …las.
Elemento pivote w33 = 1:618182.
En la 4ta …la: L = w43 =w33 = 1:127274=( 1:618182) = 0:696630

f4 L f3
= [1:127274 10:345454 2:454544] ( 0:696630) [ 1:618182 0:036363 11:363636])
= [0 10:370786 10:370794]

W f4 f4 L f3
0 1
10 7 3 5 6
B 0 5:5 3:5 1:5 4 C
B
W =@ C W
0 0 1:618182 0:036363 11:363636 A
0 0 0 10:370786 10:370794

10x1 7x2 +3x3 +5x4 = 6 (1)


0 5:5x2 3:5x3 +1:5x4 = 4 (2)
0 0 1:618182x3 +0:036363x4 = 11:363636 (3)
0 0 10:370786x4 = 10:370794 (4)
De (4) se obtiene

10:370786x4 = 10:370794 ) x4 = 1:000001

Reemplazando el valor de x4 en (3)

1:618182x3 + 0:036363 1:000001 = 11:363636 ) x3 = 6:999999

Reemplazando los valores de x3 y x4 en (2)

5:5x2 3:5 ( 6:999999) + 1:5 1:000001 = 4 ) x2 = 4:000000

Reemplazando los valores de x2 ; x3 y x4 en (1)

10x1 7 4:000000 + 3 ( 6:999999) + 5 (1:000001) = 6:000000


) x1 = 4:999999

7
Se obtiene la solución apróximada:

x1 = 4:999999; x2 = 4:000000; x3 = 6:999999; x4 = 1:000001:

Usando el software Octave:


>> format long
>> A=[-6 8 -1 -4; 3 1 4 11; 10 -7 3 5; 5 -9 -2 4];
>> b=[5 2 6 7 ]’;
>> x = Anb
x=
5:000000000000004
4:000000000000003
7:000000000000004
1:000000000000000
Veri…cando
norm(A*x-b)
ans = 9:688882686940761e 15
Este número es muy pequeño y se acepta la solución

x1 = 5:000000000000004; x3 = 7:000000000000004;
x2 = 4:000000000000003; x4 = 1:000000000000000:

Trabajando con quebrados a lápiz y papel o el programa LIN02:


x1 = 5; x2 = 4; x3 = 7; x4 = 1:

0.1.2 Algoritmo de Gauss-Jordan con pivoteo parcial es-


calado
De…nimos una matriz W := (wjk ) como sigue W := (A; b)
0 1
a11 a1n b1
B .. C
W := @ ... ..
. . A
an1 ann bn

La j-ésima …la de esta matriz es la siguiente:

(wj1 ; ; wjn ; wj;n+1 ) := (aj1 ; ; ajn ; bj )

funcion [x; dett] = gauss_pp_det(a; b; n)


% Método de Gauss Jordan con pivote parcial
% Entradas:
% a: matriz nxn
% b: vector columna nx1
% Salidas :
% x: Solución de a x = b
% dett: Determinante de a

8
w = (a; b) ; x = zeros(n; 1); dett = 1; j = 0;
Mientras (dett 6= 0 ^ j < n 1), hacer
j = j + 1;
Encontrar rj j con jwrj ;j j = maxfjwj;j j; jwj+1;;j j; ; jwn;j jg
dett = dett w(rj ; j);
Si (dett 6= 0)
Si (rj > j)
Intercambiar las …las j y rj de w
dett = dett;
Fin-Si
Para k = j + 1; ;n
L = w(k; j)=w(j; j); w(k; :) = w(k; :) L w(j; :);
Fin-Para
Fin-Si
Fin-hacer
dett = dett w(n; n);
Si (dett 6= 0)
A = w(:; 1 : n); B = w(:; n + 1);
[x; dett2] = triang_sup(A; B; n);
Fin-Si
Fin-gauss_pp_det

9
Se obtiene 0 1 0 1
x1 4:999999999999999
B x2 C B 4:000000000000000 C
B C B C;
@ x3 A = @ 6:999999999999999 A
x4 1:000000000000000
y
det(a) = 923:

0.1.3 La factorización LU
Buscamos una matriz triangular inferior L y una matriz triangular superior U :
0 1 0 1
l11 0 0 u11 u12 u1n
B .. C B 0 u22
B l21 l22 . C u2n C
B
L=B .
0 C; U = B B . .
C
.. C ;
. C @ . .
@ .. .. A . . . A
ln1 lnn 0 0 unn

tales que
A = LU:

0 10 10 1 0 1
l11 0 0 u11 u12 u1n x1 b1
B .. C B 0 CB C B C
B . C u22 u2n x2 b2
B l21 l22 0 CB CB C B C
B .. CB . .. .. CB .. C=B .. C
@ .
..
. A @ .. . . A@ . A @ . A
ln1 lnn 0 0 unn xn bn

l11 y1 0 0 = b1
..
l21 y1 + l22 y2 0 . = b2
.. .. ..
. . .
ln1 y1 + +lnn yn = bn

10
u11 x1 + u12 x2 + +u1n xn = y1
0 u22 x2 + +u2n xn = y2
.. .. .. ..
. . . .
0 0 unn xn = yn
Si se tiene A = LU; resolver el sistema lineal Ax = b es equivalente a
resolver L (Ux) = b o resolver

Ly = b

donde y = Ux.
Primero se resuelve Ly = b, y se obtiene y. Luego, conociendo y se resuelve
Ux = y obteniendo …nalmente x.
Si exigimos det(A) 6= 0 =) lii 6= 0, uii 6= 0, i = 1; ; n.
Algoritmo para solucionar sistemas LU :

Entrada: L matriz triangular inferior


U matriz triangular inferior (A = LU)
b := (b1 ; ; bn )T lado derecho
Calcular y1 := b1 =l1;1

Para i = 2; ;n
0 1
i 1
X
Calcular yi := @bi li;j yj A =li;i
j=1

Calcular xn := yn =unn

Para i = (n 1) ; ;1
n
X
Calcular xi := (yi uij xj )=ui;i
j=i+1

Salida: Solución x = (x1 ; ; xn )T de Ax = b

El método de Gauss implica la factorización LU , si no se aplican cambios de


…las.
La eliminación gaussiana sin cambios de …la, no siempre es posible, como lo
muestra el siguiente ejemplo:

0 1
A= tiene det(A) 6= 0
1 0

Si A tuviera una factorización LU , resultaría

l11 0 u11 u12 0 1


=
l21 l22 0 u22 1 0

11
ó
l11 u11 = 0 l11 u12 = 1
l21 u11 = 1 l21 u12 + l22 u22 = 0
Entonces l11 o u11 sería igual a cero, lo cual es una contradicción respecto a
la segunda o tercera ecuación.
Con cambios de …las, es decir, con pivoteo se puede siempre realizar el algo-
ritmo de Gauss por el siguiente teorema.
TEOREMA Para una matriz regular A existe siempre, antes de la k-ésima
eliminación el el algoritmo de Gauss, una permutación de …las, tal que el k-ésimo
elemento diagonal es distinto de cero.
En general se puede tiene el siguiente resultado:
TEOREMA Para cada matriz A existe una matriz de permutación P, tal
que el producto PA se puede factorizar como: PA = LU.
Prueba Por la multiplicación con P se puede realizar el cambio de …las. Las
matrices de permutación P contienen en cada …la y cada columna, exactamente
un elemento igual a 1, el resto es igual a cero.

0.1.4 In‡uencia de errores por redondeo


Ejemplo.- Dado el sistema

0:005x + y = 0:5
x + y = 1

5000
x= = [0:50251256281407] 0:503,
9950
4950
y= = [0:49748743718593] 0:497:
9950
Ejemplo En cálculos con punto ‡otante con dos decimales:
Tomando el elemento a11 = 0:005 como elemento pivote (no es método de
Gauss Jordan con pivot parcial)

0:005x + y = 0:5
199y = 99

99
y= 0:50 =) x 0:
199
Tomando a21 = 1 como elemento pivote (método de Gauss Jordan con pivot
parcial)
x + y = 0:5
0:995y = 0:495
0:495
y= 0:50 =) x 0:50:
0:995
lo que es mucho más exacto.

12
Multiplicando por 400 la primera ecuación del sistema lineal inicial se obtiene
el siguiente sistema equivalente
2x + 400y = 200
x + y = 1

Escogiendo a11 = 2 como elemento de pivoteo (método de Gauss Jordan con


pivot parcial) se obtiene el mismo resultado inexacto como en a). La búsqueda
del elemento de pivoteo muchas veces no tiene mucho sentido, si los coe…cientes
tienen tamaños muy diferentes.
Cantidad de operaciones del método de Gauss:
n
X1 n
X n
X n
X1 n
X
1 = (n k)
k=1 i=k+1 j=k+1 k=1 i=k+1
n
X1
= (n k)2
k=1
n
X1 n(n 1)(2n 1)
= k2 =
6
k=1

0.1.5 Condición de una matriz


Supongamos que en Ax = b se cambia el lado derecho b por b. ~ Veamos como
in‡uye esto en la solución del sistema x, que cambia a x
~. Tenemos kAxk = kbk
y
Ax = b; A~x=b~
Entonces

kx ~k = kA
x 1
b A 1 bk ~
kA 1
kkb bk ~
kAxk ~
= kA 1 k kb bk
kbk
kb bk~
kA 1 kkAkkxk ;
kbk
de donde
kx x ~k kb bk~
1
kA kkAk :
kxk kbk
De…nición El valor kA 1 kkAk es denominado la condición de la matriz A.
Se escribe
Cond(A) = Condk k (A) := kA 1 kkAk:
De…nición La condición de una matriz depende de la norma escogida. Como
1 = kIk = kA 1 Ak kA 1 kkAk se sigue Cond(A) 1:

13
Se dice que la matriz A está mal condicionada, si cond(A) es grande.
Ejemplo
1:00 0:99
A= ;
0:99 0:98
1:99 e= 1:989903
b= ;b
1:97 1:970106
1
La solución exacta de Ax = b es x = :
1
e es x 3
La solución exacta de Ae
x=b e= :
1:0203
El pequeño cambio del lado derecho

e b= 0:000097
b
0:000106
in‡uye en el cambio relativamente grande
2:0000
e x=
x
2:0203

kx x ek1 2:0203
= = 2:0203;
kxk1 1
kb bke 1 0:000106
= = 0:000053266
kbk1 1:99
2:0203
Luego el error se propaga por un factor 37928.
0:000053266
Como
9800 9900
A 1=
9900 10000
luego
1
condk:k1 (A) = kA k1 kAk1 = 19900 1:99 = 39601
Ejemplo Usando Octave/MATLAB:
>> a=[-1 4 -2 3
4 -5 2 4
3 -3 1 2
2 7 -8 9]
>> cond(a,1)
ans =
82.33333333333333
>> cond(a,inf)
ans =
74.79012345679013
(n)
Ejemplo La matriz de Hilbert Hn = hij de orden n está de…nida por

(n) 1
hij = ; i; j = 1; 2; ; n:
i+j 1

14
de donde 0 1
1 1 1
1 2 3 n
B 21 1 1 1 C
B 1 3 4 n+1 C
B 1 1 1 C
Hn = B 3 4 5 n+2 C:
B . .. .. .. .. C
@ .. . . . . A
1 1 1 1
n n+1 n+2 2n 1

En Octave/MATLAB, la matriz de Hilbert de orden n se obtiene con hilb(n).


Por ejemplo para n = 4
>> format short
>> Hn=hilb(4)
Hn =
1.00000 0.50000 0.33333 0.25000
0.50000 0.33333 0.25000 0.20000
0.33333 0.25000 0.20000 0.16667
0.25000 0.20000 0.16667 0.14286
>> format long
>> n=13;A=hilb(n);xx=ones(n,1);b=A*xx;
>> x=Anb;disp([blanks(13),’xx’,blanks(21),’x’]),disp([xx x])
>> error=norm(A*x-b),cond1_A=cond(A,1)

15

También podría gustarte