You are on page 1of 5

RESUMEN

EVALUACION DE PROCESOS

DISEO Y

OPERADORES, FUNCIONES Y COMANDOS


MATRICIALES
Con frecuencia, los trminos arreglo y matriz se usan de manera intercambiable en
ingeniera. Sin embargo, tcnicamente, un arreglo es un agrupamiento ordenado de informacin, mientras que una matriz es un arreglo numrico bidimensional que se usa en
lgebra lineal. Los arreglos pueden contener informacin numrica, pero tambin pueden
contener datos carcter, datos simblicos, etctera. Por tanto, no todos los arreglos son
matrices. Slo aqullos sobre los que se tenga intencin de realizar transformaciones
lineales satisfacen la definicin estricta de una matriz.
El lgebra matricial se usa de manera extensa en aplicaciones de ingeniera. Las
matemticas del lgebra matricial se introducen por primera vez en los cursos de lgebra
universitaria y se extiende en cursos de lgebra lineal y cursos de ecuaciones diferenciales.
Los estudiantes comienzan a usar regularmente el lgebra matricial en clases de esttica y
dinmica.
ADVERTENCIA
Uno de los grandes defectos de Matlab es la ambigedad al tratar vectores fila y matrices
con una nica columna. Esto es debido a que, por omisin, un vector con un nico ndice es
un vector fila mientras que el primer ndice de una matriz cuenta los elementos de una
misma columna.
Para ejemplificar este problema crearemos el vector u y el vector v de la siguiente manera:
>> u(3) = 1
u =
0

>> v(3,1) = 1
v =
0
0
1

Si Matlab fuera consistente estas dos instrucciones deberan generar el mismo vector, sin
embargo en la primera generamos un vector fila y en la otra un vector columna. Para
agravar los efectos de la inconsistencia ambos vectores pueden utilizar la misma notacin
de ndices:
>> u(3)
ans = 1
>> v(3)
ans = 1

RESUMEN
EVALUACION DE PROCESOS

DISEO Y

La nica manera de no cometer errores graves por culpa del hecho que Matlab est mal
pensado es recordar que existe un tipo vector y un tipo matriz o array que no tienen
absolutamente nada que ver aunque Matlab s sea capaz de operar entre ellos porque
considera que un vector es una matriz con una nica fila:
>> u*v %Esto es lo mismo que el producto escalar
ans = 1

Rutinas de creacin de matrices


Al igual que con los vectores, Matlab dispone de una ingente coleccin de funciones que,
combinadas adecuadamente, nos servirn para generar prcticamente cualquier matriz.
zeros

(...)
Crea una matriz con las medidas solicitadas llena de ceros.
La funcin zeros se puede llamar de muchas maneras. Si slo se utiliza un ndice
crea una matriz cuadrada de dimensiones el valor del argumento de entrada. Con
dos argumentos crear una matriz del tamao
siendo n el primer argumento
y m el segundo. Entonces, para crear un vector fila o un vector columna deberemos
hacer lo siguiente:
Ejemplo
>> zeros(3,1)
ans =
0
0
0
>> zeros(1,3)
ans =
0

ones(...)

Crea una matriz con las medidas solicitadas llena de unos. Su funcionamiento es
anlogo al de zeros
eye(...)

Crea una matriz con unos en la diagonal principal y ceros en el resto de sus
elementos. Su funcionamiento es anlogo al de zeros.

RESUMEN
EVALUACION DE PROCESOS

DISEO Y

rand(...)

Crea una matriz cuyos elementos son nmeros aleatorios. Su funcionamiento es


anlogo al de zeros.
Es importante recordar que, al igual que los vectores, cualquier matriz puede juntarse con
otra simplemente pegndolas.
>> [rand(3),zeros(3)]
ans =
0.80283
0.00527
0.73262

0.71353
0.07266
0.93908

0.73322
0.73062
0.77822

0.00000
0.00000
0.00000

0.00000
0.00000
0.00000

0.00000
0.00000
0.00000

Otra funcin til para generar matrices es la funcin reshape.


reshape(A,

m, n, ...)

Devuelve una matriz con dimensiones dadas a partir de los elementos de la matriz
A. En el caso que la matriz resultado no tenga el mismo nmero de elementos que la
origen la funcin dar un error.
Ejemplo
>> reshape([1,2,3,4],2,2)
ans =
1
2

3
4

