CONTINUACION
DE LOS PROGRAMAS DE NUMERICO (2DA. PARTE)
PROG19.M
function prog19(a,c,maxit,Es)
% Definición de varialbles :
% a = matriz de coeficientes del sistema
% c = vector columna de segundo miembro
% x = vector columna de incognitas
% m = numero de ecuaciones
% maxit = número máximo de iteraciones
% Es = Error estimado ( tolerancia )
% Ea = Error aproximado porcentual
% Este es un programa que sirve para calcular las raices de un sistema
de ecuaciones Ax = b ,
% por método iterativo Jacobi sin pivoteo
% Se recomienda usar con:
%
a=[1 7 -4;4 -4 9;12 -1 3]
%
c=[-51 62 8]'
%
maxit=5
%
land=1
%
Es= 5 %
%%%%%%%%%%%%%%%%%%
clc
b=[a,c];
[m n]=size(b);
x=zeros(n,1);
for i=1:m
dummy=a(i,i);
for j=1:m
a(i,j)=a(i,j)/dummy;
end
c(i)=c(i)/dummy;
end
sentimel=0;
iter=0;
z=zeros(n,1);
while (iter<maxit) & (sentimel==0)
sentimel=1;
iter=iter+1;
fprintf('iteración Nº %d\n',iter)
for i=1:m
sentimel=1;
old=x(i);
sum=c(i);
for j=1:m
if (iter == 1) & (i == j)
sum=sum-a(i,j)*x(j);
else
if i ~= j
sum=sum-a(i,j)*z(j);
end
end
end
x(i)=sum;
if (sentimel==1) & (x(i)~=0)
Ea=abs((x(i)-old)/x(i))*100;
if Ea > Es
sentimel=0;
end
end
fprintf('X[%d] = %2.9f %2.9f\n',i,x(i),Ea)
end
z=x;
disp(' ')
end
PROG20.M
function prog20(A,b,maxit,Es)
% Este es un programa que sirve para calcular las raices de un sistema
de
% ecuaciones Ax = b , por método iterativo Jacobi con pivoteo
% Se recomienda usar los valores anteriores.
%%%%%%%%%%%%%%%%%%%%%%%
clc
[m n]=size(A);
x=zeros(n,1);
for k=1:n
pivot
dummy=A(k,k);
for j=1:n
A(k,j)=A(k,j)/dummy;
end
b(k)=b(k)/dummy;
end
sentimel=0;
iter=0;
z=zeros(n,1);
while (iter<maxit) & (sentimel==0)
sentimel=1;
iter=iter+1;
fprintf('iteración Nº %d\n',iter)
for i=1:m
sentimel=1;
old=x(i);
sum=b(i);
for j=1:m
if (iter == 1) & (i == j)
sum=sum-A(i,j)*x(j);
else
if i ~= j
sum=sum-A(i,j)*z(j);
end
end
end
x(i)=sum;
if (sentimel==1) & (x(i)~=0)
Ea=abs((x(i)-old)/x(i))*100;
if Ea > Es
sentimel=0;
end
end
fprintf('X[%d] = %2.9f %2.9f\n',i,x(i),Ea)
end
z=x;
end
PROG21.M
function prog21(a,c,maxit,land,Es)
% Definición de varialbles :
% a = matriz de coeficientes del sistema
% c = vector columna de segundo miembro
% x = vector columna de incognitas
% m = numero de ecuaciones
% maxit = número máximo de iteraciones
% Es = Error estimado ( tolerancia )
% Ea = Error aproximado porcentual
% Este es un programa que sirve para calcular las raices de un sistema
de
% ecuaciones Ax = b , por método iterativo Gauss-Seidel sin
pivoteo
% Se recomienda usar con:
%
a=[1 7 -4;4 -4 9;12 -1 3]
%
c=[-51 62 8]'
%
maxit=5
%
land=1
%
Es= 5 %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc
b=[a,c];
[m n]=size(b);
for i=1:m
x(i)=0;
end
for i=1:m
dummy=a(i,i);
for j=1:m
a(i,j)=a(i,j)/dummy;
end
c(i)=c(i)/dummy;
end
sentimel=0;
iter=0;
while (iter<maxit) & (sentimel==0)
sentimel=1;
iter=iter+1;
fprintf('iteración Nº %d\n',iter)
for i=1:m
sentimel=1;
old=x(i);
sum=c(i);
for j=1:m
if i~=j
sum=sum-a(i,j)*x(j);
end
end
x(i)=land*sum+(1-land)*old;
if (sentimel==1) & (x(i)~=0)
Ea=abs((x(i)-old)/x(i))*100;
if Ea > Es
sentimel=0;
end
end
fprintf('X[%d] = %2.9f %2.9f\n',i,x(i),Ea)
end
disp(' ')
end
PROG22.M
function x=prog22(A,b,maxit,land,Es)
% Este es un programa que sirve para calcular las raices de un sistema
de
% ecuaciones Ax = b , por método iterativo Gauss-Seidel con
pivoteo
% Se recomienda usar los valores anteriores.
%%%%%%%%%%%%%%%%%%%%%%
clc
[m n]=size(A);
x=zeros(n,1);
A
for k=1:n
pivot
dummy=A(k,k)
pause
for j=1:n
A(k,j)=A(k,j)/dummy
pause
end
b(k)=b(k)/dummy
pause
end
sentimel=0;
iter=0;
while (iter<maxit) & (sentimel==0)
sentimel=1;
iter=iter+1;
fprintf('iteración Nº %d\n',iter)
for i=1:n
sentimel=1;
old=x(i);
sum=b(i);
for j=1:n
if i~=j
sum=sum-A(i,j)*x(j);
end
end
x(i)=land*sum+(1-land)*old;
if (sentimel==1) & (x(i)~=0)
Ea=(abs((x(i)-old)/x(i))*100);
if Ea > Es
sentimel=0;
end
end
fprintf('X[%d] = %2.9f %2.9f\n',i,x(i),Ea)
end
disp(' ')
end
PROG23.M
function prog23(A)
% Definición de variables :
% A = matriz de coeficientes del sistema
% Este es un programa que sirve para calcular la inversa de una matriz
% cuadrada sin pivoteo
% Se recomienda usar con la matriz:
%
A=[1 7 -4;4 -4 9;12 -1 3]
%%%%%%%%%%%%%%%%%%%%
clc
A
a=[A,eye(size(A))];
[m n]=size(a);
for k=1:m
dummy=a(k,k);
for j=1:n
a(k,j)=a(k,j)/dummy;
end
for i=1:m
if i ~= k
dummy=a(i,k);
for j=1:n
a(i,j)=a(i,j)-dummy*a(k,j);
end
end
end
end
disp('
La matriz inversa es :')
disp('
______________________')
disp(' ')
A1=a(1:m,m+1:n)
disp(' Comprobación de A * A1 :')
disp(' ------------------------')
A*A1
PROG24.M
function prog24(A)
% Definición de variables :
% A = matriz de coeficientes del sistema
% pivot1 = subrutina que calcula el pivoteo
parcial
% Este es un programa que sirve para calcular la inversa de una matriz
% cuadrada con pivoteo
% Se recomienda usar con la matriz anterior.
%%%%%%%%%%%%%%%%%%%
clc
A
a=[A,eye(size(A))];
[m n]=size(a);
for k=1:m
pivot1
dummy=a(k,k);
for j=1:n
a(k,j)=a(k,j)/dummy;
end
for i=1:m
if i ~= k
dummy=a(i,k);
for j=1:n
a(i,j)=a(i,j)-dummy*a(k,j);
end
end
end
end
disp('
La matriz inversa con pivoteo es :')
disp('
_________________________________')
disp(' ')
A1=a(1:m,m+1:n)
PROG25.M
function prog25(a)
% Definición de variables :
% a = matriz de coeficientes del sistema
% Este es un programa que sirve para calcular la descomposición
A=LU, según el
% Algoritmo de CROUT sin pivoteo
% Se recomienda usar con la matriz:
%
a=[1 7 -4;4 -4 9;12 -1 3]
%%%%%%%%%%%
clc
disp(' Descomposición
A=LU [Algoritmo de CROUT]')
disp(' ________________________________________')
disp(' ')
a
[m n]=size(a);
for j=2:n
a(1,j)=a(1,j)/a(1,1);
end
for j=2:n-1
for i=j:m
sum=0;
for k=1:j-1
sum=sum+a(i,k)*a(k,j);
end
a(i,j)=a(i,j)-sum;
end
for k=j+1:n
sum=0;
for i=1:j-1
sum=sum+a(j,i)*a(i,k);
end
a(j,k)=(a(j,k)-sum)/a(j,j);
end
end
sum=0;
for k=1:n-1
sum=sum+a(n,k)*a(k,n);
end
a(n,n)=a(n,n)-sum;
l=tril(a)
u=triu(a);
for i=1:n
u(i,i)=1;
end
u
disp(' Comprobación de L*U = A')
disp(' -----------------------')
l*u
PROG26.M
function prog26(a)
% pivot1 = subrutina que calcula el pivoteo parcial
% Este es un programa que sirve para calcular la descomposición
A=LU
% según el Algoritmo de CROUT con pivoteo
%%%%%%%%%%%%%%%%%%%%%%
clc
a
disp(' Descomposición A=LU
[Algoritmo de CROUT] con pivoteo')
disp(' ____________________________________________________')
disp(' ')
[m n]=size(a);
for k=1:m
pivot1
end
disp(' Matriz A pivoteada')
disp(' ------------------')
a
for j=2:n
a(1,j)=a(1,j)/a(1,1);
end
for j=2:n-1
for i=j:m
sum=0;
for k=1:j-1
sum=sum+a(i,k)*a(k,j);
end
a(i,j)=a(i,j)-sum;
end
for k=j+1:n
sum=0;
for i=1:j-1
sum=sum+a(j,i)*a(i,k);
end
a(j,k)=(a(j,k)-sum)/a(j,j);
end
end
sum=0;
for k=1:n-1
sum=sum+a(n,k)*a(k,n);
end
a(n,n)=a(n,n)-sum;
l=tril(a)
u=triu(a);
for i=1:n
u(i,i)=1;
end
u
disp(' Comprobación de L*U = A')
disp(' -----------------------')
l*u
Ir al principio
Volver a la pagina principal