Beruflich Dokumente
Kultur Dokumente
Programacin Numrica
Objetivos
Resolver un sistema de ecuaciones lineales
acopladas
Obtener la inversa de una matriz
Calcular el determinante de una matriz
Factorizar matrices
a11x1 + a12x2 = b1
a21x1 + a22x2 = b2
Despejando x2 y graficando
x2
x2
a11
b1
x1
a12
a12
a21
b2
x1
a22
a22
solucin
a
b
x2 21 x1 2
a22
a22
Ejemplo
Sea el sistema
3x1 + 2x2 = 18
x1 + 2x2 = 2
Despejando
x2 = 9 1.5x1
x2 = 1 + 0.5x1
(4, 3)
Tipos de soluciones
No hay solucin
Ejemplo
Infinidad de soluciones
Ejemplo
Ejemplo
x1 + x2 = 1
x1 + x2 = 1
x1 + x2 = 1
x1 + x2 =
x1 + 2x2 = 1
0.501x1 + x2 = 0.9
Determinantes
Solucin de un sistema de 3x3
La matriz del sistema es:
a11
A a21
a31
a12
a22
a32
a13
a23
a33
El determinante de A es:
a11
a12
a13
D a21
a31
a22
a32
a23
a33
a22
a11
a32
a23
a21
a12
a33
a31
a23
a21
a13
a33
a31
a22
a32
a11 a22 a33 a32 a23 a12 a21a33 a31a23 a13 a21a32 a31a22
Regla de Cramer
Cada incgnita de un sistema de ecuaciones lineales algebraicas
puede expresarse como la razn de dos determinantes con
denominados D y con numerador obtenido a partir de D, al
reemplazar la columna de coeficientes de la incgnita en cuestin
por las constantes independientes b1, b2, , bn. Por ejemplo x1 se
calcula con:
b1
b2
x1
a12
a22
a13
a23
b3 a32 a33
a11 a12 a13
a21
a31
a22
a32
a23
a33
Definicin
Un sistema lineal es un sistema de la forma:
Operaciones bsicas
Se utilizarn tres operaciones para simplificar un sistema
lineal:
1. La ecuacin Ei puede multiplicarse por una constante
distinta de cero. (Ei) (Ei)
2. La ecuacin Ej puede multiplicarse por una constante
distinta de cero y sumarse a otra ecuacin Ei. (Ei +Ej)
(Ei)
3. El orden de las ecuaciones Ei y Ei puede intercambiarse.
(Ei) (Ei)
Ejemplo
positivo
E1: x1 + x2
+ 3x4 = 4
E2: 2x1+ x2 x3 +
x4 = 1
x4 = 4
Las operaciones:
(E2 2E1)E2, (E3 3E1) E3, (E4 + E1)E4
Transforman el sistema en:
Simplificar
E1: x1 + x2
+ 3x4 = 4
E2:
- x2 x3 - 5x4 = -7
E3:
E4:
Las operaciones:
(E3 4E2)E3, (E4 +3E2) E4
Transforman el sistema en:
Simplificar
E1: x1 + x2
+ 3x4 = 4
E2:
- x2 x3 - 5x4 = -7
E3:
3x3 +13x4 = 13
E4:
-13x4 = -13
Comprobacin
E1: x1 + x2
+ 3x4 = 4
E2: 2x1+ x2 x3 +
x4 = 1
x1 = -1
x2 = 2
x3 = 0
x4 = 1
x4 = 4
E1: (-1)+(2)+3(1)= 4
E2: 2(-1)+(2)(0)+(1) = 1
E3: 3(-1)-(2)(0)+2(1)= -3
E4: -(-1)+2(2)+3(0)-(1) = 4
Solucin en Matlab
%sistema de ecuaciones
A = [1,1,0,3,4;2,1,-1,1,1;3,-1,-1,2,-3;-1,2,3,-1,4]
x = [0 0 0 0];
%operaciones
%(E2 - 2E1) -> E2
A(2,:) = A(2,:) - 2*A(1,:);
%(E3 - 3E1) -> E3
A(3,:) = A(3,:) - 3*A(1,:);
%(E4 + E1) -> E4
A(4,:) = A(4,:) + A(1,:);
%(E3 - 4E2) -> E3
A(3,:) = A(3,:) - 4*A(2,:);
%(E4 + 3E2) -> E4
A(4,:) = A(4,:) + 3*A(2,:);
x(4) = A(4,5)/A(4,4);
x(3) = (A(3,5)-A(3,4)*x(4))/A(3,3);
x(2) = (A(2,5)-A(2,3:4)*x(3:4))/A(2,2);
x(1) = (A(1,5)-A(1,2:4)*x(2:4))/A(1,1);
Actividad
Resolver
x1 + x2
+ x4 = 2
2x1 + x2 - x3 + x4= 1
4 x1 - x2 - 2x3 + 2 x4 = 0
3x1 - x2 - x3 + 2 x4 = -3
Matrices
Una matriz es un arreglo rectangular de elementos de n
renglones y m columnas.
a11
a
A aij 21
an1
a12 a1m
a22 a2 m
an 2 anm
Representacin matricial
El sistema de ecuaciones
a11 x1
a21 x1
an1 x1
a12 x2 a1m xn b1
a22 x2 a2 m xn b2
an 2 x2 anm xn bn
an1
a12 a1n . b1
a22 a2 n . b2
. .
an 2 ann . bn
Ejemplo
(E2 2E1) E2, (E3 3E1) E3,
(E4 + E1) E4
1
2
3.
1.
1 1 0
0 1 1
4
1
0 4 1 7 . 15
0
3
3
1
.
8
3 1 1 2 . 3
1 2 3 1. 4
1 1 0
0 1 1
4
5 . 7
3.
0
0
3
0
4
5 . 7
3 .
13 . 13
13. 13
a11
a
A A, b 21
an1
a22 a2 n . a2,n 1
.
.
a
an 2 ann
n , n 1
0
A
a22 a2 n . a2,n 1
.
.
a
0 ann
n , n 1
En general
xi
ai ,n 1 ai ,n xn ai ,n 1 xn 1 ... ai ,i 1 xi 1
ai ,i
ai ,n 1 j i 1 ai , j x j
n
ai ,i
Algoritmo Gauss
Entrada: nmero de incgnitas y de ecuaciones n, matriz aumentada (aij)
donde 1<= i <= n y 1<= j <= n+1.
Salida: solucin x1, x2 ... xn o mensaje de que no hay solucin
1. Para i = 1 hasta n-1
2.
3.
Si no se encuentra p
4.
5.
terminar
continuacin
6.
7.
8.
mij = aij/aii
9.
12. xn = an,n+1/ann
13. Para i = n 1 hasta 1
14.
xi = [ai,n+1-j=i+1 aijxj]/aii
Inversa
La inversa de una matriz A de n x n es una matriz A -1 tal que A x
A-1 = A-1 x A = In
Una matriz que tiene inversa se le llama matriz no singular.
Una matriz que no tiene inversa es una matriz singular.
Se cumple que:
a. La inversa es nica.
b. La inversa de una matriz no singular es no singular y (A-1)-1 = A
c. Si A y B son no singulares, (AB)-1 = B-1 A-1
Obtencin de la inversa
Sea Bj la j-sima columna de la matriz B de n x n.
b1 j
b
2j
Bj
b
nj
C AB 21
j
j
c
an1
nj
a12 a1n b1 j
a22 a2 n b2 j
an 2 ann bnj
a b
k 1 1k kj
n
k 1 2 k kj
a b
n
k 1 ank bkj
Cont.
Supongamos que A-1 existe y que A-1 = B = (bij). Entonces AB =
Iy
0
0
AB j 1
0
0
Ejemplo
1 2 1
A 2 1 0
1 1 2
1 2 1 b11 b12
AB 2 1 0 b21 b22
1 1 2 b31 b32
AB
2b11 b21
2b12 b22
b11 b21 2b31 b12 b22 2b32
b13
b23
b33
b11
9
4
1
A
9
1
3
5
9
1
9
1
3
1
9
2
9
1
3
Inversa en Matlab
function x = inversa(B)
[n dumy] = size(B);
I = eye(n);
A = [B,I];
x = zeros(n);
for i = 1 : n-1
p = i;
while p < n && A(p,i) == 0; p = p + 1; end
if p == n
fprintf('Matriz singular...');
return;
end
if p ~= i
temp = A(i,:);
A(i,:) = A(p,:);
A(p,:) = temp;
end
for j = i+1 : n
m = A(j,i)/A(i,i);
for k = 1 : 2*n
A(j,k) = A(j,k) - m*A(i,k);
end
end
end
Inversa en Matlab
if A(n,n)==0
fprintf('Matriz singular...');
return;
end
for k = 1: n
x(n,k) = A(n,n+k)/A(n,n);
for i = n-1 : -1: 1
s = A(i,n+k);
for j = i+1 : n
s = s - A(i,j)*x(j,k);
end
x(i,k) = s/A(i,i);
end
end
Tarea
1. Determine cual de las siguientes
matrices son no singulares y calcule su
inversa.
a.| 4 2 6| b.|1 2 0| c.|4 0 0|
| 3 0 7|
|2 1 -1|
|0 0 0|
|-2 -1 -3|
|3 1 1|
|0 0 3|
d.|1
|1
|2
|-1
1 -1 1| e.|4 0 0
2 -4 -2|
|6 7 0
1 1 5|
|9 11 1
0 -2 -4|
|5 4 1
0| f.|2 0 1
0|
|1 1 0
0|
|2 -1 3
1|
|3 -1 4
2|
2|
1|
3|
3
2
4 2 6
4 0 8
1 5 7 0
4 6 1 1
1 3 0 6
7 4 5 3
0 5 1 5
4 6 2 4
lgebra lineal
Definicin: dos matrices son iguales si tienen el mismo tamao
n x m y si aij = bij para todo i = 1, 2, .., n y j = 1, 2, ..., m.
Definicin: la suma de dos matrices A y B del mismo tamao n
x m es igual a una matriz C donde cij = aij + bij para todo i = 1,
2, .., n y j = 1, 2, ..., m.
Definicin: la multiplicacin de una matriz A de tamao n x m
por una escalar es una matriz de tamao n x m cuyos
elementos son aij para todo i = 1, 2, .., n y j = 1, 2, ..., m.
e. (A + B) = B + A
b. (A + B) + C = A + (B + C)
f. ( + )A = A + A
c. A + 0 = 0 + A = A
g. (A) = (A
d. A + (-A) = -A + A = 0
h. 1A = A
Multiplicacin de matrices
Sea A una matriz de n x m y B una matriz de m x p. El producto
de la matriz A por la matriz B se define como la matriz C de n x p
donde los elementos de C se calculan por:
m
Definiciones
Una matriz cuadrada es la que tiene igual nmero de renglones
que de columnas.
Una matriz diagonal es una matriz cuadrada con D =(dij) con dij
= 0 simpre que i<>j.
La matriz identidad de orden n, In = (ij) es una matriz diagonal
con ij = 1 si i = j y ij =0 si i<>j.
Una matriz triangular superior de n x n U = (uij) tiene, para
toda j = 1, 2, ..., n, los elementos
uij = 0, para cada i = j +1, j + 2, ..., n
Una matriz triangular inferior de n x n L = (lij) tiene, para toda j
= 1, 2, ..., n, los elementos
l = 0, para cada i = 1, 2, ..., j 1
Traspuesta
La traspuesta de una matriz A de n x m es una matriz At tal que
la i_sima columna de At es la misma que el i-simo rengln de
A.
Se cumple que
a. (At)t = A
b. (A + B)t = At + Bt
c. (AB)t = Bt At
d. Si A-1 existe, (A-1)t = (At)-1
Determinante
Si A es una matriz de 1 x 1, entonces det(A) = x.
Si a es de orden mayor que 1, calcule el determinante de
A como sigue:
Escoja cualquier fila o columna. para cada elemento A[i,
j] en esa fila o columna, forme el producto
(-1)(i+ j)*A[i, j]*det(menor(A[i, j]))
Donde det(menor(A[i, j])) es el determinante del menor
de A[i, j].
det(A) = suma de todos los productos para la columna o
fila seleccionada.
Propiedades
a. Si un rengln o columna tiene solo ceros, el determinante es cero.
b. Si se intercambian 2 renglones o columnas, el signo del determinante cambia
c. Si dos columnas o renglones son iguales, el determinante es cero.
d. Si se multiplica un rengln o columna por un numero real el determinante se
multiplica por ese nmero real.
e. Si se suma un mltiplo de un rengln o columna a otro rengln o columna, el
determinante no se altera.
f. El determinante de un producto de matrices es igual al producto de los
determinantes de cada una.
g. El determinante de la inversa es el inverso del determinante de la matriz
original.
Determinante en Matlab
function x = determinante(A)
[n dumy] = size(A);
for i = 1 : n-1
p = i;
while p < n && A(p,i) == 0;
p = p + 1;
end
if p == n
x = 0;
return;
end
if p ~= i
temp = A(i,:);
A(i,:) = A(p,:);
A(p,:) = temp;
end
for j = i+1 : n
m = A(j,i)/A(i,i);
for k = 1 : n
A(j,k) = A(j,k) - m*A(i,k);
end
end
end
if A(n,n)==0
x = 0;
return;
end
p = 1;
for i = 1:n
p = p*A(i,i);
end
x = p;
Descomposicin LU
La descomposicin LU transforma una matriz a en el producto de dos matrices
triangulares
A = LU
(1)
Donde L es triangular inferior y U es triangular superior.
Un sistema Ax = b se puede escribir como
LUx = b
Si hacemos
Ux = d
Obtenemos
Ld = b
(2)
(3)
(4)
a11
a
21
a31
a12
a22
a32
a13
a23
a33
x1 b1
x b
2 2
x3 b3
a11
f
21
f 31
a12
a'22
f 32
a13
a '23
a' '33
a12
a'22
0
1
L f 21
f 31
a13
a '23
a' '33
0
1
f 32
0
1
Ejemplo
Los valores de f 21, f 31 son
3 0.1 0.2
A 0.1
7
0.3
0.3 0.2 10
0.2
f 31 = 0.3/3 = 0.1
0 .1
f 21 = 0.1/3 = 0.033333 y
f 32 = 0.19/7.003333 = 0.027130
0 .2
0.03333
7.00333
0.29333
0.1
0.027130 10.0120
3
El valore de f 32 es
0.1
0 .1
0.2
3
U 0 7.00333 0.29333
0
0
10.0120
L 0.03333
1
0
0.1
0.027130 1
0 3
0.1
0 .2
0.03333
1
0 0 7.00333 0.29333
0 .1
0.027130 1 0
0
10.0120
1
0.099999
0.3
0 .1
7
0.2
0.3
0.2 9.99996
Algoritmo
Sub Decompose(a, n)
DoFor k=1, n 1
DoFor i=k+1, n
factor = ai,k/ak,k
ai,k = factor
DoFor j=k+1, n
ai,j = ai,j factor * ak,j
EndDo
EndDo
EndDo
End Decompose
0 d1 b1
0 d 2 b2
1 d 3 b3
d1 b1
l21d1 d 2 b2
l31d1 l32 d 2 d 3 b3
a12
a '22
0
a13 x1 d1
a '23 x2 d 2
a '33 x3 d 3
x3 d 3
a '22 x2 a '23 x1 d 2
a11 x1 a12 x2 a13 x3 d1
Ejemplo
3 0.1 0.2 x1 7.85
0.1
x 19.3
7
0
.
3
1
0
0 d1 7.85
Ld 0.03333
1
0 d 2 19.3
0.1
0.027130 1 d 3 71.4
0 .1
0.2
3
Ux 0 7.00333 0.29333
0
0
10.0120
d1 7.85
0.3333d1 d 2 19.3
d1 7.85
d 2 19.5617
d 3 70.0843
x1 3
x1 7.58
x 19.5617
x2 2.5
2
x3 70.0843 x3 7.00003
Sea el sistema:
-6x1 + x2
4x1 + 3x2
5x1 - 3x2
Ejemplo
+ x3 = -37
+ x3 = -25
+ x3 = -34
La descomposicin LU nos da
6 1 1
A 4
3 1
5 3 1
L .6667
1
0
.8333 .5909 1
1
1
6
U 0 3.6667 1.6667
0
0
2.8182
0 z1 37
Ly .6667
1
0 z 2 25
.8333 .5909 1 z3 34
1
1
6
Ux 0 3.6667 1.6667
0
0
2.8182
37
b 25
34
x1 37
x 49.667
2
x3 94.180
z1 = -37
-.6667z1 + z2 = -25
-.8333z1 - .5909z2 + z3 = -34
2.8182x3 = -94.180
3.6667x1 + 1.6667x2 = -49.667
-6x1 + x2 + x3 = -37
X1 = 0.87097
X2 = 1.64516
X3 = -33.41935
Pivoteo
La descomposicin LU se implementa con el algoritmo de Gauss. Si se modifica
el orden de las filas, se deber tomar en cuenta este hecho.
El algoritmo siguiente genera una matriz P de permutacin para tomar en cuenta
el intercambio de filas.
La matriz de permutacin se obtiene intercambiando renglones en una matriz
identidad. Por ejemplo, la siguiente matriz intercambia el primer y segundo de
una matriz A al premultiplicarla por A.
El guin regresa
0 1 0
P 1 0 0
0 0 1
PA = LU
La ecuacin original se escribe
PAx = Py
O
LUx = y
Algoritmo en Matlab
function [l u p]= descomposicionLU(a)
%l matriz triangular inferior
%u matriz triangular superior
%p matriz de permutaciones
lu = a;
[n muda] = size(a);
p = eye(n);
psigno = 1;
for k=1:n
j = k;
for i = k+1:n
% encontrar pivote
if abs(lu(i,k))>abs(lu(j,k))
j = i;
end
end
if j!= k
% intercambia con el pivote
t = lu(j,:); lu(j,:) = lu(k,:); lu(k,:) = t;
t = p(j,:); p(j,:) = p(k,:); p(k,:) = t;
psigno = -psigno;
end
if lu (k,k) != 0
for i = k+1:n
lu(i,k) = lu(i,k)/lu(k,k);
for m=k+1:n
lu(i,l) = lu(i,m)-lu(i,k)*lu(k,m);
end
end
end
end %fin lazo k
for i = 1:n
for j = 1:n
if i>j
l(i,j) = lu(i,j);
elseif i==j, l(i,j) = 1; elsel(i,j) = 0;
end
end
end
for i = 1:n
for j = 1:n
if i<=j, u(i,j) = lu(i,j); else u(i,j) = 0;
end
end
end
Tarea
1. Factorice las siguientes matrices en la
descomposicin LU con Octave y con los guiones para
LU. Haga a mano el producto PLU y confirme que es
igual a la matriz original. Utilice 3 cifras despus
del punto decimal.
a.| 4 2 6| b.|1 2 6| c.|1 3 8|
| 3 5 7|
|2 1 -1|
|0 7 0|
|-2 -1 3|
|3 1 1|
|1 7 3|
d.| 1 -1 -1 1| e.|4 0 4 0| f.|1 3 1 2|
| 1 2 -4 -2|
|6 7 1 5|
|8 1 -6 2|
| 2 1 1 5|
|7 1 1 0|
|2 -4 3 -1|
|-1 6 -2 -4|
|2 4 1 1|
|3 -2 4 3|
2. Encuentre los determinantes de las matrices
anteriores
Aplicacin
Una red elctrica puede representarse por medio de un sistema de ecuaciones.
Supongamos una red que consista solo de resistencias y fuentes de voltaje
independientes.
El sistema a resolver es
RI = V
Donde R es la matriz de resistencias de la red, V es un vector donde cada
componente es el voltaje de la malla e I es el vector de corrientes a determinar.
La matriz de resistencias tiene la siguiente forma
R11
R
21
Rn1
.
. Rnn
Anlisis de redes
R2
R1
I1
R4
V3
I3
R3
R5
V2
R7
R1 R2 R4
R5
R4
R5
R3 R5 R6
0
R6
R4
0
R4 R7
0
V1
I2
R6
I4
R9
R8
R6
R6 R8 R9
I1 0
I V
1
2
I 3 V3 V2
I
V
2
4
Solucin en Matlab
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
Solucin en Matlab
nn = 1;
%almacena todos los datos en el vector a
a = textread('malla.txt');
nm = a(nn);nn = nn+1;
nr = a(nn);nn = nn+1;
%lee cada elemento
for n = 1:nr
res(n) = a(nn);nn = nn+1;
m1(n) = a(nn);nn = nn+1;
m2(n) = a(nn);nn = nn+1;
end
%descripcion de los datos leidos
for n = 1:nr
fprintf('R%d=%6.3f entre malla %d y %d\n',n,res(n),m1(n),m2(n));
end
%Leer voltajes de malla y los despliega
for n = 1:nm
v(n) = a(nn);nn = nn+1;
fprintf('Voltaje de malla %d = %12f8:\n',n,v(n))
end
Solucin en Matlab
%crea matriz de resistencias
r = zeros(nm);
for n = 1:nr
j = m1(n);
k = m2(n);
if k~=0
r(k,k) = r(k,k) + res(n);
r(j,k) = r(j,k) - res(n);
r(k,j) = r(j,k);
end
r(j,j) = r(j,j) + res(n);
end
%imprime matriz de resistencias
fprintf('Matriz de resistencias');
r
%calcula corrientes
amp = inv(r)*v';
%imprimir resultados
for n = 1:nm
fprintf('Corrientes de malla %d = %12f8:\n',n,amp(n))
end
Ejemplo numrico
Nmero de mallas
Nmero de resistencias
38.9
I5
I1
3492
1017
949
Valor de resistencia
837
4821
42.1
I2
I4
986
Malla 1
Malla 2
842
59.76
5732
I3
5670
5
9
1017
1
3
3492
1
2
837
2
4
949
2
0
842
3
5
4821
3
4
986
4
0
5732
4
5
5670
5
0
38.9
0
42.1
0
59.76
Resultados
R1=1017.000 entre malla 1 y 3
R2=3492.000 entre malla 1 y 2
R3=837.000 entre malla 2 y 4
R4=949.000 entre malla 2 y 0
R5=842.000 entre malla 3 y 5
R6=4821.000 entre malla 3 y 4
R7=986.000 entre malla 4 y 0
R8=5732.000 entre malla 4 y 5
R9=5670.000 entre malla 5 y 0
Voltaje de malla 1 = 38.900000
Voltaje de malla 2 = 0.000000
Voltaje de malla 3 = 42.100000
Voltaje de malla 4 = 0.000000
Voltaje de malla 5 = 59.760000
Matriz de resistencias
r=
4509 -3492 -1017
0
0
-3492 5278
0 -837
0
-1017
0 6680 -4821 -842
0 -837 -4821 12376 -5732
0
0 -842 -5732 12244
Corrientes de malla 1 =
Corrientes de malla 2 =
Corrientes de malla 3 =
Corrientes de malla 4 =
Corrientes de malla 5 =
0.036338
0.027346
0.028966
0.020833
0.016626
2 1 1
4 2 3
1 2 1
1 1 1
a ) 3 3 9 b) 3 1 4 c) 0 1 1 d ) 0 2 3
3 3 5
2 4 5
2 4 0
0 1 1
2 1 0
1 2 1
0 1 2
2 1 1
3 4 1
1 1 1
x1
x2
x3
1
2
3
x1
x2
x3
4
5
6