Gauss matlab
El programa tiene como objetivo la resolución de sistemas de ecuaciones lineales, para esto se utiliza el método de Gauss. Con motivo de optimizar el método se utiliza un pivoteo parcial, que esta probado, reduce el error del calculo.
El programa admite cualquier tipo y tamaño de sistema de ecuaciones siempre y cuando sean lineales. Se llevan a cabo una serie de validaciones enel código para tener un control de errores, estas advertirán al usuario si los datos ingresados llevan a una incompatibilidad matemática o teórica en la resolución de un sistema de ecuaciones lineales.
Declaración de Funciones:
Función Gauss
function R= gauss2(A,B)
cola = A(:,1);
fila = A(1,:);
filb = B(1,:);
colb = B(:,1);
m = length(fila);
n =length(cola);
v = length(colb);
u = length(filb);
%m/u cantidad de columnas
%n/v cantidiad de filas
txt=0;
txt1=0;
txt2=0;
if m == n
if v == n
% pivoteo y triangulacion superior
for o = 1: n-1
[A,B] = pivotpar2(A,B,o);
for l = o+1:n
a = A(l,o);
p =A(o,o);
if p == 0
txt = 'pivote nulo';
else
for s = 1:m
A(l,s)=A(l,s)-A(o,s)*(a/A(o,o));
end
for y = 1:u
B(l,y)=B(l,y)-B(o,y)*(a/A(o,o));
end
endend
end
E = [A,B];
k = m + u;
% lleva a ceros los valores de la matriz de ecuacuines que no
% pertenecen a la diagonal
for h = n : -1 : 2
for ab = h-1: -1 : 1
r = E(ab,h);
z = E(h,h);
if z == 0
txt1 ='pivote2 nulo';
else
for ac = 1:k
E(ab,ac)=E(ab,ac)-E(h,ac)*(r/E(h,h));
end
end
end
end
% deja la diagonal en 1
for oo = 1: n
div = E(oo,oo);
if div == 0
txt2 = 'no pueden haber0 en la diagonal de resultados';
else
for ss = 1:m
E(oo,ss)=E(oo,ss)/div;
end
end
end
F=E(:,m+1:k);
%determina si hubo problemas en la operacion y reportar
if txt==0
if txt1==0
if txt2==0R=F;
else
R=txt2;
end
else
R=txt1;
end
else
R=txt;
end
else
R = 'hay diferencia entre cantidad de resultados y cuaciones';
end
else
R = 'la matriz deecuaciones no es cuadrada';
end
end
Función Pivoteo Parcial
function [C,D] = pivotpar2(A,B,c)
co = A(1,:);
f = A(:,1);
cob = B(1,:);
m = length(co);
n = length(f);
g = length(cob);
for i = c : n
for j = n :-1 : i+1
if A(j,c) < A(j-1,c)
for l = 1: m
temp = A(j,l);A(j,l) = A(j-1,l);
A(j-1,l) = temp;
end
for w = 1: g
temp2 = B(j,w);
B(j,w) = B(j-1,w);
B(j-1,w) = temp2;
end
end
end
end
C = A;
D = B;
end
Matrices dato
A:
1 3 8 2 5 3 54
5 9 1 6 5 1 63
5 2 0 6 3 6 4
1 3 3...
Regístrate para leer el documento completo.