
Matriz Estrictamente Dominante
Publicado por Juan José (60 intervenciones) el 09/10/2014 14:04:41
Hola amigos,
Soy relativamente nuevo en MATLAB, y estoy aprendiendo autodidácticamente mediante este libro:
"Matlab y matemática computacional" Sagrario y Bernardo
Ya he avanzado y "aprendido" los temas de CONTROL DEL MATLAB (básico). Ahora, estoy en la parte de Matemática Computacional e intento realizar los programas por mi mismo sin mirar la solución pero en pocas ocasiones consigo sacarlo. ¿Alguna recomendación para tener mente de programador?
Disculpad todo este rollo pero me frusta tener que mirar la solucion para la solución de los ejercicios.
AL PROBLEMA:
Estoy en la sección de sistemas lineales de ecuaciones iterativos y aparece el concepto MATRIZ ESTRICTAMENTE DOMINANTE, la cual tiene dos versiones:
- Dominante por filas ( |aii| > SUMA[j~=i] |aij| ) para todo i
- Dominante por columnas ( |ajj| > SUMA[i~=j] |aij| ) para todo j
Básicamente, que el valor absoluto de los elementos de la diagonal en una fila o columna sea mayor que la suma de los valores absolutos del resto de elementos de esa fila o columna, para todas las filas o columnas.
Problema: escribir una función para saber si cualquier matriz cuadrada es estrictamente diagonal dominante por filas o por columnas.
CÓDIGO:
function edd(A)
n=length(A);
kf=0;kc=0;
for i=1:n
sf=sum(abs(A(i,:)));
if(2*abs(A(i,i))>sf)
kf=kf+1;
end
sc=sum(abs(A(:,i)));
if(2*abs(A(i,i))>sc)
kc=kc+1;
end
end
if(kf==n)
disp('A es est. diag. dom. por filas')
else
disp('A NO es est. diag. dom. por filas')
end
if(kc==n)
disp('A es est. diag. dom. por columnas')
else
disp('A NO es est. diag. dom. por columnas')
end
end
El código funciona perfectamente, pero teniendo en cuenta la teoría, ¿Alguien sabe decirme porque está el 2 en la frase destacada en negrita del código?
Muchas gracias y perdonad el parrafazo.
Saludos!!
Soy relativamente nuevo en MATLAB, y estoy aprendiendo autodidácticamente mediante este libro:
"Matlab y matemática computacional" Sagrario y Bernardo
Ya he avanzado y "aprendido" los temas de CONTROL DEL MATLAB (básico). Ahora, estoy en la parte de Matemática Computacional e intento realizar los programas por mi mismo sin mirar la solución pero en pocas ocasiones consigo sacarlo. ¿Alguna recomendación para tener mente de programador?
Disculpad todo este rollo pero me frusta tener que mirar la solucion para la solución de los ejercicios.
AL PROBLEMA:
Estoy en la sección de sistemas lineales de ecuaciones iterativos y aparece el concepto MATRIZ ESTRICTAMENTE DOMINANTE, la cual tiene dos versiones:
- Dominante por filas ( |aii| > SUMA[j~=i] |aij| ) para todo i
- Dominante por columnas ( |ajj| > SUMA[i~=j] |aij| ) para todo j
Básicamente, que el valor absoluto de los elementos de la diagonal en una fila o columna sea mayor que la suma de los valores absolutos del resto de elementos de esa fila o columna, para todas las filas o columnas.
Problema: escribir una función para saber si cualquier matriz cuadrada es estrictamente diagonal dominante por filas o por columnas.
CÓDIGO:
function edd(A)
n=length(A);
kf=0;kc=0;
for i=1:n
sf=sum(abs(A(i,:)));
if(2*abs(A(i,i))>sf)
kf=kf+1;
end
sc=sum(abs(A(:,i)));
if(2*abs(A(i,i))>sc)
kc=kc+1;
end
end
if(kf==n)
disp('A es est. diag. dom. por filas')
else
disp('A NO es est. diag. dom. por filas')
end
if(kc==n)
disp('A es est. diag. dom. por columnas')
else
disp('A NO es est. diag. dom. por columnas')
end
end
El código funciona perfectamente, pero teniendo en cuenta la teoría, ¿Alguien sabe decirme porque está el 2 en la frase destacada en negrita del código?
Muchas gracias y perdonad el parrafazo.
Saludos!!
Valora esta pregunta


0