Sunteți pe pagina 1din 6

GAUSS JORDAN

function x = GaussJ(A,b)
% Implementacion del metodo Gauss−Jordan
% para resolver sistemas de ecuaciones
% lineales.
%%
x = GaussJordan(A,b)
%%
Regresa x, la solucion del sistema Ax=b.
%FIEE
% Se crea la matriz aumentada
A = [A b];
n = size(A,1);
for i=1:n
% Dividir renglon entre el pivote
A(i ,:) = A(i,:)/A(i, i );
% Hacer ceros en la columna i
for j=1:n
if i˜=j
A(j ,:) = A(j,:) − A(i,:)∗A(j, i );
end
end
end
x = A(:,n+1);

GAUSS-SEIDEL

function [x,err,k]=Gseidel_M(A,b,x0,tol,iter)
% Método iterativo, Gauss-Seidel matricial
% A: Matriz de coeficientes
% b: Vector de terminos
% x0: solucion inicial
% tol: tolerancia
% iter: numero de iteraciones
[n,m]=size(A);
if n~=m error('Matriz no cuadrada.'); end
k=0;
condi=0;
while (condi==0 & k<iter)
aux=-(triu(A,1))*x0+b;
x=tril(A)\aux;
err=criterr(x,x0,'absoluto');
if err<tol condi=1;
else
k=k+1;
x0=x;
end
end
PROGRAMA DE ELIMINACIÓN DE GAUSS

%Programa de Eliminación de Gauss para un SEL


clc;clear
disp(' ')
disp(' ELIMINACION GAUSS CON PIVOTE PARA S.E.L.')
disp(' ****************************************')
disp(' ')
disp(' Se tiene la ecuación matricial Ax=b')
N=input(' Ingrese el número de ecuaciones: ');
H=zeros(N,N);
A=input(' Ingrese la matriz de coeficientes A[]: ');
disp(' ')
disp([A])
b=input(' Ingrese el vector columna de terminos independientes b[]: ');
disp(' ')
disp([b]);
fprintf('La matriz ampliada es [A|b]:\n');disp([A b]);
DET=1;R=0;I=1;
while I<=(N-1)
c=0;f=0;
V=A(I:N,I);
O=max(max(abs(V)));
while c<N;
c=c+I;
f=f+I;
while c<N
e=abs(A(f,c));
if e==O;
PIVOTE=O;
P=f;
c=N+1;
else
f=f+1;
end
end
f=0;
end
if PIVOTE==0;
disp(' "Matriz singular sin solución" ');
return
end
if P~=I
C=A(I,1:N);
D=A(P,1:N);
t=b(I);
r=b(P);
A(I,1:N)=D;
A(P,1:N)=C;
b(I)=r;
b(P)=t;
R=R+1;
end
DET=DET*A(I,I);
K=I+1;
while K<=N
J=I+1;
while J<=N
A(K,J)=A(K,J)-A(K,I)*A(I,J)/A(I,I);
J=J+1;
end
b(K)=b(K)-A(K,I)*b(I)/A(I,I);
K=K+1;
end
I=I+1;
end
H=tril(A);
for g=1:N;
H(g,g)=0;
end
A=A-H;
DET=DET*A(N,N)*(-1)^R;
if DET==0
disp(' "Hay un 0 en la diagonal principal" ');
break
else
x(N)=b(N)/A(N,N);
I=N-1;
end
while I>=1
x(I)=b(I);
J=1+I;
while J<=N
x(I)=x(I)-A(I,J)*x(J);
J=J+1;
end
x(I)=x(I)/A(I,I);
I=I-1;
end
format short
disp(' La matriz triangulizada es: '),disp(' '),disp([A])
for l=1:length(x);
fprintf(' El valor de la variable x%d es: %f \n',l,x(1,l))
end
disp(' ')
fprintf(' La determinante de la matriz A es:\n'),disp(DET)

MÉTODO DE GAUSS CON PIVOTE

% INVERSA
% B=INVERSA(A)
clc;clear;
disp('INVERCION DE MATRICES POR EL METODO DE GAUSS CON PIVOTE')
fprintf('*****************************************************\n\n');
% Devuelve en B la inversa de A. B es calculada
% mediante la parcial ficticio para n sistemas que
% permiten calcular las columnas de A
a=input('\nDigite la matriz entre corchetes A[]:');
n=length(a);
b=eye(n); % b es la identidad
p=1:n;
%transformacion del sistema en uno triangular
for i=1:n-1
[m,r]=max(abs(a(i:n,i))); r=r+i-1;
p([i r])=p([r i]); % pivotaje
for k=i+1:n
l=a(p(k),i)/a(p(i),i);
a(p(k),i+1:n)=a(p(k),i+1:n)-l*a(p(i),i+1:n);
b(p(k),:)=b(p(k),:)-l*b(p(i),:);
end
a
a(p(i+1:n),i)=0;
end
a
%resolucion de los sistemas triangulares
x=zeros(n);
for i=n:-1:1
x(i,:)=(b(p(i),:)-a(p(i),i+1:n)*x(i+1:n,:))/a(p(i),i);
end
disp('La matriz inversa de A es :');
disp(x)

