47676461 matlab guia para alumnos de reactores quimicos

Upload: yulyp45

Post on 03-Apr-2018

231 views

Category:

Documents


0 download

TRANSCRIPT

  • 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