• No se han encontrado resultados

SOLUCION DE SISTEMA DE ECUACIONES LINEALES CON MATLAB

N/A
N/A
Protected

Academic year: 2021

Share "SOLUCION DE SISTEMA DE ECUACIONES LINEALES CON MATLAB"

Copied!
6
0
0

Texto completo

(1)

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

(2)

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

(3)

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);

(4)

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

(5)

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;

(6)

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

Referencias

Documento similar

 La enseñanza, el aprendizaje y la difusión de la ciencia son procesos que determinan el desarrollo científico y tecnológico de un país; vivimos en una sociedad donde la ciencia

OTROS_ANALISIS: Difraccion de rayos X EDAD: EOCENO INF Lamina

En nuestra opinión, las cuentas anuales de la Entidad Pública Empresarial Red.es correspondientes al ejercicio 2010 representan en todos los aspectos significativos la imagen fiel

En nuestra opinión, las cuentas anuales de la Entidad Pública Empresarial Red.es correspondientes al ejercicio 2012 representan en todos los aspectos

La Intervención General de la Administración del Estado, a través de la Oficina Nacional de Auditoría, en uso de las competencias que le atribuye el artículo 168

La Intervención General de la Administración del Estado, a través de la Oficina Nacional de Auditoría, en uso de las competencias que le atribuye el artículo

D) El equipamiento constitucional para la recepción de las Comisiones Reguladoras: a) La estructura de la administración nacional, b) La su- prema autoridad administrativa

b) El Tribunal Constitucional se encuadra dentro de una organiza- ción jurídico constitucional que asume la supremacía de los dere- chos fundamentales y que reconoce la separación