Operaciones con matrices


Los operadores de suma, resta, multiplicacin, divisin y potencia tambin funcionan con
matrices siempre que sean del mismo tamao. Tambin podemos aplicar las funciones
elementales a matrices, lo que nos dar el mismo resultado que si hubiramos aplicado la
funcin a cada uno de los elementos. Por ejemplo
>> exp(eye(4))
ans =
2.7183
1.0000
1.0000
1.0000

1.0000
2.7183
1.0000
1.0000

1.0000
1.0000
2.7183
1.0000

1.0000
1.0000
1.0000
2.7183

Pero en el caso de las matrices existen operaciones propias como la multiplicacin matricial
o la inversa. Estas operaciones tambin tienen limitaciones: la multiplicacin matricial
exige que los tamaos de los operandos sean compatibles y slo las matrices cuadradas no

RESUMEN
EVALUACION DE PROCESOS

DISEO Y

singulares tienen inversa. Caso aparte son las divisiones matriciales puesto que tenemos
dos.
Advertencia
La confusin entre operaciones escalares y matriciales es el error ms comn en Matlab. Es
tan recurrente que incluso programadores con varios aos de experiencia lo cometen una y
otra vez. Para evitarlo en la medida de lo posible es recomendable utilizar, en vez de los
operadores que veremos a continuacin, las funciones que realizan la misma operacin.

Multiplicacin matricial
Existen dos maneras de multiplicar matrices en Matlab; la ms utilizada es el operador
multiplicacin matricial *, el mismo operador que para la multiplicacin escalar pero sin el
punto. La otra es la funcin mtimes
mtimes(x,

y)

Multiplica las matrices x e y siempre que sus dimensiones sean compatibles, esto es,
la traspuesta de y debe tener exactamente el mismo nmero de filas y columnas que
x. Es equivalente a x*y.
En cdigo existente en Matlab veremos pocas veces la funcin mtimes. Histricamente
siempre se ha tendido a la brevedad, sin embargo evitar errores transparentes es importante.
Un error transparente es un error no evidente viendo los resultados del cdigo paso a paso.
Un caso de error transparente es confundir la multiplicacin matricial con la escalar con
matrices cuadradas. Por ejemplo
>> x = rand(3);
>> y = rand(3);
>> x*y
ans =
0.50380
0.92682
0.52361

1.42800
1.45590
0.90870

0.79806
1.43060
0.82197

>> x.*y
ans =
0.210474
0.055776
0.457864

0.435326
0.279980
0.282493

0.274738
0.101831
0.252486

La diferencia entre las dos matrices no es evidente. Si nuestro resultado dependiera de este
clculo sera prcticamente imposible descubrir el error a no ser que sospechemos
precisamente de esta operacin.

RESUMEN
EVALUACION DE PROCESOS

DISEO Y

Divisin matricial
Existen dos tipos de divisin matricial aunque las dos operaciones tienen poco que ver. La
divisin de un nmero puede definirse a partir de la multiplicacin invirtiendo uno de los
factores. Por ejemplo

a su vez

Si nos fijamos en la parte derecha de las dos ecuaciones esto nos podra servir para
introducir otro operador de divisin. En el caso de la primera ecuacin, en la que se invierte
el segundo operando, estamos delante de la divisin usual. El nmero que se invierte es el
segundo. Pero tambin podramos tratar el segundo caso como una divisin en la que el
operando que se invierte es el primero. Matlab tambin tiene un operador para eso. En este
caso tenemos una divisin a derechas y una divisin a izquierdas.
>> mrdivide(2,3)
ans = 0.66667
>> mldivide(2,3)
ans = 1.5000
mrdivide(x,

y)

Calcula la divisin a derechas de dos argumentos


mldivide(x,

y)

Calcula la divisin a izquierdas de dos argumentos


Estas dos funciones tambin tienen su equivalente en operador. La divisin a derechas se
expresa mediante el smbolo /, mientras que la divisin a izquerdas se expresa con el
smbolo \.

Potencia de matrices
Al igual que con el resto de operaciones aritmticas bsicas disponemos de una funcin y
un operador para la potencia de una matriz. Esta operacin slo tiene sentido para matrices
cuadradas, para cualquier otra matriz dar un error.
mpow(X,

y)

Eleva la matriz X a la y sima potencia. Es equivalente a utilizar el operador ^.


5

You might also like