Script de Matlab para verificar si una matriz es estrictamente diagonal dominante o modificarla para que sea una, de ser posible.
anahi.bfm@gmail.com
14 de mayo de 2013
Facultad de Ingeniería Química - UADY
Proyecto
Métodos Numéricos
“Para que el método iterativo deJacobi 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 embargosi 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 paraque sea convergente, requiere al igual que Jacobi, que la matriz sea estrictamente diagonal dominante.”2
Problema: El siguiente código de MATLAB con el nombre “esdiagdom” determina si una matrizA (de cualquier tamaño de N x N) dada es estrictamente diagonal dominante, si no, busca convertirla en una, de ser posible, reacomodando las columnas.
%El siguiente programa de matlab determina siuna matriz A
%dada es estrictamente diagonal dominante, si no, busca convertirla
%en una de ser posible.
%MEDD: abs(aii)>suma de los valores absolutos (aij) con j=1 y n, donde j
%no puede serigual a i para cada i=1,2,...,n. Es equivalente decir que
%2*abs(aii)>suma de abs(aij) con j=q y n para cada i=1,2,...,n.
clear,clc
row=1;
col=1;
%MEDD significa Matriz Estrictamente DiagonalDominante
%v es el valor con mayor valor absoluto en comparación con la
%suma de los abs de los restantes en la misma fila
%mesmay es la matriz donde se guardan los valores más grandes de cada%fila
%Definir matriz A
A=[19 1 2 8 1;1 -15 3 9 0;1 -2 -20 3 1;0 9 7 1 19;2 3 -4 -20 0]
%COMPROBANDO QUE LA MATRIZ A SEA DE NxN
[ m , n ] = size(A);
if m ~= n
%APARECE ERROR sino se cumple
else
%COMPROBANDO SI A ES MEDD
esddom=all(2*abs(diag(A))>sum(abs(A),2)); %segundo 2 es la dimensión
%1 es verdadero
%0 es falso
if esddom==1...
Regístrate para leer el documento completo.