Está en la página 1de 6

1.

Introducción

Mediante el presente trabajo, será analizada la importancia de las matrices en la carrera


profesional de ingeniería de Sistemas, se verán los usos prácticos de las matrices en la
programación y todas las aplicaciones en la informática.

El uso de Arrays (Matrices) en la programación es un punto base para el trabajo ya que


en cualquier lenguaje de programación se usa el termino, siendo básico para solucionar
problemas con tablas o datos ordenados, si existe algún problema que requiera de tablas
podemos usar los arrays en el lenguaje de programación de nuestra preferencia.

Así es que, si hablamos de informática y específicamente de la programación, podemos


decir que las matrices son básicas para la solución de problemas en todos los ámbitos de la
carrera de Informática.

Otro punto a tomar en cuenta cuando hablamos de matrices es el uso que se le da para las
transformaciones y la informática grafica donde el uso de las matrices es tan importante
como el uso de vectores y otras aplicaciones matemáticas.

2. Uso de Matrices en la programación

En programación, una matriz o vector (llamados en inglés arrays) es una zona de


almacenamiento continuo, que contiene una serie de elementos del mismo tipo, los elementos de
la matriz. Desde el punto de vista lógico una matriz se puede ver como un conjunto de
elementos ordenados en fila (o filas y columnas si tuviera dos dimensiones). En principio, se
puede considerar que todas las matrices son de una dimensión, la dimensión principal, pero los
elementos de dicha fila pueden ser a su vez matrices (un proceso que puede ser recursivo), lo
que nos permite hablar de la existencia de matrices multidimensionales, aunque las más fáciles
de imaginar son los de una, dos y tres dimensiones. Estas estructuras de datos son adecuadas
para situaciones en las que el acceso a los datos se realice de forma aleatoria e impredecible. Por
el contrario, si los elementos pueden estar ordenados y se va a utilizar acceso secuencial sería
más adecuado utilizar una lista, ya que esta estructura puede cambiar de tamaño fácilmente
durante la ejecución de un programa.

En la estructura de datos para la programación, las matrices son de uso frecuente por lo que
podemos decir que son imprescindibles en la programación de muchos problemas.

Por ejemplo, las notas correspondientes a las distintas evaluaciones realizadas a cada uno de los
alumnos de un determinado curso forman una matriz, y la ficha que contiene los datos
personales de cada uno de estos alumnos es un ejemplo de registro (o estructura).

Esta disposición permitirá escribir código más simple, ya que será posible establecer bucles en
los que se recorra los elementos de una matriz mediante el número de índice.

A las matrices de una dimensión se les suele llamar también vectores o listas, y a las matrices de
dos dimensiones, tablas.

Es posible definir matrices de hasta 60 dimensiones en Visual Basic y de cualquier tipo de datos
(tipos fundamentales y estructuras definidas por el usuario).

La representación de las matrices se hace mediante variables con subíndices. Los subíndices son
números enteros consecutivos y, por defecto, el primer índice valdrá 0.

Una matriz de dos dimensiones se representa con una variable con dos subíndices (filas,
columnas). Una de tres con tres, etcétera.

Ejemplo de programación en C#

Puede almacenar distintas variables del mismo tipo en una estructura de datos de matriz. Para
declarar una matriz especifique el tipo de sus elementos.

type[] arrayName;

Los ejemplos siguientes crean matrices unidimensionales, multidimensionales y escalonadas:

class PruebaMatriz
{
static void Main()
{
// Declarar una matriz simple
int[] array1 = new int[5];

// Declarar e ingresar los datos de la matriz


int[] array2 = new int[] { 1, 3, 5, 7, 9 };

// Sintaxis alternativa
int[] array3 = { 1, 2, 3, 4, 5, 6 };

// Declarar una matriz de dos dimensiones


int[,] multiDimensionalArray1 = new int[2, 3];
// Declarar e ingresar los datos de la matriz
int[,] multiDimensionalArray2 = { { 1, 2, 3 }, { 4, 5, 6 } };

// Declare a jagged array


int[][] jaggedArray = new int[6][];

// Set the values of the first array in the jagged array structure
jaggedArray[0] = new int[4] { 1, 2, 3, 4 };
}
}

