Buscar este blog

martes, 18 de enero de 2011

5.Vectores y Matrices

5.1 Introducción


El componente básico de una estructura de datos es la celda. Se puede representar una celda como una caja capaz de almacenar un valor tomado de algún tipo de datos básicos o compuestos. Las estructuras de datos se crean dando nombres a agregados de celdas e interpretando los valores de algunas celdas como representantes de conexiones entre celdas.

 5.2 Vectores

En programación, un arreglo (una matriz o vector) (llamados en inglés arrays) es una zona de almacenamiento contiguo, 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.
5.3 Producto escalar de vectores


Producto de dos Vectores (matrices).

La regla para multiplicar dos matrices es bastante más complicada que para sumar dos matrices de las mismas dimensiones. En general, se pueden multiplicar dos matrices de dimensiones m x n y n x q, dando como resultado una matriz de dimensiones m x q. En este apartado nos circunscribiremos exclusivamente a matrices cuadradas de dimensión n.
 


Los elementos cij se obtienen multiplicando los elementos aik de la fila i por los elementos akj de la columna j, y sumando los resultados.

 
La codificación se realiza empleando un tripe bucle for, guardando en los elementos de la la matriz local resultado la suma de los productos de la fórmula anterior.


5.4 Copia de vectores

Copia de una matriz dada

Cuando calculamos la matriz inversa de una dada, pasamos una matriz en el único parámetro de la función estática denominada inversa. En el cuerpo de dicha función se realizan operaciones con los elementos de dicha matriz. Dado que en Java se pasan por valor las referencias a objetos, la matriz original resulta modificada en el curso de la llamada a la función inversa.
Si queremos mantener la matriz original, hacemos una copia de dicha matriz en el cuerpo de la función y realizamos las operaciones con la matriz copia dejando la original sin modificar.
Para realizar una copia hemos de implementar el interface Cloneable, y redefinir la función miembro clone de la clase base Object, de la cual derivan todas las clases en Java. El primer paso es la llamada a la función clone de la clase base Object.



5.5 Vectores paralelos


El vector es el mecanismo básico para almacenar una colección de entidades del mismo tipo. Un vector es un array unidimensional de números. Se define la clase Vector con dos miembros dato, el número de datos que guarda y el array unidimensional que guarda dichos datos.
Este concepto se da cuando hay una relación entre las componentes de igual subíndice (misma posición) de un vector y otro.

Si tenemos dos vectores de 5 elementos cada uno. En uno se almacenan los nombres de personas en el otro las edades de dichas personas.
Decimos que el vector nombres es paralelo al vector edades si en la componente 0 de cada vector se almacena información relacionada a una persona (Juan – 12 años) Es decir hay una relación entre cada componente de los dos vectores.

5.6 Matrices


Es un array bidimensional de números. En general, decimos que una matriz tiene una dimensión m x n, cuando los números están dispuestos en m filas y n columnas.
Se denominan matrices cuadradas a aquellas que tienen el mismo número de filas que de columnas.

5.7 Productos de matrices


La regla para multiplicar dos matrices es bastante más complicada que para sumar dos matrices de las mismas dimensiones. En general, se pueden multiplicar dos matrices de dimensiones m x n y n x q, dando como resultado una matriz de dimensiones m x q.



5.8 Ejemplos