Anda di halaman 1dari 5

Sistemas de ecuaciones-Codigos

Ing. Hctor G. Bolaos Sosa Pag .1


APLICACIN DE METODOS NUMERICOS A MATERIALES
CAPITULO III
SISTEMAS DE ECUACIONES


1. Cofactores
function C = cofactor(A, i, j)
% cofactor Matrix of cofactors.
% C = cofactor(A) returns the matrix of cofactors of A.
% If A is invertible, then inv(A) = C' / det(A).
% C = cofactor(A, i, j) returns the cofactor of
% row i, column j of A.
if nargin == 3
% Remove row i and column j to produce the minor.
M = A;
M(i,:) = [];
M(:,j) = [];
C = (-1)^(i+j) * det(M);
else
[n,n] = size(A);
for i = 1:n
for j = 1:n
C(i,j) = cofactor(A, i, j);
end
end
end


2. Generacin de vectores y matrices
Generacin un Vector
%gen_vector_0
%Introduce valores a un vector
clc
clear all
m=input('Nmero de elementos del vector:');
for k=1:m
A(k)=k
end
disp('El vector ser')
A

Generacin un Vector
%gen_vector_1
%Introduce valores a un vector
clc
clear all
m=input('Nmero de elementos del vector:');
for k=1:m
A(k)=k;
K=A(k);
fprintf('Elemento:%i\n',K)
A(k)=input('Valor');
end
disp('El vector ser')
A
Sistemas de ecuaciones-Codigos
Ing. Hctor G. Bolaos Sosa Pag .2

Generacin de una matriz
%gen_matriz_0
clc
clear all
%Filas
for k=1:2
%Columnas
for h=1:3
A(k,h)=h
end
end

Generacin de una matriz
%gen_matri_1
%Introduce valores a una matriz
clc
clear all
m=input('Nmero de filas:');
n=input('Nmero de columnas:');
A=zeros(m,n)
%Filas
for k=1:m
A(k)=k;
K=A(k);
%Columnas
for h=1:n
A(k,h)=h;
H=A(k,h);
fprintf('fila:%i columna %i\n',K,H)
A(k,h)=input('Valor');
end
end
disp('LA MATRIZ SERA')
A

3. Eliminacin simple de Gauss
5 2 9 4
3 2 1
= + x x x
3 6 4 2
3 2 1
= + x x x
4 3
3 2 1
= + x x x
function x=eliminacion(AA,b)
%AA=matriz
%A=matriz aumentada
% b= vector de constantes
(columna)
%x = vector solucin
[n n]=size(AA);
x=zeros(n,1);
A=[AA b];
n1=n+1;
for i=1:n
if A(i,i)==0
A=intercambio(A,i);
end
function A=intercambio (A,i)
% datos
%n= orden e la matriz
[n n1]=size(A);
k=i+1;
while (k<=n)&(A(k,i)==0)
k=k+1;
end
if k<=n
temp=A(i,:);
A(i;:)=A(k,:);
A(k,:)=temp
End

Sistemas de ecuaciones-Codigos
Ing. Hctor G. Bolaos Sosa Pag .3
for k=i+1:n
pivote=A(k,i)/A(i,i);
for j=i:n1
A(k,j)=A(k,j)-pivote*A(i,j);
end
end
end
A
x=sustiatras(A,A(:,n1));
Ejecucin (run)
>> AA=[4 -9 2;2 -4 6;1 -1 3]
AA =
4 -9 2
2 -4 6
1 -1 3
>> b=[5 3 4]'
b =
5
3
4

function x=sustiatras(A,b)
%sistema de ecuaciones
%Sustitucin hacia atras
%A=Matriz
%vector de Constantes
n=length(b);
x=zeros(n,1);
x(n)=b(n)/A(n,n);
for k=n-1:-1:1
x(k)=b(k);
for j=k+1:n
x(k)=x(k)-A(k,j)*x(j);
end
x(k)=x(k)/A(k,k);
end
>> eliminacion(AA,b)
ans =
6.9500
2.5000
-0.1500


4. Mtodo de Gauss Jordan
function x=gaussjordan(AA,b)
%AA=matriz
%A=matriz aumentada
% b= vector de constantes (columna)
%n= orden de la matriz
%x = vector solucin
[n n]=size(AA);
x=zeros(n,1);
A=[AA b];
n1=n+1;
for i=1:n
if A(i,i)==0
A=intercambio(A,i);
end
piv=A(i,i);
for j=i:n1
A(i,j)=A(i,j)/piv;
end
for k=1:n
if k~=i
pivote=A(k,i);
for j=i:n1;
A(k,j)=A(k,j)-pivote*A(i,j);
end
end
end
function A=intercambio (A,i)
% datos
%n= orden e la matriz
[n n1]=size(A);
k=i+1;
while (k<=n)&(A(k,i)==0)
k=k+1;
end
if k<=n
temp=A(i,:);
A(i;:)=A(k,:);
A(k,:)=temp;
End

