101
MATLAB - SIMULINK 2015 - I

matlab 2015 tecsup

Embed Size (px)

DESCRIPTION

manual básico del Matlab

Citation preview

  • MATLAB - SIMULINK

    2015 - I

  • 2

  • Introduccin Los grandes avances de la ingeniera moderna se han apoyado enormemente en el uso de las herramientas computacionales, estas facilitan y agilizan los procesos iterativos de clculo, permiten realizar simulaciones y el manejo ptimo de gran cantidad de informacin. Aunque comercialmente se encuentran paquetes computacionales que realizan labores muy especializadas en ingeniera (AutoCAD, Solid Edge, Working Model, etc.) es necesaria la formacin de profesionales en el manejo de las estructuras bsicas de programacin. Estas le permiten solucionar problemas especficos y generar sus propios programas o algoritmos de solucin.

    Las herramientas programables, tambin son muy tiles en el proceso de formacin del profesional, porque se reduce el tiempo de clculos manuales, permitiendo un mejor anlisis y comprensin de los problemas. Es normal cometer errores mientras se realiza cualquier calculo, por lo tanto es necesario revisar de nuevo el problema, y esto implica realizar de nuevo todas las operaciones del mismo, duplicando el tiempo necesario para realizar el ejercicio o resolver el problema. De esta forma, la aplicacin de algoritmos computacionales permite identificar fcil y rpidamente errores obtenidos en el proceso de anlisis; y en los procesos de diseo, permiten realizar iteraciones en busca de la mejor opcin (optimizacin).

    MATLAB es un software para realizar clculos en ingeniera, ciencias y matemticas aplicadas. Este ofrece un potente lenguaje de programacin, excelentes grficas y un amplio rango de aplicaciones cientficas especializadas. MATLAB es publicado y una marca registrada de The MatWorks, Inc.

    3

  • Contenido

    Tema 1: Introduccin al Matlab

    Tema 2: Uso de los comandos bsicos

    Tema 3: Vectores y matrices. Conceptos Bsicos

    Tema 4: Empezando a trabajar con ficheros .m

    Tema 5: Introduccin a los grficos en 2 Dimensiones

    Tema 6: Introduccin a los grficos en 3 Dimensiones

    Tema 7: Programacin con Matlab

    Tema 8: Tratamiento de datos. Ficheros

    Tema 9: Otros temas de aplicacin

    Tema 10: Simulink

    4

  • Tema 1: Introduccin al Matlab

    1. El programa Matlab

    Matlab resulta un entorno de trabajo tcnico que permite el desarrollo

    de clculo numrico y simblico muy adecuado para el mundo cientfico y de

    ingeniera. Representa adems un lenguaje de programacin de alto nivel y se

    completa con una amplia coleccin de paquetes especficos para aplicaciones

    determinadas en campos de la ciencia y la tcnica. Son las toolboxes.

    Se caracteriza por su apertura para relacionarse con otros entornos

    entre los que podemos destacar el Excel o el C al que puede ser traducido de

    forma inmediata. Como su nombre indica, MATLAB es el nombre abreviado de

    MATrix LABoratory, MATLAB es un programa para realizar clculos numricos

    con vectores y matrices. Puede tambin trabajar con nmeros tanto reales como

    complejos, con cadenas de caracteres o con estructuras ms complejas.

    Para ciertas operaciones es muy rpido, sobre todo si se aprovechan

    sus capacidades de vectorizacin.

    Destacar por Ultimo que el mdulo bsico de Matlab ofrece amplias

    opciones a la hora de realizar grficos.

    2. El entorno de trabajo En este texto nos centraremos en el Matlab 6.5. Destacar que el trabajo

    con otras versiones es prcticamente igual y puede hacerse siguiendo este

    texto.

    MATLAB se puede arrancar como cualquier otra aplicacin de

    Windows, clicando dos veces en el icono correspondiente en el escritorio o por

    medio del men Inicio. Al arrancar MATLAB, despus de la aparicin de una

    pantalla temporal, se abre otra del tipo de la indicada en la figura 1 donde se

    pueden destacar los siguientes elementos (si no se obtiene esta pantalla

    elegir del men View: Desktop Layout: Default):

    5

  • Figura 1

    1. La parte ms importante de la ventana inicial es la Command Window, que aparece a la derecha. En esta sub-ventana es donde se ejecutan los comandos de MATLAB. Esto se realiza a continuacin del prompt caracterstico (>>), que indica que el programa est preparado para recibir instrucciones.

    2. En la parte superior izquierda de la pantalla aparecen dos ventanas tambin muy tiles (se puede cambiar de una a otra por medio de la pestaa) son la ventana Launch Pad, que se puede alternar con Workspace.

    Launch Pad da acceso a todas las componentes de MATLAB que se tengan instalados: Help, Demos, etc.

    El Workspace contiene informacin sobre todas las variables que se hayan definido en esta sesin. Esta pantalla resulta muy til a la hora de trabajar como se ir viendo en los sucesivos captulos.

    3. En la parte inferior izquierda aparecen otras dos ventanas, Command History y Current Directory, con el mismo sistema de pestaas para cambiar de una a otra. En Command History se muestran los ltimos comandos ejecutados. Estos se pueden volver a ejecutar haciendo doble clic sobre ellos.

    Current Directory muestra los ficheros del directorio desde el que se trabaja. Se puede alterar este directorio desde la propia ventana o desde la barra de herramientas, debajo de la barra de mens con los mtodos de navegacin de Windows. Como se estudiar, esta ventana resulta de gran utilidad para ejecutar desde ella ficheros creados por el usuario.

    Nota: Si la pantalla obtenida no es exactamente la deseada, se pueden visualizar las

    pestaas activando los correspondientes elementos en el men View.

    6

  • 2.1. La ventana de trabajo: Command Window

    Esta ventana es la ms importante del programa. Comn a todas las versiones

    del Matlab es donde se realizan las operaciones.

    Las entradas a ejecucin se escriben a continuacin del smbolo >> y se

    ejecutan pulsando Enter.

    Debemos pensar que Matlab est creado para realizar tareas y guardar los

    resultados o programas que nos llevan a ellos. No se trata de un editor donde ir

    escribiendo el trabajo realizado. Por ello en esta pantalla no se nos permitir volver

    atrs y rectificar. Todo lo realizado va quedando en ella hasta que decidamos borrarlo.

    Existen maneras de recuperar lo escrito para no tener que volver a escribirlo si

    deseamos corregir o volver a ejecutar:

    - Puede hacerse con las flechas del teclado:

    Con ellas se recupera lo escrito con

    anterioridad en la lnea del >> pudindose corregir y volver a ejecutar.

    - Pinchando dos veces en la lnea correspondiente del Command History.

    Esto permite la ejecucin inmediata de lo elegido.

    - Pinchando con el botn derecho del ratn sobre la sentencia ejecutada en

    el Command Window. Esto permite volver a ejecutar dicha operacin,

    copiarla, etc.

    Si deseamos poner algn comentario lo haremos precedido de %.

    Si de todas formas queremos guardar toda la sesin de trabajo realizada en un

    determinado momento podemos seguir los caminos indicados en el tema 2, seccin 3.

    La Ayuda en Matlab: El programa dispone de una ayuda completa a la que se puede acceder si la

    hemos instalado. Lo podemos verificar desde el Launch Pad y desplegarla pinchando

    dos veces sobre ella: Help (figura 2).

    7

  • Figura 2

    A este mismo navegador de ayuda del Matlab se puede acceder a travs de la tecla ?

    (figura 3).

    Figura 3

    8

  • A veces es ms cmodo visualizar los bloque bsicos de la ayuda en la

    pantalla de trabajo e ir accediendo a lo que buscamos desde ella. Esto puede hacerse

    de la siguiente forma:

    Al escribir help en la lnea de trabajo aparecen los tpicos de informacin

    general:

    >> help

    Tecleando help seguido del nombre de alguna de ellas se accede a su

    contenido. Por ejemplo:

    >> help Matlab\elfun

    Elementary math functions.

    Trigonometric.

    sin - Sine.

    sinh - Hyperbolic sine. asin - Inverse sine.

    asinh - Inverse hyperbolic sine.

    cos - Cosine.

    cosh - Hyperbolic cosine.

    acos - Inverse cosine.

    acosh - Inverse hyperbolic cosine. tan - Tangent.

    tanh - Hyperbolic tangent. atan - Inverse tangent.

    atan2 - Four quadrant inverse tangent.

    atanh - Inverse hyperbolic tangent. sec - Secant.

    sech - Hyperbolic secant.

    asec - Inverse secant.

    asech - Inverse hyperbolic secant. csc - Cosecant.

    csch - Hyperbolic cosecant.

    acsc - Inverse cosecant.

    acsch - Inverse hyperbolic cosecant.

    cot - Cotangent.

    coth - Hyperbolic cotangent.

    acot - Inverse cotangent.

    acoth - Inverse hyperbolic cotangent.

    Exponential.

    exp - Exponential.

    9

  • log - Natural logarithm.

    log10 - Common (base 10) logarithm.

    log2 - Base 2 logarithm and dissect floating point number.

    pow2 - Base 2 power and scale floating point number.

    realpow - Power that will error out on complex result. reallog - Natural logarithm of real number.

    realsqrt - Square root of number greater than or equal to zero. sqrt - Square root.

    nextpow2 - Next higher power of 2.

    Complex. abs - Absolute value.

    angle - Phase angle.

    complex - Construct complex data from real and imaginary parts.

    conj - Complex conjugate.

    imag - Complex imaginary part.

    real - Complex real part.

    unwrap - Unwrap phase angle.

    isreal - True for real array.

    cplxpair - Sort numbers into complex conjugate pairs.

    Rounding and remainder.

    fix - Round towards zero.

    floor - Round towards minus infinity.

    ceil - Round towards plus infinity round - Round towards nearest integer.

    mod - Modulus (signed remainder after division).

    rem - Remainder after division. sign - Signum.

    Tecleando help seguido del nombre de un comando concreto se obtiene

    informacin sobre l. Por ejemplo:

    >> help sin

    SIN Sine.

    SIN(X) is the sine of the elements of X.

    Overloaded methods

    2.2. Workspace Esta ventana del espacio de trabajo permite la visualizacin de las variables

    almacenadas en memoria. Da una informacin completa sobre ellas: nombre, tipo,

    tamao y clase

    Pinchando dos veces en la variable se accede al Array editor donde se nos

    10

  • permite modificar la variable en cuestin (figura 4).

    Figura 4 Cuando se introduzcan las variables en el tema 2 volveremos sobre esta

    ventana que ser de gran utilidad. Desde ella se pueden guardar las variables para

    cargarlas en sucesivas sesiones de trabajo, borrar variables, etc.

    3. Los distintos tipos de ficheros en Matlab A travs del men File, en el submen New, podemos ver que el programa nos

    ofrece, entre otros, la posibilidad de trabajar con ficheros M-file o de Figure (figura 5).

    En los captulos siguientes iremos desarrollando cada uno de estos ficheros y sus

    funciones.

    11

  • Figura 5

    A modo introductorio decir que:

    - En los ficheros Figure se guardarn las figuras que el programa nos permite

    realizar. Sern ficheros con extensin .fig.

    - Los ficheros M-Fife tienen gran utilidad en el programa. Se abren por defecto al

    pinchar en el botn de nuevo fichero en la barra de herramientas. Son ficheros que

    contienen conjuntos de comandos o definicin de funciones y al teclear su nombre

    en la lnea de comandos y pulsar intro, se ejecutan uno a uno todos los comandos

    contenidos en l. Siempre y cuando dicho fichero se encuentre en el directorio

    actual o est incluido en el Path de Matlab.

    - Existen otros ficheros de gran importancia, los de extensin .mat donde se

    guardarn las variables deseadas que han sido creadas durante el trabajo.

    12

  • Prctica 1: Introduccin al Matlab

    1. Entrar en el programa Matlab. Preparar la pantalla con la ventana de trabajo o

    Command Window, el Workspace, el Command History y el Current Directory.

    2. Escribir el comentario: Empezamos a trabajar 3. Realizar las siguientes operaciones: 2+2, 2/5, 2x4 4. Volver a ejecutar 2+2 sin necesidad de volver a teclear la operacin.

    5. Utilizar la ayuda para realizar las siguientes operaciones: sen(pi), log(3), sqrt(3) 6. Introducir una variable a con el valor 1.234

    7. A travs del Workspace visualizar si dicha variable ha sido tomada por el

    programa 13 y modificar su valor a 1.125.

    13

  • 14

    Tema 2: Uso de los comandos bsicos

    1. Nmeros y operaciones bsicas El programa trabaja con diferentes tipos de nmeros y expresiones numricas:

    nmeros enteros, racionales, reales y complejos.

    Operaciones bsicas Comenzaremos realizando con el programa las operaciones ms bsicas entre

    nmeros. Trabajamos en la ventana de Command window y para ello se utilizan las

    convenciones matemticas estndar.

    Por ejemplo, para sumar (figura 6): >> 2+2

    ans 4

    Figura 6

  • 15

    Nota: La respuesta de Matlab se realiza a travs de una variable que va cambiando de

    valor y que guarda el ltimo resultado ejecutado. Verificarlo en el workspace.

    En general las operaciones bsicas a realizar se hacen segn la siguiente tabla

    y con la jerarqua habitual entre ellas:

    a+b Suma

    a-b Resta

    a*b Producto

    a/b Divisin

    a^b Potencia

    Nota: Por defecto Matlab trabaja con unos dgitos de aproximacin para nmeros

    decimales. Esto puede cambiarse.

    Estableciendo la precisin de los clculos MATLAB trabaja siempre en doble precisin, es decir, guardando cada dato en

    8 bytes, con 15 cifras decimales exactas. El formato con el que los datos aparecen en

    pantalla es variable. Existen varios modos de trabajo, se indican a continuacin los

    ms significativos:

    format short punto fijo con 4 decimales format long punto fijo con 14 decimales format short e 4 decimales y forma exponencial. format long e 15 decimales y forma exponencial. format rat formato racional.

    El modo de trabajo por defecto en MATLAB es format short.

    Ejemplos:

    >>3^100

    5.1538e+047

    >>5+pi

    8.1416

  • 16

    >>format short e >>3^100

    5.1538e+047

    >>5+pi

    8.1416 e+000

    >>format long >>3^100

    5.153775207320113e+047

    >>5+pi

    8.14159265358979

    >>format long e >>3^100

    5.153775207320113e+047

    >>5+pi

    8.141592653589793e+000

    >> format rat

    >> 5+pi

    920/113

    Tecleando format se vuelve al formato por defecto, es decir, format short.

    Nmeros complejos Matlab integra perfectamente el trabajo con nmeros complejos. La letra

    minscula i j representa el nmero imaginario 1 (la unidad imaginaria). De esta manera los nmeros complejos se representan mediante expresiones del tipo a+bi

    a+bj.

    Existen funciones especficas que actan sobre los nmeros complejos:

    real(z): obtiene la parte real de z.

    imag(z): obtiene la parte imaginaria de z.

    conj(z): obtiene el complejo conjugado de z.

    abs(z): obtiene el mdulo de z.

    angle(z): obtiene el argumento de z.

  • 17

    2. Variables Las variables en Matlab tienen forma matricial: fila y columna. As, si

    trabajamos con una variable unidimensional se crea con la forma de una fila y una

    columna. Para hacerlo slo debemos teclear el nombre elegido e igualarlo a su valor:

    >> a=8

    Alterar el valor de una variable: Matlab guarda el valor de la variable ejecutada en ltimo lugar, es decir si

    volvemos a ejecutar un valor para a ste ser el que mantiene.

    Podemos alterar el valor de una variable desde el workspace. Para ello

    pincharemos en ella en la ventana del workspace y cambiaremos su valor desde el

    editor (figura 7):

    Figura 7

    Guardar variables y recuperarlas Normalmente es de gran inters guardar los valores de las variables con las

    que se ha trabajado en una sesin. Bien porque debe interrumpirse la misma y quiere

    recuperarse ms adelante, o bien para utilizarse en nuevos trabajos relacionados con

    el que se ha realizado.

    La forma ms bsica de guardar las variables es a travs del men File o del

    botn de guardar situado en la ventana del Workspace (figura8):

  • 18

    Figura 8

    O a travs de del men desplegado al pinchar con el botn derecho del ratn sobre la

    variable situada en el Workspace (figura 9). Esta opcin nos permite guardar slo las

    variables seleccionadas. Destacar que esto tambin ofrece la posibilidad de eliminar la

    variable. Algo que puede hacerse de forma global desde el men Edit, submen Clear

    Workspace.

    Figura 9

    Realizar cualquiera de estos procesos nos permite crear un fichero de

    extensin .mat con el nombre deseado cuyo contenido sern las variables que se

  • 19

    quieren guardar. Al hacerlo, si lo guardamos en el directorio actual aparecer dicho

    fichero en la lista de los que tenemos a nuestra disposicin.

    Si en una nueva sesin queremos recuperar dichas variables slo tenemos que

    cargar el fichero .mat, bien pinchando dos veces sobre su nombre en la ventana del

    directorio actual o bien a travs del men File, submen Open.

    3. Guardar sesiones de trabajo Existen varios caminos para guardar lo realizado en una sesin de trabajo o en

    parte de ella:

    - Copiar la parte que nos interese del Command Window y abrir un fichero .m. (figura

    10).

    Figura 10

    Aparece entonces una nueva ventana (figura 11):

    Figura 11

  • 20

    En ella podemos pegar lo seleccionado y modificar cuantas cosas queramos. Este

    fichero se guarda y se puede acceder a l cuando se desee. Debemos tener en cuenta

    que segn lo realizado se trata de un fichero de texto, no es ejecutable.

    - Con los comandos diary fichero.dia

    diary off

    Se trata de escribir al comienzo de la parte que deseamos guardar diary seguido del

    (nombre del fichero donde guardaremos el trabajo).dia. Al finalizar terminaremos

    escribiendo diary off. Veremos que se ha creado un fichero que podemos visualizar

    escribiendo type fichero, lo que nos recupera en la pantalla su contenido, o pinchando

    dos veces sobre l en el current directory, lo que nos abre una pantalla con su

    contenido donde podemos modificar, escribir, etc.

    4. Variables carcter Una cadena de caracteres determinan una variable carcter. Su sintaxis es:

    a=cadena de caracteres

    Como vemos es necesario incluir los caracteres entre comillas.

    Se destacan algunos comandos importantes que manejan este tipo de

    variables y que se irn usando en temas sucesivos:

    str2mat(x1,x2,...): Forma una matriz cuyas filas son las cadenas de

    caracteres x1, x2,..., respectivamente.

    str2num(x1,x2,...): Convierte la cadena de caracteres en su valor numrico

    exacto utilizado por Matlab.

    num2str(nmero): Convierte el nmero exacto en su cadena de caracteres

    equivalente con la precisin fijada

    eval(expresin): Ejecuta la expresin.

    disp(cadena): Muestra la cadena tal y como se ha escrito y continua el

    proceso.

    input(`cadena): Muestra la cadena en pantalla y espera que se presin de una

    tecla para continuar.

    Veamos algunos ejemplos:

  • 21

    >> num2str(pi)

    ans =

    3.142

    Se ha convertido el nmero exacto pi en cadena de caracteres.

    >> str2num(15/14)

    ans =

    1.0714

    Se ha convertido una cadena a su valor exacto con la precisin por defecto.

    >> str2mat(la primera,la dos,telemadrid,antena 3,telecinco)

    ans =

    la primera

    la dos

    telemadrid

    antena 3

    telecinco

    Se ha formado la matriz de texto cuyas filas son las cadenas introducidas como los

    argumentos de str2mat.

    >> disp(hola)

    ans =

    hola

    Se ha obtenido en pantalla la palabra escrita como argumento del comando.

  • 22

    Prctica 2: Uso de los comandos bsicos

    1. Calcular 3+5 y 7/8 en una misma orden. 2. Realiza la operacin 174/13. 3. Ofrece la operacin anterior con 14 cifras decimales, en forma de nmero

    racional y en forma exponencial.

    4. Volver al formato short. 5. Definir las siguientes variables: a=2x8, b=45/6, c=a+b. 6. Guardar las variables a y b en un fichero. 7. Borrar el valor de todas las variables creadas. 8. Recuperar a y b. 9. Utilizando el comando help, acceder a la ayuda correspondiente a las

    funciones matemticas, extrayendo la informacin necesaria para realizar la

    siguiente operacin: aebc ++= )3/tan()7(log 42 10. Asignar a la variable d el valor 34 y calcular el coseno de d al cubo. Hacerlo de

    forma que se ejecuten las dos operaciones pero slo se muestre el ltimo

    resultado.

    11. Guardar todas las variables. 12. Guardar la sesin en un fichero .m. 13. El trabajo a realizar en los ejercicios siguientes debe guardarse en un archivo

    .dia.

    14. Introducir los nmeros complejos z=2-3i, u=-1+2i a. Calcular parte real e imaginaria de z

    b. Determinar argumento y mdulo de u

    c. Calcular z+u y zxu

    15. Introducir los complejos z= i+3 , w= i23

    21 + . Calcular zxw y z/w.

  • 23

    Tema 3: Vectores y matrices. Conceptos bsicos

    1. Definicin Matlab est fundamentalmente orientado al trabajo y el clculo matricial.

    Veremos que las operaciones estn definidas para el trabajo con este tipo de

    elementos. Antes de empezar a manejar y operar con ellas veamos cmo se definen.

    Como en casi todos los lenguajes de programacin, en Matlab las matrices y

    vectores son variables a las que se les puede dar nombres. Para definir una matriz no hace falta establecer de antemano su tamao (de hecho, se puede definir un tamao y

    cambiarlo posteriormente). Matlab determina el nmero de filas y de columnas en

    funcin del nmero de elementos que se introducen (o se utilizan). Las matrices se

    definen con los elementos entre corchetes y por filas; los elementos de una misma fila

    estn separados por blancos o comas, mientras que las filas estn separadas por pulsaciones intro o por caracteres punto y coma (;).

    Por ejemplo, el siguiente comando define una matriz A de dimensin (3x3):

    >> A=[1 2 3; 4 5 6; 7 8 9]

    La respuesta del programa es:

    1 2 3

    4 5 6

    7 8 9

    Veamos en el Workspace como las almacena Matlab (figura 12):

  • 24

    Figura 12

    A partir del momento en que tenemos definidas diversas matrices, se pueden

    operar. Matlab puede hacer esto por medio de operadores o por medio de funciones.

    2. Operaciones elementales Operaciones bsicas como suma, producto o trasposicin de hacen como se

    muestra a continuacin, permitindose algunas operaciones no definidas

    matemticamente:

    Operador suma (+) Utilizado entre matrices de iguales dimensiones, obtiene la suma elemento a

    elemento. Utilizado entre una matriz y un escalar, suma el escalar a cada elemento de

    la matriz. Operador resta (-)

    Idntico a la suma en su utilizacin.

    Operador producto (*) Utilizado entre matrices calcula el producto matricial. Las dimensiones de las

    matrices deben ser congruentes. Utilizado entre una matriz y un escalar, multiplica el

    escalar por cada elemento de la matriz. Operador producto elemento a elemento (.*)

    Se utiliza entre dos matrices de iguales dimensiones y multiplica elemento a

    elemento, obteniendo otra matriz de igual dimensin. Operador potenciacin (^)

  • 25

    Si c es un entero y A es una matriz cuadrada, A^c calcula el producto A*A*A

    .............. *A, c veces.

    Operador potenciacin elemento a elemento (.^) A.^B da como resultado una matriz cuyo elemento ij es aij^bij. A.^c da como resultado una matriz cuyo elemento ij es aij^c. c.^A da como resultado una matriz cuyo elemento ij es c^aij.

    Operador divisin (/) (\) En Matlab existe el operador divisin a la derecha (/) y divisin a la izquierda

    (\).

    La utilizacin entre matrices es la siguiente:

    - \ divisin-izquierda: A\B Si A es cuadrada A\B=inversa(A)*B. Si A no es cuadrada A\B es la solucin en

    el sentido de mnimos cuadrados del sistema AX=B.

    - / divisin-derecha: A/B

    Si B es cuadrada A/B=A*inversa(B). Si B no es cuadrada, A/B es la solucin del

    sistema XB=A.

    Operador divisin elemento a elemento (./) (.\) A./B da como resultado una matriz cuyo elemento ij es aij /bij.

    A.\B da como resultado una matriz cuyo elemento ij es bij /aij.

    Operador traspuesta () A da como resultado la matriz transpuesta de A.

    3. Operaciones por medio de funciones En men de la ayuda: matlab\elmat - Elementary matrices and matrix

    manipulation y matlab\matfun - Matrix functions - numerical linear algebra, se pueden

    encontrar las diversas funciones que se aplican a las matrices. Destacamos las ms

    elementales como: inv(A) da como resultado la matriz inversa de A. det(A) da como resultado el determinante de A. trace(A) da como resultado la traza de A. rank(A) da el rango de A

    Debe destacarse que la mayora de las funciones definidas en el programa se

    ejecutan sobre cualquier matriz aplicndose elemento a elemento.

    Por ejemplo:

    >> Sin(A)

  • 26

    Ofrece como respuesta una matriz del mismo tamao que A cuyos elementos

    son el seno del correspondiente elemento de A:

    0.8415 0.9093 0.1411

    -0.7568 -0.9589 -0.2794

    0.6570 0.9894 0.4121

    4. Otras formas de definir matrices

    Algunas veces, introducir matrices por el teclado no es prctico. Veremos otras

    formas ms potentes de generar matrices que luego, tras modificaciones nos pueden

    llevar a definir la que nos interesa. Los comandos a utilizar se encuentren en

    matlab\elmat.

    Algunas de estas funciones son las siguientes:

    eye(n) forma la matriz identidad de tamao (nxn)

    zeros(m,n) forma una matriz de ceros de tamao (mxn)

    zeros(n) forma una matriz de ceros de tamao (nxn)

    ones(n) forma una matriz de unos de tamao (nxn)

    ones(m,n) forma una matriz de unos de tamao (mxn)

    rand: este comando genera nmeros pseudoaleatorios distribuidos uniformemente entre 0 y 1. Cada llamada proporciona un nuevo nmero.

    rand(n): genera una matriz de nmeros pseudoaleatorios entre 0 y 1, con distribucin uniforme, de tamao nxn.

    rand(m,n): igual que en el caso anterior pero de tamao mxn.

    5. Manipulacin de matrices Con este programa es posible crear matrices a partir de una dada, extraer o

    cambiar elementos de una matriz y, en general, manipular de casi cualquier forma

    estos elementos. Veamos los diversos caminos para realizarlo:

    - Crear una nueva matriz que reciba alguna caracterstica o propiedad de la de

    partida

    - Componer una matriz a partir de submatrices ms pequeas.

    - Mediante la manipulacin de los elementos de la matriz de partida.

    Caractersticas de una matriz:

  • 27

    Destacamos algunos comandos que permiten trabajar con las caractersticas o

    elementos de una matriz de partida:

    size (A), length(A) nos dan informacin sobre las caractersticas de la matriz A, en este caso dimensin de la matriz o longitud del vector.

    zeros (size(A)) genera una matriz de ceros del mismo tamao que A. ones(size(A)) lo mismo con matriz de unos A=diag(x) devuelve una matriz diagonal cuyos elementos de la diagonal son los del vector x.

    triu(A) y tril(A) forman matrices triangulares superiores e inferiores a partir de la matriz A.

    Composicin de matrices Crear una matriz a partir de submatrices es algo muy sencillo para el programa

    que sin embargo es de mucha utilidad por ejemplo a la hora de aadir datos o ampliar

    informacin.

    Si contamos con la submatrices A=[1 2; 3 4] y B=[1,6], C=[A; B] genera la

    matriz:

    1 2

    3 4

    1 6

    Si tenemos con los vectores u=[1 2 3 4] y v=[1 6], w=[u v] devuelve:

    w=[1 2 3 4 1 6]

    Manipulacin de elementos Veremos como extraer, cambiar o eliminar elementos o lneas (filas o columnas

    de una matriz).

    Dado un vector x, la ejecucin de x(i) devuelve el elemento situado en la posicin i de ese vector.

    En el caso matricial A(i,j) devuelve el elemento situado en la fila i columna j de la matriz A.

    El operador (:) es de gran importancia en Matlab. Puede decirse que es un operador que respeta el rango. Veamos su utilidad con algunos ejemplos:

    >> x=1:10

    x =

    1 2 3 4 5 6 7 8 9 10

    >> x=[0:2:10]

    x =

  • 28

    0 2 4 6 8 10

    El primer nmero indica el valor inicial, el segundo el paso del incremento y el

    tercero el elemento final. Como hemos visto si se omite el intermedio, por defecto se

    toma la unidad.

    Nota: En general, el operador genera vectores fila. Conocido este operador, podemos decir que con l es posible definir variables vectoriales:

    x= [p:q] general un vector de primer elemento p, ltimo q y los elementos intermedios

    se diferencian en una unidad

    x= [p:i:q] devuelve un vector de primer elemento p, ltimo q y los elementos

    intermedios se diferencian en i unidades.

    Destacar tambin el comando linspace: x=linspace(p,q,n) genera un vector de n

    elementos uniformemente espaciados desde p hasta q.

    A esto se le puede dar gran nmero de aplicaciones:

    Recordando que el vector x es: x=[1 2 3 4 5 6 7 8 9 10]:

    >> x(1:4)

    ans =

    1 2 3 4

    >> A=[1 2;3 4;5 6]

    A =

    1 2

    3 4

    5 6

    >> A(1,:)

    ans =

    1 2

    >> A(:,2)

    ans =

    2

    4

    6

  • 29

    Prctica 3: Matrices y vectores

    1. Introducir los vectores (1 2 3 4 5) y (6 7 8 9 10) asignndoles las variables u y v respectivamente:

    a. Determinar 3u, u+v, u-v.

    b. Construir un vector cuyos elementos sean los de v incrementados 3

    unidades.

    c. Determinar un vector de elementos el resultado de multiplicar cada

    elemento de u por el correspondiente de v.

    d. Calcular un vector de elementos los de u elevados al cubo.

    e. Calcular un vector cuyos elementos sean el resultado de elevar cada

    elemento de u al elemento de v correspondiente.

    2. Introducir las matrices

    =

    =

    318134752

    ,017345121

    BA

    a. Calcular A+B, AB, A4

    b. Determinar una matriz cuyos elementos sean el resultado de multiplicar

    cada elemento de A por el correspondiente de B.

    c. Determinar una matriz cuyos elementos sean el resultado de dividir

    cada elemento de A por el correspondiente de B.

    3. Determinar si es posible: a. La inversa de A y de B. Verificar que el producto de una matriz por su

    inversa es la matriz identidad.

    b. La traza de B.

    c. El determinante y el rango de A.

    4. Una empresa compra los siguientes artculos:

    Referencia artculo Cantidad de artculo Precio de la unidad (sin IVA)

    100 200 190

    101 150 345

    102 500 69

    103 49 598

  • 30

    a. Introducir la tabla en mediante tres vectores: referencia, cantidad y

    coste.

    b. Determinar el coste total de cada producto.

    c. Construir una tabla con cada artculo y su coste total.

    d. Calcular el coste total a pagar por la empresa incluyendo un 16% de

    IVA

    5. Introducir los vectores u=(2,3,4) y v=(3,-4,8). a. Determinar la suma y el producto de todos los elementos de u.

    b. Calcular el mximo y mnimo de los elementos de v, as como el lugar

    donde estn situados.

    c. Calcular el producto escalar de u y v.

    d. Determinar el mdulo de los vectores.

    6. Construir los vectores cuyos elementos sean: a. Los nmeros naturales comprendidos entre el 10 y el 100.

    b. (-1, -0,8, -0.6,............, 1.6, 1.8, 2).

    c. Desde el 1 hasta el 3 igualmente espaciados y con un total de 38

    elementos.

    7. Dados u=(1,2,3), v=(4,5,6), a. Construir el vector (0,1,2,3) a partir de u.

    b. Construir el vector de elementos los de u y v

    8. Construir un vector w con los cuadrados de los 15 primeros nmeros naturales. a. Extraer el cuadrado de 7.

    b. Extraer los cuadrados de los elementos que van desde el 2 al 6 ambos

    inclusive.

    c. Extraer los cuadrados de los elementos que van desde el 7 al 13 ambos

    inclusive en sentido inverso

    d. Construir, a partir de w un vector con los cuadrados de 1, 3, 7,14.

    9. Introducir la matiz

    =

    047596312421

    4382

    A

    a. Extraer el elemento a23.

    b. Sustituir el elememto a22 por 100.

    c. Construir una submatriz de A formada por las filas 2, 3 y 4 y las

    columnas 1, 2 y 3 de A.

    d. Extraer la fila 3 de A.

    e. Extraer la columna 1 de A.

  • 31

    f. Construir una matriz formada por las filas 1, 2 y 3 de A.

    g. Construir una matriz formada por las filas 1 y 4 de A.

    10. Construir una matriz A cuadrada aleatoria de orden 3. a. Obtener su inversa, su transpuesta y su diagonal.

    b. Transformarla en una matriz triangular inferior.

    c. Obtener la suma de los elementos de la primera fila, de la segunda

    columna y de la diagonal.

    11. Estudiar, segn el teorema de Rouche-Frobenius, y resolver el sistema:

    =++=++

    =++=++

    5465132

    1983632

    zyxzyxzyxzyx

    12. Resolver el sistema

    =+++=+++=+++=+++

    53251224

    232153

    tzyxtzyxtzyxtzyx

    utilizando:

    a. La matriz inversa de los coeficientes si existe.

    b. El operador divisin izquierda.

  • 32

    Tema 4: Empezando a trabajar con ficheros .m

    1. Introduccin Como ya se coment en el punto 3 del tema1, en Matlab tienen especial

    importancia los ficherosM de extensin .m. Contienen conjuntos de comandos a

    ejecutar o definicin de funciones y se ejecutan al teclear su nombre en la lnea de

    comandos y pulsar intro (si se encuentra en el Current Directory) o al pinchar sobre l

    en Current Directory con el botn derecho del ratn y elegir run. Representan el centro

    de la programacin en Matlab.

    Un fichero .m puede llamar a otros ficheros .m y ficheros de comandos pueden

    ser llamados desde ficheros de funciones. En estos casos es importante tener en

    cuenta la definicin de las variables a utilizar, en la lnea de que tengan un tratamiento

    local o global. Por defecto, Matlab considera las variables locales, es decir, aunque

    varias funciones tengan la variable x, sta es diferente en cada caso a no ser que haya

    sido definida como global.

    Son ficheros de texto sin formato y que pueden crearse a partir de un editor de

    textos, no obstante, lo mejor es utilizar el editor del propio programa al que se accede

    por defecto al abrir un nuevo fichero.

    2. Editor Para crear un nuevo fichero .m elegimos new M-File del men File o elegimos

    el icono correspondiente. Aparece entonces la pantalla del editor/Debugger donde

    podemos ir escribiendo las sentencias.

    En el caso de la figura 13 el fichero contiene comentario, dos sentencias y otro

    comentario. Las sentencias seguidas de (;) no se mostrarn en pantalla al ejecutar el

    fichero.

  • 33

    Figura 13

    El editor muestra en diferentes colores los diferentes tipos de comandos:

    - Verde para los comentarios.

    - Rojo para las cadenas de caracteres.

    - Negro para las sentencias.

    Una posibilidad de ejecutar el fichero es elegir Run del men Debug

    (primeramente debe guardarse con un nombre). Es posible ejecutar el mismo por

    partes incluyendo breakpoints lo que puede hacerse con el icono de los puntos rojos.

    Si se tienen estos puntos de parada se continua de uno a otro con la opcin de

    Continue. Es posible visualizar el valor que van tomando los distintos elementos del

    fichero posndonos con el ratn sobre ellos (figura 14).

    Es interesante ir conociendo los dems botones y mens del editor que nos

    permite eliminar los breakpoints, terminar la ejecucin,.... Resulta muy til para

    detectar errores y corregirlos y en general para programar

  • 34

    Figura 14

    Si se desea modificar o visualizar un fichero .m ya creado, es suficiente con

    abrirlo desde Open en el men File o hacer doble cick en su nombre desde el Current

    Direcrory. Ambas opciones dan acceso al editor y al fichero.

    Ya se ha introducido que existen dos tipos de ficheros .m. Se comentarn con

    ms detalle cada uno de ellos.

    3. Ficheros de comandos. Programas propios del usuario Estos ficheros, tambin llamados scripts, contienen listas de comandos que se

    ejecutan sucesivamente cuando se ejecuta dicho fichero, es decir cuando se escribe el

    nombre del fichero en la lnea de comandos y se pulsa intro. Es importante destacar

    que en estos ficheros, las variables que se crean pertenecen al espacio base del

    Matlab, algo que no ocurre en los ficheros de funcin donde las variables pertenecen

    slo al espacio de trabajo de esa funcin. Puede comprobarse esto ejecutando el

    fichero del la figura 14.

    Se ampliar el tratamiento de este tipo de ficheros en el captulo de programacin.

    4. Definicin de funciones En el tema 1 vimos que Matlab tiene definidas sus propias funciones, por

    ejemplo Sin, Cos,... En general, el programa tiene un gran nmero de funciones

    incorporadas, bien se trata de funciones intrnsecas, es decir, del propio cdigo

    ejecutable lo que las hace muy rpidas y eficientes, o bien se trata de funciones

    definidas en ficheros, normalmente .m, que vienen con el programa. A todo ello se

  • 35

    unirn las funciones creadas por el propio usuario. La importante diferencia de estas

    ltimas es que, para que el programa pueda trabajar con ellas, el correspondiente

    fichero .m debe estar en el directorio actual o en el path.

    El trabajo con funciones y el propio concepto de funcin en Matlab es parecido

    al que se tiene en C y en otros lenguajes de programacin. Toda funcin tendr:

    - Un nombre. Por ejemplo: f.

    - Unos argumentos. Van a continuacin del nombre y entre parntesis,

    separados por comas si son ms de uno. Por ejemplo: f(x) f(x,y).

    - Unas salidas o retornos que son el resultado de la funcin. La ventaja de

    Matlab es que pueden ser valores matriciales mltiples que se recogern en

    diversas variables que se agruparn entre corchetes. Por ejemplo: p=f(x)

    [p,q]=f(x).

    4.1. Funciones de librera Ya conocemos, si no puede consultarse la ayuda, los diversos tipos de

    funciones que tiene el programa. Se clasifican en:

    - Funciones matemticas elementales.

    - Funciones especiales.

    - Funciones matriciales elementales.

    - Funciones matriciales especficas.

    - Funciones para la descomposicin y/o factorizacin de matrices.

    - Funciones para anlisis estadstico de datos.

    - Funciones para anlisis de polinomios

    - Funciones para integracin de ecuaciones diferenciales ordinarias.

    - Resolucin de ecuaciones no-lineales y optimizacin.

    - Integracin numrica.

    - Funciones para procesamiento de seales.

    Existen funciones (las matemticas trascendentes y algunas bsicas) que

    actan sobre escalares o sobre cada elemento de una matriz. Por ejemplo:

    >> sin(0)

    ans =

    0

    >> A=[1 2 3]

    A =

    1 2 3

    >> sin(A)

  • 36

    ans =

    0.8415 0.9093 0.1411

    >>

    Existen otras que slo actan sobre vectores, no sobre escalares ni matrices.

    Por ejemplo, max(x), min(x) devuelve el elemento mximo y mnimo de entre los

    elementos del vector x. Tambin nos dan la posicin donde se encuentra.

    >> A=[1 2 3]

    A =

    1 2 3

    >> max(A)

    ans =

    3

    >> [p,q]=max(A)

    p =

    3

    q =

    3

    >>

    De igual forma, otras funciones slo se aplican sobre matrices. Son las que se

    encuentran en el grupo de funciones matriciales elementales, funciones matriciales

    especiales y funciones de factorizacin y/0 descomposicin matricial. Por ejemplo

    trace(A) que nos da la traza de la matriz A, [p,q]=eig(A) nos da los valores propios y

    vectores propios asociados a la matriz A.

    4.2. Funciones creadas por el usuario La palabra function escrita al comienzo de un fichero .m nos permite definir una

    funcin constituyendo una de las aplicaciones ms importantes del programa. Su

    sintaxis es la siguiente:

    function parmetros de retorno=nonbre de la funcin (argumentos)

    cuerpo de la funcin

    Es muy importante incidir en que los argumentos o variables de la funcin son

    de carcter local, es decir, no interfieren con otras variables del mismo nombre que

    hayan sido definidas en otra parte del programa, otros ficheros .m o en la ventana de

    trabajo. Para que una funcin tenga acceso a variables que no se hayan definido como

    parte de sus argumentos, stas deben definirse como globales tanto en el programa

  • 37

    principal como en los ficheros .m dnde se quiera tener en cuenta. El comando es

    global x,y,.....

    El siguiente ejemplo, figura 15, define una funcin f que calcula el cuadrado del valor

    que se desee:

    Figura 15

    Es importante destacar:

    - En este caso existe un argumento o variable de entrada: x, y un retorno o

    salida: p.

    - Si no ponemos los (;) despus de la definicin de funcin y el retorno, al

    ejecutar desde la lnea de comandos, el resultado saldra por duplicado o

    triplicado, el valor de f(x), el de p y el de ans.

    - Para finalizar debemos guardar el fichero. Al hacerlo, el programa por

    defecto nos sugiere como nombre el de la propia funcin. Es aconsejable

    usarlo para evitar confusiones entre los ficheros y las propias funciones.

    Tambin debemos acordarnos de guardarlo en el directorio donde

    trabajamos para tener acceso inmediato a la funcin. Si no lo hacemos as,

    para utilizarla deberemos antes situarnos en el directorio donde la hayamos

    grabado.

  • 38

    - Es posible poner todos los comentarios necesarios para, en un futuro

    recordar lo que hace esa funcin. Si tecleamos en la lnea de comandos

    help seguido del nombre de la funcin, nos aparecern los comentarios que

    en su da escribimos en dicho fichero (figura 16).

    Figura 16

    - Destacar tambin que esta funcin se aplica sobre cualquier tipo de entrada

    para la que est definida la operacin. En este caso si lo aplicamos sobre

    un vector o una matriz no cuadrada nos dar un mensaje de error. S se

    aplica sobre matrices cuadradas calcula el producto de dicha matriz por ella

    misma. Si queremos que la funcin f se aplique sobre todo tipo de matrices

    calculando el cuadrado de cada elemento es suficiente con definir la

    operacin con el punto delante:

    function p=f(x);

    p=x.^2

    4.2.1. Comandos eval y feval

    El comando feval: La evaluacin de una funcin tambin puede hacerse a travs del comando

    feval cuya sintaxis es:

    feval (nombre de la funcin, valor del argumento 1, valor del argumento 2, ....)

  • 39

    Por ejemplo, figura 17:

    Figura 17

    Si ejecutamos en la lnea de comandos:

    >> [a,b]=feval('f',3,4)

    a =

    7

    b =

    -1

    >>

    El comando eval

    Este comando se utiliza para trabajar con cadenas, algo que se coment en el

    tema 1.

    Supongamos que definimos una funcin como una cadena de caracteres desde

    la lnea de comandos, para ello se utilizan las comillas:

    >> f='x^2+5'

    f =

    x^2+5

    El comando eval se utiliza como sigue:

    >> x=3;

  • 40

    >> eval(f,x)

    ans =

    14

    >>

    De forma general se puede hacer:

    >> x=3;

    >> eval('x ^2+5',x )

    ans =

    14

    >>

    Existen algunas funciones relacionadas que trabajan de la misma forma. Tal es

    el caso, por ejemplo de:

    diff(f,x): Calcula la funcin derivada de f con respecto a x.

    diff(f,x,n): Calcula la funcin derivada ensima de f con respecto a x.

    Estos comandos entre muchos otros, forman el trabajo de clculo simblico del

    programa.

    Ejemplos:

    >> diff('x^2','x')

    ans =

    2*x

    Si declaramos primeramente la variable x como simblica:

    >> syms x;

    >> diff('x^2',x,3)

    ans =

    0

  • 41

    Prctica 4: Empezando a trabajar con ficheros .m

    1. Construir una funcin que calcule el seno de cualquier valor ms 5. Utilizarla para calcular sen(45)+5, sen(n)+5 con n los 10 primeros nmeros naturales.

    2. Repetir el ejercicio anterior para el clculo del cubo de los valores.

    3. Define la funcin g(x)=12

    3

    +

    xxx

    a. Calcula g(4).

    b. Calcula g(x) siendo x=(-2, -1.9, -1.8,........1.8 ,1.9 ,2)

    4. Construir una funcin que calcule el ngulo formado entre dos vectores. 5. Define una funcin que permute las filas i y j de una matriz. 6. Construir una funcin ecu(a,b,c) que determine las races de la ecuacin

    ax2+bx+c=0.

    7. Define como variable global la matriz A=

    654321

    . Define una funcin que

    calcule el incremento de todos los elementos de A en un nmero a elegir.

    8. Construir una funcin tal que, dados dos vectores u, v, devuelva un vector con los elementos de u excepto el primero, y los elementos de v excepto el ltimo.

  • 42

    Tema 5: Introduccin a los grficos en 2 dimensiones

    1. Representacin grfica en Matlab Matlab ofrece gran nmero de posibilidades a la hora de realizar

    representaciones grficas. Dibuja curvas planas y superficies. Permite agrupar y

    superponer representaciones. Todo ello con variaciones de estilo y de coordenadas.

    Permite a su vez realizar grficos de tipo estadstico: de barra, histogramas, etc.

    Por las caractersticas propias del programa, los grficos, en concreto los 2D,

    estn orientados a la representacin grfica de vectores. Se utiliza una ventana

    especial para la creacin de los grficos: la ventana grfica o de dibujo y, dichos

    grficos se guardan en ficheros de extensin .fig. Ciertos comandos ejecutados sobre

    la lnea de comandos son los que abren esta ventana, otros dibujan sobre la ventana

    activa, bien sustituyendo lo que haba en ella, bien aadiendo nuevos elementos

    grficos a los que haba. Los iremos estudiando con ms detalle

    2. Funciones bsicas para las grficas 2D El comando bsico para la representacin de grficos 2D es el comando plot.

    Su sintaxis puede ser:

    plot(x,y): dibuja el conjunto de puntos (x,y) donde las abscisas de los puntos se encuentran en el vector x y las ordenadas en el y.

    Para representar una funcin f(x) es necesario conocer los valores de puntos

    de la forma (x,f(x)). Para ello puede seguirse alguno de estos caminos:

    - Definir un vector x con el rango de variacin donde se desea pintar la

    funcin. Para ello puede ser muy til el comando linspace(xmin,xmax,n).

    Crear el vector y evaluando f en x. Por ejemplo:

  • 43

    >> x=linspace(0,10,100);

    >> y=sin(x);

    >> plot(x,y)

    Por defecto, MATLAB dibuja uniendo los puntos con lnea continua de color azul

    y un grosor determinado, opciones todas que se podrn alterar como veremos.

    - Tambin es posible dibujar una funcin con el comando fplot cuya sintaxis

    es la siguiente: fplot(f(x),[xmin,xmax]). As, este comando admite como argumento un nombre de funcin o de un fichero .m en el que est definida

    la funcin a representar. Por ejemplo: >> fplot(sin(x)',[-3*pi,3*pi,-1,1])

    En general, si no se cierra la ventana de dibujo generada al evaluar un

    comando como los anteriotes, si se vuelve a ejecutar uno de ellos, se dibuja sobre

    dicha ventana perdindose el primer dibujo. Si se desea representar varias funciones a

    la vez las opciones son:

    - plot(x,y,x,z) donde x el vector de las abscisas, comn para las dos representaciones, y es el de las ordenadas de la primera representacin y z

    las de la segunda.

    - fplot([f1(x),f2(x),...],[xmin,xmax]) donde f1, f2, son las funciones a representar en el intervalo de variacin marcado por xmin y xmax.

    - Mediante el comando: hold on, hold off. Todos los grficos que se ordene dibujar entre los comandos hold on y hold off se representan en la misma

    figura. Si hay una figura abierta se dibujan en sta.

    Ejemplo:

    >> hold on >> x=[-3*pi:1:3*pi];

    >> plot(x,sin(x))

    >> plot(x,tan(x),'r')

    >> hold off - El comando subplot. Una ventana grfica se puede dividir en m particiones

    horizontales y n verticales para representar mxn figuras. Cada una de las

    particiones tendr sus ejes aunque las propiedades sern comunes a todas

    ellas. La sintaxis es: subplot(m,n,i), donde m y n son el nmero de subdivisiones e i la subdivisin activa. Por ejemplo:

    >> x=0:0.1:2*pi;

    >> y=sin(x);z=cos(x);t=exp(-x);v=x^2;

    >> subplot(2,2,1), plot(x,y)

  • 44

    >> subplot(2,2,2), plot(x,z)

    >> subplot(2,2,3), plot(x,t)

    >> subplot(2,2,4), plot(x,v)

    La ventana grfica sera la de la figura 18

    Figura 18

    2.1. Opciones de dibujo Hemos visto que el comando plot(x,y) dibuja los grficos con unas

    caractersticas predefinidas en el programa, es posible alterarlas a partir de plot(x,y,s) donde s se compone de dos dgitos entre comillas. Uno fija el color de la lnea y otro el

    carcter a usar en el grfico. Por ejemplo:

    >> plot(x,y,'-*g')

    dibuja los puntos unidos con una lnea continua, marcando los puntos con *, y en

    verde.

    Otros tipos de marcadores son: . * x o + (marcan los puntos en el

    grfico).

    Otros tipos de lnea: los puntos se unen con una lnea con las siguientes

    posibilidades de apariencia:

    - (lnea continua)

    - - (lnea formada por trazos discontinuos)

    -. (lnea formada por puntos y trazos)

  • 45

    : (lnea formada por puntos)

    Los colores vienen dados por: y: amarillo, g: verde, m: magenta, b: azul, c: can, w: blanco, r: rojo, k: negro.

    Se puede modificar el grosor de lnea incluyendo la cadena: Linewidth,

    nmero_indicativo_del_grosor. Por ejemplo: plot(x,y,'linewidth',2)

    En general, se puede obtener una excelente descripcin del comando plot y

    otros relacionados con el mediante la ejecucin de help plot:

    PLOT Linear plot.

    PLOT(X,Y) plots vector Y versus vector X. If X or Y is a matrix,

    then the vector is plotted versus the rows or columns of the matrix,

    whichever line up. If X is a scalar and Y is a vector, length(Y)

    disconnected points are plotted.

    PLOT(Y) plots the columns of Y versus their index.

    If Y is complex, PLOT(Y) is equivalent to PLOT(real(Y),imag(Y)).

    In all other uses of PLOT, the imaginary part is ignored.

    Various line types, plot symbols and colors may be obtained with

    PLOT(X,Y,S) where S is a character string made from one element

    from any or all the following 3 columns:

    b blue . point - solid

    g green o circle : dotted

    r red x x-mark -. dashdot

    c cyan + plus -- dashed

    m magenta * star

    y yellow s square

    k black d diamond

    v triangle (down)

    ^ triangle (up)

    < triangle (left)

    > triangle (right) p pentagram

    h hexagram

    For example, PLOT(X,Y,'c+:') plots a cyan dotted line with a plus

    at each data point; PLOT(X,Y,'bd') plots blue diamond at each data

  • 46

    point but does not draw any line.

    PLOT(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,...) combines the plots defined by

    the (X,Y,S) triples, where the X's and Y's are vectors or matrices

    and the S's are strings.

    For example, PLOT(X,Y,'y-',X,Y,'go') plots the data twice, with a

    solid yellow line interpolating green circles at the data points.

    The PLOT command, if no color is specified, makes automatic use of

    the colors specified by the axes ColorOrder property. The default

    ColorOrder is listed in the table above for color systems where the

    default is blue for one line, and for multiple lines, to cycle

    through the first six colors in the table. For monochrome systems,

    PLOT cycles over the axes LineStyleOrder property.

    PLOT returns a column vector of handles to LINE objects, one

    handle per line.

    The X,Y pairs, or X,Y,S triples, can be followed by

    parameter/value pairs to specify additional properties

    of the lines. See also SEMILOGX, SEMILOGY, LOGLOG, PLOTYY, GRID, CLF, CLC, TITLE, XLABEL, YLABEL, AXIS, AXES, HOLD, COLORDEF, LEGEND, SUBPLOT, STEM.

    - Ttulos y etiquetas

    Matlab permite manejar correctamente anotaciones sobre los grficos y los ejes

    mediante la colocacin adecuada de ttulos y etiquetas, rejillas o leyendas. Los

    comandos ms usados son:

    title (texto): aade el texto entre comillas como ttulo del grfico.

    xlabel(texto): aade el texto entre comillas como texto al lado del eje x.

    ylabel(texto): aade el texto entre comillas como texto al lado del eje y.

    legend(texto): sita la leyenda especificada en el texto.

    grid: crea rejillas en los ejes

    gtext(texto): permite situar el texto especificado en el punto que sealemos con el ratn dentro de la ventana de trabajo.

    - Control de ejes

    Tambin aqu Matlab tiene sus opciones por defecto. En muchas ocasiones es

    interesante alterarlas. Ya hemos visto que la variacin en el eje x se elige al fijar las

    coordenadas x de los puntos. Por defecto el programa ajusta la escala de cada uno de

    los ejes de modo que vare entre un mximo y el mnimo valor a representar (es el

  • 47

    modo auto). Para definir otros se utiliza el comando axis cuya sintaxis es: axis ([xmin,xmax,ymin,ymax]). axis(auto) devuelve la escala al valor por defecto.

    Destacar que:

    axis off elimina los ejes del dibujo y axis on los incorpora.

    - Entrada de puntos con el ratn

    Matlab permite introducir las coordenadas de los puntos sobre los que se encuentra el cursor, al pinchar o al pulsar alguna tecla. El comando que lo realiza es

    ginput. Algunas formas de utilizarlo son:

    [x,y]=ginput: lee los puntos cada vez que se pincha o se pulsa alguna tecla. Finaliza al pulsar intro.

    [x,y]=ginput(n): lee las coordenadas de n puntos

    3. La ventana grfica de Matlab.

    La mayora de las opciones de cambio en una grfica presentadas con

    anterioridad, pueden realizarse desde la pantalla de dibujo. Posibilidades que se han

    mejorado en las versiones 6 del programa.

    Resulta muy til inspeccionar cada uno de los mens de esta ventana ejecutar

    las opciones directamente en ella. As, por ejemplo, el men insert permite

    directamente insertar en la figura etiquetas en los ejes, leyendas o ttulo entre otras

    cosas (figura 19).

    En el men edit aparecen entre otros los comandos Figure Properties, axes

    Properties y Current Object Properties, con ellos se abre paso a los editores

    correspondientes donde se nos da la posibilidad de cambiar las opciones de dibujo

    (figura 20).

  • 48

    Figura 19

    Figura 20

    Veamos el editor de ejes, figura 21:

  • 49

    Figura 21

    Las pestaas x,y,z nos permiten actuar sobre cada uno de los ejes, poniendo

    etiqutas (Label), cambiando el color (Color), cambiando los lmites (Limit),...

    Desde la pestaa superior podemos acceder a otros editores como los de linea

    (line). Desde los que se pueden cambiar las opciones correspondientes (figura 22).

    Figura 22

  • 50

    A los mismos editores se llega desde edidt, Current Object Properties, si

    tenemos seleccionado, pinchando primeramente el botn de la flecha de la ventana de

    dibujo, el elemento que se quiere ajustar, bien los ejes o bien una lnea de las que

    componen la grfica.

  • 51

    Prctica 5: Grficos 2D

    1. Representar grficamente los puntos p1=(1,1), p2=(3,2), p3=(0,4), p4=(-3,6) primeramente conectados y luego aislados.

    2. Representar grficamente las siguientes funciones en ventanas diferentes,

    f(x)=sen(x), g(x)=x2+3x en el intervalo [0,2]. 3. Representar la grfica de la funcin f(x)=xsen(x) en el intervalo [0,2], con

    rejilla.

    4. Representar f(x)=sen(x)cos(x) en [0,2], con etiquetas en los ejes, ttulo y en color rojo.

    5. Dibujar el polinomio x2+5x-3 con 200 puntos, en color rojo, con trazo discontinuo, con ttulo y con rejilla.

    6. Representar en [0,6] y en la misma grfica las funciones: a. f(x)=3xex en azul.

    b. g(x)=sen(x+3) en rojo y con trazo discontinuo.

    Poner leyendas.

    7. Representar la funcin f(x)=3sen(x)-sen(3x) en el intervalo [0,2] con 200 puntos, con ttulo y etiquetas en los ejes.

    a. Eliminar los ejes con sus etiquetas y volver a activarlos.

    b. Hacer que el eje de abscisas sea el intervalo [0,3] y el rango de las

    imgenes el intervalo [0,1].

    c. Volver a dibujarla como estaba.

    d. Representarla con la misma escala en ambos ejes.

    8. Representar en la misma grfica pero en distintas ventanas las siguientes funciones: x, x2, x3, x4, x5, x6. Las pares en color rojo y con rejilla, las impares en

    azul y sin rejilla.

    9. Resolver grficamente la ecuacin 02.02

    )( = xsenx en el intervalo

    4

    ,0 . Para

    ello se aconseja seguir los siguientes pasos:

    a. Dibujar la grfica de la funcin f(x)=2

    )(xsenx en el intervalo dado.

    b. Dibujar la recta y=0.02 en color rojo en el mismo intervalo y en la misma

    ventana grfica.

    c. Poner nombre (x0,y0) al punto de corte con el comando gtext.

    d. Determinar grficamente el punto de corte (x0,y0) de ambas curvas.

  • 52

    e. Poner leyendas, etiquetas a los ejes y un ttulo que indique cul es el

    punto de corte solucin de la ecuacin.

    10. Representar la funcin xsenx1 en el intervalo [-1,1] y utilizar el zoom para

    observar lo que sucede en las cercanas de (0,0).

    11. Representar la curva de ecuaciones paramtricas

    ==

    )2()3(tsenytsenx

  • 53

    Tema 6: Introduccin a los grficos en 3 dimensiones

    1. Introduccin Matlab est preparado para realizar diversos tipos de grficos en tres

    dimensiones. Ya se ha comentado que por las caractersticas del programa, estos

    grficos al igual que los de dos dimensiones, estn orientados a la representacin de

    vectores. Esto puede causar un poco de dificultad al principio y habr que preparar los

    elementos a representar previamente.

    Se pueden realizar grficos 3D tanto de lneas como de mallas o superficies.

    Para ello los pasos a seguir sern siempre los mismos:

    - Preparar los datos.

    - Usar la funcin grfica 3D adecuada.

    - Retocar las propiedades del dibujo a nuestro gusto.

    Destacar que la gran mayora de los elementos estudiados para grficos 2D

    tienen su correspondiente aplicacin para 3D.

    2. Funciones bsicas para las grficas 3D La primera frmula de grficos en tres dimensiones es la funcin plot3 que

    resulta anlogo al comando plot en grficos bidimensionales. Dibuja puntos cuyas

    coordenadas estn contenidas en tres vectores x,y,z. Su sintaxis puede ser:

    plot3(x,y,z). Como iremos viendo, a este comando de le pueden aadir opciones de dibujo en la misma lnea que se present para el comando plot en el caso 2D.

    Ejemplo:

    >> x=[1,2,3]; y=[-1,4,7]; z=[0,-3,5];

    >> plot3(x,y,z,*)

  • 54

    Veremos con detalle como se pueden dibujar funciones de dos variables,

    z=f(x,y). Lo primero que debemos pesar es que por las caractersticas propias de

    Matlab, lo primero es crear el conjunto de puntos (x,y,z) de la grfica de la funcin, es

    decir, con z=f(x,y), que se desean representar. Para ello es necesario considerar los

    vectores x e y que contienen las coordenadas en una y otra direccin de la retcula

    (grid) sobre la que se dibujar la funcin. A partir de ellos se genera la malla donde

    estarn todos los valores (x,y) sobre los que se evaluar a funcin para generar los

    puntos tridimensionales a representar. As, creamos dos matrices X e Y a partir del

    comando meshgrid(x,y) que representan las coordenadas x e y de los puntos a representar:

    >>x=[1,2,3,4]; y=[-1,0,1,2];

    >> [X,Y]=meshgrid(x,y)

    X =

    1 2 3 4

    1 2 3 4

    1 2 3 4

    1 2 3 4

    Y =

    -1 -1 -1 -1

    0 0 0 0

    1 1 1 1

    2 2 2 2

    Como vemos en este caso hemos generado una malla formada por 16 puntos

    de coordenadas (1,-1),(1,0),(1,1),(1,2),(2,-1),...(2,2),.......,(4,-1),...(4,2). Es bueno

    sealar que por el proceso indicado debe tenerse cuidado con las longitudes de los

    vectores x e y ya que al generar la malla, el nmero de puntos con los que se va a

    trabajar aumenta grandemente.

    Slo queda evaluar la funcin f sobre esta malla, es decir Z=f(X,Y) y

    representar los valores. Para ello se utilizan los comandos:

    - Mesh(Z) que dibuja en perspectiva la funcin en base a una retcula de lneas de colores con eliminacin de lneas ocultas (figura 23).

    - Surf(Z) dibuja la superficie faceteada tambin con eliminacin de lneas ocultas (figura 24).

    Destacar que existen otras formas ms generales de estas funciones para la

    representacin paramtrica: mesh(x,y,z) dibuja una superficie de puntos (X(i,j),Y(i,j),

    Z(i,j)).

  • 55

    Figura 23

    Figura 24

  • 56

    2.1. Opciones de dibujo Hemos visto que las funciones anteriores dibujan los grficos con unas ciertas

    caractersticas. De forma muy parecida a lo explicado para el caso bidimensional,

    podremos alterar estas caractersticas a nuestro gusto. Veremos como hacer algunos

    cambios desde la lnea de comandos pero resulta ms cmodo trabajar en la propia

    ventana de dibujo. Como la mayora de las opciones de cambio en una grfica,

    pueden realizarse desde la pantalla de dibujo, vuelve a resultar de gran utilidad

    inspeccionar cada uno de los mens de esta ventana y ejecutar las opciones

    directamente en ella.

    - Ejes, puntos de vista, lneas ocultas La localizacin del punto de vista o la direccin de observacin de la figura

    representada puede alterarse mediante el comando view de sintaxis: view(azimut, elevacin). Donde azimut es el ngulo de rotacin en un plano horizontal medido sobre el eje z a partir de un eje x en sentido antihorario, y elevacin es el ngulo de

    elevacin respecto al plano xy. Se miden en grados.

    De la misma forma se altera desde el men view, camera/toolbar.

    Para el control de los ejes se utiliza el comando axis que ya se present en 2D,

    en su versin tridimensional. Tambin se accede al tratamiento de los ejes desde el

    mun edit/axes properties.

    - El color En cuanto a la utilizacin del color, un mapa de colores en Matlab se defina

    mediante una matriz de tres columnas con valores entre 0 y 1, que representan la

    intensidad de rojo, verde o azul (R,G,B). El comando colormap acta sobre la figura activa cambiando sus colores. No obstante, existen mapas de colores ya predefinidos

    en el programa. Pueden elegirse por ejemplo, desde el la pestaa colormap en el

    editor de propiedades de la superficie.

    3. Lneas de contorno Para los grficos en tres dimensiones es de gran utilidad la representacin de

    curvas de contorno o de nivel. Algo que puede verse como otra forma de

    representacin, figura 25. Para ello Matlab cuenta con el comando contour. Puede

    usarse con diferentes sintaxis, por ejemplo:

    - contour(Z,n), n representa el nmero de lneas de nivel. Si no se pone se utiliza un nmero por defecto.

  • 57

    - contour(Z,v), donde v es un vector con los valores de las curvas de nivel a dibujar.

    Figura 25

  • 58

    Prctica 6: Grficos 3D

    1. Representar grficamente los puntos siguientes: p1=(1,1,1), p2=(3,2.0), p3=(0,4,2), p4=(-3,6,8) primeramente conectados y luego aislados.

    2. Representar las funciones f(x,y)=sen(x)cos(y) en el intervalo [0,2]x[0,2]. Poner ttulo al dibujo y etiquetas en los ejes.

    a. Realizarlo con el comando mesh.

    b. Representarlo con el comando surf.

    c. Realizarlo de forma seguida primero con mesh y luego con surf para

    visualizar las diferencias. Utilizar el comando pause.

    3. Representar la grfica anterior junto con la de g(x,y)=ycos(x) en el intervalo

    [0,2]x[0,2] pero en distintas ventanas. 4. Representar en la misma figura y sobre los mismos ejes la funcin

    22 yx + enfocada desde distintos puntos de vista. 5. Representar grficamente la funcin f(x,y)=x2-y2 en el cuadrado [-2,2]x[-2,2].

    a. Representar en la misma ventana el plano tangente a la superficie en el

    origen de coordenadas.

    b. Visualizarla desde distintos puntos de vista.

    c. Cambiar el color.

    d. Utilizar el zoom para visualizar ciertas zonas.

    6. Representar f(x,y)=sen(x+y2) en [-2,2]x[-2,2]. Poner rejilla y volverla a quitar. a. Representar algunas curvas de nivel.

    b. Representar las curvas a alturas 0.2,-0.1,0,0.1,0.2,0.3.

    c. Representar en la misma ventana grfica la superficie y las curvas de

    nivel

    7. Dibujar una esfera de radio 1 con 30 puntos. Usar el comando sphere(n). 8. Dibujar un cuadrado de vrtices (1,0),(2,1),(1,2),(0,1) con el interior del mismo

    en verde. En el mismo dibujo representar un segmento de extremos (2,1) y

    (0,1) en color azul. Comando fill(x,y,color).

    9. Dibujar el tringulo de vrtices (0,0,0), (1,2,3), (3,5,4) con el interior en rojo. Comando fill3

    10. Representar la hlice

    =+=+=

    ttztsentyttx

    4)()(21)(

    )cos(1)( t[0,4] y modificar algunas de sus

    caractersticas grficas, grosor, etiquetas, etc.

  • 59

    Tema 7: Programacin con Matlab

    1. Introduccin Matlab puede utilizarse como un lenguaje de programacin que incluye todos

    los elementos necesarios. Aade la gran ventaja de poder incorporar a los programas

    propios del usuario todas las aplicaciones que ya tiene implementadas, lo cual facilita y

    simplifica en muchos casos la programacin. Tambin ser de gran utilidad tener en

    cuenta la estructura vectorial y matricial del programa.

    Como ya hemos adelantado, los programas en Matlab suelen escribirse en los

    ficheros .m (M-ficheros). Lo normal es que sea en ficheros Scrips que resultan los ms

    sencillos. A veces, no tienen argumentos de entrada ni salida y estn formados por un

    conjunto de instrucciones que se ejecutan secuencialmente. Por ejemplo, el fichero de

    la figura 26 representa una curva cuando se escribe su nombre, en este caso pinta,

    en la lnea de comandos y se pulsa intro.

    Figura 26

  • 60

    Se puede decir que este ya es un programa creado en Matlab.

    La estructura general de un programa MATLAB es la siguiente:

    1) Comentarios: inicialmente, pueden aparecer lneas comentadas en las que

    se da un ttulo al programa y se realiza una breve descripcin del mismo. Esta

    parte es opcional, pero es til introducirla ya que se nos permite acceder

    directamente desde la ventana de comandos a la informacin comentada

    mediante la utilizacin del comando help, en la forma:

    >> help nombre del programa

    2) Entrada de datos si se requiere: los datos necesarios para la resolucin del

    problema deben suministrarse al programa mediante la lectura de sus valores

    por teclado o desde un fichero de datos.

    3) Algoritmo: desarrollo de un procedimiento que permite obtener la solucin

    del problema en funcin de los datos de entrada.

    4) Salida de datos: los datos obtenidos como solucin del algoritmo se deben

    ofrecer al usuario mediante escritura en pantalla o en un fichero de datos.

    2. Entrada y salida de datos

    Existe un comando para introducir informacin en un programa cuando

    estamos en modo de ejecucin. Este comando es: v=input(Cadena de Caracteres)

    input realiza dos tareas:

    1) Imprime en pantalla la cadena de caracteres que lleva como argumento.

    2) Los datos que el usuario teclea en respuesta al letrero, los introduce en la

    variable v.

    Para que un programa en modo de ejecucin pueda escribir letreros, avisos,

    etc. por pantalla, se utiliza el comando: disp(Cadena de Caracteres) que escribe la cadena de caracteres que tiene como argumento en pantalla.

    Para escribir el valor de una variable, se utiliza el comando: disp(v) que muestra en pantalla el valor de la variable v.

    Para escritura de texto y/o datos en pantalla, se puede utilizar la funcin:

    sprintf(formato, variables).

    Ejemplos:

    >> n=input(teclea el nmero de elementos)

  • 61

    >>disp(este valor no es adecuado)

    3. Operadores Ya hemos estudiado operadores de tipo aritmtico. En este momento puede

    ser de utilidad conocer otros tipos de operadores:

    Operadores relacionales:

    < Menor = Mayor o igual > Mayor == Igualdad

    ~= Desigualdad find(A) Devuelve los ndices de los elementos no nulos

    find(A condicin) Devuelve los ndices de los elementos de A que cumplen la condicin

    Operadores lgicos ~A Negacin lgica A & B Conjuncin lgica (and) A | B Disyuncin lgica (or) xor(A,B) or exclusivo, vale 1 si A o B, pero no ambos, valen 1

    Todos estos operadores actan elemento a elemento en matrices y vectores.

    Las dimensiones y nmero de elementos de las tablas deben coincidir.

    Ejemplo:

    >> A=1:9; P=(A>2)&(A

  • 62

    Sentencia for: Permite ejecutar de forma repetitiva un comando o grupo de comandos. La

    forma general de un bucle for es:

    for variable=expresin

    comandos

    end

    Por ejemplo:

    for i=1:3;v(i)=1;end;v

    1 1 1

    >>

    As, un bucle for siempre empieza por la sentencia for y termina con la end. En

    su interior incluye todo un conjunto de comandos que se separan por comas. En

    algunos casos es bueno poner puntos y comas para evitar repeticiones en las salidas.

    Por supuesto puede utilizarse en ficheros .m (figura 27).

    Figura 27

    Sentencia if:

  • 63

    Mediante esta estructura se pueden ejecutar secuencias de comandos si se

    cumplen determinadas condiciones. Su sintaxis es:

    If condicin

    comandos

    end

    De forma ms general:

    If condicin

    comandos 1

    else

    comandos 2

    end

    que ejecuta comandos 1 si la condicin 1 es cierta y comandos 2 si es falsa.

    Como en el caso de for, se pueden anidar sentencias if:

    If condicin 1

    comandos 1

    elseif condicin 2

    comandos 2

    elseif condicin 3

    comandos 3

    ...

    else

    end

    Mediante el siguiente ejemplo se imprime en pantalla una frase, de tres posibles,

    segn sea el valor de la variable n:

    N=input(introduce un nmero natural) If n=0,

    disp(n es cero)

    elseif rem(n,2)==0

    disp(n es par)

    else

    disp (n es impar)

    end

    Sentencia while:

  • 64

    Tambin dispone de la sentencia haz mientras que ejecuta un bucle mientras una condicin sea cierta. Su sintaxis es:

    while condicin

    comandos

    end

    en el interior (comandos) se incluyen todo tipo de comandos que se separan por

    comas y que se ejecutan mientras la condicin sea cierta.

    Como ejemplo calcularemos el mayor nmero factorial que no esceda a 10100:

    n=1;

    while prod(1:n)

  • 65

    Prctica 7: Programacin con Matlab

    1. Se pide:

    a) Definir la funcin

    >>x=0:.1:1

    >>y=[x;exp(x)];

    >>fid=fopen(resultado.txt,w);

    >> fprintf(fid,%6.2f %12.8f \n, y);

    Este programa escribira en el fichero resultado.txt los siguientes valores:

    0.00 1.00000000

    0.10 1.10517092

    0.20 1.22140276

    0.30 1.34985881

  • 70

    ........

    1.00 2.71828183

    Comando fscanf La lectura de datos a partir de un fichero ASCII se realiza mediante los

    comandos:

    [A,cont]=fscanf(fid,formato) que lee datos con el formato especificado del fichero abierto con el identificador fid, en un vector columna de nombre A. cont

    es el nmero de datos ledos.

    [A,cont]=fscanf(fid,formato,size) que lee datos con el formato especificado del fichero abierto con el identificador fid y los escribe en la matriz A de tamao

    size. cont es el nmero de datos ledos.

    Ejemplo:

    Se supone que en la carpeta de trabajo de MATLAB: work, se encuentra un archivo

    de nombre datos.txt, cuyo contenido es:

    1 2 3 4 5

    6 7 8 9 10

    >>fid=fopen(datos.txt,r)

    >>[A,cont]=fscanf(fid,%d)

    La salida es el vector columna de contenido:1 2 3 4 5 6 7 8 9 10 y cont=10.

    Otra posibilidad:

    >>[A,cont]=fscanf(fid,%d,[2,5])

    A=

    1 3 5 7 9

    2 4 6 8 10

    cont=10

    Nota: Si realizamos estas operaciones seguidas tendremos problemas en la segunda

    debido a que el fichero ha sido anteriormente ledo y es necesario rebobinarlo si se

    quiere leer de nuevo. Entonces se utiliza

    >>frewind(fid)

    Otras posibilidades:

    >>[A,cont]=fscanf(fid,%d,[3,3])

    A=

  • 71

    1 4 7

    2 5 8

    3 6 9

    cont=9

    >>[A,cont]=fscanf(fid,%d,[4,4])

    A=

    1 5 9

    2 6 10

    3 7 0

    4 8 0

    cont=10

    >>[A,cont]=fscanf(fid,%d,[4,inf])

    >> %se est fijando como nmero de columnas de la matriz el valor mnimo que

    permita la lectura de todos los datos del fichero. La salida es la misma que en el caso

    anterior.

    3. Trabajando con Excel

    Matlab permite una muy buena conexin con este programa. Ya hemos

    comentado que si los datos son adecuados, la opcin copiar en Excel y pegar en

    Matlab entre corchetes y dando un nombre a la variable creada funciona directamente.

    Esto nos obliga a que los nmeros estn definidos en Excel como en Matlab, por

    ejemplo, los decimales con puntos y no con comas.

    En general, por ejemplo si en el fichero existen cabeceras, lo apropiado es

    importar el fichero segn lo explicado en el punto 2.1. Se crean entonces variables del

    tipo: data (con los valores numricos), colheadest (con las cabeceras) y textdata (con

    el texto de las cabeceras). No existe as ninguna incompatibilidad de formatos.

    Si se dispone de la toolbox exlink la conexin con este programa es total y

    directa:

    Elegir en Excel del men Herramientas/Complementos/examinar: (Matlab-

    toolbox-excelink). Aparece entonces en excel una barra de herramientas con: put

    matriz, get matriz y evaluate.

    - Excel-Matlab: Se crean unos valores en Excel y se selecciona put matriz.

    Se abre Matlab y pregunta por el nombre para esa matriz. Se crea as una

    nueva variable en el Workspace sin ningn problema de compatibilidad.

  • 72

    - Matlab.Excel: Se utiliza get matriz. Esto abre el Workspace de Matlab y

    desde all se exporta la matriz.

  • 73

    Prctica 8: Tratamiento de datos. Ficheros

    1. Crear un fichero de texto con el block de notas con los datos: 1,2,3,4,5,6,7,8,9,10. Importarlo desde Matlab y crear un vector con su

    contenido.

    2. Sea el fichero datos.txt que contiene la siguiente informacin:

    7 5 2 1 9 3 4 5 7 8 4 Almacenar estos datos en una matriz A de 4 filas y 3 columnas.

    3. Crear un fichero de Excel con las cantidades compradas de varios productos y su importe por unidad. Cargarlo en Matlab y calcular all el coste total de la

    compra.

  • 74

    Tema 9: Otros temas de aplicacin

    1. Introduccin Existen muchos elementos interesantes y aplicaciones del Matlab que no se

    han comentado a lo largo de los temas. Se invita al lector a que investigue sobre ellos

    segn las lneas que sean ms afines a su entorno de trabajo o estudio. No obstante,

    se quiere terminar este texto con un captulo dedicado a introducir una variedad de

    conceptos ms o menos usuales que no se han incluido anteriormente.

    2. Polinomios El programa dispone de comandos especficos para realizar las operaciones

    ms comunes con polinomios, tal es el caso de bsqueda de races, evaluacin en

    determinados valores, diferenciacin, interpolacin y ajuste.

    Destacar que los polinomios en Matlab se introducen a partir de vectores cuyos

    elementos son los coeficientes del mismo. Si alguno no aparece se introduce como 0.

    As, x3+3x2-5 ser [1,3,0,-5].

    Los comandos son:

    - polyval(u,x), evala el polinomio de coeficientes incluidos en el vector u en el valor indicado en x.

    - conv(u,v), da los coeficientes del polinomio resultado de multiplicar los polinomios de coeficientes incluidos en los vectores u y v.

    - [p,q]=deconv(u,v), devuelve los polinomios cociente y resto de la divisin entre los polinomios u y v.

    - roots(u), calcula las races del polinomio u - polyder(u), nos da el polinomio resultado de derivar u. - polyfit(x,y,n), polinomio de grado n que ajusta los puntos (x,y) en el sentido

    mnimos cuadrados.

  • 75

    - poly(v), crea un polinomio cuyas races son las indicadas en el vector v.

    3. Ajuste de datos. Interpolacin Adems de la bsqueda de un polinomio interpolador, Matlab permite la

    interpolacin a travs de un gran nmero de tcnicas. Destacaremos algunos de los

    comandos que realizan este tipo de aplicaciones:

    - yi=interp1(x,y,xi), da como resultado un vector yi tal que (xi,yi) es el conjunto total de puntos hallados por interpolacin unidimensional del

    conjunto de puntos (x,y).

    - yi=interp1(x,y,xi,mtodo), realiza interpolacin mediante el mtodo elegido (nearlest, lineal, cubic, v5cubic, spline o pchip).

    - zi=interp2(x,y,z,xi,yi), da como resultado un vector zi tal que (xi,yi,zi) es el conjunto total de puntos hallados por interpolacin bidimensional del

    conjunto de puntos (x,y,z).

    - yi=spline(x,y,xi), da como resultado un vector yi tal que (xi,yi) es el conjunto total de puntos hallados por interpolacin cbica spline del

    conjunto de puntos (x,y).

    4. Matrices dispersas Existen trabajos, especialmente en ingeniera, donde es necesario utilizar

    matrices de gran tamao pero con un nmero importante de ceros en su interior

    (matrices dispersas). Operar con este tipo de matrices a travs de mtodos

    convencionales puede implicar tiempos muy grandes para el clculo. Matlab dispone

    de funciones para trabajar con estas matrices dispersas que ahorra tiempos de

    ejecucin.

    El programa almacena estas matrices dispersas guardando en memoria

    solamente los elementos no nulos junto con la posicin que ocupan en la matriz. As,

    utiliza tres elementos, los valores de las filas de elementos no nulos, los valores de las

    columnas de estos elementos y el valor que tienen.

    Ejemplo: La matriz

    =

    0002900003200001

    A se introducira como:

    >> A=sparse([1,2,2,3,4],[1,2,3,4,1],[1,2,-3,9,2])

    A =

    (1,1) 1

    (4,1) 2

  • 76

    (2,2) 2

    (2,3) -3

    (3,4) 9

    Para esto puede ser de utilidad el comando find, [i,j,v]=find(A) tiene como salida

    el vector de las filas y el de las columnas de los elementos no nulos de la matriz A as

    como el valor de dichos elementos.

    De igual forma, el programa permite convertir una matriz llena en dispersa a

    travs de este comando:

    >> B=[1 2 0 0 0 0;0,9,0,0,8,0;0,0,0,-2,0,1]

    B =

    1 2 0 0 0 0

    0 9 0 0 8 0

    0 0 0 -2 0 1

    >> S=sparse(B)

    S =

    (1,1) 1

    (1,2) 2

    (2,2) 9

    (3,4) -2

    (2,5) 8

    (3,6) 1

    El comando full realiza la operacin contraria, el llenado de la matriz dispersa

    >>full(S)

    ans =

    1 2 0 0 0 0

    0 9 0 0 8 0

    0 0 0 -2 0 1

    En el men de ayuda matlab\sparfun - Sparse matrices se encuentran los

    comandos para trabajar con este tipo de matrices. El criterio general para trabajar con

    matrices dispersas en Matlab es que casi todas las operaciones matriciales estndar

    funcionan sobre ellas al igual que lo hacen sobre las llenas.

    5. lgebra lineal Se destacan algunos temas relacionados con lgebra que pueden ser de

    inters y que se realizan con el programa a travs de comandos especficos.

  • 77

    Valores propios: El trabajo con valores y vectores propios es esencial en numerosas disciplinas.

    Matlab permite trabajar con esta materia con comandos entre los que destacamos:

    eig(A): Halla los autovalores de la matriz cuadrada A. [P,D]=eig(A): Determina la matriz diagonal D de los autovalores de A y la matriz P de columnas los autovectores correspondientes de forma que AP=PD.

    Jordan(A): Halla la matriz cannica de Jordan de la matriz A. [P,J]= Jordan(A): Halla la matriz cannica de Jordan de la matriz A y la matriz de paso P de forma que P-1AP=J.

    poly(A): Devuelve el polinomio caracterstico de la matriz A

    Descomposicin de matrices: Matlab trabaja con mtodos de descomposicin matricial como el LU,

    Cholesky, qr,...

    [L,U]=lu(A): Descompone la matriz A en el producto A=LU, siendo L una matriz triangular inferior y U una superior.

    [L,U,P]=lu(A): Da una matriz triangular inferior L, una superior U y una de permutacin P de forma que PA=LU.

    R=chol(A): Devuelve la matriz triangular superior R tal que RR=A siempre que A sea definida positiva. En caso contrario devuelve un error.

    [Q,R]=qr(A): Devuelve la matriz triangular superior R de igual dimensin que A y la matriz ortogonal Q de forma que A=QR.(Puede aplicarse a matrices no

    cuadradas)

    [Q,R,E]=qr(A): devuelve la matriz triangular superior R de igual dimensin que A, la matriz ortogonal Q y la matriz de permutaciones E de forma que de forma

    que AE=QR.

    Resolucin de ecuaciones: Matlab permite resolver ecuaciones. Algunos de los comandos para realizarlo

    son:

    solve(ecuacin,x): Resuelve la ecuacin en la variable x. solve(ecuacin1,eciacin2,...ecuacinn,x1,x2,...xn): Resuelve el sistema de ecuacin en las variables x1,...xn.

    x=fzero(funcin,x0): Halla un cero de la funcin ceca de x0.

  • 78

    [x,feval]=fzero(funcin,x0): Da tambin el valor de f en x.

    Nota: Existen numerosos comandos que intentan resolver ecuaciones y sistemas

    segn diversos mtodos numricos.

  • 79

    Prctica 9: Otros temas de aplicacin

    1. Determinar las races del polinomio x3-6x2-72x-27, evaluarlo en alguna de ellas para verificar que lo son.

    2. Introducir el polinomio 2x3+4x2+1, se pide: a. Calcular sus races.

    b. Evaluarlo en x=3.

    c. Crear un polinomio de races 1,2,5.

    d. Multiplicar ambos polinomios.

    3. Determinar el cociente y el resto de dividir los polinomios 5x5+3x3-x2+x-1 y 2x2-3x+2. Derivar el primero.

    4. Construir una funcin que sume polinomios de cualquier grado y utilizarla para sumar los polinomios del ejercicio anterior.

    5. Determinar el polinomio interpolador de segundo grado que pasa por los puntos (-1,4), (0,2), (1,6). Dibujar los puntos y el polinomio en el intervalo [-2,2].

    6. Determinar el polinomio de ajuste de grado 1 en el sentido mnimos cuadrados para los puntos (1,2), (-2,7), (-1,6). Dibuja los puntos y el polinomio en un

    intervalo adecuado.

    7. Los directores de una empresa se renen para analizar la situacin financiera de la misma. Al estudiar la tabla:

    AO Beneficios

    1 1

    2 4

    3 8

    4 15

    5 25

    prevn que la curva que mejor representa los beneficios durante los prximos

    aos es un polinomio de segundo grado. Determinar los beneficios que

    esperan obtener el prximo ao.

    8. Hallar y representar 30 puntos de interpolacin (x,y) de la funcin sen(x) para valores de x igualmente espaciados entre 0 y 10.

    9. Repetir el problema 8 para interpolacin spline y comparar las grficas obtenidas.

    10. Se considera un conjunto de temperaturas medidas sobre las cabezas de los cilindros de un motor para utilizar en coches de carreras. Los tiempos de

  • 80

    funcionamiento del motor en segundos y las temperaturas en grados

    Fahrenheit son las siguientes:

    Tiempo 0 1 2 3 4 5

    Temperatura 0 20 60 68 77 110

    Realizar una regresin lineal que ajuste la temperatura en funcin del tiempo.

    Repetirlo para regresiones polinmicas de grados 2, 3 y 4, representando los

    resultados.

    11. Definir las siguientes matrices de forma que slo se guarden los elementos no nulos:

    =