7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
1/54
Nociones bsicas de MatLab 7.0
Para la asignatura Reactores Qumicos de
4 curso de Ingeniero Qumico en la UGR
Curso 2008/2009
Miguel Garca Romn
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
2/54
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
3/54
Nociones bsicas de MatLab 7.0
3
ndice.
1. Primeros pasos con Matlab. 5
1.1. La pantalla de MatLab 5
2. Uso de operadores y realizacin de operaciones sencillas 6
2.1. Formato de los nmeros en MatLab 6
2.2. Operaciones con escalares y funciones matemticas bsicas 7
2.3. Definicin de variables escalares 8
3. Manejo de matrices (arrays) 8
3.1. Introduccin manual de matrices 8
3.2. Manipulacin y Operaciones con matrices. 10
4. Representaciones grficas: El comando plot 15
4.1. El comando plot. 15
4.2. Representacin de grficos a partir de funciones. 184.3. Representar varias funciones en el mismo grfico. 18
4.4. Dar formato a los grficos. 21
4.5. Escalas no lineales y grficos especiales. 22
5. Ficheros de programa (script). 25
5.1. Ejecucin de un fichero script: El directorio de trabajo actual. 25
5.2. Asignacin de valores a las variables de un fichero script y comandos de salida. 26
5.3. Importacin y exportacin de datos. 27
6. Ficheros de funcin. 27
6.1. Creacin de un fichero de funcin. 28
6.2. Variables Globales. 29
6.3. Funciones inline. 32
7. Programacin en MatLab. 32
7.1. Operadores relacionales y operaciones lgicas. 33
7.2. Sentencias de programacin. 35
8. Algunas aplicaciones importantes de MatLab. 37
8.1. Polinomios. 37
8.2. Ajuste de curvas. La funcin polyfit. 38
8.3. Interpolacin. 39
8.4. Solucin de ecuaciones de una variable. 40
8.5. Clculo del mximo y mnimo de una funcin. 40
8.6. Integracin numrica. 42
8.7. Resolucin de ecuaciones diferenciales ordinarias. 42
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
4/54
4
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
5/54
Nociones bsicas de MatLab 7.0
5
1. Primeros pasos con Matlab.
MatLab es un potente programa de clculo cuyo nombre proviene de Matrix
Laboratory, lo que indica que trabaja con matrices como dato bsico. El programa
posee una serie de funciones principales y otras accesorias, que van siendo
progresivamente desarrolladas, y que constituyen las denominadas cajas de
herramientas (toolboxes). A continuacin se abordarn, de forma progresiva, los
aspectos principales que se necesitan para trabajar con este programa, hasta el nivel
que se precisa para cursar la asignatura de Reactores Qumicos, correspondiente al 4
de la titulacin de Ingeniero Qumico de la Universidad de Granada.
1.1. La pantalla de MatLab
La pantalla principal de MatLab cuenta con tres subventanas que por defecto estarn
presentes la primera vez que se abre el programa. stas son:- Command Window, que es la que nos permite introducir las rdenes o
comandos en el programa.
- Command History Window, que muestra la secuencia de comandos ejecutados
- Current Directory Window/Workspace, muestra los programas presentes en el
directorio actual, aunque haciendo clic en la pestaa correspondiente situada
bajo la ventana, se muestran los valores de las variables que se hayan
asignado.
Adems de stas existen otras ventanas importantes:
- Figure Window, que muestra las figuras resultado de algn comando, y por
tanto aparece cuando se ejecutan stos, aunque puede dejarse fija si se
desea.
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
6/54
Nociones bsicas de MatLab 7.0
6
- Editor Window, que permite escribir programas (scripts), y se abre mediante
el Men File (New M-File).
Existe tambin una ventana de ayuda (Help Window), que se activa mediante la
tecla F1, y que resulta de gran utilidad, ya que dadas las amplsimas posibilidades
que ofrece MatLab, es imposible disponer de un manual que abarque todas ellas.
2. Uso de operadores y realizacin de operaciones sencillas
En primer lugar se dan una serie de normas generales de uso de la Ventana de
Comandos:
1) Cada comando es ejecutado cuando se pulsa Enter ( ), y el resultado se
visualiza en la pantalla, excepto que se escriba un punto y como (;) tras el
comando escrito, en cuyo caso el resultado se almacena, pero no se muestra.
2) Las flechas del cursor (() pueden usarse para volver a mostrar los comandosanteriormente introducidos.
3) Se puede insertar un salto de lnea introduciendo puntos suspensivos () y
pulsando . Esto es til para comandos largos.
4) El programa no procesa lo escrito tras smbolo %, por lo que este es muy til
para escribir comentarios, sobre todo en programas (script).
5) El comando clc sirve para limpiar la ventana de comandos
2.1. Formato de los nmeros en MatLab
El formato por defecto de los nmeros en MatLab muestra slo cuatro decimales(formato short). A continuacin se enumeran los principales formatos numricos que
maneja MatLab. Hay que tener en cuenta que la forma en que MatLab realiza los
clculos es independiente de cmo se muestran los resultados.
- Formato long: muestra hasta 14 decimales
- Formato short e/long e: anlogos al short y al long, pero que usa siempre
notacin cientfica.
- Formato short g y long g: elige la mejor opcin entre short o short e y long o
long e.
El uso del formato short g es bastante recomendable, ya que emplea la notacin
cientfica slo cuando es necesario para visualizar el nmero.
Para cambiar entre los distintos formatos se puede usar el comando format (el
cambio slo es vlido para la presente sesin) o bien hacerlo desde el Men
FilePreferences, en el apartado Command Window (el cambio se mantiene al
entrar y salir del programa).
A continuacin se muestran algunos ejemplos de aplicacin de estos formatos:
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
7/54
Nociones bsicas de MatLab 7.0
7
>> format short
>> a=[1.5777889 0.0000005 548129453975]
a =
1.0e+011 *
0.0000 0.0000 5.4813
>> format short e
>> a=[1.5777889 0.0000005 548129453975]
a =
1.5778e+000 5.0000e-007 5.4813e+011
>> format short g
>> a=[1.5777889 0.0000005 548129453975]
a =
1.5778 5e-007 5.4813e+011
2.2. Operaciones con escalares y funciones matemticas bsicas
MatLab permite realizar operaciones con escalares de forma anloga a una
calculadora, usando los siguientes operadores:
Operador Operacin Ejemplo
+ Suma 2+3 Resta 23 Multiplicacin 23
/ \ Divisin 2/3 = 3\2 = 32
^ Potencia 2^3 = 23 = 8
Las operaciones pueden realizarse directamente con nmeros, o bien con variables, a
las que previamente se les asigna un valor numrico (un escalar o una matriz).
Adems MatLab dispone de una vastsima librera de funciones, algunas de las cuales
se abordarn con ms detalle en estas notas. Sin embargo, en la siguiente Tabla se
recoge la forma de escribir en MatLab las funciones matemticas elementales.
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
8/54
Nociones bsicas de MatLab 7.0
8
Funcin Descripcin
sqrt(x) raz cuadradaexp(x) exponencial(ex)abs(x) valor absolutolog(x) logaritmo natural
log10(x) logaritmo decimalfactorial(x) (factorial de x, x!)
2.3. Definicin de variables escalares
La asignacin de valores escalares es muy sencilla, como se ve en el siguiente
ejemplo que asigna el valor 15 a la variable x:
>> x=15
A partir de este momento es posible usar la variable x en clculos sucesivos o como
argumento de funciones.En cuanto al nombre de las variables, este puede tener hasta 63 caracteres, que
pueden ser letras, dgitos y el carcter de subrayado, si bien deben comenzar por
una letra. Hay que tener en cuenta que MatLab distingue maysculas de minsculas.
Si se desea borrar alguna o todas las variables, se debe usar el comando clear,
especificando despus el nombre de las variables a borrar. Si no se especifica nada,
las borra todas ellas.
3. Manejo de matrices (arrays)
MatLab maneja los datos siempre en forma de matrices. stas pueden ser
unidimensionales (vectores fila o columna) o bidimensionales (matrices propiamente
dichas). Los elementos de una matriz pueden ser nmeros, variables predefinidas,
caracteres o funciones matemticas.
3.1. Introduccin manual de matrices
La forma ms sencilla de introducir los elementos de una matriz, cuando stos son
conocidos, es hacerlo manualmente mediante la ventana de comandos. Para ello
basta con escribirlos entre corchetes y separados por un espacio o coma (elementosde una misma fila) o un punto y coma (elementos de diferentes filas), tal y como se
observa en los ejemplos siguientes:
>> A=[1 2 3]
A =
1 2 3
>> B=[1;2;3]
B =
1
23
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
9/54
Nociones bsicas de MatLab 7.0
9
>> C=[1 2 3;4 5 6]
C =
1 2 3
4 5 6
Otra forma de introducir vectores es especificar el primer trmino (a), la diferenciaentre cada dos trminos (d), que obviamente no puede variar, y el ltimo trmino
(z), p. ej., x=[ a: d: z] . Esto resulta til para especificar, por ejemplo, los valores de
la variable independiente (x) para los cuales se representarn los valores
correspondientes de la variable dependiente (y).
>> x=[0:0.25:1]
x =
0 0.25 0.5 0.75 1
Es tambin posible crear un vector especificando el primer y el ltimo elemento (a y
b, p. ej.), as como el nmero total de elementos del vector (n). La distancia entre
dos elementos sucesivos depender, evidentemente, del nmero total de trminos
que deseemos. Para hacer esto se usa el comando linspace, de la forma siguiente:
x=l i nspace( a, b, n) .
>> x=linspace(1,4,7)
x =
1 1.5 2 2.5 3 3.5 4
Si no se especifica el nmero de elementos se considera 100 por defecto.
Una vez introducida una matriz es conveniente conocer algunos comandos para
trabajar con ellas:
Para obtener el elemento i-simo de un vector A, escribiremos A( i )
Si es una matriz, tendremos que especificar tanto la fila como la columna en la
que se encuentra el elemento en cuestin. As si se encuentra en la fila i y en la
columna j, escribiremos: A( i , j )
De esta forma es posible tambin asignar nuevos valores al elemento que
queramos, sin modificar el resto de la matriz.
Si queremos especificar un rango de elementos de un vector o matriz, usaremos
dos puntos, de la siguiente manera:
i. A( m: n) : Se refiere a los elementos comprendidos entre las posiciones
m a n del vector A.
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
10/54
Nociones bsicas de MatLab 7.0
10
ii. M( : , n) : Se refiere a todos los elementos de la columna n de la matriz
M.
iii. M( : , n: m) : Se refiere a los elementos de las columnas n a la m de la
matriz M.
Lo anteriormente indicado para las columnas de una matriz, se puede hacer para las
filas, siendo las rdenes: M( n, : ) y M( n: m, : ) . Adems con esta misma notacin es
posible aadir elementos a un vector, o filas o columnas a una matriz ya creada,
como en el siguiente ejemplo.
>> A=[1 2 3 4]
A =
1 2 3 4
>> A(5)=5
A =
1 2 3 4 5
>> M=[1 2 3;4 5 6]
M =
1 2 3
4 5 6
>> M(3:4,:)=[7 8 9;10 11 12]
M =
1 2 3
4 5 6
7 8 9
10 11 12
3.2. Manipulacin y Operaciones con matrices.
Para trabajar con matrices disponemos de los siguientes operadores:
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
11/54
Nociones bsicas de MatLab 7.0
11
Operador Funcin Comentario
Transposicin Cambia las filas por columnas y viceversa
+ Suma
- Resta
Sirven para sumar y restar matrices, que debern
tener el mismo nmero de filas y columnas, de
acuerdo con las reglas algebraicas de suma y resta
de matrices. Tambin sirven para sumar o restar
un escalar a una matriz, en cuyo caso lo sumar o
restar a todos los elementos de la misma.
* Multiplicacin
Efecta el producto de matrices, siguiendo las
leyes algebraicas. Por ello las dimensiones de las
matrices a multiplicar sern: (m,n) * (n,p) = (m,p).
Tambin permiten multiplicar un escalar por una
matriz, lo que implica hacerlo por cada uno de sus
elementos.
dot Producto escalar
Realiza el producto escalar de dos vectores.
dot(a,b) sera el producto escalar de los
vectores a y b, que deben ser dos vectores (fila ocolumna) con el mismo nmero de elementos.
Equivale a la multiplicacin matricial de un vector
fila x un vector columna del mismo nmero de
elementos.
^ Potencia Slo se puede aplicar a matrices cuadradas. Un
caso particular es la potencia -1, que nos da la
matriz inversa, la cual tambin se puede obtenermediante el comando inv()
inv(A) Inversa Devuelve la matriz inversa de A (es lo mismo que
A^-1)
det(A) Determinante Calcula el determinante de la matriz A (cuadrada)
/ Divisin derecha A/B = A*inv(B)
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
12/54
Nociones bsicas de MatLab 7.0
12
Operador Funcin Comentario
\ Divisin izquierda A\B = inv(A)*B
eye(n) Matriz identidad Genera una matriz identidad de orden n
Las dos formas de divisin de matrices son tiles para resolver sistemas de
ecuaciones lineales. Por ejemplo, sea el sistema de ecuaciones lineales y su forma
matricial:
1325
21438
1023
=++
=+
=+
zyx
zyx
zyx
=
13
21
10
125
438
123
z
y
x
*
Su resolucin en MatLab, de dos formas posibles:
>> A=[3 2 -1;8 -3 4;5 2 1];
>> B=[10;21;13];
>> x=inv(A)*B
x =
3.225
-0.7
-1.725
>> x=A\B
x =
3.225
-0.7
-1.725
Ahora bien, el anterior sistema tambin admite la siguiente forma matricial:
[ ] [ ]132110
141
232
583
=
*zyx
En este caso su resolucin en MatLab requerira usar la divisin derecha:
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
13/54
Nociones bsicas de MatLab 7.0
13
>> a=A'
a =
3 8 5
2 -3 2
-1 4 1
>> b=B'
b =
10 21 13
>> x=b*inv(a)
x =
3.225 -0.7 -1.725
>> x=b/a
x =
3.225 -0.7 -1.725
En este punto conviene aclarar que para entender las diferentes operaciones con
matrices que se han resumido en la tabla y ejemplos anteriores es necesario conocero recordar el lgebra matricial, acudiendo para ello a un texto general de
matemticas.
A parte de las anteriores operaciones, MatLab tambin permite operar con las
matrices elemento a elemento. La operacin elemento a elemento no sigue las
reglas del lgebra matricial, en lo que se refiere al producto y la divisin, ya que lo
que hace es operar con cada par de elementos de la matriz que ocupen la misma
posicin. Por eso este tipo de operaciones slo se pueden hacer con matrices de las
mismas dimensiones, tal y como sucede con la suma y resta algebraica de matrices.
Para que las operaciones de multiplicacin, divisin y potenciacin se realicen
elemento a elemento es necesario aadir un punto delante de los smbolos:
. * . / . \ .
En los siguientes ejemplos se muestra como aplicar las anteriores operaciones:
>> v=[1 2 3 4 5];
>> w=[2 2 2 2 2];
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
14/54
Nociones bsicas de MatLab 7.0
14
>> k=v.*w
k =
2 4 6 8 10
>> y=v./w
y =
0.5 1 1.5 2 2.5
>> r=v.^2
r =
1 4 9 16 25
Las operaciones elemento a elemento son muy tiles para calcular los valores de una
funcin, y, para distintos valores de la variable/s independiente/s. Para ello se
aplica la funcin a un vector previamente definido, como en el ejemplo siguiente.
Luego podramos usar ese conjunto de valores para hacer una representacin grfica
de la funcin en cuestin.
>> x=[1 2 3 4 5];
>> y=x.^2
y =
1 4 9 16 25
>> y=x.^2-5./x
y =
-4 1.5 7.3333 14.75 24
Las funciones predefinidas de MatLab tambin funcionan elemento a elemento
cuando se aplican a un vector, como en el siguiente ejemplo.
Esta operacin sin el punto, conducira a un error, al no ser x una matriz cuadrada
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
15/54
Nociones bsicas de MatLab 7.0
15
>> a=[9 16 25];
>> b=sqrt(a)
b =
3 4 5
Adems existe una serie de comandos que conviene conocer para trabajar con
matrices o vectores:
a) l engt h( A) : Devuelve el nmero de elementos del vector o matriz A
b) si ze( A) : Devuelve un vector fila [m,n], donde m y n representan el
nmero de filas y columnas respectivamente de la matriz A.
c) max( A) : Si A es un vector devuelve el elemento mayor.
d) mi n( A) : Si A es un vector devuelve el elemento menor.
e) sor t ( A) : Si A es un vector devuelve el mismo vector, pero ordenado
en orden ascendente.
f) mean( A) : Si A es un vector devuelve la media de sus elementos.
g) medi an( A) : Si A es un vector devuelve la mediana de sus elementos.
h) st d( A) : Si A es un vector devuelve la desviacin estndar de sus
elementos.
Los anteriores comandos, cuyo uso se ha explicado sobre vectores, pueden tambin
ser aplicados sobe matrices, pero en ese caso realiza la operacin correspondiente
sobre cada columna de la matriz, con lo que devuelve un vector.
4. Representaciones grficas.
4.1. El comando plot.La generacin de grficos en dos dimensiones en MatLab se lleva a cabo usando el
comando plot, cuya sintaxis es la siguiente:
plot(x,y, especificadores de lnea, propiedades, valores)
x e y son dos vectores con el mismo nmero de elementos, siendo el primero
de ellos el que contiene los valores de la variable x (eje de abscisas) y el segundo
de la variable y (eje de ordenadas), aunque sus nombres pueden ser cualesquiera.
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
16/54
Nociones bsicas de MatLab 7.0
16
Al usar la sentencia anterior, MatLab abre la ventana de grfico y presenta un
grfico x-y, en el que los puntos aparecen unidos por una lnea continua.
Los especificadores de lnea son los argumentos que definen el tipo y aspecto de
la lnea y/o marcador que se usar para la representacin de los datos. En la
Tabla siguiente se resumen los ms importantes:
Estilo lnea Especif. Color Especif. Marcador Especif.
Continua - rojo r signo ms +
Discontinua -- azul b crculo o
De puntos : magenta m asterisco *
Rayas y puntos -. verde g punto .
cian e cuadrado samarillo y diamante d
blanco w
estrella
de cinco
puntas
p
negro k
estrella
de seis
puntas
h
Para utilizar estos especificadores hay que hacerlo en la secuencia: color
Estilo de lnea Estilo de marcador. Por ejemplo: b-* dibujara una lnea
continua azul, con asteriscos azules como marcadores.
Las Propiedades y Valores permiten modificar la apariencia de la curva o los
marcadores, actuando concretamente sobre el grosor de la lnea, el tamao de
los marcadores, el color de borde y de relleno de los marcadores. Por ejemplo, el
comando markerfacecolor permite modificar el color de relleno de los
marcadores. Se escribe cada propiedad entre comillas simples, y a continuacin
su respectivo valor, separado por una coma, y tambin entre comillas simples. El
orden de las propiedades es indiferente. Mediante esta opcin es posible indicar
tambin el color y estilo de la lnea, tipo de marcador, etc., tal y como se
muestra en el ejemplo siguiente
A continuacin se incluyen como ejemplo los comandos para representar dos grficos
diferentes y las salidas correspondientes.
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
17/54
Nociones bsicas de MatLab 7.0
17
>> %-Grfico 1-%
>> anno=[1996:1:2005];
>> ventas=[523 587 669 854 901 1050 1043 1076 1115 1100];
>> plot(anno,ventas,'r-*')
>> plot(anno,ventas,'color','r','marker','*','LineStyle','-'))
>> %- Grfico 2 -%
>> x=[0:pi/16:2*pi];
>> y=sin(x);
>> plot(x,y,'r:')
19 96 1 997 19 98 19 99 200 0 200 1 20 02 20 03 200 4 200 5500
600
700
800
900
1000
1100
1200
Grfico 1
0 1 2 3 4 5 6 7-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Grfico 2
Como puede apreciarse para realizar el Grfico 1, que presenta la evolucin anual de
las ventas de una empresa, simplemente se han introducido los dos vectores quecontiene los datos a representar (aos y ventas). En el Grfico 2 lo que se representa
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
18/54
Nociones bsicas de MatLab 7.0
18
es la funcin seno. Para ello se ha creado un vector con valores de la variable x
comprendidos entre 0 y 2, y luego se define el vector y como el seno del vector x
(MatLab los calcula elemento a elemento). A continuacin se representan y frente a
x.
4.2. Representacin de grficos a partir de funciones.
En el ejemplo anterior se ha usado el comando plot para representar una funcin,
lo que requiere calcular los valores de dicha funcin en el intervalo a representar,
como se ha visto.
Existe otra forma de representar funciones, que implica el uso del comando fplot.
La sintaxis del mismo es la siguiente:
fplot ('funcion', limites, especificadores de linea)
Un ejemplo de su uso puede verse a continuacin, con su correspondiente salida.
>> %- Grfico 3 -%
>> fplot('cos(x)',[0 2*pi],'g--')
0 1 2 3 4 5 6-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Grfico 3
4.3. Representar varias funciones en el mismo grfico.
En muchas ocasiones se hace necesario representar varias funciones o curvas en el
mismo grfico, o incluso incluir dos grficos en la misma ventana grfica. Para lo
primero, hay tres posibles opciones:
1) Usar el comando plot, colocando en los argumentos los datos y opciones de
representacin de cada curva, una a continuacin de la otra, tal y como semuestra en el ejemplo:
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
19/54
Nociones bsicas de MatLab 7.0
19
>> %- Grfico 4 -%
>> anno=[2001:1:2005];
>> ingresos=[2000 3500 3750 3600 3800];
>> gastos=[2100 2800 2950 3000 3050];
>> plot(anno,ingresos,'g-o',anno,gastos,'r-.s')
2) Usando el comando plot para representar la primera curva, y luego
introduciendo la instruccin hold on para que mantenga dicho grfico con los
mismos ejes y formatos, de modo que tantas nuevas instrucciones plot como
vayamos introduciendo, las presentar sobre el grfico inicial. Si queremos
generar un nuevo grfico habr que usar el comando hold off antes de teclearun nuevo plot.
>> %- Grfico 4 -%
>> anno=[2001:1:2008];
>> ingresos=[2000 3500 3750 3600 3800 3900 3950 4000];
>> plot(anno,ingresos,'g-o')
>> gastos=[2100 2800 2950 3000 3050 3100 3600 3550];
>> hold on
>> plot(anno,gastos,'r-.s')
3) Mediante el comando line, que permite aadir curvas a un grfico existente,
pero sin necesidad de usar el hold on. La sintaxis de line es parecida la de
plot, pero los atributos de color, tipo de marcador, estilo de lnea, etc. han de
ponerse indicando la propiedad y su respectivo valor, es decir, de la mismamanera que con plot, pero line no admite especificadores de lnea. Tambin
permite construir un grfico sin usar previamente plot.
>> %- Grfico 4 -%
>> anno=[2001:1:2008];
>> ingresos=[2000 3500 3750 3600 3800 3900 3950 4000];
>> plot(anno,ingresos,'g-o')
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
20/54
Nociones bsicas de MatLab 7.0
20
>> gastos=[2100 2800 2950 3000 3050 3100 3600 3550];
>> line(anno,gastos,'color','r','marker','s','LineStyle','-.')
Todas estas entradas daran lugar al siguiente grfico:
2001 2002 2003 2004 2005 2006 2007 20082000
2200
2400
2600
2800
3000
3200
3400
3600
3800
4000
Grfico 4
Cuando se trata de colocar varios grficos en una misma ventana grfica, peroseparados en subventanas, se utiliza el comando subplot, que permite indicar el
nmero de subventanas y la posicin del grfico a representar dentro de ellas. Su
sintaxis es:
subplot(m,n,p)
siendo m x n el nmero de subventanas (m filas y n columnas) y p la posicin del
grfico dentro de ellas, contando de arriba a abajo y de izquierda a derecha. A
continuacin se incluye un ejemplo de su utilizacin.
>>%- Grfico 5 -%
>> x=[1 2 3];
>> y=[1 2 3];
>> subplot(2,2,1)
>> hold on
>> plot(x,y)
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
21/54
Nociones bsicas de MatLab 7.0
21
>> subplot(2,2,2)
>> plot(x,2*y)
>> subplot(2,2,3)
>> plot(x,y.^2)
>> subplot(2,2,4)
>> plot(x,y.^-2)
Que da lugar a la siguiente grfica:
1 1.5 2 2.5 31
1.5
2
2.5
3
1 1.5 2 2.5 32
3
4
5
6
1 1.5 2 2.5 30
2
4
6
8
10
1 1.5 2 2.5 30
0.2
0.4
0.6
0.8
1
Grfico 5
4.4. Dar formato a los grficos.
Hasta ahora se ha visto como crear representaciones grficas elementales y dado
formato a lneas y marcadores, pero no al resto del grfico: ttulo y escala de los
ejes, ttulo del grfico, leyenda, etc.
Existen comandos que permiten hacer esto, y que son de utilidad cuando el grfico es
generado mediante un programa. Estos comandos no se han incluido en la presente
gua, pero se puede obtener mayor informacin sobre los mismos usando la ayuda del
MatLab (basta escribir Annotating Plots en el buscador). Adems estas opciones
estn tambin disponibles en la propia ventana grfica que se despliega cada vez que
ejecutamos plot. Basta desplegar el editor de propiedades en el men View y
hacer clic sobre cada una de las partes del grfico, para que se desplieguen sus
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
22/54
Nociones bsicas de MatLab 7.0
22
propiedades. Al grfico nmero 6, que se muestra a continuacin, se le ha dado
formato de esta manera.
0 2 4 6 8 1 0 121-0 .8-0 .6-0 .4-0 .2
00 .20 .40 .60 .8
1
x (radianes)
seno(x)
sen (x )
Grfico 6
4.5. Escalas no lineales y grficos especiales.
Terminaremos este apartado describiendo brevemente la generacin de grficos
especiales y el uso de escalas logartmicas y coordenadas polares.A parte de los grficos presentados hasta ahora, que representan puntos discretos y
lneas, MatLab permite tambin construir grficos especiales, como los de barras,
sectores o histogramas. Para ello dispone de los comandos:
Grfico de barras verticales: bar(x,y)
Grfico de barras horizontales: barh(x,y)
Grfico de sectores: pie(x)
Histogramas:hist(x)
A continuacin se presentan algunos ejemplos de cada uno de estos grficos.
>> anno=[2000:2003];
>> casos=[27 34 45 41];
>> bar(anno,casos,'r')
>> xlabel('ao')
>> ylabel('n de casos') 2000 2001 2002 200305
10
15
20
25
30
35
40
45
ao
ndecasos
Grfico 7
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
23/54
Nociones bsicas de MatLab 7.0
23
>> anno=[2000:2003];
>> casos=[27 34 45 41];
>> barh(anno,casos,'r')
>> xlabel('n de casos')
>> ylabel('ao') 0 5 10 15 20 25 30 35 40 45
2000
2001
2002
2003
n de casos
ao
Grfico 8
>> ventas=[28 34 145 541];
>> pie(ventas)
4%5%
19%
72%
asturiana
nestl
m.blancas
danone
Grfico 9
>> x=[2 4 6 5 2 3 9 5 6 4 2
1 5 7 8 9 9 9 9 6 6 6 6 5 2
2 4 4 3 4 7 5 2 8 2 4 5 5 7
7 1 1 1 5];
>> hist(x)
>> hist(x,8)
8 es el nmero de intervalos en que divide el
rango de valores a representar.
1 2 3 4 5 6 7 8 90
2
4
6
8
10
12
nota
nalumnos
Grfico 10
Otro aspecto interesante es el uso de escala logartmica, muy utilizada para
linealizar ciertas relaciones. Para generar un grfico con escala logartmica (doble o
simple) se usan los comandos loglog(x,y), semilogx(x,y) semilogy(x,y),donde x e y son los datos a representar.
Por ejemplo, para la funcin y = x1.5, la representacin en escala lineal y doble
logartmica sera:
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
24/54
Nociones bsicas de MatLab 7.0
24
>> x=linspace(0,100,101);
>> y=x.^1.5;
>> plot(x,y)
0 20 40 60 80 1000
200
400
600
800
1000
x
y
Grfico 11
>> loglog(x,y)
100
101
102
100
101
102
103
x
y
Grfico 12
A continuacin se presenta un ejemplo de aplicacin con ejes semilogartmicos,
donde el uso de la escala logartmica en el eje de ordenadas permite la obtencin de
un representacin lineal.
>> x=linspace(0,100,101);
>> y=5*exp(-x/25);>>
>> plot(x,y)
>> semilogy(x,y)
Por ltimo se introduce el comando polar, que permite obtener grficos en
coordenadas polares, y cuya sintaxis es:
polar (theta, radio, 'especificadores de linea')
>> t=linspace(0,2*pi,200);
>> r=cos(2*t);
>> polar(t,r,'r--')0.2
0.4
0.6
0.8
1
30
210
60
240
90
270
120
300
150
330
180 0
Grfico 13
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
25/54
Nociones bsicas de MatLab 7.0
25
5. Ficheros de programa (script).
Hasta ahora hemos usado la ventana de comandos para introducir todas las
instrucciones en MatLab. Sin embargo, esto obliga a ir introduciendo las instrucciones
una a una, lo cual no es cmodo cuando se trata de un nmero elevado de ellas.
Para estos casos se recurre a escribir programas (scripts) que permiten, al
ejecutarse, introducir todas las instrucciones deseadas de una sola vez. Estos
programas pueden escribirse en el editor de MatLab (File New M-File) o en
cualquier editor de texto, y luego copiarse al editor de MatLab. Su extensin es .m.
Las primeras lneas de los mismos deben ser comentarios que expliquen brevemente
su funcin, y para guardarlos (en File Save As) se deben seguir las mismas
normas que con las variables a la hora de darles nombre. Adems los nombres de los
ficheros no podrn ser iguales a los de ninguna de las variables definidas o a los dealguna funcin o comando predefinidos de MatLab.
5.1. Ejecucin de un fichero script: El directorio de trabajo actual.
Una vez guardado, para ejecutar un fichero script, basta con escribir su nombre en la
ventana de comandos de MatLab y pulsar la tecla Enter (). Es indispensable que el
fichero se haya guardado en el directorio de trabajo actual de MatLab (por ejemplo,
C:\MATLAB7\work), que es en el que el programa busca1 y guarda los ficheros. En
caso de que el fichero se encuentre en otro directorio, ser necesario cambiar eldirectorio actual (mediante la Current Directory Window) a aquel donde se haya
grabado el fichero que pretendemos ejecutar.
En la figura siguiente se muestra el fichero ej1, que representa la funcin y=exp(x)
entre 0 y 10.
icono Run
Otra forma de ejecutar un fichero script es mediante el icono Run, que se
encuentra en el editor de ficheros, como se muestra en la figura anterior.
1Realmente MatLab busca en todos los directorios incluidos en el Set Path, de donde se pueden aadir
y quitar las rutas, mediante el men File Set Path
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
26/54
Nociones bsicas de MatLab 7.0
26
5.2. Asignacin de valores a las variables de un fichero script y comandos
de salida.
Las variables utilizadas en un fichero script son compartidas (variablesglobales) con
las que se introducen mediante la ventana de comandos. Esto quiere decir que es
posible asignarles un valor o bien dentro del propio fichero, como en el ejemplo 1, o
bien mediante la ventana de comandos. Lo primero nos evita tener que teclear cada
vez los valores de las variables, pero obliga a editar el m-file cada vez que queremos
modificar los valores de las variables. La asignacin mediante la ventana de
comandos permite cambiar ms fcilmente los valores, pero obliga a teclearlos cada
vez.
Otra posibilidad consiste en escribir una/s lnea/s de cdigo en el fichero script, para
que cada vez que lo ejecutemos nos pida el valor de alguna o todas las variables,como se aprecia en el ejemplo 2.
En el ejemplo 2 se usa el comando input(mensaje) para asignar la variable x.
De esta forma aparece en pantalla un texto (mensaje) preguntando al usuario el
valor que desea asignar a la variable.
Adems se usa el comando disp, que es un comando de salida, para mostrar el
resultado. El comando disp puede servir para mostrar un texto, en cuyo caso
necesita las comillas simples, o bien puede usarse para mostrar el valor de unavariable, para lo que no deben usarse comillas, tal y como se muestra en el ejemplo
2. Cuando se usa disp para mostrar el valor de una variable slo se visualiza dicho
valor, pero no el nombre de la variable.
Una limitacin del comando disp es que no permite intercalar el valor de la variable
entre dos cadenas de texto. Para ello hay que recurrir a otro comando de salida,
fprintf, que adems permite dar formato y grabar las salidas a un fichero. Mayor
informacin acerca de este comando, cuya sintaxis es ms compleja, puede
encontrarse a travs de la ayuda del MatLab.
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
27/54
Nociones bsicas de MatLab 7.0
27
5.3. Importacin y exportacin de datos.
Es muy frecuente que en el tratamiento de datos con MatLab tengamos que importar
datos desde otros programas, como por ejemplo desde una hoja de clculo de Excel,
o tambin que queramos volcar el resultado de los clculos realizados con MatLab en
una hoja de clculo de Excel.
Para la importacin de datos MatLab cuenta con un asistente que facilita la labor, y
que es capaz de identificar datos en formatos diferentes. Para usar dicho asistente
debemos ir a la opcin Import Data del men File.
Cuando se trata de datos que estn en Excel, MatLab permite importarlos utilizando
un comando especfico, xlsread, que tiene la ventaja de que podemos incluirlo en
un fichero script, e invocarlo mediante el mismo. La sintaxis de este comando es la
siguiente:
nombre_variable=xlsread('nombre_fichero','nombre_hoja','rango')
Los tres parmetros anteriores son cadenas de datos que representan el nombre del
fichero, la hoja correspondiente dentro del mismo, y el rango dentro de la hoja. El
rango debe indicarse de la forma B4:C16, segn la notacin usada por Excel. En
realidad slo es imprescindible el nombre del fichero, ya que el comando acta por
defecto sobre todos los datos numricos que haya en la Hoja1.
Para exportar datos a Excel puede usarse el comando xlswrite, el cual tiene la
siguiente sintaxis:
xlswrite('nombre_fichero',nombre variable,'nombre_hoja','rango')
Los parmetros son anlogos a los del comando xlsread. El archivo de Excel puede
ya existir, en cuyo caso pedir confirmacin para sobrescribir los datos (cosa que
suceder si el rango especificado ya estaba ocupado con datos previos), o bien puede
ser creado mediante el mismo comando.
6. Ficheros de funcin.
Como se ha visto, MatLab cuenta con numerosas funciones predefinidas (sin(x),
factorial(x), exp(x), etc.) que pueden ser utilizadas simplemente escribiendo
su nombre en la ventana de comandos o en un fichero script. Sin embargo a veces es
necesario definir nuevas funciones, para lo cual se utilizan los ficheros de funcin.
Estos ficheros son realmente de script y contienen el cdigo de la funcin, de modo
que una vez creados pueden ser invocados mediante la ventana de comandos, como
cualquier funcin predefinida de Matlab, o lo que es ms importante, por medio de
otro fichero de programa, del que realmente constituyen un subprograma. Lo normal
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
28/54
Nociones bsicas de MatLab 7.0
28
es que una funcin se utilice asignando su salida a una variable, como si se tratara de
una operacin matemtica (ver ejemplo en la pgina 27).
6.1. Creacin de un fichero de funcin.
Tal y como se ha indicado los ficheros de funcin se crean como un fichero de script,es decir, mediante el editor de MatLab u otro editor de textos, y luego se guardan
dndoles el mismo nombre que a la funcin y la extensin .m. Para poder ejecutarlos
debern encontrarse en el directorio actual de trabajo de MatLab, como cualquier
fichero script.
Constan, obligatoriamente, de las siguientes partes:
1) Definicin de la funcin: Ha de incluirse en la primera lnea de texto ejecutable.
Tiene la siguiente estructura:
function [argumentos de salida] =
nombre_funcin (argumentos de entrada)
I) La palabra function, en minsculas, debe ser la primera que aparezca.
II) A continuacin deben incluirse los argumentos de salida, es decir la/s
variable/s donde MatLab almacenar el resultado de los clculos. Si son varios
deben ir separados por comas.
III) Despus del signo igual se escribe el nombre de la funcin, con el que luego
se la invocar.
IV)A continuacin del nombre se deben indicar el o los argumentos de entrada,
es decir, la/s variable/s cuyos valores hay que dar a la funcin para que
realice los clculos u operaciones que posteriormente se especificarn. Si son
varios los argumentos, deben ir separados por comas.
2) Lnea H1 y lneas de ayuda, se trata de lneas de comentario, es decir, van
detrs de el signo %, en las cuales se describe la funcin y como usarla. Son
opcionales, pero de gran utilidad. La lnea H1 es la primera de las lneas, debecontener una breve descripcin de la funcin, y su peculiaridad es que a partir de
su contenido es posible hacer bsquedas en MatLab con el comando lookfor. El
resto de lneas deben explicar el uso de la funcin, qu son cada uno de los
argumentos de entrada y salida, etc. Cuando en MatLab se teclea Help
nombre_funcion, el contenido de estas lneas aparece.
3) Cuerpo de la funcin, que define las operaciones y clculos a realizar con los
argumentos de entrada para obtener los argumentos de salida.
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
29/54
Nociones bsicas de MatLab 7.0
29
A continuacin se muestra un ejemplo de fichero de funcin. En el se ha definido la
funcin HCmolmass, la cual calcula el peso molecular de un hidrocarburo saturado
(alcano), al introducir su nmero de carbonos.
A continuacin se muestra la entrada y salida en la ventana de comandos de MatLab
cuando se invoca a la funcin, as como cuando se usa el comando Help, para
obtener ayuda sobre ella.
>> PM_metano=HCmolmass(1)
PM_metano =
16
>> help HCmolmass
Funcin que calcula la masa molecular de un alcano a partir de su
nmero de carbonos
Para utilizarla basta introducir como argumento el nmero de carbonos
del hidrocarburo saturado (alcano) cuya masa molecular se pretende
calcular.
6.2. Variables Globales.
Cada funcin de MatLab usa una serie de variables (asignadas a los argumentos de
entrada y salida), de modo que, por defecto, los valores que se asignan a dichas
variables slo son accesibles a la funcin en cuestin. Es decir, que estas variables,
que se denominan locales, slo sirven para que se hagan los clculos dentro de la
propia funcin, pero no es posible acceder a su valor desde la ventana de comandos o
por parte de un fichero script diferente. De hecho, la variable no aparece en el
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
30/54
Nociones bsicas de MatLab 7.0
30
workspace, como sucede con aquellas variables que se asignan directamente en la
ventana de comandos o por un fichero script, que no sea de funcin.
Cuando se desea que una variable generada por una funcin sea accesible desde un
programa diferente es necesario declarar dicha variable como global. Para ello hay
que colocar la sentencia:
global nombre_variable
tanto antes del cuerpo de la funcin como antes del cdigo del programa que vaya a
utilizarla. Por ejemplo, si hacemos un pequeo programa (ej3.m) que muestre el
valor de las variables MW y n creadas por la funcin HCmolmass, este podra ser su
cdigo.
Para que el programa tenga acceso a ambas variables ambas deben ser tambin
declaradas globales en el cdigo de la funcin:
De esta forma, podramos leer los valores de MW y n mediante el programa ej3, tal y
como se ve en las siguientes secuencias de comandos.
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
31/54
Nociones bsicas de MatLab 7.0
31
>> PM_metano=HCmolmass(1)
PM_metano =
16
>> ej3
El valor de MW de un alcano es:
16
cuando el nmero de carbonos es igual a:
1
Sin embargo hay que ser muy cuidadoso a la hora de utilizar las variables globales, ya
que una vez su valor ha sido asignado al ejecutar la funcin por primera vez, ya no
cambia al ejecutar la funcin una segunda vez, lo que puede dar lugar a errores.
Vase a continuacin lo que ocurrira si tras teclear el ejemplo anterior en la ventana
de comandos, intentamos usar la funcin HCmolmass para calcular el peso molecular
de un hidrocarburo de 2 carbonos.
>> PM_etano=HCmolmass(2)
Warning: The value of local variables may have been changed to
match the globals. Future versions of MATLAB will require that
you declare a variable to be global before you use that
variable.
> In HCmolmass at 6
PM_etano =
16
Como puede verse, la variable MW mantiene su valor anterior, e incluso el MatLab
advierte del posible error. Para poder aplicar nuevamente la funcin HCmolmass es
necesario borrar los valores de las variables globales, mediante el comando clear
global, tal como se ve a continuacin, donde tambin se aprecia como se nos sigue
advirtiendo de un posible error.
>> clear global
>> PM_etano=HCmolmass(2)
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
32/54
Nociones bsicas de MatLab 7.0
32
Warning: The value of local variables may have been changed to
match the globals. Future versions of MATLAB will require that
you declare a variable to be global before you use that
variable.
> In HCmolmass at 6
PM_etano =
30
6.3. Funciones inline.
En MatLab existe otra forma de definir funciones sin crear un fichero de funcin. Esta
forma se puede usar directamente en la ventana de comandos, o bien en el cdigo de
un fichero script normal. Para ello se utiliza el comando inline, con la siguiente
sintaxis:
nombre = inline('expresin matematica')
El nombre de la funcin se pone en primer lugar, y a continuacin, tras el comando
inline se coloca, escrita en forma de cadena, la expresin matemtica que se debe
evaluar, como en el ejemplo siguiente:
>> raiz_cubica=inline('x^(1/3)')
raiz_cubica =
Inline function:
raiz_cubica(x) = x^(1/3)
>> r=raiz_cubica(27)
r =
3
Es posible definir funciones inline con ms de una variable, o aplicarlas a vectores o
matrices (usando las operaciones elemento a elemento). Para ms informacin,
consultar la ayuda de MatLab.
7. Programacin en MatLab.
Hasta ahora hemos escrito pequeos programas en MatLab, tanto en ficheros script,
como en ficheros funcin. Todos ellos eran muy simples y no permitan, por ejemplo,
fijar condicin alguna a la hora de realizar los clculos o repetirlos un nmero
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
33/54
Nociones bsicas de MatLab 7.0
33
controlado de veces. Para ello MatLab dispone de sentencias de programacin de tipo
condicional y de bucles, de forma similar a la mayora de los lenguajes de
programacin de propsito general. En este apartado revisaremos la sintaxis de
dichas sentencias, aunque comenzaremos repasando los operadores relacionales y las
operaciones lgicas en MatLab.
7.1. Operadores relacionales y operaciones lgicas.
En la Tabla siguiente se incluyen los operadores relacionales que se utilizan en
MatLab.
Operador relacional Descripcin
< Menor que.
> Mayor que.
= Mayor o igual que.== Igual a.
~= Distinto de.
Estos operadores se usan en operaciones lgicas, cuya salida es siempre un 1
(verdadero) o un 0 (falso), o una matriz de unos y/ ceros, como puede verse en los
ejemplos siguientes.
>> A=1;
>> B=5;
>> r1=A> r2=A>B
r2 =
0
>> C=[1 2 3 4 5];
>> D=[0 -3 6 4 8];
>> r3=C>D
r3 =
1 1 0 0 0
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
34/54
Nociones bsicas de MatLab 7.0
34
Como puede verse las matrices o vectores se comparan elemento a elemento. Las
variables r1, r2 y r3 del ejemplo anterior son variables lgicas, a diferencia de A, B,
C D que son variables numricas.
Es tambin importante conocer los operadores lgicos que podemos usar en MatLab,
que son los siguientes. Cuando se aplican a vectores o matrices, estos operadores
trabajan elemento a elemento.
& (and): Compara dos escalares, vectores o matrices y devuelve el valor
verdadero (1) si los dos valores comparados son verdaderos (distintos de 0), y
falso (0) en caso contrario. Puede escribirse A&B and(A,B).
| (or): Compara dos escalares, vectores o matrices y devuelve el valor
verdadero (1) si uno de los dos valores comparados o los dos son verdaderos
(distinto de 0), y falso (0) si los dos son falsos (0). Puede escribirse A|B or(A,B).
xor: Se diferencia de or en que en este caso slo da verdadero si uno de los
elementos comparados es verdadero y el otro falso, pero da falso si los dos son
verdaderos.
~ (not): Se usa con un solo operando (escalar, vector o matriz) y devuelve otro
operando del mismo tipo con el valor verdadero (1) para cada elemento que sea
falso (0) y falso (0) para los elementos verdaderos (1). Puede escribirse ~A
not(A).
MatLab tiene adems predefinidas una serie de funciones lgicas, que se enumeran a
continuacin, y que pueden resultar de mucha utilidad:
Funcin all: Aplicada a un vector, devuelve 1 (verdadero) si todos sus elementos
son distintos de 0, y devuelve 0 (falso) si alguno/s de los elementos del vector son
iguales a 0.
Funcin any: Aplicada a un vector, devuelve 1 (verdadero) si alguno de sus
elementos es distinto de 0, y slo devuelve 0 (falso), si todos los elementos son 0. Funcin find: Aplicada a un vector devuelve el ndice de los elementos que son
distintos de 0. Es posible aplicarla usando operadores lgicos, de la forma
find(A>5), lo cual devolvera el ndice de los elementos que sean mayores que
5 en el vector A.
Los operadores lgicos, junto con las funciones anteriores son muy tiles cuando se
comparan series de datos, como en el siguiente ejemplo, en el que se analizan las
notas de un grupo de alumnos, buscando los que tienen notable.
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
35/54
Nociones bsicas de MatLab 7.0
35
>> notas=[5 6 4 8 3 9 2 4 6 8 9 9 5 6 7 7.5 4 7 7 8];
>> A=notas>=7;
>> B=notas> C=A&B;
>> notables=find(C)
notables =
4 10 15 16 18 19 20
Como puede verse el vector notables contiene los ndices de los elementos del
vector notas que son menores de 9 y mayores o iguales que 7, es decir que
corresponden a un notable. Si tenemos todos los nombres de los alumnos en un
vector, ser muy fcil generar otro vector con los nombres de aquellos que tienen
notable.
7.2. Sentencias de programacin.
Abordaremos a continuacin la sintaxis de los principales tipos de sentencias de
programacin en MatLab:
Sentencias condicionales:
La sentencia i f
Permiten ejecutar una serie de comandos si se verifican unas condiciones
previamente especificadas. La instruccin que se usa es if end segn el
diagrama de flujo siguiente:
Detrs de if deben escribirse una serie de operaciones lgicas, del modo:
if a
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
36/54
Nociones bsicas de MatLab 7.0
36
if (d
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
37/54
Nociones bsicas de MatLab 7.0
37
for k = f:s:t
(serie de comandos en MatLab)end
k es la variable que se ir actualizando.f es el primer valor que toma la variable k
s es el incremento de la variable k cada vez que se ejecuta la serie de comandos
comprendida entre for y end.
t es el valor mximo (o mnimo, si s es negativo) que alcanzar la variable k. Una
vez alcanzado, los comandos comprendidos entre for y end, no se ejecutarn ms.
Bucle whi l e- end
En este caso no se conoce el nmero exacto de ejecuciones de los comandos del
bucle que sern necesarias, por lo que stos se ejecutarn mientras se cumpla una
determinada condicin, que obviamente debe especificarse. Su estructura por tanto,
es:
while expresin_condicional
(serie de comandos en MatLab)end
Para que esta estructura funcione es imprescindible que al menos una de las
variables de la sentencia condicional cambie de valor cada vez que se ejecutan los
comandos.
La sentencia break puede usarse para romper un bucle, especialmente cuando ste
contenga sentencias condicionales. Cuando el MatLab llega a esta instruccin, salta
directamente a la sentencia end y da por terminado el bucle.
8. Algunas aplicaciones importantes de MatLab.
Hasta el momento hemos descrito los aspectos bsicos del MatLab, por lo que,
aunque una descripcin detallada de las posibilidades del programa no es factible nies nuestro objetivo, conviene para finalizar repasar algunas aplicaciones
particularmente tiles y frecuentes del mismo.
8.1. Polinomios.
En MatLab un polinomio se introduce como un vector fila, cuyos elementos son los
coeficientes del polinomio. Si el polinomio no contiene todos los trminos (por
ejemplo, tiene el x3, pero no el x2), deber ponerse un 0 en el lugar del coeficiente
correspondiente al trmino que falta.
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
38/54
Nociones bsicas de MatLab 7.0
38
Para operar con polinomios existen algunas funciones predefinidas que merece la
pena conocer:
polyval(p,x): Permite calcular el valor del polinomio p en el punto x. Si x es
un vector, generara un conjunto de valores del polinomio, en vez de un nico
valor.
roots(p): Genera un vector con las races del polinomio p.
polyder(p): Genera un vector con los coeficientes de la derivada del
polinomio p.
8.2. Ajuste de curvas. La funcin pol yf i t .
Es muy frecuente cuando se tratan datos experimentales que se plantee la necesidad
de ajustarlos a un polinomio o a otro tipo de funcin.
La funcin polyfit permite ajustar un conjunto de puntos a un polinomio de dos
formas diferentes. Su sintaxis es la siguiente:
polyfit(x,y,n)
El comando anterior calcula el polinomio de grado n que mejor ajusta el conjunto de
puntos cuyas coordenadas x (variable independiente) e y (variable dependiente)
vienen dadas por los vectores x e y respectivamente. El mximo grado ser siempre
inferior en una unidad al nmero total de puntos a ajustar, es decir al nmero total
de elementos de los vectores x y. Hay que ser muy cauteloso cuando se usan
polinomios de alto grado que pasan por todos o casi todos los puntos, ya que en estos
casos se producen desviaciones muy importantes entre los puntos, como puede verse
en la imagen siguiente, donde se usan dos polinomios de grado diferente para ajustar
un conjunto de cinco puntos, mediante la funcin polyfit.
0 2 4 6 8 10 124
4.5
5
5.5
6
6.5
7
7.5
8
0 2 4 6 8 10 124
5
6
7
8
9
10
5 puntos grado 4
p=polyfit(x,y,2) r=polyfit(x,y,4)
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
39/54
Nociones bsicas de MatLab 7.0
39
La funcin polyfit tambin permite ajustar datos a otros tipos de funciones
bsicas, siempre que previamente se linealicen stas, como por ejemplo:
y=bxn log(y)=log(b)+nlog(x)
Para ajustar una serie de puntos (x,y) a una funcin potencial podramos usar el
comando polyfit de esta forma:
p=polyfit(log(x),log(y),1)
8.3. Interpolacin.
Cuando disponemos de una serie de datos en forma de puntos (x,y) podemos obtener
el valor de y para un x diferente, aunque normalmente dentro del rango de valores
de x conocidos. A esto se le llama interpolar. Para interpolar existen diferentes
mtodos matemticos, que suponen una determinada tendencia para la evolucin de
los datos; por ejemplo, lo ms sencillo es suponer que los valores varan linealmente
entre cada pareja de datos conocidos.
Para realizar interpolaciones en MatLab se usa la funcin interp1, que tiene la
siguiente sintaxis:
yi=interp1(x,y,xi,metodo)
x e y son las coordenadas de los puntos (datos) conocidos. xi son los valores de la
variable independiente x para los cuales deseamos conocer el correspondiente valor
de y (variable dependiente), que se almacenarn en el vector yi. Es tambin posibleespecificar el mtodo de interpolacin. Los tres ms importantes son:
linear: supone un segmento lineal entre cada par de puntos.
spline: supone un segmento polinmico cbico entre cada par de puntos.
pchip: utiliza interpolacin de Hermite cbica (tambin 'cubic').
En la siguiente figura se aprecian tres casos de interpolacin con cada uno de los
mtodos anteriores. La lnea continua representa la funcin real a la que pertenecen
los puntos. La lnea discontinua corresponde a los puntos interpolados.
linear spline pchip
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
40/54
Nociones bsicas de MatLab 7.0
40
Adems MatLab cuenta con un asistente para la interpolacin mediante polinomios
de forma interactiva, permitiendo el clculo de residuos y la comparacin de
distintos ajustes con polinomios de diferente grado. Para usarla, una vez generado el
grfico, hay que entrar en la herramienta Basic Fitting, en el men Tool, de la
ventana de grficos.
8.4. Solucin de ecuaciones de una variable.
Toda ecuacin de una variable, polinmica o no, puede ponerse en la forma f(x) = 0,
con lo que su solucin es posible resolviendo dicha ecuacin. Para ello MatLab cuenta
con la funcin fzero, cuya sintaxis es:
fzero(funcion,x0)
El comando anterior devuelve un escalar x que satisface la igualdad f(x) = 0. Pararealizar este clculo MatLab emplea mtodos numricos iterativos, de modo que hay
que suministrar un valor, x0, prximo a la solucin esperada, para que comience las
iteraciones. La funcin que hay que poner como argumento puede ser una cadena de
texto o bien se la puede definir mediante un fichero de funcin. A continuacin se
muestra un ejemplo, que nos permite resolver la ecuacin x2 + 8 = ex
>> sol=fzero('x^2-exp(x)+8',0)
sol =
2.7421
Una buena forma de averiguar dnde una funcin tiene una solucin, o simplemente
si la tiene, es realizar una representacin grfica de la funcin
8.5. Clculo del mximo y mnimo de una funcin.
MatLab cuenta con una funcin para calcular el mximo o mnimo local de una
funcin de una variable. Se trata de fminbnd, que se usa de la siguiente forma:
fminbnd(funcion,x1,x2)
El comando anterior devuelve el valor donde la funcin especificada alcanza el
mnimo, dentro del intervalo x1 x x2. Para visualizar el valore que toma la
funcin, hay que modificar ligeramente la sintaxis:
[x fval]=fminbnd(funcion,x1,x2)
De esta forma el valor de la funcin en x se asigna a la variable fval.
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
41/54
Nociones bsicas de MatLab 7.0
41
El valor mnimo de la funcin puede encontrarse dentro del intervalo (mnimo local)
o en los extremos del mismo (mnimo absoluto). MatLab siempre busca el mnimo
local, y luego lo compara con el valor de la funcin en los extremos del intervalo,
devolviendo el punto donde la funcin alcanza el menor valor, como se aprecia en el
siguiente ejemplo:
-10 -8 -6 -4 -2 0 2 4 6 8 10-5000
-4000
-3000
-2000
-1000
0
1000
x
f(x)
>> [x fx]=fminbnd('2.5*x^3-21*x^2+0.25*x-5',-10,10)
z =
-10
fx =
-4.6075e+003
>> [x fx]=fminbnd('2.5*x^3-21*x^2+0.25*x-5',0,10)
x =
5.5940
fx =
-223.1207
La funcin fminbnd se puede tambin usar para encontrar el mximo, para lo cual
basta aplicarla a la funcin multiplicada por 1.
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
42/54
Nociones bsicas de MatLab 7.0
42
8.6. Integracin numrica.
La integracin es una operacin muy frecuente en los clculos cientfico-tcnicos, y
en una gran cantidad de ocasiones no es posible realizarla analticamente, sino que
es necesario usar la integracin numrica, incluso porque lo que se conoce no es lafuncin a integrar (que adems puede no ser integrable), sino una serie de puntos.
Para ello se pueden usar las siguientes funciones:
quad quadl: Realiza la integracin numrica de una funcin, y se debe usar
de la forma siguiente:
quad(funcion,a,b)
siendo a y b los lmites de integracin y la funcin una cadena de texto o una
funcin existente en MatLab o predefinida por el usuario. La funcin siempredebe escribirse de forma que permita realizar operaciones elemento a elemento,
ya que esta es la forma de calcular que usa MatLab. El comando quadl slo se
diferencia del quad en la forma de calcular la integral, que es ms precisa en
quadl que en quad.
trapz: Realiza la integracin numrica a partir de un conjunto de puntos, dado
por sus coordenadas x e y, de la forma:
trapz(x,y)
8.7. Resolucin de ecuaciones diferenciales ordinarias.
MatLab posee numerosas herramientas de clculo para abordar la resolucin de
ecuaciones diferenciales, desde las ms simples (ecuaciones diferenciales ordinarias
de primer orden, ODE) hasta casos ms complejos y sistemas de ecuaciones
diferenciales. A continuacin se describirn los pasos para resolver un caso sencillo
con las funciones predefinidas de MatLab.
I) Partiremos de una ecuacin diferencial en la que se describe la evolucin de unavariable dependiente (y) en funcin del tiempo (t). En general esa ecuacin debe
ponerse en la forma general:
0 0 0( , ) ( )fdy
f y t t t t y t ydt= =
La solucin al problema ser una funcin o ms frecuentemente un conjunto de
valores de dicha funcin en el intervalo considerado.
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
43/54
Nociones bsicas de MatLab 7.0
43
II) Una vez formulado el problema convenientemente, se debe crear un fichero de
funcin que calcule los diferentes valores de dy/dt segn la ecuacin diferencial
planteada, es decir, segn f(t,y).
function [deriv]=ejemplo(t,y)
deriv = f(x,y)
III) A continuacin hay que seleccionar el mejor mtodo para hallar la solucin.
MatLab dispone de diferentes funciones predefinidas para ODEs de primer orden,
que son aplicables en funcin del nivel de complejidad del problema. En la
siguiente tabla se resumen las ms importantes:
Nombre de la funcin(mtodo)
Descripcin
ode45 Para ecuaciones no demasiado complejas. Obtiene lasolucin en un solo paso,ideal para intentar obtener unaprimera aproximacin. Se basa en el mtodo Runge-Kutta.
ode23 Para ecuaciones no demasiado complejas. Obtiene lasolucin en un solo paso. Est tambin basado en elmtodo Runge-Kutta. Es ms rpido pero menos precisoque el mtodo ode45.
ode113 Para ecuaciones no demasiado complejas. Obtiene lasolucin en mltiples pasos.
ode15s Para ecuaciones complejas. Obtiene la solucin en variospasos. Se utiliza cuando ode45 falla.
ode23s Para ecuaciones complejas. Obtiene la solucin en un solopaso. Permite resolver algunas ecuaciones que no puederesolver ode15.
ode23t Para ecuaciones de dificultad media.
ode23tb Para ecuaciones complejas. A veces ms eficiente queode15s.
Lo normal es utilizar el ode45, y si no da resultado recurrir a los dems,
empezando por el ode15s.
IV)Se resuelve el problema usando el mtodo seleccionado:
[t,y]=nombre_metodo(funcion,tspan,y0)
nombre_metodo puede ser cualquiera de los indicados en la tabla anterior.
funcion debe ser el nombre (cadena de texto) usado para designar a la
funcin generada en el paso II.
tspan es un vector que define el intervalo de valores de tiempo (o de la
variable independiente que sea) para el que se calcular la solucin.
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
44/54
Nociones bsicas de MatLab 7.0
44
Necesariamente tspan debe tener dos elementos, el punto inicial y final
[ti,tf], aunque lo normal es que se trate de un vector con todos los valores
de la variable independiente, t, para los cuales queremos conocer el valor de
la funcin y.
y0 es el valor de la funcin y para t0, que debe ser conocido.
[t y] es la solucin, es decir, el conjunto de valores de la funcin y para
cada uno de los valores de t especificados mediante el vector tspan
A continuacin se aplica la metodologa descrita (pasos I a IV) a un problema sencillo:
La desactivacin trmica de una enzima a 60C sigue una cintica de primer orden con una
constante de desactivacin de 0.05 min-1
. Se pide representar grficamente su actividad residual
entre 0 y 60 minutos, considerando que dicha actividad representa el porcentaje sobre la
actividad a tiempo 0.
I) Se plantea el problema como una EDO de primer orden2:
0.05 0 60 (0) 100dA
A t Adt= =
II) Se crea un fichero funcin que calcule los valores de dA/dt:
Como variables de entrada de la funcin se ponen t y a, lo que es necesario
para usar luego la funcin ode45, aunque en este caso dA/dt no es funcindirecta de t.
III) Usaremos el mtodo ode45
IV)Resolvemos el problema mediante:
[t a]=ode45('desact',[0:1:60],100);
2 Al tratarse de una EDO muy sencilla se podra resolver integrando directamente la ecuacin, pero loharemos mediante los mtodos numricos que incorpora el MatLab.
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
45/54
Nociones bsicas de MatLab 7.0
45
V) Por ltimo representamos los valores de A frente al tiempo, mediante una
orden plot, lo que conduce a:
0 10 20 30 40 50 600
20
40
60
80
100
t, min.
A,%
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
46/54
46
Esta gua se basa en el libro Matlab: Una
introduccin con ejemplos prcticos
de Amos Gilat, Ed. Revert, Barcelona, 2006.
Este libro es traduccin de la segunda
edicin de la obra, publicada por John Wiley
& Sons, USA, 2005.
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
47/54
Notas
47
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
48/54
Notas
48
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
49/54
Notas
49
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
50/54
Notas
50
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
51/54
Notas
51
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
52/54
Notas
52
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
53/54
Notas
53
7/29/2019 47676461 MatLab Guia Para Alumnos de Reactores Quimicos
54/54
Notas
Top Related