Sie sind auf Seite 1von 18

ESCUELA POLITCNICA NACIONAL

FACULTAD DE INGENIER CIVIL Y AMBIENTAL


MTODOS NUMRICOS

TAREA 3

TEMA: ERRORES

FECHA: 28/04/2015

NOMBRES: EVELYN GUEVARA /ERIK CASTRO

1.- INGRESANDO DATOS DESDE ARCHIVO .txt


El programa empieza con la introduccin de matrices cuadradas de mximo 40x40 desde
archivos .txt , para esta tarea se emplea el comando load como sigue:
disp('OPERACIONES CON MATRICES')
%INTRODUCCIN MATRICES
A=load('matrizA.txt');
B=load('matrizB.txt');
disp('Matriz A')
disp(A);
disp('Matriz B')
disp(B);

Los archivos .txt son MatrizA y MatrizB matrices cuadradas de 40x40 y no necesariamente
simtricas, se muestran a continuacin:

MATRIZ A

MATRIZ B
El resultado en MATLAB es el siguiente:

MATRIZ A

MATRIZ B
No se puede observar la totalidad de los resultados debido a las dimensiones de las matrices.
2.- CONDICIONES PARA EL INGRESO DE MATRICES
A continuacin se muestran algunas sentencias que avisan al usuario cuando se intentan ingresar
matrices de dimensiones incorrectas.
[m,n]=size(A);
[f,c]=size(B);
if m~=n;
disp('la matriz A debe ser cuadrada');
end;

if f~=c;
disp('la matriz B debe ser cuadrada');
end;
if m>40;
disp('la matriz A excede el numero maximo');
end;
if f>40;
disp('la matriz B excede el numero maximo');
end;
if f~=m;
disp('las matrices deben ser del mismo orden');
end;

Por ejemplo al agregar filas y


columnas extra a la Matriz A e
ingresarla aparece el siguiente
mensaje:

3.- OPERACIONES CON MATRICES


A continuacin se muestran los resultados de las siguientes operaciones con matrices. Ntese el
uso de contadores (i,j) para definir los elementos de cada matriz, los contadores van desde 1 hasta
m n que son respectivamente el nmero de filas y columnas de las matrices.
SUMA
%SUMA DE MATRICES
disp('Suma (Matriz C)')
for i=1:m
for j=1:n
C(i,j)=A(i,j)+B(i,j);
end;
end;
disp (C);

La siguiente captura muestra parte de la Matriz C que almacena los resultados de la suma:

RESTA
%RESTA DE MATRICES
disp('Resta (Matriz D)')
for i=1:m
for j=1:n
D(i,j)=A(i,j)-B(i,j);
end;
end;
disp (D);

MULTIPLICACIN
%MULTIPLICACIN DE MATRICES
disp('Multiplicacion (Matriz E)')
for i = 1 : m;
for j = 1 : c;
s=0;
for k=1:f;
A(i,k);
B(k,j);
s=s+A(i,k)*B(k,j);
end;
E(i,j)=s;
end;
end;
disp(E);

En este caso f denota las filas y c las columnas, se utiliza en contador k de acuerdo a la definicin
de multiplicacin de matrices.

MATRIZ TRASPUESTA
%TRASPUESTA MATRICES
disp('Matrices Transpuestas:')
for i=1:m;
for j=1:n;
Ct(i,j)= C(j,i);
Dt(i,j)= D(j,i);
Et(i,j)= E(j,i);
end
end
disp('Transpuesta de C (Matriz Ct)')
disp(Ct);
disp('Transpuesta de D (Matriz Dt)')
disp(Dt);
disp('Transpuesta de E (Matriz Et)')
disp(Et);

NOTA: Al intentar operar las matrices con la Matriz A alterada MATLAB presente el siguiente error,
puesto que no se pueden sumar matrices de distinto orden.

Lo mismo ocurrir al intentar realizar las dems operaciones ya que las matrices no cumplen las
condiciones necesarias.

4.- MATRIZ INVERSA


