Main Content

La traducción de esta página está obsoleta. Haga clic aquí para ver la última versión en inglés.

Matrices y cuadrados mágicos

Acerca de las matrices

En el entorno de MATLAB®, una matriz es un arreglo de números rectangular. A veces se atribuye un significado especial a las matrices de 1 por 1 (escalares) y a las matrices con solo una fila o columna (vectores). MATLAB tiene otras formas de almacenar datos numéricos y no numéricos pero, al principio, lo mejor es pensar en todo como una matriz. Las operaciones de MATLAB están diseñadas para realizarse de la manera más natural posible. Mientras que otros lenguajes de programación procesan los números uno por uno, MATLAB le permite trabajar con matrices completas de forma rápida y fácil. Un buen ejemplo de matriz, que se utiliza a lo largo de todo este libro, se observa en el grabado renacentista Melencolia I del artista y matemático amateur alemán Alberto Durero.

Esta imagen está repleta de simbolismo matemático, y si la observa detenidamente, podrá ver una matriz en la esquina superior derecha. Esta matriz se conoce como cuadrado mágico y, en la época de Durero, muchos creían que tenía propiedades verdaderamente sobrenaturales. El caso es que, en realidad, tiene algunas características fascinantes que vale la pena analizar.

Introducción de matrices

La mejor forma de comenzar a trabajar con MATLAB es aprender a manejar matrices. Inicie MATLAB y siga cada ejemplo.

En MATLAB, se pueden introducir matrices de varias formas diferentes:

  • Introduzca una lista de elementos explícita.

  • Cargue matrices desde archivos de datos externos.

  • Genere matrices mediante funciones integradas.

  • Cree matrices con sus propias funciones y guárdelas en archivos.

Comience por introducir la matriz de Durero como una lista de sus elementos. Solo tiene que seguir algunas convenciones básicas:

  • Separe los elementos de una fila con espacios en blanco o comas.

  • Use punto y coma,;, para indicar el final de cada fila.

  • Encierre la lista completa de elementos entre corchetes,[ ].

Para introducir la matriz de Durero, tan solo escriba en la ventana de comandos:

A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]

MATLAB muestra la matriz que acaba de introducir:

A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1

La matriz coincide con los números del grabado. Una vez introducida, la matriz se graba automáticamente en el área de trabajo de MATLAB. Puede hacerse referencia a ella simplemente comoA. Ahora que tiene la matrizAen el área de trabajo, vea qué es lo que la hace tan interesante. ¿Por qué es mágica?

Suma, traspuesta y diagonal

Probablemente ya sepa que las propiedades especiales de uncuadrado mágico se relacionan con las diversas formas de sumar sus elementos. Si suma los valores a lo largo de cualquier fila o columna, o a lo largo de cualquiera de las dos diagonales principales, siempre obtiene el mismo número. Verifiquemos esto usando MATLAB. La primera instrucción que se puede probar es:

sum(A)

MATLAB responde de la siguiente manera:

ans = 34 34 34 34

Cuando no se especifica una variable de salida, MATLAB utiliza la variableans, abreviatura deanswer(respuesta), para almacenar los resultados de un cálculo. Usted calculó un vector fila que contiene las sumas de las columnas deA. Cada una de las columnas tiene la misma suma, la sumamágica, que es igual a 34.

¿Qué ocurre con las sumas de las filas? MATLAB prefiere trabajar con las columnas de una matriz. Por lo tanto, una forma de obtener las sumas de las filas es trasponer la matriz, calcular las sumas de las columnas de la traspuesta y, finalmente,trasponer el resultado.

MATLAB tiene dos operadores de trasposición. El operador de apóstrofo (por ejemplo,A') realiza una trasposición conjugada compleja: gira la matriz sobre el eje de su diagonal principal, y también cambia el signo del componente imaginario de cualquier elemento complejo de la matriz. El operador de punto y apóstrofo (A.') realiza trasposicion罪afectar a los signos de los elementos complejos. En el caso de las matrices que contienen solo elementos reales, los dos operadores devuelven el mismo resultado.

Por lo tanto,

A'

produce

ans = 16 5 9 4 3 10 6 15 2 11 7 14 13 8 12 1

y

sum(A')'

produce un vector columna que contiene las sumas de las filas:

ans = 34 34 34 34

Si desea sumar las filas sin tener que trasponer, use el argumento de dimensión para la funciónsum:

sum(A,2)

produce

ans = 34 34 34 34

La suma de los elementos de la diagonal principal se obtiene mediante las funcionessumydiag:

diag(A)

produce

ans = 16 10 7 1

y

sum(diag(A))

produce

ans = 34

La otra diagonal, conocida comoantidiagonal,no es tan importante desde el punto de vista matemático, y por eso MATLAB no tiene una función prediseñada para ella. Sin embargo, hay una función prevista originalmente para su utilización en gráficas,fliplr, que gira una matriz de izquierda a derecha:

sum(diag(fliplr(A))) ans = 34

Hemos verificado que la matriz en el grabado de Durero efectivamente es un cuadrado mágico y, durante el proceso, hemos usado algunas de las operaciones con matrices de MATLAB. En las siguientes secciones, se sigue utilizando esta matriz para ilustrar otras funciones adicionales de MATLAB.

La función magic

MATLAB tiene una función integrada que crea cuadrados mágicos de casi cualquier tamaño. Como era de esperar, esta función se denominamagic:

B = magic(4) B = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1

Esta matriz es casi idéntica a la del grabado de Durero y tiene las mismas propiedades “mágicas”; la única diferencia es que las dos columnas del medio están intercambiadas.

Es posible reorganizar las dos columnas del medio de la matrizBpara que se vea como laAde Durero. Para cada fila deB, permute las columnas en el orden especificado de 1, 3, 2, 4:

A = B(:,[1 3 2 4])
A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1

Generación de matrices

El software de MATLAB ofrece cuatro funciones que generan matrices básicas.

zeros

Solo ceros

ones

Solo unos

rand

Elementos aleatorios distribuidos de manera uniforme

randn

Elementos aleatorios distribuidos de manera normal

Estos son algunos ejemplos:

Z = zeros(2,4) Z = 0 0 0 0 0 0 0 0 F = 5*ones(3,3) F = 5 5 5 5 5 5 5 5 5 N = fix(10*rand(1,10)) N = 9 2 6 4 8 7 4 0 8 4 R = randn(4,4) R = 0.6353 0.0860 -0.3210 -1.2316 -0.6014 -2.0046 1.2366 1.0556 0.5512 -0.4931 -0.6313 -0.1132 -1.0998 0.4620 -2.3252 0.3792