Como vemos el uso de matrices en los lenguajes de programación es básico para la solución de
problemas, en este trabajo usaremos como ejemplo el lenguaje de programación C# que es
usado en la carrera de Ingenieria de Sistemas. Primero veremos la aplicación de las matrices en
objetos.

En C#, las matrices son de hecho objetos y no simplemente regiones direccionables de memoria
contigua como ocurre en C y C++. Array es el tipo base abstracto de todos los tipos de matrices.
Las propiedades y otros miembros de la clase Array se pueden utilizar cuando sea necesario.

Las matrices pueden tener varias dimensiones. Por ejemplo, la siguiente declaración crea una
matriz bidimensional de cuatro filas y dos columnas.

int[,] array = new int[4, 2];

3. Uso de las matrices en las transformaciones y OpenGL

Como podemos ver La teoría de las matrices es ampliamente utilizada en la informática. Las
bibliotecas gráficas como por ejemplo OpenGL se valen de transformaciones espaciales y de las
matrices para representar gráficos 3D a 2D que luego se traducen a imagen en los monitores.

Para entender de mejor forma las transformaciones especiales y las matrices en OpenGL y el
uso de imágenes, hablaremos un poco de este.

En la introducción de los diversos conceptos matemáticos para realizar transformaciones se ha


visto la importancia del manejo de matrices y de diferentes operaciones, destacando sobre todas
ellas la multiplicación.

La librería OpenGL intenta facilitar esta labor y conseguir el efecto deseado, OpenGL dispone
de un conjunto de primitivas que simplifican este proceso. En concreto, para aplicar una
transformación a un elemento, por ejemplo, un cubo, será necesario aplicar una transformación
a cada uno de los vértices que lo definen, multiplicando las coordenadas de dichos vértices por
la matriz de transformación adecuada.

Para conseguir los efectos perseguidos con la utilización de las transformaciones, se utilizan dos
matrices particulares, sobre las que se realizan modificaciones: la matriz del modelador y la
matriz de la proyección.

La librería OpenGL implementa un conjunto de primitivas de alto nivel que facilitan la


realización de estas transformaciones sin necesidad de acceder a los elementos individuales de
cada una de las matrices implicadas y simplificando, en gran medida, todo el proceso.

3.1 Matrices de Modelador:


Otro punto importante del uso de matrices cuando hablamos de la transformación son las
Matrices de Modelador la cual nos ayuda en este proceso, simplificando el proceso de
transformación. La principal ventaja que se consigue con la utilización de este método es la
reducción del número de operaciones necesarias para realizar una transformación.
Esto se puede ver claramente con el siguiente ejemplo:

Supongamos un sistema definido por 26 vértices. En caso de trasladar cada uno de los vértices,
sería necesario realizar un total de 26 multiplicaciones, mientras que utilizando este método, tan
sólo se requeriría la traslación del sistema de coordenadas, manteniéndose constante la posición
de los 26 vértices de la figura. En este sentido, la matriz del modelador será una matriz
cuadrada (4x4) que se encargará de definir el nuevo sistema de coordenadas, que se utilizará
para representar los objetos que han sufrido una transformación. Al multiplicar dicha matriz por
la matriz columna que representa el vértice, se obtiene otra matriz columna, que representa las
nuevas coordenadas del vértice transformado.

3.2 Pilas de Matrices:

Como se planteó en apartados anteriores, los efectos de las transformaciones son acumulativos,
con lo que, a menudo, será necesario reiniciar la matriz del modelador al estado inicial para
facilitar la comprensión de las mismas.

Sin embargo, no es necesario realizar siempre este proceso, ya que es posible mantener cada
uno de los efectos que las transformaciones tienen en el sistema de coordenadas. Esto es
especialmente útil en el caso de que se quieran recolocar objetos con respecto a estados
anteriores y volver al estado actual. Para ello se utiliza una pila de matrices como la que se
muestra en la figura, en la que se van almacenando de manera sucesiva las matrices que definen
el sistema de coordenadas en cada momento. De esta forma, se puede insertar la matriz actual
en la pila y aplicarle modificaciones, pudiendo recuperarla posteriormente, tal y como se
muestra:

