curso completo mathlab

Upload: nico

Post on 30-May-2018

251 views

Category:

Documents


1 download

TRANSCRIPT

  • 8/14/2019 Curso Completo Mathlab

    1/91

    Bases de MatlabCon aplicaciones a las ciencias e ingeniera

    Alejandro Hayes

  • 8/14/2019 Curso Completo Mathlab

    2/91

    Bases de Matlab Alejandro Hayes

    Pgina 1 de 90

    ndice

    1. Introduccin.....................................................................................................................................31.1 El programa MATLAB...........................................................................................................................31.2 Constitucin de MATLAB.......................................................................................................................3

    1.3 Simulink..............................................................................................................................................42. Primeros pasos con MATLAB...........................................................................................................42.1 Conociendo la versin..........................................................................................................................42.2 Tipos de archivos con los que trabaja MATLAB......................................................................................52.3 Variables en el espacio de trabajo.........................................................................................................62.4 El reloj................................................................................................................................................62.5 Ruta de bsqueda...............................................................................................................................72.6 Diario.................................................................................................................................................82.7 Formato de exhibicin de nmeros.......................................................................................................82.8 Caracteres especiales y operadores......................................................................................................92.9 Operaciones bsicas...........................................................................................................................93. Escalares, vectores y matr ices.......................................................................................................12

    3.1 Comandos para el manejo de matrices.................................................................................................123.2 Algunas matrices especiales.................................................................................................................193.3 Aplicaciones a la resolucin de sistemas de ecuaciones lineales..............................................................193.4 Una aplicacin a la ingeniera...............................................................................................................203.5 Comentarios adicionales sobre escalares y vectores...............................................................................243.6 Polinomios y vectores..........................................................................................................................264. Funciones escalares........................................................................................................................294.1 Graficas de funciones en 2 D...............................................................................................................304.1.1Graficas de funciones escalares dadas en forma explicita.....................................................................314.1.2.Graficas de curvas dadas en coordenadas polares y parametricas........................................................404.2 Aplicaciones a la ingeniera.................................................................................................................425. Introduccin a la programacin....................................................................................................475.1.Estructuras elementales...475.2.Archivos-M Script.............495.3.Archivos-M de funcin........................................................................................................................496. Nmeros Complejos.......................................................................................................................547. Funciones Matemticas Reales de varias variables reales o campos escalares.........................578. Graficas Tridimensi onales(2-D )....................................................................................................589. Funciones Matemticas Complejas de Variable Compleja..........................................................629.1. Una Aplicacin a la ingeniera............................................................................................................6510. Diferenciacin e integracin con Matlab......................................................................................6710.1. Derivacin e integracin de funciones escalares y campos escalares...................................................6710.2. Campos vectoriales, generalizacin de los conceptos vistos................................................................7010.3.Una aplicacin a la ingeniera............................................................................................................7110.4. Otras funciones para manejo de graficas..........................................................................................73

    11.Ecuaciones Diferenciales...............................................................................................................7511.1. Ecuaciones diferenciales ordinarias..................................................................................................7511.2. Ecuaciones diferenciales en derivadas parciales................................................................................7612.Manejo de listas y arreglos de datos............................................................................................7712.1. Algunos comandos para manejar datos............................................................................................7712.2.Interpolacin y ajuste de datos........................................................................................................8312.2.1.Interpolacin Polinmica...............................................................................................................8312.2.2.Ajuste de curvas...........................................................................................................................86

  • 8/14/2019 Curso Completo Mathlab

    3/91

    Bases de Matlab Alejandro Hayes

    Pgina 2 de 90

    12.2.2.2.1. Ajuste de curvas por polinomios...............................................................................................8612.2.2.2.2. Ajuste de curvas por funciones no Polinomicas..........................................................................8813. Referencias...................................................................................................................................90

  • 8/14/2019 Curso Completo Mathlab

    4/91

    Bases de Matlab Alejandro Hayes

    Pgina 3 de 90

    Introduccin a Matlab

    1.Introduccin

    En los ltimos aos ha proliferado mucho el calculo computacional ya sea debido a la necesidad del hombrede procesar una cantidad de datos cada vez mayor como al avance del calculo numrico.Aparecen entonces una cantidad importante de programas de calculo simblico y numrico entre los que sedestacan Mathemtica, Maple y Matlab entre muchos otros.Matlab que es quien nos ocupa es un sistema general de software para clculos matemticos y diversasaplicaciones a la ingeniera. Actualmente se utiliza mucho en Investigacin y Anlisis en Ingeniera y en laIndustria ya que sus aplicaciones comprenden la mayora de las reas de ciencia y tecnologa.Las ultimas versiones constan de un potente entorno integrado de calculo numrico y simblico con extensiones

    para la programacin y otros campos especficos de la ingeniera.

    1.1.El Programa Matlab

    El Nombre Matlab proviene de MATrix LABoratory por lo que constituye un programa orientado al calculocon vectores y matrices pero tambin es posible trabajar con escalares o nmeros complejos considerndolocomo un caso particular de matriz.MATLAB es un lenguaje de alto nivel para computacin cientfica. Entre otras cosas integra computacin,visualizacin y programacin en un entorno de fcil utilizacin donde tanto los problemas como las solucionesse expresan en una notacin matemtica familiar. Entre las utilidades que posee pueden mencionarse:Matemtica Computacional , Desarrollo de algoritmos , Modelado y simulacin de prototipos, Anlisis de datos,Graficacin , Animaciones y la Construccin de una interfaz grafica.

    1.2.Constitucin de Matlab

    Son cinco las partes que constituyes esencialmente a Matlab las cuales pasamos a describir:

    El lenguaje Matlab:Es un lenguaje de alto nivel para matrices y vectores con sentencias de control deflujo, funciones y estructuras de datos, entradas y salidas, caractersticas para la programacin orientada aobjetos. Permite crear desde programas pequeos de rpida ejecucin hasta programas mas largos ycomplejos.

    El entorno de trabajo Matlab:Es el conjunto de herramientas con las que se puede trabajar como unusuario o programador de Matlab. Cuenta con facilidades tales como poder manejar las variables en el espaciode trabajo y de importar y exportar datos. Tambin posee herramientas de programacin, desarrollo , ymanipulacin de archivos M (M-files).

    Manejador de Grficos:Es el sistema de graficacin de Matlab. Incluye una serie de comandos de muyalto nivel para de visualizacin de imgenes 2D y 3D , animaciones y presentaciones. Tambin posee comandosde no tan alto nivel que permiten personalizar la presentacin de la figura correspondiente. Tambin permiteque el usuario pueda construirse una Interfaz Grafica de Usuario (GUI ) en la aplicacin de Matlab queCorresponda.

  • 8/14/2019 Curso Completo Mathlab

    5/91

    Bases de Matlab Alejandro Hayes

    Pgina 4 de 90

    La librera de Funciones Matemtica de Matlab:Es una vasta coleccin de algoritmos que va desdelas funciones mas elementales como senos , cosenos etc. a otras mas sofisticadas como las tranformadas deLaplace, FFT y otras.

    La Interface de Aplicacin de Programas de Matlab (API):Es una Librera que permite escribirprogramas en C y Fortran que interacten con Matlab. Incluye la posibilidad de llamar rutinas desde Matlab,

    llamando a Matlab como un motor y para leer y escribir MAT-files.

    1.3.Simulink

    Simulink es un programa de Matlab que consiste en un sistema interactivo para simular Sistemas Dinmicoslineales y no Lineales. Permite modelizar un sistema dibujando los correspondientes diagrames en bloques ymanipularlos dinmicamente. Puede trabajar con sistemas lineales, no lineales , de tiempo continuo , de tiempodiscreto , multivariable entre otros.Pueden agregarse al Simulink los denominados Blocksets que proporcionan libreras adicionales de bloques paraaplicaciones especificas como Comunicaciones , Procesamiento de Seales , Sistemas de Potencia etc.Tambin cuenta con un programa llamado Real-time Workshop que permite generar un cdigo en C desde tu

    diagrama en bloques y correrlo en una variedad de sistemas en tiempo real.

    2.Primeros Pasos con Matlab

    Para introducirnos en el uso de Matlab comenzaremos dando algunos comandos bsicos para conocer nuestroentorno de trabajo. Para eso hagamos doble clic en el icono de Matlab y nos aparecer una ventana decomandos donde debemos comenzar a escribir.

    2.1.Conociendo la Versin :

    Para conocer la versin que estamos usando escribamos la palabra ver y obtendremos la siguiente salida.

    ver--------------------------------------------------MATLAB Version 5.3.0.10183 (R11) on PCWINMATLAB License Number: 134521--------------------------------------------------MATLAB Toolbox Version 5.3 (R11) 15-Jan-1999Symbolic Math Toolbox Version 2.1 (R11) 11-Sep-1998NAG Foundation Toolbox - Numerical ... Version 1.0.3 (R11) 06-Jun-1998Partial Differential Equation Toolbox Version 1.0.3 (R11) 21-Nov-1997Statistics Toolbox Version 2.2 (R11) 24-Jul-1998Signal Processing Toolbox Version 4.2 (R11) 10-Jul-1998Control System Toolbox Version 4.2 (R11) 15-Jul-1998SystemBuild to Simulink Translator Version 2.0 (R11) 10-Aug-1998Stateflow Version 2.0 (R11) 16-Jan-1999Simulink Version 3.0 (R11) 01-Sep-1998MATLAB Tour Version 1.2 (R11) 04-Sep-1998

  • 8/14/2019 Curso Completo Mathlab

    6/91

    Bases de Matlab Alejandro Hayes

    Pgina 5 de 90

    2.2.Tipos de Archivos con los que trabaja Matlab:

    Matlab trabaja con distintos tipos de archivos a saber:

    Archivos M:Son archivos de texto que contienen cdigo de Matlab. El usuario puede crearlos usando los

    mismos comandos que ingresa por lneas de comandos y otras sentencias que veremos oportunamente. Elarchivo se guarda con la extensin .m (Por ejemplo nombre_archivo.m) y podemos llamarlo desde la lnea decomando y lo ejecutamos.

    Archivos MAT:Son archivos que contienen datos binarios que se guardan con extensin .mat y queposteriormente detallaremos.

    Archivos MEX:Son archivos Matlab ejecutables compilado a partir de Fortran o C. Se guardan con laextensin .mex.

    Archivos MDL:Corresponden a modelos hechos con el Simulink que en su oportunidad desarrollaremos endetalle.Si bien la explicacin sobre los tipos de archivos que maneja Matlab fue por dems escueta el objetivo

    de la misma es explicar el comando whatque produce una lista de los archivos M- , MAT- , MEX y MDLpresentes en el directorio de trabajo actual.

    Veamos un ejemplo :

    what

    M-files in the current directory C:\ MATLABR11\ work

    P2P3aceleracion

    amortiguadorcircuitocircuito1circuito2circuito3circuito31circuito4circuito5circuito5Bdvfn

    p5

    MDL-files in the current directory C:\ MATLABR11\ work

    circ circ1 untitled

  • 8/14/2019 Curso Completo Mathlab

    7/91

    Bases de Matlab Alejandro Hayes

    Pgina 6 de 90

    2.3.Variables en el espacio de trabajo:

    Para conocer las variables cargadas en el espacio de trabajo, Matlab cuenta con los respectivos comandoswhoywhos que producen una lista de las variables en el espacio de trabajo actual. Podemos ver un ejemplo:

    a=10; b=897; who

    Your variables are:

    a b

    whosName Size Bytes Class

    a 1x1 8 double arrayb 1x1 8 double array

    Grand total is 2 elements using 16 bytes

    Vemos quewhosolo indica el nombre de las variables mientras quewhos indica ademas de las variables , sutamao y el numero de bytes que ocupa y el formato.

    2.4.El Reloj:

    Para saber la hora actual Matlab cuenta con el comandoclock

    clock

    ans =

    1.0e+003 *

    2.0030 0.0090 0.0010 0.0130 0.0240 0.0569

    El primer numero es un multiplicador y los numeros de la segunda linea tienen el formato:

    [ao , mes , dia , hora , minuto , segundo]

    Podemos mostrar la hora en formato entero

    fix(clock)

    ans =

    2003 9 1 13 40 33

  • 8/14/2019 Curso Completo Mathlab

    8/91

    Bases de Matlab Alejandro Hayes

    Pgina 7 de 90

    2.5.Ruta de Bsqueda :

    El comandopath nos muestra la ruta de bsqueda vigente de Matlab. El comando ruta = path devuelveuna cadena llamada ruta que contiene la ruta.

    path

    MATLABPATH

    C:\MATLABR11\toolbox\matlab\generalC:\MATLABR11\toolbox\matlab\opsC:\MATLABR11\toolbox\matlab\langC:\MATLABR11\toolbox\matlab\elmatC:\MATLABR11\toolbox\matlab\elfunC:\MATLABR11\toolbox\matlab\specfunC:\MATLABR11\toolbox\matlab\matfunC:\MATLABR11\toolbox\matlab\datafun

    C:\MATLABR11\toolbox\matlab\polyfunC:\MATLABR11\toolbox\matlab\funfunC:\MATLABR11\toolbox\matlab\sparfunC:\MATLABR11\toolbox\matlab\graph2dC:\MATLABR11\toolbox\matlab\graph3dC:\MATLABR11\toolbox\matlab\specgraphC:\MATLABR11\toolbox\matlab\graphicsC:\MATLABR11\toolbox\matlab\uitoolsC:\MATLABR11\toolbox\matlab\strfunC:\MATLABR11\toolbox\matlab\iofunC:\MATLABR11\toolbox\matlab\timefunC:\MATLABR11\toolbox\matlab\datatypesC:\MATLABR11\toolbox\matlab\winfunC:\MATLABR11\toolbox\matlab\demosC:\MATLABR11\toolbox\symbolicC:\MATLABR11\toolbox\nag\nagC:\MATLABR11\toolbox\nag\examplesC:\MATLABR11\toolbox\pdeC:\MATLABR11\toolbox\statsC:\MATLABR11\toolbox\signal\signalC:\MATLABR11\toolbox\signal\sigguiC:\MATLABR11\toolbox\signal\sigdemosC:\MATLABR11\toolbox\controlC:\MATLABR11\toolbox\control\ctrlguisC:\MATLABR11\toolbox\control\obsolete

    C:\MATLABR11\toolbox\stateflow\sfdemosC:\MATLABR11\toolbox\sb2slC:\MATLABR11\toolbox\stateflow\stateflowC:\MATLABR11\toolbox\simulink\simulinkC:\MATLABR11\toolbox\simulink\blocksC:\MATLABR11\toolbox\simulink\simdemosC:\MATLABR11\toolbox\simulink\deeC:\MATLABR11\toolbox\tour

  • 8/14/2019 Curso Completo Mathlab

    9/91

    Bases de Matlab Alejandro Hayes

    Pgina 8 de 90

    C:\MATLABR11\workC:\MATLABR11\toolbox\local

    2.6.Diario:

    Si deseamos guardar en algn archivo las entradas por lneas de comando el comandodiary onguarda todo

    lo que se introduce por el teclado as como la mayor parte de lo que se enva a la pantalla, en un archivollamado diary diary off termina la escritura .

    2.7.Formatos de Exhibicin de Nm eros:

    Matlab Cuenta con la posibilidad de definir distintos formatos de exhibicin de nmeros la Tabla 1 muestraalgunos de ellos:

    Formato de Exhibicin de Nmerosformat short (default) Muetra 4 cifras decimales 3.1416format long Muetra 14 cifras decimales 3.14159265358979format bank Muetra 2 cifras decimales 3.14format short e Muetra 4 cifras decimales 1.5225e+008format long e Muetra 15 cifras decimales 1.606938044258990e+060format + +,-, Espacio +

    Tabla 1

    Veamos algunos ejemplos:

    pians =

    3.1416

    format long pi

    an s=

    3.14159265358979

    format bank pi

    ans =

    3.14

    format long e pi

  • 8/14/2019 Curso Completo Mathlab

    10/91

    Bases de Matlab Alejandro Hayes

    Pgina 9 de 90

    ans =

    3.141592653589793e+000

    2.8.Caracteres especiales y Operadores

    A continuacin damos dos tablas con los operadores mas usuales y de mayor uso en Matlab y a continuacinalgunos ejemplos.

    2.9.Operaciones Bs icas

    Las operaciones tales como suma resta multiplicacin y divisin se realizan en forma inmediata con Matlab.Veamos algunos ejemplos:

    Ejemplo 2.1:

    Efectuaremos algunas operaciones bsicas con dos nmeros cualquiera:

    2+3

    ans =

    5

    2-3

    ans =

  • 8/14/2019 Curso Completo Mathlab

    11/91

    Bases de Matlab Alejandro Hayes

    Pgina 10 de 90

    -1

    2*3

    ans =

    6

    2/3

    ans =

    0.6667

    Una de las bondades de Matlab reside en la capacidad para trabajar en distintas plataformas y segn lacapacidad del hardware y del software de las mismas trabajara con mayor o menor precisin. En general Matlabrealiza todas las operaciones con nmeros enteros en forma exacta, independientemente del tamao que tenga

    el resultado.Por ejemplo Matlab cuenta con una funcin que nos permite visualizar el resultado de una operacin con undeterminado numero de cifras exactas el comando es el siguiente:

    vpa operacin numero de cifras exactas

    Ejemplo 2.2:

    Supongamos que queremos calcular 55 elevado a la 100 con 5000 cifras exactas.

    vpa '55^100' 50000ans =

    1087098632489204160950137314865273070456302105194638892992956883912979645653547544259883966430473213086146446611517881273578054555765427802160871806336217559874057769775390625.

    Otras funciones que trae Matlab para trabajar con nmeros enteros se muestran en la tabla 2 seguida de

    algunos ejemplos.

    rem(n,m) Nos da el resto de la divisin entre n y msign(n) Nos da el signo de n: 1 si n>0 y 1 si n

  • 8/14/2019 Curso Completo Mathlab

    12/91

    Bases de Matlab Alejandro Hayes

    Pgina 11 de 90

    gcd(n1,n2) Mximo comn divisor de n1 y n2

    Tabla 4Ejemplo 2.3:

    Veamos algunos ejemplos de utilizacin de las funciones de la Tabla 4:

    rem(25,11)

    ans =

    3

    sign(-8)

    ans =

    -1

    sign(8)

    ans =

    1

    nchoosek(5,3)

    ans =

    10

    max(2,5)

    ans =

    5

    min(2,5)

    ans =

    2

    gcd(2,5)

    ans =

    1

    lcm(2,5)

    ans =

  • 8/14/2019 Curso Completo Mathlab

    13/91

    Bases de Matlab Alejandro Hayes

    Pgina 12 de 90

    10

    Matlab cuenta con muchos otros comandos para operaciones bsicas ac hemos presentado algunos y quedacomo deber para el lector indagar sobre otros comandos no explicados en esta seccin.

    3.Escalares, Vectores y Matrices

    Es muy comn en Ingeniera que Aparezcan problemas que involucren matrices en su resolucin, y siendo quelos mtodos matriciales para distintos tipos de problemas en Ingeniera y ciencias han proliferado mucho esimportante que comencemos el curso explicando el manejo de matrices que tiene Matlab ya que es la base parala implementacin de casi cualquier aplicacin.El razonamiento ser valido para escalares y para vectores ya que un escalar puede verse como una matriz de1x1 mientras que un vector puede verse como una matriz de 1x n. Sobre el final de esta seccin haremosalgunos comentarios sobre vectores y escalares como casos particulares de matrices.Matlab cuenta con una serie de comandos para el manejo de matrices algunos de los cuales se indican en latabla 1.

    3.1.Comandos para el manejo de matrices:Funciones Principales Para Trabajar con Matrices

    A + B Suma de las matrices A y BA B Diferencia de las matrices A y B(A menos

    B)C *M Producto escalar c por la matriz M

    A * B Producto de las matrices A y B(A por B)A^p Matriz A elevada a la potencia escalar pp^A Escalar elevado a la matriz Aexpm(A) eAcalculada a travs de autovalores

    expm1(A) eA

    calculada a travs de aproximantes de Padexpm2(A) eAcalculada a travs de series de Taylorexpm3(A) eAcalculada a travs de la condicin de la

    matriz de autovectoreslogm(A) Logaritmo neperiano de la matriz Asqrtm(A) Raz cuadrada de la matriz cuadrada Afunm(A,funcion) Aplica la funcin a la matriz cuadrada Atraspose(A) o A Matriz traspuesta de Ainv(A) Matriz inversa de la matriz cuadrada A(A-1)det(A) Determinante de la matriz cuadradarank(A) Rango de la matriz A

    trace (A) Suma de los elementos de la diagonalsvd(A) Da el vector V de los valores singulares de A.Los valores singulares de A son las racescuadradas de los autovalores de la matrizsimtrica AA

    [U,S,V]=svd(A) Da la matriz diagonal S de valores singulares deA(ordenados de mayor a menor), y las matricesU y V tales que A=U*S*V

    cond(A) Da la condicin de la matriz A(cociente entre elmayor y el menor valor singular de A)

    rcond(A) Reciproco de la condicin de la matriz A

  • 8/14/2019 Curso Completo Mathlab

    14/91

    Bases de Matlab Alejandro Hayes

    Pgina 13 de 90

    norm(A) Norma de A(mayor valor singular de la matrizA)

    norm(A) 1-norma de A(mayor suma de las columnas deA)

    norm(A,inf) Norma infinita de A(mayor suma de las filas deA)

    norm(A,fro) F-norma de A, definida porsqrt(sum(diag(AA)))

    Z=null(A) Da una base ortonormal del ncleo deA(ZZ=I). El numero de columnas de Z es lanulidad de A

    Q=orth(A) Da una base ortonormal para el rango deA(QQ=I). Las columnas de Q generan elmismo espacio que las columnas de Q, y elnumero de columnas es el rango de A

    subspace(A,B) Da el ngulo entre los subespacios

    especificados por las columnas de A y de B. SiA y B son vectores, da el ngulo formado porambos

    rref.(A) Da la matriz reducida escalonada por filas de A.El numero de filas no nulas de ref(A) es elrango de la matriz A.

    eig(A) Calcula los autovalores de la matriz cuadrada A[V,D]=eig(A) Calcula la matriz diagonal D de autovalores de

    A y una matriz V cuyas columnas son losautovectores correspondientes, cumplindoseque A*V = V*D

    eig(A,B) Da un vector que contiene los autovaloresgeneralizados de las matrices cuadradas A y Bson las races del polinomio en det( C-A)

    [V,D]=eig(A,B) Calcula la matriz diagonal D de autovaloresgeneralizados de A y B, y una matriz V cuyascolumnas son los autovectorescorrespondientes, cumplindose que A*V =B*V*D

    [AA,BB,Q,Z,V]=qz(A,B) Calcula las matrices triangulares superiores AAy BB y las matrices Q y Z tales que Q*A*Z=AAY Q*B*Z = BB, y da la matriz de autovectoresgeneralizados de A y B. Los autovectoresgeneralizados son los elementos de la diagonal

    de AA y BB, de tal modo que se tiene laigualdad : A*V*diag(BB) = B*V*diag(AA)

    [T,B]=balance(A) Encuentra una matriz de transformacin T talque B=T\A*T tiene autovalores aproximados alos de A. La matriz B se llama matrizbalanceada de la matriz A

    balance(A) Calcula la matriz B balanceada de la matriz A.Su uso esencial es aproximar los autovalores de

    A cuando son difciles de calcular. Se tiene queeig(A)=eig(balance(A))

  • 8/14/2019 Curso Completo Mathlab

    15/91

    Bases de Matlab Alejandro Hayes

    Pgina 14 de 90

    [V,D] = cdf2rdf(V,D) Transforma la salida compleja [V,D] delcomando eig a forma real. Cada autovalorcomplejo en la diagonal de D origina unasubmatriz de 2x2 en la forma real de la matrizD

    [U,T]=schur(A) Da una matriz T y una matriz unitaria U tales

    que A = U*T*U y U*U=I. Si A es compleja, Tes una matriz triangular superior con losautovalores de A en la diagonal. Si A es real, lamatriz T tiene los autovalores de A en ladiagonal, y los correspondientes autovalorescomplejos se corresponden con los bloquesdiagonales 2x2 de la matriz T

    schur(A) Devuelve solo la matriz T[U,T]= rsf2 csf(U,T) Convierte a real la salida [U,T] del comando

    schur[P,H]=hess(A) Devuelve la matriz unitaria P y la matriz

    Hessenberg H tales que A=P*H*P y

    P`*P=eye(size(P))hess(A) Devuelve la matriz Hessenberg

    poly(A) Devuelve el polinomio caracterstico de lamatriz A

    poly(V) Devuelve un vector cuyas componentes son loscoeficientes del polinomio cuyas raices son loselementos del vector V.

    vander(C) Devuelve la matriz de Vandermode A tal que suj-esima columna es A(:,j)=C^(n-j)

    Tabla 5

    Veamos algunos ejemplos:

    Ejemplo 3.1:

    Se desea ingresar la matriz

    =

    649

    183

    521

    M y determinar:

    a) TM b) 1M si existe. c) Verificar IMM =1 d) M

    e) )(MTr f)32

    ,MM g) Los Autovalores deM h) )(P

    M=[1 -2 5;3 8 -1;9 -4 6]

    M =

    1 -2 5

  • 8/14/2019 Curso Completo Mathlab

    16/91

    Bases de Matlab Alejandro Hayes

    Pgina 15 de 90

    3 8 -19 -4 6

    Transpuesta_M=M'

    Transpuesta_M =

    1 3 9-2 8 -45 -1 6

    Inversa_M=inv(M)

    Inversa_M =

    -22/161 4/161 19/16127/322 39/322 -8/1616/23 1/23 -1/23

    Identidad=M*Inversa_M

    Identidad =

    1 0 00 1 00 0 1

    Determinante_M=det(M)

    Determinante_M =

    -322

    Traza_M=trace(M)

    Traza_M =

    15

    Potencia_2=M^2

    Potencia_2 =

    40 -38 3718 62 1

    51 -74 85

    Potencia_3=M^3

    Potencia_3 =

    259 -532 460213 456 34594 -1034 839

    Autovalores_M=eig(M)

  • 8/14/2019 Curso Completo Mathlab

    17/91

    Bases de Matlab Alejandro Hayes

    Pgina 16 de 90

    Autovalores_M =

    -2576/7014622/495 + 9553/14427i4622/495 - 9553/14427i

    Polinomio_Caracteristico_M=poly(M)

    Polinomio_Caracteristico_M =

    1 -15 19 322

    Ejemplo 3.2:

    Dadas las matrices

    =

    125

    976

    531

    A

    =

    101215

    830

    529

    B determinar: a) BA+

    b) BA c) BA d) AB e) ABBA f) A g) B

    h) BA i) BA j) BA + k) BA +

    A=[1 3 -5 ; 6 -7 9 ; -5 -2 -1]

    A =

    1 3 -5

    6 -7 9-5 -2 -1

    B=[9 2 -5 ; 0 -3 8 ; -15 -12 10]

    B =

    9 2 -50 -3 8

    -15 -12 10

    M_1=A+B

    M_1 =

    10 5 -106 -10 17

    -20 -14 9

    M_2=A- B

    M_2 =

    -8 1 0

  • 8/14/2019 Curso Completo Mathlab

    18/91

    Bases de Matlab Alejandro Hayes

    Pgina 17 de 90

    6 -4 110 10 -11

    M_3=A*B

    M_3 =

    84 53 -31-81 -75 4-30 8 -1

    M_4=B*A

    M_4 =

    46 23 -22-58 5 -35-137 19 -43

    M_5=M_4-M_3

    M_5 =

    -38 -30 923 80 -39

    -107 11 -42

    Determinante_A=det(A)

    Determinante_A =

    143

    Determinante_B=det(B)

    Determinante_B =

    579

    Determinante_M_3=det(M_3)

    Determinante_M_3 =

    82797

    Determinante_A*Determinante_B

    ans =

    82797

    Determinante_M_2=det(M_2)

  • 8/14/2019 Curso Completo Mathlab

    19/91

    Bases de Matlab Alejandro Hayes

    Pgina 18 de 90

    Determinante_M_2 =

    -196

    Determinante_A+Determinante_B

    ans =

    722

    Tabla 6

    Ejemplo 3.3:

    Dada la matriz

    =

    46210

    9233

    9865

    5721

    A . Llamar al elemento 23a . Visualizar la fila 2 y la columna 2.

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

    A =

    1 2 7 5-5 6 -8 93 -3 -2 910 -2 6 -4

    A(2,3)

    ans =

    -8

    A(2,:)

    ans =

    -5 6 -8 9

    A(:,2)

    ans =

    26-3-2

  • 8/14/2019 Curso Completo Mathlab

    20/91

    Bases de Matlab Alejandro Hayes

    Pgina 19 de 90

    3.2.Algunas Matrices Especiales:

    Matlab cuenta con algunos comandos que crean matrices especificas. Algunos de los mismos se dan en lasiguiente tabla:

    Funciones Especificas

    blkdiag(x1,x2,...,xn) Construye una matriz diagonal con los datosde x1,x2,...,xn

    eye(n) , eye(n,m) Genara una matriz identidad de nxn o denxm respectivamente.

    ones(n) , ones(n,m) Genera una matriz de unos de nxn o nxmrespectivamente.

    rand(n ) , rand(n,m) Genera una matriz de elementos aleatoriosuniformemente distribuidos en el intervalo(0,1) de nxn o nxm elementos

    randn(n) , randn(n,m) Genera una matriz de elementos aleatoriosnormalmente distribuidos en el intervalo

    (0,1) de nxn o nxm elementoszeros(n) , zeros(n,m) Genera una matriz de ceros de nxn o nxmrespectivamente.

    magic(n) Genera una matriz de nxn de los enteros de1 a n2

    Tabla 7

    3.3. Aplicaciones a la resolucin de sistemas de ecuaciones lineales

    Una aplicacin importante del lgebra de matrices esta en la resolucin de sistemas de ecuaciones lineales.Veremos un ejemplo.

    Ejemplo 3.4:

    Dado el sistema lineal

    =+

    =++

    =++

    43

    932

    1124

    zyx

    zyx

    zyx

    . Resolverlo en forma matricial.

    format rat>> A=[4 2 1;-2 1 3;1 3 -1]

    A =

    4 2 1-2 1 31 3 -1

    >> B=[11;9;4]

    B =

    11

  • 8/14/2019 Curso Completo Mathlab

    21/91

    Bases de Matlab Alejandro Hayes

    Pgina 20 de 90

    94

    >> A_1=inv(A)

    A_1 =

    2/9 -1/9 -1/9-1/45 1/9 14/457/45 2/9 -8/45

    >> x=A_1*B

    x =

    123

    >>

    Es importante aclarar que si bien en el ejemplo y solo con fines didcticos y para relacionar el manejo deMatlab con la teora conocida de lgebra Lineal sobre la resolucin de sistemas de ecuaciones lineales hemosoptado por trabajar con la matriz inversa, esto no es frecuente ya que a la hora de invertir matrices Matlabemplea mucho tiempo, tanto mas cuanto mas grande sea la matriz. En los ejemplos del apartado 3.4 deaplicaciones a la ingeniera se muestran otras formas de resolver el sistema de ecuaciones.

    3.4. Una aplicacin a la Ingenier a

    Ejemplo 3.5

    Se dispone del circuito elctrico mostrado en la figura y se desea calcular:

    a) La corriente en cada resistor y la potencia elctrica disipada.

    b) La resistencia que ve cada generador de tensin actuando en forma independiente.

  • 8/14/2019 Curso Completo Mathlab

    22/91

    Bases de Matlab Alejandro Hayes

    Pgina 21 de 90

    Figura 1

    V1=15v , V2=6v, R1=220, R2=470, R3=560, R4=100, R5=390, R6=120.

    El sistema de ecuaciones que permite calcular las corrientes esta dado por:

    =+++

    =+++

    =++

    2V3I)4R6R3R(2I4R1I3R

    1V3I4R2I)5R4R2R(1I2R

    03I3R2I2R1I)3R2R1R(

    Para el caso del punto b) consideramos que solo acta el generador V1 y el sistema se reduce a:

    Figura 2

  • 8/14/2019 Curso Completo Mathlab

    23/91

    Bases de Matlab Alejandro Hayes

    Pgina 22 de 90

    =+++

    =+++

    =++

    03I)4R6R3R(2I4R1I3R

    1V3I4R2I)5R4R2R(1I2R

    03I3R2I2R1I)3R2R1R(

    La resolucin con Matlab se muestra a continuacin.

  • 8/14/2019 Curso Completo Mathlab

    24/91

    Bases de Matlab Alejandro Hayes

    Pgina 23 de 90

    >> V1=15;>> V2=6;>> R1=220;>> R2=470;>> R3=560;>> R4=100;>> R5=390;>> R6=120;

    >> R=[R1+R2+R3 -R2 -R3;-R2 R2+R4+R5 -R4;-R3 -R4 R3+R6+R4]

    R =1250 -470 -560-470 960 -100-560 -100 780

    >> V=[0;V1;V2]

    V =0156

    >> I=R\V

    I =2.4771e-0023.0818e-0022.9428e-002

    %Calculo de la potencia en cada resistencia %

    >> PR1=((I(1))^2)*R1

    PR1 =1.3499e-001

    >> PR2=((I(2)-I(1))^2)*R2

    PR2 =1.7185e-002

    >> PR3=((I(1)-I(3))^2)*R3

    PR3 =1.2143e-002

    >> PR4=((I(2)-I(3))^2)*R4

    PR4 =1.9326e-004

    >> PR5=((I(2))^2)*R5

    PR5 =

  • 8/14/2019 Curso Completo Mathlab

    25/91

    Bases de Matlab Alejandro Hayes

    Pgina 24 de 90

    3.7040e-001

    >> PR6=((I(3))^2)*R6

    PR6 =1.0392e-001

    %Calculo de la resistencia que ve V1%%Hacemos V2=0 y calculamos las corrientes

    >> V=[0;V1;0]

    V =0150

    >> I=R\V

    I =1.5947e-0022.4958e-0021.4649e-002

    >> RV1=V1/I(2)

    RV1 =6.0100e+002

    3.5. Comentarios adicionales sobre escalares y vectores

    De acuerdo a lo visto hasta el momento queda claro que un vector no es otra cosa que un caso particular dematriz que puede ser de una fila (vector fila) como de una columna (vector columna) , pero el concepto devector para Matlab es mucho mas general ya que toda lista de datos ya sea mediciones, registros, o listasgeneradas etc. Puede ser tratado como un vector. La tabla 8 lista una serie de funciones para el manejo devectores.

    Tabla 8

    length(v) Nos da el numero de elementos o longituddel vector v.

    abs(v) Nos devuelve un vector en el que cadacomponente es el valor absoluto de la

    correspondiente en v.norn(v) Calcula la norma 2 de un vector. La funcinnorm() admite argumentos que permitencalcular otras normas.

    dot(v1,v2) Calcula el producto escalar entre los vectoresv1 y v2.

    cross(v1,v2) Calcula el producto vectorial entre los vectoresv1 y v2.

    v1.*v2 Nos devuelve un vector cuyas componentes elproducto de las componentes de v1 y v2

  • 8/14/2019 Curso Completo Mathlab

    26/91

    Bases de Matlab Alejandro Hayes

    Pgina 25 de 90

    v1./v2 Nos devuelve un vector cuyas componentes elcociente de las componentes de v1 y v2

    Ejemplo 3.6

    Dados los vectores )6,1,1(v1 = , )11,1,5(v2 = vamos a aplicar las instrucciones indicadas en la tabla 8

    >> v1=[1 -1 6]

    v1 =

    1 -1 6

    >> v2=[-5 -1 -11]

    v2 =

    -5 -1 -11

    >> a=abs(v1)

    a =

    1 1 6

    >> n=norm(v1)

    n =

    6.1644

    >> d=dot(v1,v2)

    d =

    -70

    >> c=cross(v1,v2)

    c =

    17 -19 -6

    >> v=v1.*v2

    v =

    -5 1 -66

    >> l=length(v)

    l =

    3

  • 8/14/2019 Curso Completo Mathlab

    27/91

    Bases de Matlab Alejandro Hayes

    Pgina 26 de 90

    3.6. Polinomios y vectores

    Tanto en Ingeniera como en ciencias en general es frecuente la aparicin de polinomios en diversos tipos demodelos a saber, funciones de transferencia, aproximaciones polinomiales, interpolacin, ecuacionesdiferenciales etc. Adems sabemos que un polinomio queda determinado por sus coeficientes, adems hay unarelacin entre estos y sus races. Todo esto hace posible que Matlab disponga de un conjunto de comandosque permitan tratar a los polinomios como vectores y poder efectuar las operaciones usuales entre ellos, es poreso que hemos decidido darle un tratamiento aparte antes de comenzar con las funciones escalares que sertema de la seccin 4. La Tabla 9 ilustra las funciones bsicas para el manejo de polinomios.

    conv(p1,p2) Nos devuelve un vector con los coeficientesdel polinomio producto entre p1 y p2.

    deconv(p1,p2) Nos devuelve dos vectores con loscoeficientes del polinomio cociente y del restorespectivamente de dividir p1 por p2.

    poly(r), poly(A) Nos devuelve un vector con los coeficientesdel polinomio cuyas races son los elementos

    del vector r.En el caso de que el argumento sea unamatriz A de nxn el comando nos devuelve elun vector con los coeficientes del polinomiocaracterstico de A

    polyder(p) Nos devuelve los coeficientes del polinomioderivado de p.

    polyint(p,k), polyint(p) Nos devuelve los coeficientes del polinomiointegrado de p. El argumento k es laconstante de integracin, si no ingresamoseste valor, Matlab lo considera cero.

    polyval(p,v) Evala al polinomio p en el o los valores

    indicados en v que puede ser un escalar o unvectorpolyvalm(p,A) Evala al polinomio p en la matriz Aresidue(n,d) Nos da la descomposicin en fracciones

    simples del cociente de polinomios cuyonumerador es n y cuyo denominador es d.

    roots(p) Nos devuelve un vector con las races delpolinomio dado en p.

    Tabla 9Ejemplo 3.6.1

    Dados los siguientes polinomios:

    23x11x4x)x(P 23 += y 8xx15xx5x2)x(Q 2457 +++= se pide:

    a) P+Q, P Q.b) Especializar aP en 8 y aQ en 5.c) Hallar la derivada y la integral deP yQ considerando nulas las constantes de integracin.

  • 8/14/2019 Curso Completo Mathlab

    28/91

    Bases de Matlab Alejandro Hayes

    Pgina 27 de 90

    d) Hallar las races deP yQ.

    e) Hallar la descomposicin en fracciones simples de)x(Q

    )x(P)x(H =

    Resolucin en Matlab

    >> P=[0 0 0 0 1 -4 11 -23]

    P =0 0 0 0 1 -4 11 -23

    >> Q=[2 0 -5 1 0 15 1 -8]

    Q =2 0 -5 1 0 15 1 -8

    >> S=P+Q

    S =2 0 -5 1 1 11 12 -31

    >> C=conv(P,Q)

    C =Columns 1 through 8

    0 0 0 0 2 -8 17 -25Columns 9 through 15-59 141 -82 153 -302 -111 184

    >> polyval(P,-8)

    ans =-879

    >> polyval(Q,5)

    ans =141622

    >> dP=polyder(P)

    dP =3 -8 11

    >> dQ=polyder(Q)

    dQ =14 0 -25 4 0 30 1

    >> IP=polyint(P)

    IP =Columns 1 through 8

    0 0 0 0 1/4 -4/3 11/2 -23Column 9

    0

  • 8/14/2019 Curso Completo Mathlab

    29/91

    Bases de Matlab Alejandro Hayes

    Pgina 28 de 90

    >> IQ=polyint(Q)

    IQ =Columns 1 through 8

    1/4 0 -5/6 1/5 0 5 1/2 -8Column 9

    0

    RP=roots(P)

    RP =

    2.92670.5367 + 2.7515i0.5367 - 2.7515i

    >> RQ=roots(Q)

    RQ =

    -1.90911.3902 + 0.6687i1.3902 - 0.6687i-0.4374 + 1.2308i-0.4374 - 1.2308i-0.71660.7201

    >> [R,PO,K]=residue(P,Q)

    R =

    -0.25060.1233 - 0.0663i0.1233 + 0.0663i-0.1884 - 0.1809i-0.1884 + 0.1809i-0.86821.2490

    PO =

    -1.9091

    1.3902 + 0.6687i1.3902 - 0.6687i-0.4374 + 1.2308i-0.4374 - 1.2308i0.7201-0.7166

    K =

    []

  • 8/14/2019 Curso Completo Mathlab

    30/91

    Bases de Matlab Alejandro Hayes

    Pgina 29 de 90

    4.Funciones Escalares

    La funcin como objeto de estudio es conceptualmente muy importante a la hora de trabajar con un softwarematemtico pues la forma de manejar e implementar las funciones varia de un software a otro. Matlab nos

    permite definir y manejar funciones de una forma muy simple, solo hay que acostumbrarse a la sintaxis y a lasManias del programa en cuestin. Matlab al igual que la mayora de los paquetes de calculo simblico trae

    funciones predefinidas asi como permite al usuario definir sus propias funciones. Algunas de las funcionespredefinidas con las que cuenta Matlab son las siguientes:

    abs( x ) Calcula el modulo de xsqrt( x ) Calcula la raz cuadrada de xround(x) Redondea al entero mas cercanofix(x) Redondea x al entero mas cercano a cerofloor( x) Redondea al entero mas cercano a -ceil( x) Redondea al entero mas cercano a exp( x) Calcula ex, Donde e es la base de los logaritmos naturaleslog( x) Calcula ln x, el logaritmo natural de x con base e.

    log10( x ) Calcula log10xsin ( x ) Calcula el sen( x)cos( x ) Calcula cos ( x ).tan ( x ) Calcula tg( x ).asin( x ) Calcula el arcoseno de xacos( x ) Calcula el arcocoseno de xatan( x ) Calcula el arcotangente de x.atan2( y, x ) Cacula el arcotangente de y/xsinh( x ) Calcula el seno hiperblico de xcosh( x ) Calcula el coseno hiperblico de x

    tanh ( x ) Calcula la tangente hiperblica de x.

    Tabla 10

    Por supuesto Matlab cuenta con muchas otras funciones que no fueron contempladas en la tabla.Veamos algunos ejemplos :

    Ejemplo 4.1:

    Definir las funciones xsenxf =)( , xxg cos)( = , xexh =)( en el intervalo [ ]10,0 .

    x=0:0.01:10;f1=sin(x);f2=cos(x);f3=exp(x);

    Lo que muestra el ejemplo 1 es la forma de ingresar funciones en Matlab. Si trabajamos en forma numricadebemos indicar los valores que toma la variable independiente, en el ejemplo x varia entre 0 y 10 en pasos de0.01. Podemos observar que si no indicamos el valor de x Matlab nos dice que no conoce a la variable.

    f=exp(x)??? Undefined function or variable 'x'.

  • 8/14/2019 Curso Completo Mathlab

    31/91

    Bases de Matlab Alejandro Hayes

    Pgina 30 de 90

    Ejemplo 4.2:

    Definir una funcin trabajando con la variable definida en forma simblica.

    syms x realf=log(x);

    El comandosyms indica que la variable x es simblica y la palabra real indica que se trata de una variablereal. De no poner nada matlab la toma como una variable compleja.Se pueden poner otros atributos a la variable por ejemplo.

    syms x positive

    Si queremos evaluar la funcin en un punto Matlab cuenta con una funcin llamada subs cuya sintaxis es la quese indica abajo.

    subs ( f ) Reemplaza todas las variables en la expresin simblica f

    subs (f,n) Reemplaza la variable libre simblica en s con nsubs(f,o,n) Reemplaza o con n en la expresin simblica f.

    Tabla 11

    Ejemplo 4.3 :

    Dada la funcin escalar xexsenxf +=)( . Definirla con la variable dada en forma simblica y calcular laimagen de 4.

    syms xf=sin(x)+exp(-x);x=4;subs(f)

    ans =

    -0.7385

    format ratsubs(f)

    ans =

    -449/608

    4.1.Grafica de Funciones en 2D.

    Es notoria la calidad y capacidad de graficacin que tiene Matlab por lo que corresponde comenzar a aprenderlos comandos necesarios para graficar distintas curvas y superficies dadas en forma Explicita, Implcita, yParametrica.

  • 8/14/2019 Curso Completo Mathlab

    32/91

  • 8/14/2019 Curso Completo Mathlab

    33/91

    Bases de Matlab Alejandro Hayes

    Pgina 32 de 90

    En esta grafica sobre el eje de abscisas figuran los ndices de cada elemento y sobre el eje de ordenadas elvalor de x para cada elemento. Entre elemento y elemento Matlab interpola.

    Ejemplo 4.5:

    Dada la funcin escalar )3x8cos(e2)x(f x3.0 += realizar la grafica de la misma.

    x=0:0.01:10;f=2*exp(-0.3*x).*cos(8*x+3);plot(x,f)

    0 1 2 3 4 5 6 7 8 9 10-2

    -1.5

    -1

    -0.5

    0

    0.5

    1

    1.5

    2

    Figura 4

    Si queremos ver algunas opciones para la salida del grafico veamos otros ejemplos:

    Ejemplo 4.6:

    Idem anterior pero con distintas opciones de visualizacin.

    x=0:0.01:10;f=2*exp(-0.3*x).*cos(8*x+3);plot(x,f,'*');

    plot(x,f,'r *');grid on.

  • 8/14/2019 Curso Completo Mathlab

    34/91

    Bases de Matlab Alejandro Hayes

    Pgina 33 de 90

    0 1 2 3 4 5 6 7 8 9 10-2

    -1.5

    -1

    -0.5

    0

    0.5

    1

    1.5

    2

    Figura 5

    Ejemplo 4.7:

    Realizar en un mismo grafico las representaciones de las siguientes funcionesx3sen)x(f = , )62cos()( += xxg , x2cosxsen)x(h += en el intervalo [ ]10,0

    fplot('[sin(3*x),cos(2*x+6),sin(x)+cos(2*x)]',[0,10])

    Obtenemos la siguiente figura

    0 1 2 3 4 5 6 7 8 9 10-2

    -1.5

    -1

    -0.5

    0

    0.5

    1

    1.5

    Figura 6

    Ejemplo 4.8:

    Idem anterior pero con la opcin de escala establecida

    fplot('[sin(3*x),cos(2*x+6),sin(x)+cos(2*x)]',[0,10,-4,2])

  • 8/14/2019 Curso Completo Mathlab

    35/91

    Bases de Matlab Alejandro Hayes

    Pgina 34 de 90

    0 1 2 3 4 5 6 7 8 9 10-4

    -3

    -2

    -1

    0

    1

    2

    Figura 7

    Ejemplo 4.9:

    Graficar la funcin xcosx2xsen)x(f 2 += utilizando el comandoezplot

    ezplot('sin(x)^2+2*x*cos(x)',[-10,10])

    -10 -8 -6 -4 -2 0 2 4 6 8 10

    -20

    -15

    -10

    -5

    0

    5

    10

    15

    20

    x

    sin(x)2+2 x cos(x)

    Figura 8

    Matlab cuenta con una serie de comandos que se utilizan para trabajar con ttulos , etiquetas, mallas y textos,hemos utilizado algunos en los ejemplos anteriores pero daremos a continuacin una tabla con los mascomunes.

    title(texto) Aade el texto como titulo del grafico en laparte superior del mismo .

    xlabel(texto) Sita el texto al lado del eje xylabel(texto) Sita el texto al lado del eje y

  • 8/14/2019 Curso Completo Mathlab

    36/91

    Bases de Matlab Alejandro Hayes

    Pgina 35 de 90

    zlabel(texto) Sita el texto al lado del eje ztext(x,y,texto) Sita el texto en el punto (x,y) dentro del

    grafico 2 Dtext(x,y,z,texto) Sita el texto en el punto (x,y,z) dentro del

    grafico 3 Dgtext(texto) Permite situar el texto en un punto elegido

    con el Mouse.grid Sita rejillas en los ejes.hold Permite mantener grficos para

    superponerlos.

    Tabla 13

    Ilustraremos con algunos ejemplos la utilizacin de estos comandos.

    Ejemplo 4.10:

    Graficar las funciones xsenxxf 2)( = y )3cos(2)( ++= xxsenxg

    x=0:0.1:10;f1=x.*sin(2*x);f2=sin(2*x)+cos(x+3);plot(x,f1,'r');ylabel('Variable Dependiente')xlabel('Variable Independiente')grid onhold onplot(x,f2,'g');

    plot(x,f2+f1,'k +');

    Figura 9

    0 1 2 3 4 5 6 7 8 9 10-10

    -5

    0

    5

    10

    15

    VariableD

    ependiente

    Variable Independiente

  • 8/14/2019 Curso Completo Mathlab

    37/91

    Bases de Matlab Alejandro Hayes

    Pgina 36 de 90

    Sobre la computadora se observa el efecto del hold on para dibujar cada grafica manteniendo la figura anterior.

    Ejemplo 4.11

    Definir la funcin )3(2

    )( += xsenexf definiendo la variable en forma simblica. Graficarla en el intervalo [ ]5,5

    syms x realf=exp(-sin(x.^2+3));ezplot(f,[-5,5])Obtenemos la siguiente salida:

    -5 -4 -3 -2 -1 0 1 2 3 4 5

    0.5

    1

    1.5

    2

    2.5

    x

    exp(-sin(x2+3))

    Figura 10

    Matlab cuenta con una serie importante de comandos para la manipulacin de grficos algunos de ellos se danen la tabla.

    axis ([xmin xmax ymin ymax]) Ubica los valores maximo y minimo para losejes coordenados respectivos.

    axis(auto) Sita los ejes en la escala automtica pordefecto.

    axis(axis) Congela la escala en los limites corrientes demodo de permitir situar otro grafico sobre losmismos ejes

    V=axis Da un vector de 4 elementos conteniendo laescala del grafico corriente.axis(xy) Sita el origen en la parte inferior izquierda.axis(ij ) Sita el origen en la parte superior izquierdaaxis(square) Convierte el rectangulo del grafico en un

    cuadrado.axis(equal) Situa el mismo factor de escala en ambos

    ejes.axis(normal) Elimina las ociones square y equalaxis(off) Elimina eti uetas marcas re illas de los

  • 8/14/2019 Curso Completo Mathlab

    38/91

    Bases de Matlab Alejandro Hayes

    Pgina 37 de 90

    ejes.axis(on) Coloca de nuevo las etuquetas, marcas y

    rejillas

    Tabla 14

    Veamos algunos ejemplos:

    Ejemplo 4.12:

    Para el ejemplo 4.11 consideremos las siguientes modificaciones:

    x=-5:0.01:5;f=exp(-sin(x.^2+3));plot(x,f);V=axis

    V =

    -5 5 0 3axis('square')

    -5 -4 -3 -2 -1 0 1 2 3 4 5

    -2

    -1

    0

    1

    2

    3

    4

    5

    Figura 11

    axis('equal')

  • 8/14/2019 Curso Completo Mathlab

    39/91

    Bases de Matlab Alejandro Hayes

    Pgina 38 de 90

    Figura 12

    En muchos casos es importante poder visualizar varios graficas simultneamente pero no superpuestas y paraeso Matlab cuenta con una funcin que permite dividir la ventana grafica en nxm subventanas y coloca elgrafico en la ventana p-esima la sintaxis es:

    subplot( m,n,p )

    Ejemplo 4.13:

    Visualizar simultneamente las graficas de:

    xsenxf 3)( = , x2cos)x(g = , )1x2cos()x(h += , )1x2cos(e)x(k +=

    x=(0:0.1:10);f1=sin(3*x);f2=cos(2*x);f3=cos(2*x+1);f4=exp(cos(2*x+1));subplot(2,2,1);plot(x,f1);

    subplot(2,2,2);plot(x,f2);subplot(2,2,3);plot(x,f3);subplot(2,2,4);plot(x,f4);

    Obtenemos la siguiente salida:

    -5 0 50

    0.5

    1

    1.5

    2

    2.5

    3

  • 8/14/2019 Curso Completo Mathlab

    40/91

    Bases de Matlab Alejandro Hayes

    Pgina 39 de 90

    0 5 10-1

    -0.5

    0

    0.5

    1

    0 5 10-1

    -0.5

    0

    0.5

    1

    0 5 10-1

    -0.5

    0

    0.5

    1

    0 5 100

    1

    2

    3

    Figura 13

    En mltiples aplicaciones de ingeniera y ciencias se facilita la tarea usando grficos logartmicos osemilogaritmicos las funciones que Matlab tiene para definir esto son las que se detallan a continuacin:

    loglog(x,y) Realiza los mismos grficos que plot(x,y)pero con escala logartmica.

    semilogx(x,y) Realiza los mismos grficos que plot(x,y)pero con escala logartmica x.

    semilogy(x,y) Realiza los mismos grficos que plot(x,y)pero con escala logartmica y.

    Tabla 15

    Veamos un ejemplo combinando las funciones de grafica logartmica con subplot.

    Ejemplo 4.14:

    x=0:0.1:10;

    f=exp(x)-1;subplot(2,2,1);plot(x,f);subplot(2,2,2);loglog(x,f);subplot(2,2,3);semilogx(x,f);subplot(2,2,4);semilogy(x,f);

  • 8/14/2019 Curso Completo Mathlab

    41/91

    Bases de Matlab Alejandro Hayes

    Pgina 40 de 90

    Obtenemos la siguiente salida

    0 5 100

    0.5

    1

    1.5

    2

    2.5x 10

    4

    10-1

    100

    101

    10-5

    100

    105

    10-1

    100

    101

    0

    0.5

    1

    1.5

    2

    2.5x 10

    4

    0 5 1010

    -5

    100

    105

    Figura 14

    4.1.2.Graficas de curvas dadas en coordenadas polares yparametricas.

    En muchos casos se hace necesario realizar graficas en forma Parametrica para lo cual lo nico que debemoshacer es parametrizar la curva correspondiente como ilustra el ejemplo 17.

    Ejemplo 4.15

    Dada la curva definida en forma Parametrica por:

    =

    =

    t2sentsen2)t(y

    t2costcos2)t(xcon 100 t .

    t=0:0.1:10;x=2*cos(t)-cos(2*t);

    y=2*sin(t)-sin(2*t);plot(x,y,'r')

    Obtenemos las siguiente salida:

  • 8/14/2019 Curso Completo Mathlab

    42/91

    Bases de Matlab Alejandro Hayes

    Pgina 41 de 90

    -3 -2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5-3

    -2

    -1

    0

    1

    2

    3

    Figura 15

    Para realizar graficas en coordenadas polares Matlab cuenta con los siguientes comandos:

    polar(a,r) Representa la curva en coordenadas polarespolar(a,r,S) Representa la curva en coordenadas polares

    con el estilo de lneas especificado por S.

    Tabla 16

    Ejemplo 4.16:

    a=0:0.01:2*pi;r=sin(2*a).*cos(2*a);polar(a,r)

    0.1

    0.2

    0.3

    0.4

    0.5

    30

    210

    60

    240

    90

    270

    120

    300

    150

    330

    180 0

    Figura 16

  • 8/14/2019 Curso Completo Mathlab

    43/91

    Bases de Matlab Alejandro Hayes

    Pgina 42 de 90

    Ejemplo 4.17:

    a=0:0.01:2*pi;r=4*(1+cos(a));polar(a,r)

    2

    4

    6

    8

    30

    210

    60

    240

    90

    270

    120

    300

    150

    330

    180 0

    Figura 17

    4.2. Aplicaciones a la Ingeniera

    Ejemplo 4.18

    Se dispone de dos seales moduladas en amplitud y frecuencia respectivamente, y se desea visualizarlas bajodistintas condiciones.

    tcos)tcosVV()t(v pmmpAM += ))t(gtcos(V)t(v ppFM +=

    Para la seal de Amplitud Modulada hacemos efectuamos los siguientes grficos con Matlab

    t=0:0.01:10;>> v1=2*cos(10*t);>> subplot(2,2,1)>> plot(t,v1)>> axis([0 10 -3 3])>> grid on

    >> xlabel('t')>> ylabel('v1(t)')>> title('Seal portadora sin modulacion')v2=(4+2*cos(t)).*cos(10*t);>> subplot(2,2,2)>> plot(t,v2)>> axis([0 10 -7 7])>> grid on>> xlabel('t')>> ylabel('v2(t)')>> title('Seal portadora modulada al 50%')

  • 8/14/2019 Curso Completo Mathlab

    44/91

    Bases de Matlab Alejandro Hayes

    Pgina 43 de 90

    v3=(4+4*cos(t)).*cos(10*t);>> subplot(2,2,3)>> plot(t,v3)

    >> axis([0 10 -9 9])>> grid on>> xlabel('t')>> ylabel('v3(t)')>> title('Seal portadora modulada al 100%')>> v4=(4+6*cos(t)).*cos(10*t);>> subplot(2,2,4)>> plot(t,v4)>> axis([0 10 -11 11])>> grid on>> xlabel('t')>> ylabel('v4(t)')>> title('Seal portadora sobremodulada')

    Obtenemos la siguiente salida

    0 5 10-3

    -2

    -1

    0

    1

    2

    3

    t

    v1(t)

    Seal portadora sin modulacion

    0 5 10

    -5

    0

    5

    t

    v2(t)

    Seal portadora modulada al 50%

    0 5 10

    -5

    0

    5

    t

    v3(t)

    Seal portadora modulada al 100%

    0 5 10-10

    -5

    0

    5

    10

    t

    v4(t)

    Seal portadora sobremodulada

    Figura 19

    Para la seal de FM tenemos el guin que se muestra a continuacin

    t=0:0.01:10;

  • 8/14/2019 Curso Completo Mathlab

    45/91

    Bases de Matlab Alejandro Hayes

    Pgina 44 de 90

    >> v1=4*cos(10*t+t.^2);>> subplot(2,2,1)>> plot(t,v1)>> grid on>> axis([0 10 -5 5])>> xlabel('t')>> ylabel('v1(t)')>> title('Seal modulada por una seal cuadratica')>> v2=4*cos(10*t+2*cos(t));>> subplot(2,2,2)>> plot(t,v2)>> grid on>> axis([0 10 -5 5])>> xlabel('t')>> ylabel('v2(t)')>> title('Seal modulada por una seal cosenoidal')v3=4*cos(10*t+6*exp(t));>> subplot(2,2,3)>> plot(t,v3)>> axis([0 10 -5 5])>> grid on>> xlabel('t')>> ylabel('v3(t)')>> title('Seal modulada por una seal exponencial')>> v4=4*cos(10*t+6*abs(t));>> subplot(2,2,4)>> plot(t,v4)>> axis([0 10 -5 5])>> grid on>> xlabel('t')>> ylabel('v4(t)')>> title('Seal modulada por una seal modulo')>>

    Obtuvimos la siguiente salida:

  • 8/14/2019 Curso Completo Mathlab

    46/91

    Bases de Matlab Alejandro Hayes

    Pgina 45 de 90

    0 5 10-5

    0

    5

    t

    v

    1(t)

    Seal modulada por una seal cuadratica

    0 5 10-5

    0

    5

    t

    v

    2(t)

    Seal modulada por una seal cosenoidal

    0 5 10-5

    0

    5

    t

    v3(t)

    Seal modulada por una seal exponencial

    0 5 10-5

    0

    5

    t

    v4(t)

    Seal modulada por una seal modulo

    Figura 20Ejemplo 4.19

    A partir de una medicin efectuada con voltmetro y ampermetro sobre tres lmparas de 25W, 40W, y 100W

    respectivamente se guardaron los registros de tensin , corriente y potencia en un archivo y luego se pasaronestos datos a una matriz de Matlab con el objeto de interpolarlos y obtener graficas de la corriente comofuncin de la tensin y de la potencia como funcin de la tensin. Si bien en este primer curso no hemosestudiado interpolacin con Matlab usaremos para el guin que sigue la funcin interp1 que efecta unainterpolacin de datos 1D, es intencin de un curso futuro el tratar las funciones de interpolacin y ajuste queusa Matlab as como otras herramientas del calculo estadstico y numrico.El guin utilizado se muestra a continuacin as como la salida grafica obtenida.

    M =220.0000 118.0000 25.9600 185.0000 40.7000 43.0000 94.6000200.0000 112.0000 22.4000 177.0000 35.4000 41.0000 82.0000175.0000 103.0000 18.0200 166.0000 29.0500 38.0000 66.5000

    150.0000 94.0000 14.1000 154.0000 23.1000 35.0000 52.5000125.0000 84.0000 10.5000 141.0000 17.6200 31.0000 38.7500110.0000 78.0000 8.5800 134.0000 14.7400 29.0000 31.9000100.0000 74.0000 7.4000 128.0000 12.8000 28.0000 28.000075.0000 62.0000 4.6500 113.0000 8.4700 24.0000 18.000050.0000 49.0000 2.4500 98.0000 4.9000 19.0000 9.500025.0000 32.0000 0.8000 78.0000 1.9500 17.0000 4.250015.0000 24.0000 0.3600 67.0000 1.0000 14.6000 2.190010.0000 18.0000 0.1800 59.0000 0.5900 12.8000 1.28005.0000 12.0000 0.0600 38.0000 0.1900 9.7000 0.5000

    >> v=M(:,1);

  • 8/14/2019 Curso Completo Mathlab

    47/91

    Bases de Matlab Alejandro Hayes

    Pgina 46 de 90

    >> I25=M(:,2);>> vinterp=5:1:220;>> I25interp=interp1(v,I25,vinterp);>> subplot(2,1,1)>> plot(vinterp,I25interp)>> grid on>> I40=M(:,4);>> I40interp=interp1(v,I40,vinterp);>> hold on>> plot(vinterp,I40interp,'r')>> I100=M(:,6);>> I100interp=interp1(v,I100,vinterp);>> plot(vinterp,I100interp)>> plot(vinterp,I100interp,'g')>> grid on>> xlabel('V')>> ylabel('I(V)')>> title('Variacion de la corriente en funcion de la tension en lamparas de 25 40 y 100 W')>> P25=M(:,3);>> P25interp=interp1(v,P25,vinterp);>> subplot(2,1,2)>> plot(vinterp,P25interp)>> P40=M(:,5);>> P40interp=interp1(v,P40,vinterp);>> hold on>> plot(vinterp,P40interp,'r')>> P100=M(:,7);>> P100interp=interp1(v,P100,vinterp);>> plot(vinterp,P100interp,'g')>> grid on>> xlabel('V')>> ylabel('P(V)')>>

    Obtenemos la siguiente salida

  • 8/14/2019 Curso Completo Mathlab

    48/91

    Bases de Matlab Alejandro Hayes

    Pgina 47 de 90

    0 50 100 150 200 2500

    50

    100

    150

    200

    V

    I(V)

    Variacion de la corriente en funcion de la tension en lamparas de 25 40 y 100 W

    0 50 100 150 200 2500

    20

    40

    60

    80

    100

    V

    P(V)

    Figura 21

    Con estos dos ejemplos tratamos de ilustrar la gran aplicacin que tiene Matlab en Ingeniera y por supuestodejar la puerta abierta a un mundo de otras aplicaciones a la ingeniera y a las ciencias.

    5.Introduccin a la P rogramacinHasta ahora hemos visto que todos las instrucciones de Matlab que pueden escribirse y ejecutarse desde lalnea de comandos ingresndolos directamente desde el teclado. Esta forma de trabajar es muy simple pero enla practica presenta limitaciones cuando de desarrollos grandes se trata y es en estos casos donde el usuarionecesita hacerse un programa propio y personalizarlo a sus necesidades.Matlab permite desarrollar programas con archivos M los que pueden hacerse mediante el editor de texto queviene con Matlab y luego para ser ejecutado se lo llama desde la ventana de comandos con el nombre delarchivo.Por defecto Matlab guarda estos archivos en un directorio propio llamadoworkpero es posible guardarlos encualquier directorio deseado y luego poder accederlo indicando en forma adecuada la ruta. Estudiaremos dostipos de archivos-M que se detallan a continuacin.

    5.1. Estructuras elementales

    Es posible demostrar que cualquier problema puede resolverse combinando tres estructuras elementales asaber:

    Sucesin de sentencias:Esta constituida por un conjunto de sentencias consecutiva, teniendo encuenta que cada sentencia puede ser una combinacin de otras.

  • 8/14/2019 Curso Completo Mathlab

    49/91

    Bases de Matlab Alejandro Hayes

    Pgina 48 de 90

    Sentencia 1Sentencia 2................Sentencia n

    Toma de Decisin:Permite tomar una decisin a partir de una o varias condiciones las que segn sean

    verdaderas o falsas permiten ejecutar una sentencia u otra. Esto se implementa en Matlab mediante lasentenciasifyswitch.La estructura delif en Matlab es la siguiente:

    if condicion

    Sentenciasx

    else

    Sentenciasy

    endLa estructura deswitchen Matlab es la siguiente:

    switch expresin

    case exp1

    Sentenciax

    case exp2

    Sentenciay

    ............

    ............otherwise

    Sentencia n

    end

    Sentencias de ciclo o iteracin: Se utilizan cuando se desea que un conjunto de sentenciasdeterminadas, se repitan las veces requeridas por el algoritmo. Estas sentencias son for y while cuya estructuraen Matlab es la siguiente.

    for cont=n_min:paso:n_max

    Sentenciasend

    while condicion1 condicion2 condicionn

    Sentenciasend

  • 8/14/2019 Curso Completo Mathlab

    50/91

    Bases de Matlab Alejandro Hayes

    Pgina 49 de 90

    5.2.Archivos-M Script

    Supongamos que elegimos nuestro editor de texto favorito por ejemplonotepadpara crear un archivo llamadofuncion.mconteniendo las lineas:

    x=-15:0.01:15;

    f=sin(x)+4*sin(3*x)-cos(10*x);plot(x,f);

    Luego lo guardamos en principio en el directorio work y lo ejecutamos desde la lnea de comandos yobtenemos lo siguiente:

    funcion

    Obtenemos la siguiente salida.

    -15 -10 -5 0 5 10 15-6

    -4

    -2

    0

    2

    4

    6

    Figura 22

    Con esto no hemos hecho otra cosa que juntar un conjunto de instrucciones en un solo archivo y ejecutarlo conun solo llamado a la funcin correspondiente, sin embargo hay casos en los que deseamos interactuar con otros

    programas as como mecanizar procedimientos entre otras cosas, que hacen que necesitemos hacer un scriptmas elaborado y es de eso que se trata esta seccin. Cabe aclarar que en este primer curso se dan nocionesbsicas de programacin pero es intencin de un curso futuro y mas avanzado profundizar sobre este tema yen tpicos tales como nocin de algoritmo, estructuras de datos, programacin estructurada y otros.

    5.3.Archivos-M de FuncinLos archivos de funcin provienen como una extensin de Matlab permitiendo al usuario crear funciones para

    problemas especficos. Las funciones son como los Scripts, pero con el propsito de mejorar la velocidad delcomputador se compilan en un bajo nivel de codigo de bytes cuando se los llama por primera vez. Los ejemplosque desarrollaremos son todos de funciones-M para comenzar a familiarizarnos.

  • 8/14/2019 Curso Completo Mathlab

    51/91

    Bases de Matlab Alejandro Hayes

    Pgina 50 de 90

    Ejemplo 5.3.1:

    Supongamos que necesitamos determinar el volumen y la superficie de cilindros de distinto tamao para lo quenecesitamos una funcin que ingresndole el radio y la altura del cilindro nos de los datos requeridos.Entramos en el editor de archivos M de Matlab y desarrollamos el siguiente programa.

    %************************************************************************************************%%Programa para determinar el volumen y la superficie de un cilindro ingresando%el radio y la altura%***********************************************************************************************%function [volumen,superficie]=volumen_y_superficie_cilindro(radio,altura)volumen=pi*radio.^2*altura;superficie=2*pi*radio*altura+2*pi*radio.^2;

    Luego salvamos el archivo con el nombre decilindro_vol_sup.men el directorioworkde Matlab.Ahora vamos a la linea de comandos y ejecutamos:

    > cilindro_vol_sup(1,1)

    ans =

    3.14159265358979

    >> cilindro_vol_sup(1,3)

    ans =

    9.42477796076938

    >> cilindro_vol_sup(5,8)

    ans =

    6.283185307179587e+002

    >>

    Vemos como el programa calcula lo solicitado.

    Ejemplo 5.3.2:

    Supongamos que deseamos realizar un programa que nos cargue una matriz elemento a elemento. En el

    ejemplo realizado armamos la matrizA tal que22

    kh

    kh)k,h(a

    += donde le indicamos a la funcin la dimensin

    de la matriz veamos el programa:

    %**********************************************************************%%Programa que ingresando como argumentos el numero de filas y el numero%de columnas de la matriz requerida ubica en cada posicion de la misma%lo solicitado.%**********************************************************************%

  • 8/14/2019 Curso Completo Mathlab

    52/91

    Bases de Matlab Alejandro Hayes

    Pgina 51 de 90

    function y=llenamatriz(num_fila,num_columna)for k=1:num_fila

    for h=1:num_columnay(k,h)=h.*k/(h.^2+k.^2);

    endend

    Veamos que obtenemos si vamos a la lnea de comandos y le pedimos una matriz de

    format rat>> A=llenamatriz(10,10)

    A =

    Columns 1 through 5

    1/2 2/5 3/10 4/17 5/262/5 1/2 6/13 2/5 10/29

    3/10 6/13 1/2 12/25 15/344/17 2/5 12/25 1/2 20/415/26 10/29 15/34 20/41 1/26/37 3/10 2/5 6/13 30/617/50 14/53 21/58 28/65 35/748/65 4/17 24/73 2/5 40/899/82 18/85 3/10 36/97 45/10610/101 5/26 30/109 10/29 2/5

    Columns 6 through 10

    6/37 7/50 8/65 9/82 10/1013/10 14/53 4/17 18/85 5/26

    2/5 21/58 24/73 3/10 30/1096/13 28/65 2/5 36/97 10/2930/61 35/74 40/89 45/106 2/51/2 42/85 12/25 6/13 15/3442/85 1/2 56/113 63/130 70/14912/25 56/113 1/2 72/145 20/416/13 63/130 72/145 1/2 90/18115/34 70/149 20/41 90/181 1/2

    >>

    Utilizamos el formato racional para obtener resultados exactos y vemos como se genero la matriz pedida.

    Ejemplo 5.3.3:

    Supongamos ahora que dada una matriz queremos recorrerla y modificar alguno de sus elementos en este casoel programa que se muestra a continuacin.

    %*****************************************************************************************%%Programa que recorre la matriz ingresada y si e elemento hk es negativo%o cero lo reemplaza por un cero de lo contrario lo reemplaza por un uno%****************************************************************************************%function y=recorre_matriz(A)num_fila=length(A(1,:));

  • 8/14/2019 Curso Completo Mathlab

    53/91

    Bases de Matlab Alejandro Hayes

    Pgina 52 de 90

    num_columna=length(A(:,1));for k=1:num_fila

    for h=1:num_columnaif A(k,h)> A=[1 2 -4 7;9 -6 -8 5;2 -1 -3 7;9 -6 -5 -3]

    A =

    1 2 -4 79 -6 -8 52 -1 -3 79 -6 -5 -3

    >> recorre_matriz(A)

    ans =

    1 1 0 11 0 0 11 0 0 11 0 0 0

    Ejemplo 5.3.4:

    Supongamos que queremos construir una funcin que no se encuentra como predeterminada por Matlab por

    ejemplo la funcin1x

    x)x(f

    2 += la hacemos de la siguiente forma:

    %************************************************************************%% Programa que crea una funcion racional%%************************************************************************%function f=func_racional_1(x)f=x./(x.^2+1);

    Veamos que ocurre si vamos a la lnea de comandos y escribimos lo siguiente:

  • 8/14/2019 Curso Completo Mathlab

    54/91

    Bases de Matlab Alejandro Hayes

    Pgina 53 de 90

    >> x=-10:0.1:10;>> f=func_racional(x);>> plot(x,f);>> grid on>>

    Obtenemos el siguiente grafico:

    -10 -8 -6 -4 -2 0 2 4 6 8 10-0.5

    -0.4

    -0.3

    -0.2

    -0.1

    0

    0.1

    0.2

    0.3

    0.4

    0.5

    Figura 23

    Ejemplo 5.3.5:

    Como ultimo ejemplo vamos a realizar un algoritmo que permita calcular la raz aproximada de una ecuacinpoli nmica mediante la aplicacin del mtodo de biseccin.Supongamos que deseamos calcular el valor aproximado de 2 con un error menor que 610 para elloconsideremos la funcin 2x)x(f 2 = en el intervalo [ ]2,1 realicemos el siguiente programa:

    %******************************************************************************************************************************%%Programa que aplica el metodo de Biseccion a una funcion f que hay que ingresarla entre comas 'f'%%******************************************************************************************************************************%function biseccion(f,x_max,x_min,error)%El ciclo se ejecuta mientras x_max-x_min sea mayor que el error deseado%while abs(x_max-x_min)>error%Evaluamos la funcion en x_max%y_x_max=feval(f,x_max);%Evaluamos la funcion en x_min%y_x_min=feval(f,x_min);%Vemos si es cero x_max%if y_x_max==0;

    disp('Una Raiz es:');disp(x_max);break;

    %Vemos si es cero x_min%elseif y_x_min==0;

    disp('Una Raiz es:');

  • 8/14/2019 Curso Completo Mathlab

    55/91

    Bases de Matlab Alejandro Hayes

    Pgina 54 de 90

    disp(x_min);break;

    %Vemos si el intervalo no cumple Bolzano%elseif y_x_max*y_x_min>0;

    disp('Intervalo Incorrecto')break;

    else%Calculamos el punto medio%x_medio=(x_max+x_min)/2;

    %Evaluamos la funcion en el punto medio%y_x_medio=feval(f,x_medio);

    %Vuelvo a probar Bolzano%if y_x_min*y_x_medio

  • 8/14/2019 Curso Completo Mathlab

    56/91

    Bases de Matlab Alejandro Hayes

    Pgina 55 de 90

    nmeros complejos es conveniente no usarestas letras como variables.

    abs(z) Nos da el valor absoluto o modulo del numerocomplejo z

    angle(z) Nos da el argumento del numero complejo zen radianes por defecto

    complex(a,b) Construye un numero complejo a partir de laspartes real e imaginaria a y b respectivamente

    conj(z) Nos da el complejo conjugado de zcplxpair(A) Ordena nmeros complejos en pares

    complejos conjugados.imag(z) Nos devuelve la parte imaginaria del complejo

    zreal(z) Nos devuelve la parte real del numero

    complejo z.isreal(A) Nos devuelve un 1 si todos los elementos de A

    son nmeros reales y un cero si algn numero

    tiene parte imaginaria no nula.unwrap(A) Corrige ngulos de fase si se pasan de

    2 radianes

    Tabla 15

    Ejemplo 6.1

    Dados los siguientes nmeros complejos i35z1 += , i28z2 = se pide:

    a) Calcular sus mdulos y argumentos respectivamente.

    b) Sus partes real e imaginaria.

    c) Los nmeros complejos conjugados de cada uno de ellos.

    d) Graficar tanto a los nmeros dados como a sus complejos conjugados.

    >> z1=-5+3*iz1 =-5.0000 + 3.0000i

    >> z2=8-3*i

    z2 =8.0000 - 3.0000i

    >> M1=abs(z1)M1 =

    5.8310>> A1=angle(z1)A1 =

    2.6012>> M2=abs(z2)M2 =

    8.5440>> A2=angle(z2)

  • 8/14/2019 Curso Completo Mathlab

    57/91

    Bases de Matlab Alejandro Hayes

    Pgina 56 de 90

    A2 =-0.3588

    r1=real(z1)r1 =

    -5>> r2=real(z2)r2 =

    8>> i1=imag(z1)i1 =

    3>> i2=imag(z2)i2 =

    -3>> c1=conj(z1)c1 =-5.0000 - 3.0000i

    >> c2=conj(z2)c2 =

    8.0000 + 3.0000i>> plot(-5,3,'o')>> hold on>> plot(-5,-3,'o')>> plot(8,-3,'o')>> plot(8,3,'o')>> grid on>> axis([-8 -10 -6 6])

    >> xlabel('x')>> ylabel('y')>>

    Hemos obtenido el siguiente grafico:

    -8 -6 -4 -2 0 2 4 6 8 10-6

    -4

    -2

    0

    2

    4

    6

    x

    y

    Figura 24

  • 8/14/2019 Curso Completo Mathlab

    58/91

    Bases de Matlab Alejandro Hayes

    Pgina 57 de 90

    Mediante la utilizacin del comando line(x,y) podemos trazar lneas desde el origen a cada uno de los puntosgraficados visualizando de ese modo los vectores asociados a cada numero complejo z.

    >> x=[0 8];>> y=[0 -3];>> line(x,y)

    >> x=[0 8];>> y=[0 3];>> line(x,y)>> x=[0 -5];>> y=[0 3];>> line(x,y)>> x=[0 -5];>> y=[0 -3];>> line(x,y)

    Obtenemos la siguiente salida

    -8 -6 -4 -2 0 2 4 6 8 10-6

    -4

    -2

    0

    2

    4

    6

    x

    y

    Figura 25

    7.Funciones Matemticas Reales de varias variables reales o camposescalares.

    La manipulacin de funciones de varias variables reales es similar a la de funciones de una variable por lo queprocedemos a dar un ejemplo:

    Ejemplo 7.1:

  • 8/14/2019 Curso Completo Mathlab

    59/91

    Bases de Matlab Alejandro Hayes

    Pgina 58 de 90

    Dadas las funciones

    )yx(sen)y,x(f/RR:f 2 +=

    )yx(222

    e)y,x(g/RR:g+=

    veamos como se evalan con Matlab.

    syms x y real f=sin(x+y); g=exp(-x.^2-y.^2); x=2; y=3; subs(f)

    ans =

    -0.9589

    subs(g)

    ans =

    2.2603e-006

    8. Graficas Tridimensionales (3-D)

    La potencialidad de la graficacin 3D que posee Matlab permite una excelente visualizacin de superficies ymanipulacin de graficas.

    Algunas de los comandos para la graficacin 3D se dan en la siguiente tabla:

    plot3( x ,y,z) Dibuja un conjunto de puntos (x,y,z),donde x,y y z son vectores fila. Puedenser matrices de la misma dimensin , enese caso se hace una grafica por cadatripleta de filas y sobre los mismos ejes.Para valores complejos se ignora a la

    parte imaginaria.plot3( x,y,z,S) dem anterior pero con las opciones

    definidas en S.plot3(x1,y1,z1,S1,x2,y2,z2,S2....) Combina sobre los mismos ejes, los

    grficos definidos para las tripletas(xi,yi,zi,Si).

    [x,y] = m eshgrid(x,y) Transforma el campo de definicin dadode las variables x e y de la funcin arepresentar z=f(x,y) en argumentosmatriciales utilizables por el comando

    surf(x,y,z,C) Representa el grafico de superficie de lafuncin z=f x con los colores

  • 8/14/2019 Curso Completo Mathlab

    60/91

    Bases de Matlab Alejandro Hayes

    Pgina 59 de 90

    especificados en C.surfc(x,y,z,C) Representa el grafico de superficie de la

    funcin z=f(x,y) junto con el grafico decontorno correspondiente con los coloresespecificados en C. (curvas de nivel

    proyectadas sobre el plano xy).

    surfl(x,y,z,C) Representa el grafico de superficie de lafuncin z=f(x,y) realizando un dibujo consombreado.

    mesh( x ,y,z,c) Representa el grafico de malla de lafuncin z=f(x,y), dibujando las lneas de larejilla que componen la malla con loscolores especificados en C.

    meshc( x ,y,z,c) Representa el grafico de malla de lafuncin z=f(x,y), con el grafico decontorno correspondiente.

    meshz ( x ,y,z,c) Representa el grafico de malla de lafuncin z=f(x,y) con una especie decortina o teln en la parte inferior.

    contour( z) Dibuja el grafico de contorno (curvas denivel) para la matriz z. El numero delneas de contorno a utilizar se eligeautomticamente.

    contour(z,n) Dibuja el grafico de contorno (curvas denivel ) para la matriz z usando n lneas decontorno.

    contou r( x,y,z,n) Dibuja el grafico de contorno (curvas denivel) para la matriz z usando en los ejesx e y el escalado definido por los vectores

    x e y , n lneas.contour3(z) Superficie de nivelcontour3(z,n) Superficie de nivelcontour3(x,y,z,n) Superficie de nivel

    pcolor(x,y,z) Dibuja un grafico de contorno (curvas denivel) para la matriz (x,y,z) utilizando unarepresentacin basada en densidades decolores. Suele denominarse grafico dedensidad.

    Tabla 16

    Veamos algunos ejemplos de funciones de 2 y 3 variables:

    Ejemplo 8.1 :

    Dada la curva definida en forma parametrica por:

    20t0

    tz

    tcos5y

    tsen2x

    2

    =

    =

    =

  • 8/14/2019 Curso Completo Mathlab

    61/91

    Bases de Matlab Alejandro Hayes

    Pgina 60 de 90

    Efectuar una grafica en R3de la misma

    t=0:pi/50:20*pi; x=2*sin(t); y=5*cos(t); z=t.^2; plot3(x,y,z)

    Obtenemos la siguiente salida

    -2

    -1

    0

    1

    2

    -5

    0

    5

    0

    1000

    2000

    3000

    4000

    Figura 26

    Ejemplo 8.2:

    Dado el campo escalar22

    22

    yx

    )yx(sen)y,x(f

    +

    += efectuar una grafica de la superficie en R3

    xa=-2*pi:0.05:2*pi; ya=-2*pi:0.05:2*pi; [x,y]=meshgrid(xa,ya); f=sin(x.^2+y.^2)./(x.^2+y.^2); mesh(x,y,f)

    Obtenemos la siguiente salida:

  • 8/14/2019 Curso Completo Mathlab

    62/91

    Bases de Matlab Alejandro Hayes

    Pgina 61 de 90

    Figura 27Ejemplo 8.3:

    Dado el campo escalar ysenxsen)y,x(f = se desea graficarla utilizando el comando surf.

    xa=-2*pi:0.2:2*pi; ya=-2*pi:0.2:2*pi; [x,y]=meshgrid(xa,ya); f=sin(x).*sin(y); surf(x,y,f)

    Figura 28

    Ejemplo 8.4 :

    Para la funcin del ejemplo 8.3 se desea graficar las 20 primeras curvas de nivel .

  • 8/14/2019 Curso Completo Mathlab

    63/91

    Bases de Matlab Alejandro Hayes

    Pgina 62 de 90

    xa=-2*pi:0.2:2*pi; ya=-2*pi:0.2:2*pi; [x,y]=meshgrid(xa,ya); f=sin(x).*sin(y); contour(f,20)

    10 20 30 40 50 60

    10

    20

    30

    40

    50

    60

    Figura 29

    9.Funciones Matemticas Complejas de variable Compleja.

    Sabemos de la teora de la Variable compleja que una funcin de variable compleja es una transformacin del

    plano xy al plano uv donde u y v son campos escalares de x y de y esto es:

    ),(),()( yxivyxuzf +=

    Lo que nos interesa es poder visualizar como se transforma una curva descripta en forma Parametrica por:

    =

    =

    )(

    )(:

    tyy

    txx con RDt en el plano xy en otra dada por

    =

    =

    )(

    )(:

    tvv

    tuu con RDt en el plano uv.

    Reemplazando en la expresin de )(zf nos queda:

    ))(),(())(),(())()(( tytxvitytxutyitxf +=+

    )()()( tvitutf +=

    Ejemplo 9.1:

    Dada la funcin compleja de variable compleja 1z)z(f/CC:f 2 += nos interesa saber sus componentesreal e imaginaria y saber en que se transforma la regin:

    { }10y10,5x/C)y,x(R ==

  • 8/14/2019 Curso Completo Mathlab

    64/91

    Bases de Matlab Alejandro Hayes

    Pgina 63 de 90

    syms x y real>> z=x+i*y;>> f=z.^ 2+1;>> u=expand(real(f))

    u =x^2-y^2+1>> v=expand(imag(f))v =2*x*y

    >> x=5;>> y=-10:0.1:10;>> axis([0 6 -12 12])>> u=x.^2-y.^2;>> v=2*x.*y;>> subplot(1,2,1)>> plot(x,y)

    >> line([5,5],[-10,10])>> axis([0 6 -12 12])>> grid on>> xlabel('x')>> ylabel('y')>> subplot(1,2,2)>> plot(u,v)>> xlabel('u')>> ylabel('v')>> grid on

    Obtenemos el siguiente grafico

    0 2 4 6

    -10

    -5

    0

    5

    10

    x

    y

    -100 -50 0 50-100

    -80

    -60

    -40

    -20

    0

    20

    40

    60

    80

    100

    u

    v

    Figura 30

    El grafico muestra los puntos en los que se transformo la regin propuesta.

  • 8/14/2019 Curso Completo Mathlab

    65/91

    Bases de Matlab Alejandro Hayes

    Pgina 64 de 90

    En muchos casos nos interesa visualizar la superficie correspondiente al modulo y a la fase de la funcin devariable compleja en cuestin. El siguiente ejemplo ilustra este caso.

    Ejemplo 9.2

    Para la funcin del ejemplo 4.1 se desea hallar y visualizar los campos escalares dados por:

    )z(f)y,x( = ))z(farg()y,x( =

    >> xa=-10:0.1:10;>> ya=-10:0.1:10;>> [x,y]=meshgrid(xa,ya);>> z=x+i*y;>> f=z.^2+1;>> M=abs(f);>> A=angle(f);>> subplot(1,2,1)>> meshc(x,y,M)

    >> axis([-12 12 -12 12 0 260])>> xlabel('x')>> ylabel('y')>> zlabel('|f|')>> subplot(1,2,2)>> meshc(x,y,A)>> axis([-12 12 -12 12 -4 6])>> xlabel('x')>> ylabel('y')>> zlabel('fase')

    Obtenemos la siguiente salida

    -10

    0

    10

    -10

    0

    10

    0

    50

    100

    150

    200

    250

    xy

    |f|

    -10

    0

    10

    -10

    0

    10

    -5

    0

    5

    xy

    Arg

    Figura 31

  • 8/14/2019 Curso Completo Mathlab

    66/91

    Bases de Matlab Alejandro Hayes

    Pgina 65 de 90

    9.1 Una aplicacin a la ingeniera

    Ejemplo 9.1.3

    Dado el circuito de la figura y sabiendo que se trabaja en un rango de frecuencias entre 0 y 20 khz se pide:

    a) Graficar el modulo de la impedancia, la resistencia y la reactancia de entrada como funcin de la pulsacinangular, as como la del ngulo de fase .

    b) Graficar el lugar geomtrico en el plano complejo de los valores de la impedancia con la pulsacin angularcomo parmetro.

    Figura 32

    Los valores de los componentes son: RL=100 , GC=0.02 S, L=1mHy, C=1F.

    >> w=0:1.25e5;>> z1=100+i*w*(1e-3);>> y1=0.02+i*w*(1e-6);>> z=z1+1./y1;>> Z=abs(z);>> T=angle(z);>> R=real(z);>> X=imag(z);>> plot(w,Z)>> hold on>> plot(w,R,r)>> plot(w,X,g)>> grid on

    >> xlabel(w)>>ylabel(|z| R X)>> figure(2)>> plot(w,T)>> T=(180/pi)*T;>> plot(w,T)>> grid on>> xlabel(w)>> ylabel(Fase)>>plot(R,X)>> grid on>> axis([0 200 20 120])

  • 8/14/2019 Curso Completo Mathlab

    67/91

    Bases de Matlab Alejandro Hayes

    Pgina 66 de 90

    >> xlabel(R)>> ylabel(X)

    Obtuvimos las siguientes salidas

    0 2 4 6 8 10 12 14

    x 104

    -20

    0

    20

    40

    60

    80

    100

    120

    140

    160

    w

    |z|

    R

    X

    Impedancia

    Resistencia

    Reactancia

    Figura 33

    0 2 4 6 8 10 12 14

    x 104

    -10

    0

    10

    20

    30

    40

    50

    w

    Fase

    Figura 34

    Respecto al lugar geomtrico de la impedancia se obtuvo el siguiente grafico.

  • 8/14/2019 Curso Completo Mathlab

    68/91

    Bases de Matlab Alejandro Hayes

    Pgina 67 de 90

    0 20 40 60 80 100 120 140 160 180 200-20

    0

    20

    40

    60

    80

    100

    120

    R

    X

    Figura 35

    10. Diferenciacin e integracin con M atlab

    10.1.Derivacin e integracin de funciones escalares y camposescalares.

    Matlab cuenta con varios comandos que permiten hallar la derivada e integral tanto en forma simblica comoen forma numrica. La tabla 3 detalla algunas de esas funciones.

    diff(f) Determina la derivada de f respecto de lavariable independiente en funciones de unasola variable siempre y cuando las variablesde f estn definidas en forma simblica. En elcaso de que f sea un vector de datos lafuncin devuelve un nuevo vector donde cadacomponente es f(n)-f(n-1)

    diff(f,x) Determina la derivada de f respecto de x.diff(f,x,n) Determina la derivada de orden n en x de f.gradient(f) Devuelve una matriz cuyas componentes son

    las componentes del vector gradiente de f

    calculadas en forma numrica.gradient(f,h) Devuelve una matriz cuyas componentes son

    las componentes del vector gradiente de fcalculadas en forma numrica con unespaciamiento dado por h.

    int(f) Calcula la integral indefinida de f respecto desu variable definida en forma simblica.

    Int(f,x) Calcula la integral indefinida de f respecto desu variable x definida en forma simblica.

    Int(f,a,b) Calcula la integral definida de f entre a y b

  • 8/14/2019 Curso Completo Mathlab

    69/91

    Bases de Matlab Alejandro Hayes

    Pgina 68 de 90

    int(f,x,a,b) Calcula la integral definida de f respecto de xentre a y b

    Tabla 18

    Ejemplo 10.1.1

    Dada la funcin )yx(sen)yx()y,x(f 22 ++= se desea hallar las derivadas parciales respecto de x y de y.

    >> syms x y real>> f=(x+y).*sin(x.^2+y.^2);>> fx=diff(f,x)fx =sin(x^2+y^2)+2*(x+y)*cos(x^2+y^2)*x

    >> fy=diff(f,y)fy =sin(x^2+y^2)+2*(x+y)*cos(x^2+y^2)*y

    >>

    Ejemplo 10.1.2

    Dada la funcin 2x xsene)x(f2= derivarla numricamente y graficarla en forma aproximada y a su derivada.

    >> x=-10:0.01:10;>> f=exp(-x.^2).*sin(10*x.^2);>> df=diff(f);>> fd=df/eps;>> t=0:10/(length(fd)-1):10;>> subplot(2,1,1)

    >> plot(x,f)>> grid on>> xlabel(x)>> ylabel(f)>> subplot(2,1,2)>> plot(t,fd,r)>> grid on>> xlabel(x)>> ylabel(f)>>

    Se obtiene la siguiente salida

  • 8/14/2019 Curso Completo Mathlab

    70/91

    Bases de Matlab Alejandro Hayes

    Pgina 69 de 90

    -10 -8 -6 -4 -2 0 2 4 6 8 10-1

    -0.5

    0

    0.5

    1

    x

    f

    0 1 2 3 4 5 6 7 8 9 10-4

    -2

    0

    2

    4x 10

    14

    x

    f

    Figura 36

    Ejemplo 10.1.3

    Dada la siguiente funcin 7yx4yx)y,x(f 3223 ++= se desea hallar la integral doble de la misma en el recinto[ ] [ ]1,0x1,0 .

    >> syms x y real>> f=x^3*y^2+4*x^2*y^3+7;>> I=int(int(f,x,0,1),y,0,1)

    I =89/12>>

    Ejemplo 10.1.5

    Para la funcin del ejemplo 5.1.3 hallar el vector gradiente asociado a la misma y graficar el modulo delmismo.

    >> xa=-5:0.1:5;>> ya=-5:0.1:5;>> [x y]=meshgrid(xa,ya);>> f=x.^3.*y.^2+4*x.^2.*y.^3+7;

    >> [fx,fy]=gradient(f);>> M=sqrt(fx.^2+fy.^2);>> surf(x,y,M)>> xlabel('x')>> ylabel('y')>> zlabel('|grad(f)|')>> axis([-6 6 -6 6 -100 1200])

    Obtuvimos la siguiente figura

  • 8/14/2019 Curso Completo Mathlab

    71/91

    Bases de Matlab Alejandro Hayes

    Pgina 70 de 90

    -6

    -4-2

    02

    46

    -5

    0

    5

    0

    200

    400

    600

    800

    1000

    1200

    xy

    |grad(f)|

    Figura 37

    10.2. Campos vectoriales, generalizacin de los conceptos vistos

    Para cerrar esta seccin vamos a presentar algunos comandos que permiten trabajar con campos vectoriales,de hecho vimos algo de funciones de variable compleja pero no vistas como campos vectoriales, y en elejemplo 5.1.5 calculamos el vector gradiente de un campo escalar pero solo graficamos su modulo.Muchas veces se desea visualizar lneas de campo, lneas equipotenciales, as como calcular la matriz Jacobianade alguna transformacin. La tabla 4 lista algunas de los comandos correspondientes.

    quiver(u,v) Muestra los vectores con componentes u y v,es decir permite visualizar las lneas decampo.

    quiver3(u,v) Muestra los vectores con componentes u yv,w es decir permite visualizar las lneas decampo 3-D.

    compass(x,y) Dibuja vectores con coordenadas x e y quesalen del origen.

    feather(x,y) Dibuja vectores cuyas componentes son x e ypero tomando el origen en cada punto x

    Tabla 19

    Ejemplo 10.2.1

    Dado el campo vectorial )ysene,ycose()y,x(f xx = deseamos graficar las lneas de campo

    >> xa=0:0.1:4;>> ya=0:0.1:10;>> [x y]=meshgrid(xa,ya);>> u=exp(-x).*cos(y);

  • 8/14/2019 Curso Completo Mathlab

    72/91

    Bases de Matlab Alejandro Hayes

    Pgina 71 de 90

    >> v=exp(-x).*sin(y);>> quiver(u,v)>> grid on

    Obtuvimos la siguiente salida

    -5 0 5 10 15 20 25 30 35 40 450

    20

    40

    60

    80

    100

    120

    Figura 38

    10.3. Una aplicacin a la ingeniera integradora

    Se desea conocer la distribucin de potencial en el siguiente problema de contorno

    Figura 39

    El problema puede Modelizarse a travs de la ecuacin de Laplace : 0)y,x(v2 = debido a que se trata de unproblema Bidimensional la ecuacin anterior equivale a:

    0y

    )y,x(v

    x

    )y,x(v2

    2

    2

    2

    =

    +

    Como se ve del anlisis del problema las condiciones de contorno son : v(0,y) =v(1,y)= v(x,1)=0 ; v(x,0)=10 .La resolucin del problema lleva a la siguiente solucin analtica.

  • 8/14/2019 Curso Completo Mathlab

    73/91

    Bases de Matlab Alejandro Hayes

    Pgina 72 de 90

    =

    =0n

    x)1n2(sen)1y()1n2(sh)1n2(sh)1n2(

    20)y,x(v

    En el primer curso de Matlab aprendimos a realizar programas propios para aplicaciones especificas. En estehemos realizado un programa que grafica la solucin analtica en forma aproximada para n=10. Luego calcula

    el campo