GAUSS SEIDEL 2

function x = GaussS(A,b,x0)
% Implementacion del metodo Gauss−Seidel para
% la solucion de sistemas de ecuaciones,
% tomando como aproximacion inicial x0.
%
% x = GaussSeidel(A,b,x0)
%%
Regresa x, la solucion del sistema Ax=b.
% El criterio de terminacion es que
% norm(x−xAnt,Inf)/norm(x,Inf)<eps.
n = size(A,1);
eps = 0.001;
% Se obtienen el vector c y la matriz T
c = b./diag(A);
T = zeros(n);
for i=1:n
T(i ,:) = A(i,:)/A(i, i );
end
T = −T.−eye(n);
x = x0;
xAnt = x;
j = 0;
while 1
j = j+1;
for i=1:n
x(i ) = T(i,:)∗x + c(i);
end
if (norm(x−xAnt,Inf)/norm(x,Inf)<eps)
break
end
xAnt = x;
end
MÉTODO DE ELIMINACIÓN SIMPLE DE GAUSS

%Metodo Eliminacion Gauss simple


clc;clear;
disp('METODO ELIMINACION GAUSS SIMLE PARA S.E.L')
fprintf('********************************\n\n');
%Los datos se almacenan en el archivo datos.m
%como matriz ampliada en la variable a
%Los datos se ingresan en la variable a
A=input('Ingrese los coeficientes del sistema A[]: ');
b=input('Ingrese los terminos independientes del sistema b[]: ');
a=[A b];
%Calculos adicionales
[m,n]=size(a);
b=a(:,n);
disp('matriz ampliada [A|b]:')
disp(a)
an=a;
%valores iniciales descomposicion N la respuesta se
%almacena en las matrices N y M
N(:,1)=a(:,1);
M(1,:)=a(1,1:m)/a(1,1);
% eliminacion hacia adelante
for i=1:m-1
for j=i+1:m
fprintf('\n eliminacion fila %g columna %g \n',j,i)
a(j,:)=a(j,:)-a(i,:)*a(j,i)/a(i,i);
disp(a)
end
%descomposicion lu crout
N(i+1:m,i+1)=a(i+1:m,i+1);
M(i+1,i:m)=a(i+1,i:m)/(a(i+1,i+1));
end
x(m)=a(m,m+1)/a(m,m);
for k=m-1:-1:1
s=0;
for p=k+1:m
s=s+a(k,p)*x(p);
end
x(k)=(a(k,m+1)-s)/a(k,k);
end
% presentacion de resultados
disp('matrices en la que X se almacena');
disp('matriz inferior =');disp(N);
disp('matriz superior = ');disp(M);
disp('solucion del sistema AX=B');
disp(x)

JACOBBI

function x = Jaco(A,b,x0)
% Implementacion del metodo Jacobi para la
% solucion de sistemas de ecuaciones, tomando
% como aproximacion inicial x0.
%%
x = Jaco(A,b,x0)
%%
Regresa x, la solucion del sistema Ax=b.
% El criterio de terminacion es que
% norm(x−xAnt,Inf)/norm(x,Inf)<eps.
n = size(A,1);
eps = 0.001;
% Se obtienen el vector c y la matriz T
c = b./diag(A);
T = zeros(n);
for i=1:n
T(i ,:) = A(i,:)/A(i, i );
end
T = −T−eye(n);
x = x0;
xAnt = x;
while 1
x = T∗x + c;
if (norm(x−xAnt,Inf)/norm(x,Inf)<eps)
break
end
xAnt = x;
end

JACOBI (2do Método)

function [x,err,k]=Jacobi_M(A,b,x0,tol,iter)
% Método iterativo, Jacobi matricial
% A: Matriz de coeficientes
% b: Vector de terminos
% x0: solucion inicial
% tol: tolerancia
% iter: numero de iteraciones
[n,m]=size(A);
if n~=m error('Matriz no cuadrada.'); end
k=0;
condi=0;
while (condi==0 & k<iter)
D=diag(diag(A));
aux=-(A-D)*x0+b;
x=D\aux;
err=criterr(x,x0,'absoluto');
if err<tol condi=1;
else
k=k+1;
x0=x;
end
end

S-ar putea să vă placă și