opelvect.h

OPERACIONES ELEMENTALES CON VECTORES Y ALGUNAS PARA MATRICES


Sean  X,  Y vectores en R^n,  c  un escalar.

En C, la manera natural de almacenar el vector  X  en un arreglo  x  es:
   
    x[0]   = X1
    x[1]   = X2
    ...
    x[n-1] = Xn.
    
Tambien es posible que X no este almacenado de manera contigua, sino
con saltos.  Sea  s  el salto, s > 0, 

    x[0]   = X1
    x[s]   = X2
    x[2*s] = X3
    x[3*s] = X4
    ...
    x[(n-1)*s] = Xn
    
En  opelvect.h  hay operaciones elementales entre vectores, para ambos tipos
de almacenamiento. 

Como C++ permite la sobrecarga de nombres de funciones, entonces 
puede haber dos funciones con el mismo nombre, que hacen un trabajo
semejante, pero tienen alguna diferencia, por ejemplo en el tipo
o numero de parametros.

Por ejemplo,

    maxi  obtiene el maximo  Xi  de un vector double.
    maxi  obtiene el maximo  Xi  de un vector double, con salto.
    maxi  obtiene el maximo  Xi  de un vector entero.
  
    
Cuando en el nombre de la funcion aparece: 

    X mayuscula o Y mayuscula, se refieren a vectores o matrices
    A mayuscula o B mayuscula, se refieren a matrices.
    
Igl  significa  igual


Las matrices se pueden almacenar de 3 maneras:

  i)   por medio de un apuntador o arreglo sencillo, fila por fila,
       SIN espacio entre fila y fila.
  ii)  por medio de un apuntador o arreglo sencillo, fila por fila,
       CON espacio entre fila y fila.
  iii) por medio de un apuntador doble (apuntador a apuntador).

En los tres casos es necesario conocer  m  y  n, valores que
definen el tam~no de la matriz. 
En el caso ii) es necesario conocer, ademas, el valor  N  que 
indica el numero de posiciones de memoria del arreglo destinados
para cada fila de la matriz. Este valor  N  tambien se puede 
interpretar como el numero de posiciones que es necesario avanzar 
para pasar de un elemento cualquiera al siguiente elemento en 
la misma columna. Oviamente  N >= n.

Por ejemplo, sea  A  la matriz

  11  12  13  14
  21  22  23  24
  31  32  33  34

m = 3, n = 4.

La matriz se puede almacenar mediante un apuntador sencillo,
con sus filas contiguas, caso i), asi:

11  12  13  14  21  22  23  24  31  32  33  34

En el caso ii), con N = 6, se tendria el siguiente
almacenamiento:

11  12  13  14  X  X  21  22  23  24  X  X  31  32  33  34  X  X

Una matriz o un vector no son conjuntos, sin embargo se usara,
en este documento, el termino elemento o entrada para el valor
a_ij  o  para  x_j.

Cuando se hable de un "vector entero" se refiere a un vector con
elementos enteros (int).

Cuando se hable de un "vector double" se refiere a un vector con
elementos doble precision (double).

Cuando no se precisa si se trata de un vector double o de un
vector entero, se debe entender que se trata de un 
vector double.
------------------------------------------------------------
alea      crea aleatoriamente un vector.

alea      crea aleatoriamente un vector entero.

alea      crea aleatoriamente un vector con salto.

alea      crea aleatoriamente una matriz tipo iii).

alea1     crea aleatoriamente un matriz tipo iii),
          con subindices a partir de 1.

suma      suma de los elementos de un vector.

suma      suma de los elementos de un vector entero.

suma      suma de los elementos de un vector con salto.

sumaXY    obtiene el vector suma de dos vectores.

sumaXY    obtiene el vector suma de dos vectores con salto.

prod      producto de los elementos de un vector.

prod      producto de los elementos de un vector con salto.

prom      promedio de los elementos de un vector.

prom      promedio de los elementos de un vector con salto.

inter     intercambia los elementos de dos vectores.

inter     intercambia los elementos de dos vectores con salto.

norma2    norma 2 de Holder (euclidiana) de un vector.

norma2    norma 2 de Holder (euclidiana) de un vector con salto.

normaMax  norma del maximo de un vector.

normaMaxA norma del maximo de una matriz tipo ii).

dist2     distancia euclidiana entre dos vectores.

dist2     distancia euclidiana entre dos vectores con salto.

dist2     distancia euclidiana entre dos matrices tipo iii).

dist2_1   distancia euclidiana entre dos matrices tipo iii),
          con subindices a partir de 1.

evalPol   evalua un polinomio en un valor t.

divSint   division sintetica.

prodEsc   producto escalar de dos vectores.

prodEsc   producto escalar de dos vectores con salto.


alfaX     X = alfa * X,  X  es un vector.

alfaX     X = alfa * X,  X  es un vector con salto.

XMasAlfaY   X = X + alfa * Y,  X, Y son vectores.

XMasAlfaY   X = X + alfa * Y, X, Y son vectores con salto.

XIglK    X = k,  X es un vector,  k  es constante.

XIglK    X = k,  X es un vector con salto,  k  es constante.

XIglK    X = k,  X es un vector entero,  k  es constante. 

XIglK    X = k,  X  es una matriz tipo iii),  k  es constante. 

XIglK1   X = k,  X  es una matriz tipo iii), con subindices
                  a partir de 1,  k  es constante. 
       
XIglY    X = Y,  X, Y son vectores.

XIglY    X = Y,  X, Y son vectores, con salto.

XIglY    X = Y,  X, Y son matrices tipo iii).

XIglY1   X = Y,  X, Y son matrices tipo iii), con subindices
                 a partir de 1.

XIglAlfaY  X = alfa * Y,  X, Y son vectores, alfa es un escalar.

XIglAlfaY  X = alfa * Y,  X, Y son vectores con salto, 
                          alfa es un escalar.

ZIglXMasAlfaY  Z = X + alfa * Y,  X, Y, Z, son vectores,
                                  alfa es un escalar.

maxi      maximo  Xi  en un vector.

maxi      maximo  Xi  en un vector entero.

maxi      maximo  Xi  en un vector con salto.

maxPos    maximo  Xi y posicion en un vector con salto.

maxAbs    maximo  | Xi |  en un vector.

maxAbs    maximo  | Xi |  en un vector.

maxAbs    maximo  | Xi |  en un vector con salto.

maxAbsPos  maximo  | Xi | y posicion en un vector.

maxAbsPos  maximo  | Xi | y posicion en un vector con salto.

mini      minimo  Xi  en un vector.

mini      minimo  Xi  en un vector entero.

minAbs    minimo  | Xi |  en un vector.

minAbs    minimo  | Xi |  en un vector con salto.

maxAbsSubcol  maximo | a_ij | de una parte de na columna
              de una matriz tipo iii).

ordBurb   ordenamiento de un vector.

ordBurb   ordenamiento de un vector con salto.

ordBurbXY   ordenamiento de los vectores  X, Y,
            segun el orden de X.
