Вы находитесь на странице: 1из 5

UNIVERSIDAD NACIONAL DE SAN ANTONIO

ABAD DEL CUSCO

FACULTAD DE INGENIERÍA ELÉCTRICA,


ELECTRÓNICA, INFORMÁTICA Y MECÁNICA

ESCUELA PROFESIONAL DE INGENIERÍA


ELÉCTRICA

CURSO : ANALISIS NUMERICO

DOCENTE : ING ABDON RIVAS

ALUMNO : CHILLITUPA SEGOVIA ELISBAN

CODIGO : 161100

CUSCO – PERÚ
2017
SUSTITICION REGRESIVA

function X= sustitucionregresiva(A,B)
%determina la solucion de un sistema triangular superior
%datos:
%A:es una matriz triangular superior n*n (coeficientes)
%B: es un vector n*1 (terminos independientes)
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

%ejemplo:
%resultados
X:solucion del sistema lineal AX=B
X=sustitucionregresiva(A,B)
A=[1 2 3;0 -4 2; 0 0 2]
B=[6;-2;2]

ELIMINACION GAUSS
function X=eliminaciongauss(A,B)
% determina la solucion de un sistema lineal por la eliminacion de
gauss
[n n]=size(A);
C = zeros(1,n+1);
%determinar la matriz ampliada
Z = [A B];
%construir la matriz triangular superior
for k = 1:n-1
%pivote parcial en la columna k
[maximo,m] =max(abs(Z(k:n,k)));
%intercambiar las filas, intercambiar(k,k+m-1)
if(k ~= (k+m-1))
C= Z(k,:);
Z(k,:) = Z(k+m-1,:);
Z(k+m-1,:) = C;
end
if Z(k,k) == 0
disp('A es singular...');
return
end
%eliminacion de la columna k
for i = k+1:n
m = Z(i,k)/Z(k,k);
if (m ~= 0)
Z(i,k:n+1)= Z(i,k:n+1)- m*Z(k,k:n+1);
end
end
end
%ejemplo
A=[61 0 -20 ;0 23 -9; -20 -24 64]
B=[-21; 34; 12]
X=eliminaciongauss(A,B)

METODO JACOBI
function x=Jacobi(A,B,x)
n=length(x);
t=x;
for i = 1:n
s= A(i,1:i-1)*t(1:i-1)+A(i,i+1:n)*t(i+1:n);
x(i)=(B(i)-s)/A(i,i);
end
A=[5 -3 1; 2, 4,-1;2 ,-3,8];
B=[5, 6 ,4]'; B=[5;6;4];
x=[1, 1, 1]'; x=[1;1;1];
x=Jacobi(A, B, x)

METODO JACOBI 2

function [x,k]=Jacobi2(A,B,x,e,m)
n=length(x);
for k=1:m
t=x;
for i = 1:n
s= A(i,1:i-1)*t(1:i-1)+A(i,i+1:n)*t(i+1:n);
x(i)=(B(i)-s)/A(i,i);
end
if norm((x-t),inf)<e
return
end
end

x=[];
k=m;

A=[5 -3 1; 2, 4,-1;2 ,-3,8];


B=[5, 6 ,4]'; B=[5;6;4];
x=[1, 1, 1]'; x=[1;1;1];
[x,k]=jacobi2(A, B, x,0.0001,20)
METODO GAUSS SEIDEL
function x=gaussseidel(A,B,x)
n=length(x);
% t = x;
for i = 1:n
%usa el vector x actualizado
s= A(i,1:i-1)*x(1:i-1)+A(i,i+1:n)*x(i+1:n);
x(i)=(B(i)-s)/A(i,i);
end
A=[5 -3 1; 2, 4,-1;2 ,-3,8];
B=[5, 6 ,4]'; B=[5;6;4];
x=[1, 1, 1]'; x=[1;1;1];
x=gaussseidel(A,B,x)

FORMA ALGEBRAICA

function [z,x,numite]=jacobi4(A,B,TOL,MAXITE)
D=diag(diag(A));
L=D-tril(A);
U=D-triu(A);
Tj=inv(D)*(L+U);
x=zeros(size(B)); % vector inicial
Cj=inv(D)*B;
z=[];
for i=1:MAXITE
xn=Tj*x+Cj;
err=norm(xn-x,2);
z=[z;xn' err];
x=xn;
if err<TOL
break
end
end

numite=i;

A = [4 0.24 -0.08; 0.09 3 -0.15; 0.04 -0.08 4]


B = [8; 9; 20]
[z,x,numite]=jacobi4(A,B,0.01,5)

A=[20 -1 1;2 10 -1;1, 1 -20]


B=[20 11 -18]'
[z,x,numite]=jacobi4(A,B,0.01,5)

PRODUCTO DE UNA MATRIZ CON OTRA


function C = pro_ma(A,B)
%%La funcion recibe dos matrices: A y B
%%C es la matriz resultante del producto de la matrices A y B
[fA, cA] = size(A);
[fB, cB] = size(B);
%% Con la funcion size() de Matlab se obtienen la cantidad de filas y
%%columnas de cada matriz
%% Se valida con el siguiente “if” que el numero de columnas de A (cA)
sea igual al %%numero de filas de B (fB)
if cA ==fB
for c=1:cB %% Este “for” recorre la columnas de la matriz B
for r=1:fA % Este “for” recorre la filas de la matriz A
suma=0; % En suma se guarda la sumatoria de los elementos
for k=1:cA
suma=suma+A(r,k)*B(k,c);
%% en la linea anterior se hace el producto de elemento por %%elemento
de cada fila y columna y se le añade de una vez a la %%sumatoria
end
C(r,c)=suma;
%% La sumatoria final se guarda en la matriz resultante
end
end
disp(‘el producto de las dos matrices’)
disp (C)
else
disp(‘No se puede hacer el producto de las dos matrices’);
end

Вам также может понравиться