Documente Academic
Documente Profesional
Documente Cultură
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
% 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
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
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