Hay una función para comprobar si una matriz es diagonal dominante (fila dominio)

Una matriz es diagonalmente dominante (por filas) si su valor en la diagonal es en sentido absoluto mayor que la suma de todos los demás valores absolutos en esa fila. Lo mismo va para las columnas, sólo alrededor de la otra forma.

Hay una función en matlab para chekcing esto ? (Podría escribir un bucle simple, pero estoy tratando de dejar de fumar los).

  • Poco actualizada la definición, para ser más precisos.
InformationsquelleAutor Rook | 2010-03-31

2 Kommentare

  1. 16

    Por qué bucle?

    Usted puede formar la suma de los valores absolutos en una fila determinada.

    sum(abs(A),2)

    Se puede comparar esto con el valor absoluto de la diagonal de elementos en cada fila?

    abs(diag(A)) >= sum(abs(A),2)

    Por supuesto, esto no es correcto, ya que la diagonal términos no deben ser incluidos en la primera suma. Independientemente, se puede reparar fácilmente el problema.

    (2*abs(diag(A))) >= sum(abs(A),2)

    Por último, tenemos un resultado de esta prueba. Las anteriores pruebas de cada fila. Una matriz es diagonal dominante si esa prueba es verdadera para TODAS las filas.

    all((2*abs(diag(A))) >= sum(abs(A),2))
  2. 2

    No hay ninguna función, que yo sepa. Sin embargo, usted puede hacer una simple prueba sin bucles.

    %# create an array
    array = magic(3);
    
    %# take the absolute of the array
    absArray = abs(array);
    
    %# To be diagonally dominant, the row and column sums have to be less
    %# than twice the diagonal
    rowSum = sum(absArray,1)';%#' (formatting comment)
    colSum = sum(absArray,2);
    dia    = diag(absArray);
    
    %# test
    isDiagonallyDominantByRow = all(rowSum <= 2 * dia); 
    isDiagonallyDominantByCol = all(colSum <= 2 * dia);
    isTotallyDominant = isDiagonallyDominantByRow && isDiagonallyDominantByCol;
    • Siguiente wiki definición no deberías de probar ambos rowSum y colSum en la misma prueba. Las respuestas pueden ser isDiagonallyDominantByRows o isDiagonallyDominantByColumns.
    • Gracias, solucionado.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea