curso completo mathlab
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