Escolar Documentos
Profissional Documentos
Cultura Documentos
CONTENIDO:
Factorización Directa de Matrices: Doolittle. Crout. Choleski.
Sistemas Tridiagonales. Aplicación a los Circuitos Eléctr.
MÉTODOS DE FACTORIZACIÓN DE MATRICES: A=LU
a) Factorización Doolitle.
b) Factorización de Crout.
c) Factorización de Cholesky.
3
con ciertas condiciones,
sobre las entradas de L o U.
4
4 1 1 1
A= 1 3 -1 1
1 -1 2 0
1 1 0 2
Solución:
A=[4 1 1 1; 1 3 -1 1; 1 -1 2 0; 1 1 0 2];
%Aplicamos en A las operaciones elementales fila
%correspondientes para obtener la matriz triangular
%superior U, esto es:
A(4,:)= -A(3,:) + A(4,:);
A(3,:)= -A(2,:) + A(3,:);
A(2,:)= -1/4*A(1,:) + A(2,:);
A(3,:)= 16/11*A(2,:) + A(3,:);
A(4,:)= -8/11*A(2,:) + A(4,:);
A(4,:)= 12/13*A(3,:) + A(4,:);
U=A %aqui U es la matriz triangular superior que hallamos
5
A=[4 1 1 1; 1 3 -1 1; 1 -1 2 0; 1 1 0 2];
6
l=zeros(4);
l(1,1)=A(1,1)/U(1,1);
l(2,1)=A(2,1)/U(1,1);
l(3,1)=A(3,1)/U(1,1);
l(4,1)=A(4,1)/U(1,1);
l(2,2)=(A(2,2)-l(2,1)*U(1,2))/U(2,2);
l(3,2)=(A(3,2)-l(3,1)*U(1,2))/U(2,2);
l(4,2)=(A(4,2)-l(4,1)*U(1,2))/U(2,2);
l(4,3)=(A(4,3)-l(4,1)*U(1,3)-l(4,2)*U(2,3))/U(3,3);
l(3,3)=(A(3,3)-l(3,1)*U(1,3)-l(3,2)*U(2,3))/U(3,3);
l(4,4)=(A(4,4)-l(4,1)*U(1,4)-l(4,2)*U(2,4)-l(4,3)*U(3,4))/U(4,4)
7
% Verificando con el comando directo lu():
A =
4.0000 1.0000 1.0000 1.0000
1.0000 3.0000 -1.0000 1.0000
1.0000 -1.0000 2.0000 -0.0000
1.0000 1.0000 0.0000 2.0000
[L U]=lu(A)
L =
1.0000 0 0 0
0.2500 1.0000 0 0
0.2500 -0.4545 1.0000 0
0.2500 0.2727 0.0769 1.0000
U =
4.0000 1.0000 1.0000 1.0000
0 2.7500 -1.2500 0.7500
0 0 1.1818 0.0909
0 0 0 1.5385
8
Observación: En el ejercicio anterior, al no haber ejecutado
una operación elemental de cambio de fila, la matriz
correspondiente, de permutación (cambio) de fila: P,
resulta ser la identidad, podemos visualizar esto con el
propio comando lu(A), esto es:
L=
1.0000 0 0 0
0.2500 1.0000 0 0
0.2500 -0.4545 1.0000 0
0.2500 0.2727 0.0769 1.0000
9
U=
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
10
aplicando las operaciones elementales fila como en el
ejemplo anterior, se llega a un cambio de fila en el proceso
(¡Verifique!), evidenciando esto se tiene la correspondiente
matriz P de permutación de fila , esto es:
L=
1.0000 0 0 0
0.2500 1.0000 0 0
0.2500 0.2727 1.0000 0
0.2500 -0.4545 0.2321 1.0000
11
U=
P=
1 0 0 0
0 1 0 0
0 0 0 1
0 0 1 0
12
Ahora aplicando esta factorización para la resolución de un sistema lineal , se
procede de la siguiente forma: Se quiere resolver el sistema AX=B donde
UX=Y y LY=B
Luego se resuelve LY=B por sustitución progresiva :
= 3.000
= 3.2500
= = -0.2727
= 0.3846
Finalmente:
0.5
1.0
-0.25
0.25
14
Forma Computacional Codificando en Matlab
A=[4 1 1 1; 1 3 -1 1; 1 -1 2 0; 1 1 0 2];
>> [ L U ]=lu(A)
L=
1.0000 0 0 0
0.2500 1.0000 0 0
0.2500 -0.4545 1.0000 0
0.2500 0.2727 0.0769 1.0000
U=
4.0000 1.0000 1.0000 1.0000
0 2.7500 -1.2500 0.7500
0 0 1.1818 0.0909
0 0 0 1.5385
15
>B=[3 4 -1 2] ;
>> y=L\B
y=
3.0000
3.2500
-0.2727
0.3846
>> x=U\y
x=
0.5000
1.0000
-0.2500
0.2500 16
17
18
19
20
21
22
23
Forma Computacional Codificando en Matlab
24
A=input('Ingrese la matriz A = \n');
b=input('\n Ingrese el vector b,
correspondiente a los terminos
independientes b=\n');
% Las matrices A y b deben ser ingresadas
entre corchetes separando las %columnas
%mediante coma ',' y las filas mediante
punto y coma ';'.
[n,m]=size(A);
C=[A,b];
L=zeros(n);
u=zeros(n);
y=length(m);
x=length(n);
25
% la matriz C, representa la forma de la
matriz aumentada [Ab]
disp(C)
if n==m
for k=1:n
%La instruccion iterativa for permite repetir
estamentos %a un numero especifico de veces
suma1=0;
for p=1:k-1
suma1=suma1+L(k,p)*u(p,k);
end
L(k,k)=sqrt(A(k,k)-suma1);
u(k,k)=L(k,k); %inicio del metodo
for i=k+1:n
suma2=0;
26
for q=1:k-1
suma2=suma2+L(i,q)*u(q,k);
end
L(i,k)=(A(i,k)-suma2)/L(k,k); %obtencion
de la matriz L
end
for j=k+1:n
suma3=0;
for r=1:k-1
suma3=suma3+L(k,r)*u(r,j);
end
u(k,j)=(A(k,j)-suma3)/L(k,k); %obtencion
de la matriz U
end
end
27
producto=det(L)*det(u) %calculo del
determinante
if producto~=0
for i=1:n
suma=0;
for p=1:i-1
suma=suma+L(i,p)*y(p);
end
y(i)=(b(i)-suma)/L(i,i); %obtencion del
vector y
end
for i=n:-1:1
suma=0;
for p=i+1:n
suma = suma+u(i,p)*x(p);
end 28
x(i)=(y(i)-suma)/u(i,i); % vector solucion
end
else
fprintf('\n El determinante es igual a
cero, por lo tanto el sistema tiene
infinitas o ninguna solucion\n')
end
end
fprintf('\n Matriz Ab:\n')
disp(C)
fprintf('\n Matriz L:\n')
disp(L)
fprintf('\n Matriz U:\n')
disp(u)
fprintf('\n El vector y:\n')
disp(y) 29
fprintf('\n\n La solucion de X1 hasta Xn
es:\n');
%resultados de una manera mas ordenada:
for i=1:n
xi=x(1,i);
fprintf('\nX%g=',i)
disp(xi);
end
Comando : chol(A)
30
31
APLICACIÓN A LOS CIRCUITOS ELÉCTRICOS
32
y 6 trayectorias cerradas:
33
34
35
36
37
Ley de Ohm: V = I.R , donde
I representa la intensidad de corriente (o corriente) dada en amperios.
V representa la diferencia de potencial o tensión de voltaje dado en
voltios.
R representa la resistencia dada en ohms.
•2ª Ley de Kirchhoff de Voltajes para Mallas (LVK):
38
Aumento de tensión – Suma de las caídas de tensión = 0 (*)
39
Por la Ley de Ohm:
40
41
42
(S)
43
44
Aa =
3 -2 0 10
-2 9 -4 0
0 -4 9 -20
Aa =
3 -2 0 10
0 23/3 -4 20/3
0 -4 9 -20
Aa =
3 -2 0 10
0 23/3 -4 20/3
0 0 159/23 -380/23
45
Verificando los resultados, usando el comando rref( ):
Y=
1 0 0 490/159
0 1 0 -20/53
0 0 1 -380/159
X=
490/159
-20/53
-380/159
46
47
Solución:
48
49
50
(T)
51
C=[R1+R3+R7 R3 -R7;R3 R3+R2+R4 0; -R7 0 R6+R7+R5];
d=[E1; E2; -E3+E2]
X=rref([C d])
SALIDA :
X = %SOLUCION
1 0 0 1710/131
0 1 0 218/181
0 0 1 1207/179
52
53
54
Se recomienda que en la mayoría de los circuitos, que se puedan hacer, se
dejen todas las corrientes y todos los voltajes positivos en el caso del método
de mallas, pues resulta más fácil resolver el circuito. Así cambiaremos la
corriente -2 A por positiva, para tal cambiamos la dirección del flujo de corriente.
Luego, para cada nodo estableceremos la dirección de la corriente (pues no
conocemos la dirección real) así como se hizo en el método de mallas.
Supongamos que de los 3 nodos salen las corrientes en esas direcciones que
hemos querido fijar (ver siguiente figura), con excepción de las direcciones de
las dos fuentes de alimentación que no podemos cambiar. Como ya en todos los
nodos se establecieron las direcciones de corriente, aplicaremos la ley de
Kirchhoff en los 3 nodos. 55
56
57
>> Aa=[2.25 -2 -0.25 1.5; -2 3.5 -0.5 0; -0.25 -0.5 0.75 2]
Aa =
>> C=rref(Aa)
C=
1.0000 0 0 4.5000
0 1.0000 0 3.5000
0 0 1.0000 6.5000