Ejecucin (run)
>> AA=[4 -9 2;2 -4 6;1 -1 3]
AA =
4 -9 2
2 -4 6
1 -1 3
>> b=[5 3 4]'
b =
5
3
4
>> gaussjordan(AA,b)
Sistemas de ecuaciones-Codigos
Ing. Hctor G. Bolaos Sosa Pag .4
end
for i=1:n
x(i)=A(i,n1);
end
ans =
6.9500
2.5000
-0.1500

5. Mtodo de Gauss-Seidel
function x=GaussSeidel(A,b)
b=b';
n=length(b);
x=zeros(n,1);
flag=1;error=0.00005;NTOL=50;kk=0;
fprintf('*******************************\n');
fprintf(' x1 x2 x3 \n');

fprintf('%10.5f%10.5f%10.5f\n',x(1),x(2),x(3))
while 1 % no se sabe cuando acaba
for k=1:n
suma=b(k);
for j=1:n
if j~=k % diferente de k
suma=suma-A(k,j)*x(j);
end
end
y=suma/A(k,k);kk=kk+1;
if abs(x(k)-y)>=error
flag=0;
end
x(k)=y;
end

fprintf('%10.5f%10.5f%10.5f\n',x(1),x(2),x(3))
if flag==1 |kk>=NTOL %DETENER O
NUMRO DE VUELTAS
break;
end

end
fprintf('*******************************\n');
Ejecucin (run)
>> A=[1 -1 3;4 -9 2;2 -4 6]
A =
1 -1 3
4 -9 2
2 -4 6
>> b=[4 5 3]
b =
4 5 3
>> GaussSeidel(A,b)
*******************************
x1 x2 x3
0.00000 0.00000 0.00000
4.00000 1.22222 -0.01852
5.27778 1.78601 -0.06859
5.99177 2.09221 -0.10245
6.39956 2.26593 -0.12257
..
6.93014 2.49156 -0.14901
6.93859 2.49515 -0.14943
6.94344 2.49721 -0.14967
6.94623 2.49840 -0.14981
6.94783 2.49908 -0.14989
6.94875 2.49947 -0.14994
6.94928 2.49970 -0.14996
6.94959 2.49982 -0.14998
*******************************
ans =
6.9496
2.4998
-0.1500


6. Funciones de Matlab
a) Divisin hacia la izquierda o la inversa
Utiliza la siguiente sintaxis
X=inv(A)*b
Siendo b el vector de constantes en forma de vector columna
B A inv X
B A X
B A X
B A AX A
B AX
* ) (
1
1 1
=
=
=
=
=


\

>> A=[4 -9 2;2 -4 6;1 -1 3]
A =
4 -9 2
2 -4 6
1 -1 3
>> b=[5 3 4]'
b =
5
3
4
>> solu=A\b
solu =
Sistemas de ecuaciones-Codigos
Ing. Hctor G. Bolaos Sosa Pag .5
6.9500
2.5000
-0.1500
>> solu=inv(A)*b
solu =
6.9500
2.5000
-0.1500

b) Funcin reff
La funcin rref, utiliza el mtodo de Gauss_Jordan con pivoteo parcial.
La sintaxis es:
R=rref(AA)
Donde AA: matriz aumentada
>> A=[4 -9 2;2 -4 6;1 -1 3]
A =
4 -9 2
2 -4 6
1 -1 3
>> b=[5 3 4]'
b =
5
3
4
>> AA=[A b]
AA =
4 -9 2 5
2 -4 6 3
1 -1 3 4
>> R=rref(AA)
R =
1.0000 0 0 6.9500
0 1.0000 0 2.5000
0 0 1.0000 -0.1500

c) Funcin bicg
Esta funcin resuelve un sistema de ecuaciones lineales Ax=b. La matriz A
debe ser cuadrada, el vector de constantes en forma de vector columna
bicg(A,b)
Se puede especificar la tolerancia y el nmero mximo de iteraciones
bicg(A,b,tol,max)

>> A=[4 -9 2;2 -4 6;1 -1 3]
A =
4 -9 2
2 -4 6
1 -1 3
>> b=[5 3 4]'
b =
5
3
4
>> x=bicg(A,b)
bicg converged at iteration 3 to a solution
with relative residual 3.5e-015
x =
6.9500
2.5000
-0.1500

>> tole=1e-20;
>> x=bicg(A,b,tole,50)
bicg stopped at iteration 7 without
converging to the desired tolerance 1e-
020
because the method stagnated.
The iterate returned (number 6) has
relative residual 5.2e-016
x =
6.9500
2.5000
-0.1500