Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PARA INGENIEROS
CIVILES CI 708
2023-01
TEMARIO
1. INTRODUCCIÓN
4. DESCOMPOSICIÓN LU DE A
… a mano
TIPOS DE SISTEMAS DE ECUACIONES
2. Sistema incompatible:
]
MÉTODO DE ELIMINACIÓN DE GAUSS
clear;clc;
Verificamos el
determinante
Obtenemos la Inversa
de la Matriz y verificamos
CÁLCULO DE LA MATRIZ INVERSA
Semana 1 9 19 50 50,000.00
Semana 2 15 25 40 75,000.00
Semana 3 8 5 7 30,000.00
SOLUCIÓN EJEMPLO 01
%x1: Variable de costo por puerta.
%x2: Variable de costo por ventana.
%x3: Variable de costo por m2 de pintura.
clear;clc;
if det(A)~=0
x=inv(A)*b
else
disp('La matriz A no tiene inversa');
end
x = 3.0021
1.1820
0.0105
MT=(A(1)+A(2)+A(3))*x(1);
MT=96.0669
EJEMPLO 02
Cantera 1 45 18 17
Cantera 2 10 50 20
Cantera 3 30 30 70
clear;clc;
%x1: cantera 1.
%x2: cantera 2.
%x3: cantera 3.
if det(A)~=0
x=inv(A)*b;
else
disp('La matriz A no tiene inversa')
end
𝑼 ∗ 𝒙=𝒚 La funcion lu de
Matlab es con
𝑳∗ 𝒚 =𝒃 pivoteo
1. Hallar la factorización LU de A. [L U P]=lu(A);
2. Resolver mediante sustitución progresiva Ly = b. Resolver Ly=Pb;
3. Resolver mediante sustitución regresiva Ux= y. Resolver Ux=y;
DESCOMPOSICIÓN LU SIN Y CON PIVOTEO
Si se realiza LU sin pivoteo (en este caso se debe hacer el
código Matlab ya que la función lu de Matlab es con pivoteo).
A = LU
Ax=b
LUx = b
Ux=y
Ly=b
Si se realiza LU con pivoteo (en este caso se puede usar la
función lu de Matlab)
PA = LU
Ax=b
PAx = Pb
LUx = Pb
Ux=y
Ly=Pb
(Observa que en el caso sin pivoteo se resuelven Ly=b y Ux=y y en el caso con
pivoteo se resuelven Ly=Pb y Ux=y). matriciales.
CÓDIGO MATLAB DE LA DESCOMPOSICIÓN LU DE A SIN PIVOTEO
function[L,U]=LU(A,b)
% Este código Matlab calcula la factorización LU de A
% sin pivoteo.
% Datos de entrada:
% A : matriz asociada al sistema
% b : vector independiente del sistema
% Salida:
% L : matriz triangular inferior con unos en la % diagonal principal
% U : matriz triangular superior.
[m n] = size(A);
% Proceso de Factorización LU
U = A;
L = eye(n);
for k = 1:n-1
pivo = U(k,k)
L(k+1:n,k) = U(k+1:n,k)/pivo; % Se calculan los multiplicadores debajo de A(k,k)
for i = k+1:n
U(i,k+1:n) = U(i,k+1:n) - L(i,k)*U(k,k+1:n);
end
end
U = triu(U); % Toma la parte triangular superior de U
CÓDIGO MATLAB DE LA SUSTITUCIÓN PROGRESIVA Y REGRESIVA
function[x] = sustipro(L,b)
% Este código resuelve el sistema triangular inferior Lx=y,
donde la matriz
% % L es una matriz triangular inferior.
[m,n]=size(L);
x=zeros(n,1);
for k=1:n
x(k)=(b(k) - L(k,1:k-1)*x(1:k-1))/L(k,k);
end
function [x]=sustireg(U,b)
% Esta función resuelve el sistema triangular superior Ux=b
donde U es una
% matriz triangular superior.
[m,n]=size(U);
x=zeros(n,1);
for k=n:-1:1
x(k)=(b(k)-U(k,k+1:n)*x(k+1:n))/U(k,k);
end
DESCOMPOSICIÓN LU
EJEMPLO:
Ejemplo: 1).- = 0.333, 0.3333, 0
= 0.2, 0
= 0.625
2).- 3).-
4).- 5).-
SOLUCIÓN 01
clear;clc;
A=[3 -1 -1 0; -1 2 0 0; -1 0 2 -1; 0 0 -1 1];
B=[1 ;1; 1; 1];
[L U]=lu(A);
Resolver Ly=b;
Resolver Ux=y;
R=A(1)*X(1)+A(2)*X(2)+A(3)*X(3)
X = 2.3333
1.6667
4.3333
5.3333
MÉTODOS ITERATIVOS
MÉTODOS ITERATIVOS
Método de solución
x = Bx + c
donde B es una matriz fija de nxn y c un vector.
La sucesión de vectores se genera calculando
x(k+1) = B x(k) + c, k = 0,1,2, …
con x(0) iterado inicial dado.
MÉTODO DE JACOBI
an1 an 2 anm
a11 0 0 0 0 0 0 a12 a1m
0 a 0 a 0 0 0 0 a
22 21 2m
0 0 anm an1 an 2 0 0 0 0
A= D+L+U
MÉTODO DE JACOBI
MÉTODO DE JACOBI
Ejemplo:
MÉTODO DE JACOBI
CÓDIGO MATLAB DEL MÉTODO DE JACOBI
function [x,Er,iter,Bj,cj] = jacobi(A,b,nmax,x0,tol)
% Entrada: A,b -- matriz asociada al sistema y lado derecho
% nmax -- número máximo de iteraciones
% x0 -- vector inicial
% tol -- tolerancia dada para la convergencia
% Salida: x -- solución aproximada
% Er -- estimado del error relativo
% iter -- número de iteraciones realizadas
% Bj,cj -- matriz y vector de Jacobi
D = diag(diag(A));
L = tril(A,-1);
U = triu(A,1);
Bj = -inv(D)*(L+U);
cj = inv(D)*b;
iter = 1;
Er = 100;
%Iteraciones
while Er>tol & iter<nmax
x = Bj*x0 + cj;
Er = norm((x-x0)/x,2);
if Er < tol
return
end
x0 = x;
iter = iter + 1;
end
if Er > tol
disp('No converge con las iteraciones dadas')
end
MÉTODO GAUSS-SEIDEL
Observe que en el método de Jacobi, cuando calculamos
( k 1)
las componentes del vector x , sólo se usan las
(k )
componentes del vector xi , sin embargo, note que para
( k 1)
x
calcular i , nosotros podríamos haber usado x1 hasta
( k 1)
A= D+L+U
MÉTODO GAUSS-SEIDEL
Ejemplo:
MÉTODO GAUSS-SEIDEL
CÓDIGO MATLAB PARA EL MÉTODO GAUSS-SEIDEL
function [x,Er,iter,Bgs,cgs] = gs(A,b,nmax,x0,tol)
% Entrada: A,b -- matriz asociada al sistema y lado derecho
% nmax -- número máximo de iteraciones
% x0 -- vector inicial
% tol -- tolerancia dada para la convergencia
% Salida: x -- solución aproximada
% Er -- estimado del error relativo
% iter -- número de iteraciones realizadas
% Bgs,cgs -- matriz y vector de Gauss-Seidel
D = diag(diag(A));
L = tril(A,-1);
U = triu(A,1);
Bgs = -inv(D+L)*U;
cgs = inv(D+L)*b;
iter = 1;
Er = 100;
%Iteraciones
while Er>tol & iter<nmax
x = Bgs*x0 + cgs;
Er = norm((x-x0)/x,2);
if Er < tol
return
end
x0 = x;
iter = iter + 1;
end
if Er > tol
disp('No converge con las iteraciones dadas')
end
EJEMPLO 01
3x + 2 y + z = 1
5x + 13 y + 4z = 2
x + y - 3z = 1
x = (1/3)(1 – 2y – z)
y = (1/13)(2 – 5x – 4z)
x = (-1/3)(1 – x – y)
CONVERGENCIA DE LOS MÉTODOS DE JACOBI y GAUSS SEIDEL
Ejemplos:
ACTIVIDAD DE APRENDIZAJE TA-02
https://ayudasingenieria.com/files/METODOS_NUMERICOS/chapra.pdf
Capitulo 12- pag-280