MTODO DE MATLAB
Consiste en calcular la matriz inversa con el rpido y simple comando inv(), como se muestra a
continuacin:
%MATRIZ INVERSA
disp('Inversas (Matlab)')
invC=inv(C)
invD=inv(D)
invE=inv(E)

Obsrvese en la siguiente captura el mensaje que aparece


antes del resultado de la matriz inversa de C. ste indica que
los resultados pueden no ser precisos, la causa es que el
determinante de la matriz C es 0 ,como se demuestra en la
imagen con el uso del comando det() propio de MATLAB.
Ntese tambin los elevados valores de los elementos de la
matriz inversa esto a causa de la divisin por cero que se
produce.

MTODO FADEV-LEVERRIER
A continuacin se muestra el script para calcular la matriz inversa por este mtodo. En la primera
parte se define a la matriz P{1} que ser igual a la matriz C de la que se quiere obtener la inversa,
sta matriz es parte del arreglo de celdas P que almacena todas las matrices P{1,2,3,,n} a lo largo
de la iteracin. Los arreglos de celdas son arreglos especiales de MATLAB que contienen en sus
elementos llamados celdas otros arreglos por ejemplo matrices.Tambin se define a p(1) como la
traza de la matriz C. La traza es la suma de los elementos de la diagonal de una matriz.
A continuacin se emplea la funcin for para crear un bucle, en este caso se usa el contador i
empezando en 2 hasta el orden de la matriz m porque ya se han definido los valores de P{1} y
p(1).El trabajo del bucle es continuar calculando los elementos del vector p y el arreglo P y
almacenarlos.
NOTA: Inicialmente el vector p se ha definido como un vector de unos ones() a lo largo de la
iteracin cada elemento de p cambiar su valor 1 por el de la traza correspondiente.

La penltima lnea muestra el calculo de la matriz inversa a partir de los valores finales resultantes
del bucle.
%Matriz Inversa Metodo FADEV LEVERRIER
disp('Inversas (Metodo FADEV-LEVERRIER)')
%MATRIZ INVERSA C
disp('iC')
P{1}=C;
p=ones(1,m);
p(1)=trace(C);
for i=2:m;
P{i}=C*(P{i-1}-p(i-1)*eye(m));
p(i)=(1/i)*trace(P{i});
end;
iC=(1/p(m))*(P{m-1}-p(m-1)*eye(m));
disp(iC);

A continuacin un ejemplo de una matriz inversa de 10x10

5.- ERRORES

ERROR VERDADERO
%VALORES APROXIMADOS
disp('ERROR VERDADERO CON inv(C)')
disp('VALORES APROXIMADOS')
disp('inC')
inC=cell(1,5)
for i=m-4:m;
inC{i}=(1/p(i))*(P{i-1}-p(i-1)*eye(m));
end
for i=m-4:m;
disp(inC{i})
end

Para el calculo del error verdadero se utilizan valores aproximados, estos se los obtiene mediante
el proceso de iteracin de la inversa de FADEV-LEVERRIER, tomando los 5 ltimos valores de las
iteraciones a los cuales se los almacena en una celda de inversas de la matriz con los llamados
valores aproximados, con la celda de matrices inversas se procede a obtener el Error Verdadero.

Como se observa se almacenan en la celda inC las matrices de las 5 ultimas iteraciones
%ERROR VERDADERO
disp('ERROR VERDADERO')
ETC=cell(1,5)
for i=m-4:m;
ETC{i}= invC - inC{i} ;
end
for i=m-4:m;
disp(ETC{i})
end

Con los valores aproximados obtenidos y almacenados en la celda de valores aproximados (inC) se
procede a calcular el error verdadero con la diferencia entre la inversa (de matlab inv() ) y la celda
obtenida de valores aproximados. Estos se almacenan en una nueva celda que contiene las
matrices de error verdadero para cada iteracin.

ERROR RELATIVO ABSOLUTO


%ERROR RELATIVO ABSOLUTO
disp('ERROR RELATIVO ABSOLUTO')
ETRAC=cell(1,5)
for i=m-4:m;
ETRAC{i}= abs((ETC{i})./(invC)) ;
end;
for i=m-4:m;
disp(ETRAC{i});
end;