Pila de matrices

En realidad, OpenGL dispone de una pila para matrices del modelador y de otra para matrices
de proyección, junto con una pila adicional para matrices de textura.

Las operaciones básicas que se pueden realizar sobre la pila de matrices son las siguientes:

 Se puede extraer un elemento (matriz) de la pila mediante una llamada a la primitiva


glPopMatrix(). Esta primitiva, que no contiene parámetros, devolverá un valor
GL_STACK_UNDERFLOW, en el caso de que no sea posible la extracción al no existir
elementos en la pila.

 Se puede insertar un elemento (matriz) en la pila mediante una llamada a la rutina


glPushMatrix(), que tampoco recibe ningún parámetro. Devolverá un valor de error,
concretamente GL_STACK_OVERFLOW, en el caso de que la pila haya alcanzado su número
máximo de elementos permitidos, no pudiéndose realizar la última inserción.

4. EigenFace y el uso de las matrices para el reconocimiento facial

Los sistemas de detección de rostros no podrían concebirse sin el aporte de las transformaciones
espaciales, vectoriales y de las matrices. Las técnica EigenFace se basa en los principios y
propiedades de las matrices cuadradas, de los autovalores, autovectores, matriz de covarianza, y
otros más para realizar los cálculos y predecir un rosto.

Eigenfaces son un conjunto de vectores propios utilizados en el problema de la visión por


ordenador de reconocimiento de la cara humana. El enfoque de la utilización eigenfaces de
reconocimiento fue desarrollado por Sirovich y Kirby y utilizado por Matthew Turk y Alex
Pentland en la clasificación de cara. Se considera el primer ejemplo exitoso de la tecnología de
reconocimiento facial. Estos vectores propios se derivan de la matriz de covarianza de la
distribución de probabilidad del espacio de vector de alta dimensión de las posibles caras de
seres humanos.

Esta técnica, EigenFace, puede incluso ser útil no sólo para rostros sino para cualquier objeto.
Lo fundamental es que todos los elementos que formen parte del conjunto de entrada tengan
cierta forma o patrón común. Por ejemplo, todos los rostros se caracterizan por tener una forma
más o menos normal: dos ojos, una boca, una nariz, etc. Si tú mezclas diferentes objetos no va a
saber diferenciar a uno de otro.

5. Conclusiones
Como pudimos ver, el uso de las matrices en la ingeniería informática es muy útil para
todo tipo de problemas, desde los más básicos como el ordenamiento o resolución de
ecuaciones simples, hasta el uso de las mismas en la trasformación de vectores y su uso
en librerías como OpenGL. Así como estos ejemplos existen otros programas y
problemas informáticos que requieren de todo tipo de matrices.
Para resolver sistemas de ecuaciones se emplean matrices, y gracias a ellas es como una
máquina puede resolver grandes operaciones y ecuaciones complejas en tiempo
relativamente cortos (dejando de lado los grandes sistemas de simulaciones)
En la programación lineal se emplea ampliamente los sistemas de ecuaciones e
inecuaciones. Estos, como ya he dicho se resuelven velozmente mediante matrices.
Esta misma técnica se emplea en los sistemas de tomas de decisiones o STD.
En los videos juegos y sistemas de simulación se emplean muchas veces para
representar de forma abstracta ciertas estructuras de datos que puedan representar
algunas entidades del dominio en estudio. Por ejemplo, se puede representar o concebir
el mapa de un terreno de un juego como una matriz.
6. Bibliografía
 Informatica Grafica (Universidad de Salamanca) – OpenGL “Manipulación del
espacio: Transformaciones y proyecciones”
 Estructura de Datos (Universidad de Vigo, departamento de Ingeniería
Informatica)
 Representacion de Caras mediante EigenFaces – Luis Llorente Gimenez
 http://es.wikipedia.org/wiki/Matriz#matriz_en_inform.C3.A1tica.

También podría gustarte