sábado, 14 de noviembre de 2015

Método de Gauss-Jordan en MATLAB, solución de sistemas de ecuaciones lineales


Este código te permitirá resolver un sistema de ecuaciones lineales de cualquier tamaño, para comenzar, debes crear un Script en el cual debes vaciar el siguiente código.

%Programa principal, este es el único script que debes correr
A=[1,1,0,3;2,1,-1,1;3,-1,-1,2;-1,2,3,-1]; %Los datos que contiene representan una matriz de 4x4, debes sustituirlos por tus datos propios
B=[4,1,-3,4]'; %Los datos que contiene representan una matriz de 4x1, debes sustituirlos por tus datos propios
x=EliminacionGaussiana(A,B)

Importante: 
A: representa la parte "izquierda" del sistema de ecuaciones, es decir, solo debes añadir los valores que se encuentran antes del signo = para cada ecuación, recuerda que este sistema trabaja en forma matricial. B representa una matriz vertical la cual contiene los resultados de cada una de las ecuaciones, recuerda que el apostrofe que se encuentra despues del ultimo corchete en B, le indica a MATLAB que la matriz es vertical, por lo tanto es muy importante no removerlo.

Posteriormente debes crear un nuevo Script, en el cual se deberá vaciar el siguiente código.

function x=EliminacionGaussiana(A,B)
% A es una matriz de orden NxN
% B es una matriz de orden Nx1
% x es una matraz de orden Nx1 que contiene la solucion de Ax=B
%Scienceprocedures.blogspot.mx
[N N]=size(A);
x=zeros(N,1);
C=zeros (1,N+1);
Aug=[A B];
for q= 1:(N-1)
    [Y,j]=max(abs(Aug(q:N,q)));
    C=Aug(q,:);
    Aug(q,:)=Aug(j+q-1,:);
    Aug(j+q-1,:)=C;
    if Aug(q,q)==0
        'El valor de A es irregular. No hay solucion o no es unica';
        break
    end 
    for k=q+1:N
        m=Aug(k,q)/Aug(q,q);
        Aug(k,q:N+1)=Aug(k,q:N+1)-m*(Aug(q,q:N+1));
    end
    
end
x=resource(Aug(1:N,1:N),Aug(1:N,N+1));
end 

Para continuar, debes crear un tercer Script con el código que se muestra a continuación.

function x=resource(A,B)
n=length(B);
x=zeros(n,1); x(n)=B(n)/A(n,n);
for k=n-1:-1:1
    x(k)=(B(k)-A(k,k+1:n)*x(k+1:n))/A(k,k);
end 


Consideraciones: Recuerda que debes guardar los tres script en la misma carpeta, de lo contrario no correrán adecuadamente.
El programa principal contiene los datos para resolver un sistema de 4 ecuaciones con cuatro incógnitas a manera de ejemplo para el usuario.





No hay comentarios:

Publicar un comentario