Una vez obtenida la celda la celda con matrices de error verdadero de cada iteracin se puede
obtener el error relativo y a su vez el error relativo absoluto anteponiendo el absoluto en el
siguiente bucle que realiza el cociente entre las matrices de error verdadero con la matriz de valor
verdadero para cada una de las cinco matrices provenientes de las diferentes iteraciones.

VECTOR ERRORES PROMEDIO


%VECTOR ERRORES PROMEDIO
disp('VECTOR ERRORES PROMEDIO')
for i=1:5;
VTEaEC(i)= sum(sum(ETRAC{i+(m-5)}))/m;
end;
disp(VTEaEC(1,1:5));

Con las matrices de Error relativo absoluto almacenadas en una nueva celda, para cada una de las
matrices se realiza el promedio de los errores, con los cuales se almacenan en un nuevo vector de
errores promedio.

GRAFICACION DE LA DESVIACION DE ERRORES


%GRAFICACION 1
yC=[m-4,m-3,m-2,m-1,m];
xC=[VTEaEC(1,1:5)];
Figure1=plot(xC,yC,'--ro')
title('DESVIACION DE ERRORES EN C')
xlabel('ERROR')
ylabel('N DE ITERACION')
disp(Figure1)

Con el nuevo Vector Errores Promedio se tiene el promedio de errores para matriz de error
absoluto de cada iteracin, teniendo 5 valores de error, uno para cada iteracin, las cuales se las
pasa a graficar teniendo como ejes el numero de iteracin con su respectivo valor de error relativo
absoluto, se forma una lnea entre los cinco puntos para iteracin.

ERROR APROXIMADO
%ERROR APROXIMADO
for i=m-4:m;
EaC{i}=P{i}-P{i-1};
end;
disp('ERROR APROXIMADO');
for i=m-4:m
disp(EaC{1,i})
end

Para calcular los errores tambin se utilizan contadores que llamen las matrices de la iteracin
Fadev Leverrier en parejas, operen con ellas y almacenen los elementos dentro de los arreglos de
celdas. Los cdigos se han escrito siguiendo las definiciones de los distintos tipos de errores. Luego
se emplea tambin un contador para mostrar los ltimos 6 elementos del arreglo Error
Aproximado EaC en pantalla.

Se procede de igual forma para los dems errores y aplicando las definiciones respectivas.
ERROR APROXIMADO RELATIVO
%ERROR APROXIMADO RELATIVO
for i=m-4:m;
EarC{i}=(P{i}-P{i-1})./P{i};
end;
disp('ERROR APROXIMADO RELATIVO');
for i=m-4:m
disp(EarC{1,i})
end

ERROR APROXIMADO RELATIVO ABSOLUTO

%ERROR APROXIMADO RELATIVO ABSOLUTO


for i=m-4:m;
EaraC{i}=abs((P{i}-P{i-1})./P{i});
end;
disp('ERROR APROXIMADO RELATIVO ABSOLUTO');
for i=m-4:m
disp(EaraC{1,i})
end

6.- VECTORES ERROR PROMEDIO


Los vectores error promedio estn formados por el promedio de todos los elementos de las
matrices error formada de cada par de resultados de la iteracin Fadev Leverrier. En este caso se
emple el comando sum() que suma los elementos de cada columna de una matriz.
%VECTOR ERRORES PROMEDIO
disp('VECTOR ERRORES PROMEDIO')
for i=m-4:m;
VEaraE(i)= sum(sum(EaraE{i}))/m;
end;
disp(VEaraE(1,m-4:m));

CONCLUSIONES:
1. Mediante el uso de celdas para almacenar las matrices con procesos realizados a cada una
de ellas, se facilita en gran parte el trabajo ya que se almacenan matrices que se les trata
en bucles de iteraciones.
2. Para el proceso de FADEV-LEVERRIER es necesario terminar el nmero completo de
repeticiones del proceso para obtener una mayor precisin, como se puede observar en
las grficas de errores vs nmero de iteracin.
3. Tras realizar varias veces la comparacin de matrices inversas se concluye que los
resultados presentan precisin mas no exactitud.

Das könnte Ihnen auch gefallen