Está en la página 1de 16

Mdulo 2

Manejo de matrices
El poder y versatilidad de MATLAB frente a los dems lenguajes de
programacin reside principalmente en la forma como maneja las matrices
mediante sus mtodos de definicin e indexacin de matrices.
Cuando estamos desarrollando un programa que implica muchos
clculos, como por ejemplo, balances de materia que contienen parmetros
variables, a veces solo necesitamos tomar uno o varios elementos de una
matriz que hemos definido, y en algunos casos, hasta secciones completas de
estas. La estructura operacional que MATLAB nos proporciona, llega a ser
suficientemente para realizar este tipo de acciones de una manera muy
sencilla y con una sintaxis bastante clara.
MATLAB contiene una gran cantidad de mtodos que nos permite
combinar matrices, extraer informacin de ellas, cambiar sus valores cuando lo
deseamos y otras caractersticas que nos ayudaran a realizar tareas de
programacin ms complejas.

2.1 Indexacin
Los elementos que contiene una matriz se encuentran localizados e
identificados por un nmero o par de nmeros ndice. De esta forma, podremos
decir que la posicin de un elemento en una matriz tiene un ndice
determinado, y por lo tanto, es nico y caracterstico. Si por ejemplo escribimos:
A=[7 5 3 8 2];
1

Manejo de matrices
A(2)
Ans=
5
Note que hemos pedido a MATLAB que nos regrese el segundo elemento
del vector A. de hecho, podemos cambiar los valores los elementos en una
matriz mediante indexacin:
A(3)=7
A=
7

Fjese que el tercer elemento del vector cambio de un valor de 3 a 7.


Incluso podemos extender la cantidad de elementos agregndolos mediante
estos mismos mtodos:
A(6)=66
A=
7

66

El vector anterior inicialmente solo posea 5 elementos y se defini un


sexto elemento con valor numrico de 66. Ahora, si por ejemplo definimos un
nuevo elemento que no corresponde al siguiente ndice que supera el nmero
de elementos de un vector, MATLAB definir como cero los elementos
intermediaros, por ejemplo:
A(9)=13
A=
7

66

13

Cuando se trata de localizar elementos en una matriz, es ms


conveniente hacer uso de dos ndices, el primero que corresponde al nmero de
fila que ocupa el elemento en la matriz, y el segundo al nmero de la columna:
A=[ 4 3 5
326
1 8 5];
2

MATLAB desde cero


A(2,3)
ans =
6
Sin embargo, tambin podemos utilizar un solo ndice para matrices,
teniendo en cuenta que las posiciones estn enumeradas de arriba hacia abajo
a travs de las columnas, as para la matriz anterior:
A(8)
ans =
6

2.2 Operador dos puntos


Anteriormente vimos cmo usar el operador dos puntos para crear vectores con
espaciamientos regulares. Por ejemplo, si queremos crear un vector con una
unidad de espaciamiento entre los elementos, solo ponemos los valores inicial y
final separados por dos puntos:
A=1:6
A=
1

Si queremos cambiar el espaciamiento, basta con que coloquemos el valor


inicial seguido de dos puntos, luego colocamos el espaciamiento que deseamos,
seguido de dos puntos y luego el valor final.
B=1:0.5:4
B=
1.0000

1.5000

2.0000

2.5000

3.0000

3.5000

4.0000

De esta forma creamos un vector que va del 1 al 4 con saltos de 0.5. Note
que el valor que queda dentro de los dos puntos corresponde al espaciamiento
entre elementos, mientras que los valores extremos marcan el valor inicial y
final del vector.
3

Manejo de matrices

Con el uso del operador dos puntos tambin podremos extraer filas y
columnas de una matriz, por ejemplo:
x=[ 3 8 7 6
3298
7 1 4 3];
x(:,3)
ans =
7
9
4
De esta forma, le hemos indicado a MATLAB que nos proporcione todos
los elementos de la fila 3. La notacin x(:,3) debe ser leda como todos los
elementos de la columna 3 de la matriz x. Ahora, si por ejemplo queremos
sustraer la segunda fila, usamos la notacin x(2,:) indicndole a MATLAB que
queremos todos los elementos de la fila 2:
x(2,:)
ans =
3

A veces es de cierta utilidad sacar pequeas porciones de una matriz, es


decir, si necesitramos los elementos 1 al 3 de la segunda columna, podramos
escribir:
x(2:3,2)
ans =
2
1
Tambin, si quisiramos sustraer los elementos del 2 al 4 de la tercera
fila, escribiramos:
x(3,2:4)
4

MATLAB desde cero

ans =
1

Siguiendo la lgica de este uso, es posible extraer pequeas porciones


completas de una matriz, as, si queremos los elementos 2 y 3 de la tercer y
cuarta columna, escribimos:
x(2:3,3:4)
ans =
9
4

8
3

Por ltimo, si deseamos crear una columna que contenga todos los
elementos de la matriz podemos usar la siguiente sintaxis:
x(:)
ans =
3
3
7
8
2
1
7
9
4
6
8
3
Al ejecutar el anterior cdigo, los elementos de esta columna fueron
ordenados de columna en columna, es decir, una vez se incluyeron los trminos
de una columna, los siguientes elementos eran los de la columna consecuente.
Hasta este punto, el lector
debe notar que MATLAB opera
preferentemente sobre columnas y no sobre filas como muchos esperaran.

