Script de Matlab para verificar si una matriz es estrictamente diagonal dominante o modificarla para que sea una, de ser posible.
924 palabras
4 páginas
Realizado por: Br. Anahí Beatríz Fonseca Martín anahi.bfm@gmail.com 14 de mayo de 2013Facultad de Ingeniería Química - UADY
Proyecto
Métodos Numéricos
“Para que el método iterativo de Jacobi sea convergente se requiere que la matriz de coeficientes sea estrictamente diagonal dominante. En ocasiones, basta con reordenar las ecuaciones para que se logre dicha condición. Sin embargo si la matriz no es estrictamente dominante, es posible que el método aun converja.”
Definición: Una matriz de n x n, es estrictamente diagonal dominante si cumple1
“El método de Gauss-Seidel para que sea convergente, requiere al igual que Jacobi, que la matriz sea estrictamente diagonal dominante.”2
Problema: El siguiente código de MATLAB con …ver más…
mesmay=zeros(1,n); B=zeros(n); for row=1:n;
%BUSCANDO SI EXISTE UN ELEMENTO v x = A(row,:); v=find(2*abs(x)>sum(abs(x),2));
%COMPROBANDO QUE EXISTA v EN CADA FILA num=1:n; if v~=num %No es necesario, manda error: revisar determinante %disp('No se puede convertir en MEDD') end
%COMPROBANDO QUE NINGUNO DE LOS VALORES v ESTEN EN LA MISMA COLUMNA if mesmay(v)==0 mesmay(v) = x(v); %Indexación en un arreglo. else disp('La columna ya contiene un v. No se puede convertir en MEDD') return end
%INTERCAMBIANDO COLUMNAS PARA FORMAR LA DIAGONAL DOMINANTE %B(col,:)=A(v,:); B(:,row)=A(:,v); row=row+1; end end end disp('ATENCIÓN: Ha ocurrido un cambio de columnas por lo que las') disp('variables tienen una nueva posición.') disp('La matriz A se ha convertido en la matriz B y ya es MEDD:')
B
Resultados
Resultado 1:
A =
19 1 2 8 1 1 -15 3 9 0 1 -2 -20