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[]: ');
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