2.3 Concatenacin
5

Manejo de matrices

Concatenar es el proceso de unir eslabones o cadenas. La concatenacin en


MATLAB es la operacin de combinar matrices y definir otras a partir de las ya
existentes, por ejemplo, note lo siguiente:
A=[4 9 7];
B=[ 2 3 A]
B=
2

Incluso podemos definir nuevas filas y columnas mediante indexacin:


x=[8 3 6];
x(2:3,:)=[4 7 2
2 9 6]
x=
8
4
2

3
7
9

6
2
6

y=[1 2 3];
z=[9
2
7
2];
w=[[x;y],z]
w=
8
4
2
1

3
7
9
2

6
2
6
3

9
2
7
2

MATLAB desde cero

2.4 Matrices multidimensionales.


En MATLAB es posible trabajar en matrices superiores a dos dimensiones. De
esta forma, si queremos crear una matriz de tres paginas podemos hacerlo de
la siguiente forma:
x(:,:,1)=[1 2
34
8 9];
x(:,:,2)=[2 3
72
1 9];
x(:,:,3)=[9 8
36
2 4];
Ahora, si procedemos a llamar la variable x, el resultando en pantalla
ser:
x
x(:,:,1) =
1
3
8

2
4
9

x(:,:,2) =
2
7
1

3
2
9

x(:,:,3) =
9
3
2

8
6
4

Manejo de matrices

2.5 Uso del comando meshgrid


A la hora de realizar operaciones entre dos o ms variables, se hace necesario
el uso de algunos comandos especiales que nos permiten hacerlo.
Suponga que deseamos resolver un problema de gases ideales en el que
tenemos cuatro temperaturas de 200 a 300 kelvin igualmente espaciadas y
presiones de 4 y 8 atmsferas. El objetivo del problema es calcular el volumen
molar del gas para cada par de temperatura y presin posible, de tal forma que
pudisemos llenar la tabla 2.1 con los volmenes respectivos:

P1
P2

T1
V11
V21

T2
V12
V22

T3
V13
V23

T4
V14
V24

Tabla 2.1 Matriz de volmenes en funcin de presin y temperatura.

Note que la manera que trabajamos anteriormente no nos permite


hacerlo, y si bien podramos, no es el enfoque ms elegante al que se puede
recurrir. Declaremos los vectores T y P que contienen los valores de
temperatura y presin correspondiente, y adems la constante de los gases:
T=linspace(200,300,4);
P=[4 8];
R=0.082;
Si deseamos realizar la operacin para hallar los volmenes:
V=R*T./P
MATLAB nos arrojar el siguiente error:
Error using ./
Matrix dimensions must agree.
Este error es muy comn, y traduce que las dimensiones de las matrices no
concuerdan para la operacin en cuestin.
Para superar este problema hacemos uso del comando meshgrid cuya
sintaxis es [X,Y]=meshgrid(x,y), donde x e y son vectores. Este comando
realiza un mapeo de los vectores, de tal forma que crea dos matrices X e Y que
contienen tantas columnas como elementos en x, y tantas filas como elementos
en y. Adems, todas las filas de la nueva matriz X son iguales al vector x, y
todas las columnas de la nueva matriz Y son iguales al vector y.
8

MATLAB desde cero


Para resumir lo anterior, apliquemos esto al problema en cuestin:
[TT,PP]=meshgrid(T,P)
TT =
200.0000 233.3333 266.6667 300.0000
200.0000 233.3333 266.6667 300.0000
PP =
4
8

4
8

4
8

4
8

Con este nuevo arreglo de la informacin de T y P podemos hallar los


volmenes de todas las posibles combinaciones:
V=R*TT./PP
V=
4.1000
2.0500

4.7833
2.3917

5.4667
2.7333

6.1500
3.0750

As, la primera fila corresponde a los volmenes en las diferentes


temperaturas para una presin de 4 atm, y la segunda para una presin de 8
atm. Fjese que esta ltima matriz llena la tabla 2.1.
El uso del comando meshgrid tambin se extiende para crear matrices
multidimensionales.

2.6 Matrices especiales


2.6.1 Matriz de ceros
Podemos crear una matriz de ceros usando zeros con la sintaxis zeros(n) para
crear una matriz cuadrada de dimensiones nxn , o con la sintaxis zeros(m,n)
para crear una matriz de zeros de dimensiones mxn.

Manejo de matrices
Por ejemplo:
A=zeros(3)
A=
0
0
0

0
0
0

0
0
0

>> B=zeros(2,3)
B=
0
0

0
0

0
0

2.6.2 Matriz de unos


Podemos crear una matriz de unos muy similarmente a como lo hacemos con
una matriz de zeros, pero usando la funcione ones:
ones(3)
ans =
1
1
1

1
1
1

1
1
1

ones(2,3)
ans =
1
1

1
1

1
1

Si por ejemplo deseamos crear una matriz de nmeros diferentes de 1,


por ejemplo, una matriz de 7, podemos hacerlo como se muestra a continuacin:
x=7*ones(1,3)
x=
7

7
10

MATLAB desde cero


2.6.3 Matriz diagonal
Si Ahora queremos crear una matriz cuya diagonal son elementos conocidos
usamos la el comando diag cuya sintaxis es diag(x) donde x es el vector que
contiene los elementos de la diagonal, por ejemplo:
x=[9 3 7 5];
y=diag(x)
y=
9
0
0
0

0
3
0
0

0
0
7
0

0
0
0
5

Note la siguiente sintaxis y lo que pasa cuando lo ejecutamos para el


mismo vector x del ejemplo anterior:
z1=diag(x,1)
z1 =
0
0
0
0
0

9
0
0
0
0

0
3
0
0
0

0
0
7
0
0

0
0
0
5
0

>> z2=diag(x,-1)
z2 =
0
9
0
0
0

0
0
3
0
0

0
0
0
7
0

0
0
0
0
5

0
0
0
0
0

Fjese, que el valor de la segunda entrada del comando diag indica la diagonal
especfica que queremos crear, sea por encima de la diagonal principal para el
cual el valor es positivo, o por debajo de la diagonal principal, para el cual el
valor es negativo.

11

Manejo de matrices
Ahora, si queremos crear la muy popular matriz tridiagonal, solo basta sumar
las matrices que contienen la informacin, por ejemplo:
x=[1 2 3 4 5];
y=[10 20 30 40];
z=[-10 -20 -30 -40];
w=diag(x)+diag(y,1)+diag(z,-1)
w=
1 10
-10 2
0 -20
0
0
0
0

0
0 0
20 0 0
3 30 0
-30 4 40
0 -40 5

2.7 Solucin de sistemas de ecuaciones lineales


Del algebra lineal podemos recordar que un sistema de ecuaciones lineales se
puede expresar de la forma:

Donde A es la matriz de coeficientes de las variables, x es el vector


columna de incgnitas y b es el vector columna de trminos independiente.
Para resolver este sistema de ecuaciones lineales podemos hacer uso de la
frmula:
( )
Donde

( ) es la matriz inversa de .

En MATLAB podemos hallar la inversa de una matriz con solo usar el comando
inv(A).
Analicemos por ejemplo, el siguiente sistema de ecuaciones lineales

12

MATLAB desde cero


La matriz de coeficientes de este sistema de ecuaciones lineales puede y
el vector columna de coeficientes independientes pueden escribirse como:

Para hallar la inversa de la matriz A y luego solucionar el sistema de


ecuaciones podemos usar el siguiente cdigo:
A=[2 1 0;1 -3 3;-1 1 1];
b=[-1;4;10];
Hallamos la inversa de la matriz con el uso del comando inv:
M=inv(A)
M=
0.3750 0.0625 -0.1875
0.2500 -0.1250 0.3750
0.1250 0.1875 0.4375
Y ahora la solucin al sistema de ecuaciones lo resolvemos con la
siguiente sintaxis:
X=inv(A)*b
X=
-2
3
5

13

Manejo de matrices
Ejemplo de aplicacin 2.1
En cierta planta de produccin qumica se producen 10kmol/h de una
sustancia a partir de un reactivo . La nica reaccin que se lleva a cabo en
el reactor es la siguiente:

La alimentacin al proceso es una mezcla que contiene 96%molar del reactivo


A y el remanente es un inerte I usada para controlar la presin en el reactor,
que tiene una conversin de un paso de x=20%. Existe una relacin de
recirculado/purga en este proceso F5/F6=R. Para este problema tmese la
relacin R=5. La corriente de producto (corriente 7) tiene un flujo de 10 kmol/h
de B puro y la corriente de purga solo contiene el reactivo
e inerte. El
diagrama de flujo del proceso se puede ver en la figura 2.1.

Figura 2.1 Diagrama de flujo para el ejemplo de aplicacin 2.1

Resuelva los balances de materia del proceso y construya una tabla que reporte
la informacin del sistema en ocho columnas. La primera enumera las
corrientes, la segunda el flujo molar total de la corriente respectiva, de la
tercera a la quinta los flujos molares de A B e I en kmol/h, y de la sexta a la
octava las fracciones molares de los componentes A B e I. Calcule la conversin
global del sistema.

14

MATLAB desde cero


Solucin
Balance de B en el condensador:

Moles de A en la corriente 2:

Expresando algebraicamente lo anterior:

Moles de A en la corriente 3:
(
Moles de A en las corrientes 4,6,5 y 1:

Moles de I en la corriente 1,6,5,4,3,2:

Calculo de los flujos molares totales:


Calculo de las fracciones molares:

15

Manejo de matrices
Conversin global del sistema:

El cdigo vinculado a la resolucin de este problema lo podemos ver en la figura


2.2, y el resultado en pantalla en la figura 2.3.

Figura 2.2 Cdigo problema de aplicacin 2.1.

Figura 2.3 Despliegue en pantalla del cdigo de la figura 2.2.

16

También podría gustarte