Matlab Para Matemáticas en Ingenierías
181
0
0
Texto completo
(2) Subido por:. Libros de Ingeniería Química y más. https://www.facebook.com/pages/InterfaseIQ/146073555478947?ref=bookmarks. Si te gusta este libro y tienes la posibilidad, cómpralo para apoyar al autor..
(3)
(4)
(5) Lucía Agud Albesa Mª Leonor Pla Ferrando. Matlab para matemáticas en ingenierías. EDITORIAL UNIVERSITAT POLITÈCNICA DE VALÈNCIA.
(6) Los contenidos de esta publicación han sido revisados por el Departamento de Matemática Aplicada de la Universitat Politécnica de València. Colección Académica. Para referenciar esta publicación utilice la siguiente cita: AGUD ALBESA, L; PLA FERRANDO, Mª L (2015). Matlab para matemáticas en ingenierías. Valencia: Universitat Politècnica de València. Primera edición, 2015 (versión impresa) Primera edición, 2015 (versión electrónica). © Lucía Agud Albesa Mª Leonor Pla Ferrando © de la presente edición: Editorial Universitat Politècnica de València distribución: Telf.: 963 877 012 / www.lalibreria.upv.es / Ref.: 6270_01_01_01. ISBN: 978-84-9048-421-0 (versión impresa) ISBN: 978-84-9048-422-7 (versión electrónica). Queda prohibida la reproducción, distribución, comercialización, transformación y, en general, cualquier otra forma de explotación, por cualquier procedimiento, de la totalidad o de cualquier parte de esta obra sin autorización expresa y por escrito de los autores..
(7) Para todas las personas que nos han ofrecido su apoyo día a día..
(8)
(9) Contenido 1 Capítulo1EntornodetrabajoMatlab................................................................5 1.1 Introducción.................................................................................................5 1.2 ComandosoinstruccionesenMatlab..........................................................7 1.3 Variablesyformatos....................................................................................8 1.4 Variablessimbólicasynuméricas................................................................9 1.4.1 Salidamatemáticaeleganteporpantalla.............................................12 1.4.2 Generarvectoresovariables................................................................12 1.4.3 GenerarMatrices..................................................................................13. 1.5 Funciones...................................................................................................13 1.5.1 Crearfunciones.....................................................................................13. 2 Capítulo2GráficosconMatlab........................................................................19 2.1 Introducción...............................................................................................19 2.2 Funcionesdeunavariable,y=f(x)..............................................................20 2.2.1 AlgunosComandospararepresentar...................................................20 2.2.2 Subventanas..........................................................................................26. 2.3 Representacióndefuncionessimbólicas...................................................27 2.3.1 Representacióndefuncionescreadascomofichero.m.......................31. 2.4 Funcionesatrozos:definiciónyrepresentación.......................................32 2.4.1 Funciónatrozosdesdefichero.m........................................................32 2.4.2 Funciónatrozosvectorizada................................................................33. 2.5 Otroscomandosparadibujarcurvasenelplanoycurvasparamétricas: >>ezplot.............................................................................................................35 2.5.1 Curvasenparamétricas.......................................................................37. 2.6 Curvasplanasencoordenadaspolares......................................................38. I.
(10) 2.6.1 Otroscomandosparacurvasencoordenadaspolares.........................39 2.6.2 Cambiosdecoordenadasrectangularesapolares...............................40. 2.7 Rellenoderegionesdelplano....................................................................40 2.8 Funcionesdevariasvariables.Superficies.................................................43 2.8.1 Representacióndefuncionesen3D:z=f(x,y).Comandosmásusados.43 2.8.2 Curvasdeniveldeunasuperficie.........................................................44 2.8.3 Curvasenelespacio..............................................................................45 2.8.4 Superficiesderevolución......................................................................46 2.8.5 SuperficiesParamétricas.......................................................................51 2.8.6 Cambiosdecoordenadasacilíndricasyesféricasyviceversa..............54. 2.9 Ejercicios....................................................................................................54 3 Capítulo3Operacionesbásicasconfunciones..................................................57 3.1 Polinomios..................................................................................................57 3.1.1 Polinomiointroducidocomovector....................................................57 3.1.2 Polinomiointroducidocomofunción...................................................58. 3.2 Dominiosdefuncioneseinecuaciones......................................................61 3.2.1 Comando>>solve..................................................................................61 3.2.2 Comando>>fzero(resoluciónnuméricaoaproximadadeecuaciones).62 3.2.3 Inecuacionesconvaloresabsolutos......................................................64. 3.3 Simplificar,factorizar,expandirydemásoperacionesalgebraicas...........65 3.4 Cálculodelímites.......................................................................................67 3.4.1 Límiteslaterales....................................................................................67 3.4.2 Asíntotas...............................................................................................68 3.4.3 Límitesdefuncionesatrozos................................................................72. 3.5 NúmerosComplejos...................................................................................74 3.6 Derivadas....................................................................................................79. IV.
(11) 3.6.1 Funcionesde1variable........................................................................80 3.6.2 Funcionesdevariasvariables...............................................................81. 3.7 Integración.................................................................................................81 3.7.1 Integralesimpropias.............................................................................82 3.7.2 Cálculodeáreas....................................................................................84. 3.8 Ejercicios....................................................................................................85 4 Capítulo4Funcionesdevariasvariables.Ecuacionesdiferenciales.................89 4.1 Derivacióndefuncionesdevariasvariables..............................................89 4.2 Vectorgradiente........................................................................................91 4.3 MatrizJacobianayJacobiano.....................................................................91 4.4 MatrizHessianayHessiano.......................................................................92 4.5 Puntoscríticosdefuncionesdevariasvariables.......................................95 4.6 Integracióndefuncionesdevariasvariables.............................................99 4.7 Ecuacionesdiferenciales..........................................................................103 4.7.1 SistemasdeEDO’s...............................................................................105 4.7.2 MétodosnuméricosparalaresolucióndeEDO’s...............................106. 4.8 Ejercicios..................................................................................................107 5 Capítulo5IntroducciónalaEstadísticaDescriptiva........................................111 5.1 Introducción.............................................................................................111 5.2 Estadísticosyrepresentación...................................................................114 5.2.1 Variablesestadísticas..........................................................................114. 5.3 Distribucióndefrecuencias.....................................................................115 5.3.1 Representacionesgráficas..................................................................116 5.3.2 EjemplosconMatlabdedistribucióndefrecuenciasydiagramas.....117. 5.4 Parámetrosestadísticosdeposiciónydispersión...................................126 5.4.1 Parámetrosestadísticosdeposición..................................................126. III.
(12) 5.4.2 Medidasdedispersión........................................................................130. 5.5 Ejercicios..................................................................................................135 6 Capítulo6IntroducciónalÁlgebramatricial..........................................139 6.1 IntroducciónalasmatricesenMatlab.....................................................139 6.1.1 Generarmatrices.Operacionesconmatrices.....................................139 6.1.2 Matricesespeciales.............................................................................140 6.1.3 Manipulacióndematrices,submatrices.............................................142 6.1.4 Operacionesconmatrices...................................................................145 6.1.5 OtrasfuncionesimplementadasenMatlab.......................................146. 6.2 Clasificaciónyresolucióndesistemasdeecuacioneslineales................151 6.2.1 Clasificacióndesistemasdeecuaciones.............................................151 6.2.2 Resolucióndesistemasusandolafunción:>>inv(A)oAͲ1................154 6.2.3 Resolucióndesistemasusandodivisiónmatricialalaizquierda:A\b154 6.2.4 Resolucióndesistemasusandolafunción:>>solve...........................155 6.2.5 ResolucióndesistemasusandolaRegladeCramer...........................157 6.2.6 Resolucióndesistemasdeecuacionesdependientesdeparámetros162. 6.3 Ajustesdedatos(mínimoscuadrados)....................................................164 6.4 Ejercicios..................................................................................................169 7 Referenciasbibliográficas................................................................................173. IV.
(13) Capítulo 1 Entorno de trabajo Matlab 1. 1.1. Introducción. Este libro consta de dos partes, una dedicada al Álgebra: matrices, determinantes, sistemas de ecuaciones, etc; y otra enfocada al análisis matemático, donde se trabajarán funciones, expresiones algebraicas, ecuaciones, derivadas e integrales. El paquete matemático que se emplea es Matlab, cuyo nombre responde a las siglas de Matrix Laboratory. Al abrir este paquete matemático se observa que la pantalla se subdivide en varias ventanas que se detallan a continuación: -. La ventana Command Window (ventana central) es donde se introducirán los comandos, variables e instrucciones a realizar. Es decir, la ventana donde se trabaja. La ventana Current Folder (izquierda superior) indica el contenido del directorio en el que se está trabajando, y que salvo cambio del mismo, es donde se irá guardando el archivo o las funciones que se hayan creado. La ventana de Workspace (derecha superior) es la ventana donde se indican las variables definidas en la sesión de trabajo o ya guardadas y cargadas de otras sesiones. Para borrar alguna de ellas, se usará el comando >>clear nombredevariable o se selecciona la variable en esa ventana y se suprime.. 5.
(14) Matlab para Matemáticas en ingenierías. -. La ventana de Command History muestra todos los comandos y órdenes que se han introducido, permitiendo recuperarlos o bien arrastrándolos a la Command Window (no ejecuta), o bien haciendo doble click sobre ellos (ejecuta).. Figura 1.1 Pantalla de Matlab y ventanas. Al ejecutar el comando para representar una función, Matlab abre una nueva ventana de Figure, la cual se puede minimizar y mantener toda la sesión mientras se va actualizando, o bien cerrar. Con el icono del folio o New Script de la barra de herramientas (primero de los iconos de la misma), también se abrirá una nueva ventana donde Matlab permite programar o crear funciones en ficheros con extensión .m. La sesión de trabajo que se está realizando se puede guardar. Para ello, cuando se quiere comenzar a guardar se escribe (sin espacios en blanco en el nombre del fichero): >>diary nombrefichero.txt Y desde ahí hasta que se teclee >>diary off, guarda con el nombre indicado la sesión realizada. Si en cualquier momento se quiere volver a activar dicha sesión, bastará con poner de nuevo >>diary on. Por defecto, se guardará en la ruta que esté especificada en Current Directory. En caso de querer guardar sólo las variables creadas en la sesión, bastará realizarlo con el comando >>save, o bien en File >>Save Workspace. Para recuperarlas en una nueva sesión de trabajo se cargan con el comando >>load y el nombre especificado cuando han sido guardadas.. 6.
(15) Entorno de trabajo Matlab. 1.2. Comandos o instrucciones en Matlab. Los comandos en Matlab se escriben en minúscula y sus argumentos entre paréntesis. Su escritura es en inglés y se ejecutan en cuanto se presiona la tecla enter. Cuando hayan dudas de los argumentos de alguna instrucción, bastará con escribir en la ventana de comandos >>help nombredelcomando, como por ejemplo: >>help gcd (y saldrá la ayuda de Matlab, en este caso para el cálculo del máximo común divisor). Para recuperar alguno de los comandos introducidos, hay dos formas. Una, como ya se ha comentado, desde la ventana deCommand History;la otra, con las teclas de desplazamiento. Las flechas de arriba y abajo, Ĺ, Ļ recuperan los comandos. Mientras que las de izquierda y derecha, ĸ, ĺ, sirven para desplazarse dentro de la línea de edición para poder modificar las expresiones. Para interrumpir el funcionamiento de una instrucción de MATLAB se pulsan las teclas Control y C a la vez y después enter. A veces, esta operación se deberá repetir. La forma de salir de Matlab es o bien cerrar la ventana, o bien con los comandos >>exit, o >>quit. Y como siempre dándole al enter al final de cualquier instrucción para que así se ejecute. Si no se quiere que la ejecución de un comando salga por pantalla, aunque sí que sea ejecutado, bastará con poner después del comando un ;. Al introducir una orden en la ventana Command Window que no quepa toda entera en una misma línea de instrucción, se puede terminar con … y darle a enter. Matlab entiende que no ha terminado la instrucción y sin aparecer el prompt del sistema, >>, permite seguir escribiendo en la línea siguiente, ejecutando luego la instrucción al darle a enter: >> A=[1 2 3 4 5 6 7 8 9;- 1 -2 -3 -4 -5 -6 -7 9 2;zeros(1,9);3*ones(1,9);... 9:-1:1] A= 1. 2. 3. 4. 5. 6. 7. 8. 9. -1 -2. -3 -4 -5. -6 -7. 9. 2. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3. 3. 3. 3. 3. 3. 3. 3. 3. 9. 8. 7. 6. 5. 4. 3. 2. 1. 7.
(16) Matlab para Matemáticas en ingenierías. Si en una línea de instrucción se introduce el símbolo %, cambia el color del texto y automáticamente Matlab entiende que lo que se escribe, hasta pulsar enter, es un comentario y no debe ser ejecutado.. 1.3. Variables y formatos. Cuando se ejecuta un comando sin dar nombre a la variable que se obtiene como resultado, Matlab lo asigna a una variable que él tiene en el sistema llamada ans. Nunca se podrá llamar a ninguna variable con este nombre, por tenerlo ya el programa asignado. En cada ejecución sin variable de salida, Matlab irá guardando en ella ese resultado, machacando el resultado anterior. Para guardar en una variable la operación realizada, se asignará con el = >>a=gcd(3,12) a= 3 Automáticamente en la ventana del Workspace aparecerá la variable a e indicará su tipo y dimensión. Para asignar a este nombre de variable otro valor, simplemente o se borra y vuelve a definir o se reasigna con otro valor. Matlab es sensible a mayúsculas y minúsculas; por lo tanto a y A son dos variables distintas. No se puede nombrar a una variable cuyo nombre ya esté siendo utilizado por Matlab o bien en una función o comando, o bien para sus variables internas. Variables ya asignadas por Matlab son, entre otras: i ó j ........................................................ para la unidad imaginaria i=ξെ1 pi ......................................................... para el valor de ߨ ans ......................................................... para las variables de salida que no tengan asignación previa eps ....................................................... como valor es 2.2204e-016.También puede utilizarse como comando (mirar >>help eps en caso de querer más información). Matlab almacena internamente los números en formato de coma flotante normalizado; es decir, notación científica tal que, la parte entera es 0 y la primera cifra decimal es distinta de cero (0.0003 sería 0.3*e03). Generalmente, por pantalla muestra el resultado con el formato short, 4 dígitos decimales. Si interesa cambiar el formato, se consigue con el comando >>format tipodeformato. 8.
(17) Entorno de trabajo Matlab. Los formatos que existen en Matlab, y que usaremos generalmente, son: FORMAT SHORT. son 5 dígitos, contando parte entera y decimal.. FORMAT LONG. son 5 dígitos o 7. FORMAT SHORTE. son 5 dígitos en coma flotante normalizada. FORMAT LONGE. son 15 dígitos o 7 en coma flotante normalizada. FORMAT SHORTG. elige el mejor formato con 5 dígitos de salida (adecuado si trabajas en un vector con números de diferentes longitudes). FORMAT +. saca por pantalla los signos, +, - y espacios en blanco. FORMAT RAT. pone el valor en forma racional.. Si se quiere obtener más información sobre los formatos de Matlab, el programa la proporciona escribiendo >> help format. 1.4. Variables simbólicas y numéricas. Cuando en Matlab se quiere trabajar con una variable como tal, ha de definirse como simbólica. En caso contrario Matlab pediría valores para esa variable y daría un mensaje de error. Si se quiere introducir una función de forma que la variable x no tome valores concretos hasta cuando se requiera, existe el comando >>sym, o se declara la variable como simbólica de cualquiera de las dos formas siguientes: >>x=sym(‘x’), o bien >>syms x De la segunda forma, es posible declarar todas las variables simbólicas en una misma sentencia, separadas por espacios en blanco. Dar un valor concreto a esta variable para que deje de ser simbólica, y así conocer el valor numérico del resultado, se realiza con el comando >>double. Ejemplo 1.1 Evaluar la función f(x)=x2-3x+2 en x=2, ʌ/4. >>syms x >>f=x^2-3*x+2; >>subs(f,2) ans= 0. 9.
(18) Matlab para Matemáticas en ingenierías. >>subs(f,pi/4) ans = pi^2/16 - (3*pi)/4 + 2 >>double(ans) ans = 0.2607. Nota: dependiendo de la versión de Matlab, esta última operación de sustitución puede hacerla de forma directa. Por ejemplo, en la versión R2011a; sin embargo en la versión R2013b hay que hacerlo como se ha indicado en el Ejemplo 1.1. El comando >>subs siempre evalúa funciones de tipo simbólico y el resultado que devuelve es considerado también simbólico. Si se define la función de otra forma, por ejemplo con el comando >>inline, la instrucción >>subs no funciona; debe evaluarse con su nombre directamente o con el comando >>feval. Ejemplo 1.2 Define la función f(x)=x2-3x+2 con inline y evalúala en x=2,0. >> clear x >> g=inline('x^2-3*x+2') g= Inline function: g(x) = x^2-3*x+2 >> g(2) ans = 0 >>feval(g,0) ans= 0. El comando inline será explicado con detalle más adelante. Fracciones de decimales no exactos o valores irracionales Es importante destacar qué ocurre cuando se trabaja con fracciones que no dan lugar a decimales exactos, por ejemplo fracciones del tipo 1/3, o radicales como ξ͵ǡetc. Matlab siempre guarda en memoria los datos en coma flotante, y por lo tanto redondea dichos números. Al efectuar operaciones con ellos, el resultado final puede verse afec10.
(19) Entorno de trabajo Matlab. tado de error. Una forma sencilla de solucionarlo es definir estos valores como simbólicos: >>a=sym(1/3). Ejemplo 1.3 Realizar la siguiente operación 1-. a) b). ା ି . y comparar los resultados:. de forma numérica, definiendo como simbólico los números.. Es evidente, sin más que realizar los cálculos, que esta operación debe dar 0: >> 1-(1/3+1/2)/(1-1/6) ans = 1.1102e-16. Sin embargo, Matlab no devuelve el valor 0 aunque sí un valor muy pequeño. Esto se debe al trabajo con decimales y su redondeo. La forma de solucionarlo sería: >> a=sym(1/3);b=sym(1/6) b= 1/6 >> 1-(a+1/2)/(1-b) ans = 0. Otro problema de este estilo que se observa es, por ejemplo, si se quiere calcular algo tan sencillo como sin(pi), cuyo valor es 0. Matlab devuelve un valor muy pequeño, que se puede considerar como 0, pero no lo es. Por lo tanto, a la hora de resolver ecuaciones no detectará estos valores (una solución a esto se verá cuando se expliquen las funciones y el comando para resolver ecuaciones >>solve): >>sin(pi) ans = 1.2246e-16. En este caso, la opción para que evalúe bien vuelve a ser, definir este valor ʌ como simbólico: >>syms pi,sin(pi) ans= 0. 11.
(20) Matlab para Matemáticas en ingenierías. 1.4.1 Salida matemática elegante por pantalla Matlab escribe por pantalla las expresiones matemáticas tal cual deben ser introducidas: >> syms x, >> f = x^3-6*x^2+11*x-6 Sin embargo, mediante el comando >>pretty(expression) las muestra de la forma que uno escribe la expresión matemática: >> pretty(f) 3 2 x - 6 x + 11 x – 6. Otro ejemplo sería: >> syms x, y=1/(x+1) y= 1/(x + 1) >> pretty(y) 1 ----x+1. 1.4.2 Generar vectores o variables Para generar una variable que tome valores en un rango elegido existen varias formas. Entre ellas cabe destacar las siguientes: >>x=0:.2:12; .................................. calcula un vector con 0 ݔ ͳʹ donde los valores van de 0.2 en 0.2. >>x=linspace(0,12,200); ................. calcula un vector con 0 ݔ ͳʹ con 200 valores equiespaciados. >>w=logspace(-1,3); ...................... calcula 50 valores espaciados logarítmicamente entre 10-1 y 103.. Nota: En los comandos linspace y logspace, el tercer argumento de entrada, correspondiente al número de puntos, es opcional. Los valores por defecto son 100 y 50, respectivamente. Asimismo, si no se especifica la distancia entre valores, el paso por defecto es 1. Es importante destacar que las variables así definidas son vectores y, por ello, las operaciones algebraicas que las involucren deben realizarse con un punto delante: ./, .*, .^. De esta forma, Matlab realiza los cálculos elemento a elemento, todo esto se explica con más detalle en el Capítulo 6. 12.
(21) Entorno de trabajo Matlab. 1.4.3 Generar Matrices Las matrices en Matlab se definen entre corchetes. Los elementos de cada fila pueden ir separados mediante comas o espacios en blanco. Las columnas van indicadas por punto y coma, ;. Los elementos se pueden introducir de forma manual, con comandos o bien indicando el paso que lleva de un elemento al siguiente: >> A=[1:2:9; 0 -2 4 6 -1;ones(1,5)] A= 1 3 5 7 9 0 -2 4 6 -1 1 1 1 1 1 Para saber más sobre matrices y matrices implementadas ya por Matlab, consultar la parte de Álgebra.. 1.5. Funciones. Matlab posee muchas funciones implementadas. Para saber cuáles basta teclear >>helpwin y desde ahí acudir a matlab\elfun, donde mostrará las funciones que tiene definidas. Entre las más habituales destacan: . Funciones seno y coseno: sin(x), cos(x),sind(x),cosd(x) Funciones seno y coseno hiperbólico: sinh(x), cosh(x) Función tangente: tan(x) Funciones arcoseno, arcocoseno y arcotangente: asin(x), acos(x), atan(x) Función exponencial, logaritmo neperiano y logaritmo decimal: exp(x), log(x), log10(x) Función valor absoluto: abs(x) Funciones hiperbólicas: sinh(x),cosh(x),asinh(x), etc.. Nota: Matlab trabaja, salvo definición distinta de la variable, con valores numéricos. Concretamente, para las funciones trigonométricas, si no se declaran previamente como variables simbólicas, entiende que son valores numéricos y, por lo tanto, expresados en radianes. En caso de querer trabajar con valores expresados en grados, deben usarse las funciones: >>sind, >>cosd. 1.5.1 Crear funciones Para crear funciones en Matlab existen varias formas. Aquí sólo se va a indicar cómo definirlas y evaluarlas. Para su representación gráfica consultar el tema de gráficos.. 13.
(22) Matlab para Matemáticas en ingenierías. Se van a considerar dos tipos de funciones que engloban a todas, las simbólicas y las funciones a trozos. Existen varias posibilidades de definir funciones simbólicas. A. Definición de función simbólica usando Anonymus Esta definición se realiza mediante el símbolo @. Cuando las funciones son básicas de Matlab no hace falta indicar el argumento si este es x: >>fun=@atan, ................................ Y para dibujarla >> fplot(fun,[-2,2]) >>fun2=@sin, ................................ Y para dibujarla >> fplot(fun2,[-3,3]). Sin embargo, si el argumento resulta ser composición de funciones o la función posee varios argumentos, entonces debe indicarse al principio, justo al lado de @, tal y como se muestra en el siguiente ejemplo >> y=@(x) x^2+1;. Para evaluarla se puede hacer directamente asignándole un nombre: >> y(1) ans = 2 >> y(0) ans = 1. O también con el comando >>subs >> subs(y,0) ans = 1. B.. Definición de funciones simbólicas mediante el comando >>inline. Los argumentos se introducen entre comillas simples. De esta forma se hallan los valores de la función sin más que calcular su imagen directamente o con el comando >>feval. Se detalla en el ejemplo siguiente. 14.
(23) Entorno de trabajo Matlab. Ejemplo 1.4 Definir dos funciones cualesquiera con el comando >>inline y evaluarlas de forma distinta: a) >> f=inline('x^2-3*x+2') f= Inline function: f(x) = x^2-3*x+2 >> f(2) ans = 0 b) >> y=inline('x^2+1') y= Inline function: y(x) = x^2+1 >> y(1) ans = 2 >> feval(y,1) ans = 2. Nota: Se recuerda que para evaluar funciones definidas mediante >>inline no se puede usar el comando >>subs. C.. Definición de funciones simbólicas definiendo la variable como simbólica. Para evaluar se utiliza el comando >>subs. >> x=sym('x');p=2*x-5; >> subs(p,1) ans = -3. D.- Definición de función simbólica entre comillas simples En este caso no hace falta declarar la variable. De nuevo es evaluada con el comando >>subs >> y='x^2+1';. 15.
(24) Matlab para Matemáticas en ingenierías. >> subs(y,0) ans = 1. Para las funciones a trozos se indican aquí la forma vectorizada y mediante archivo .m; es decir, esta segunda desde el Editor de Matlab. Se ilustra mediante un ejemplo. Ejemplo 1.5 Introducir, de varias formas la siguiente función a trozos: ݔ൏ͳ ݔଶǡ ݂ሺݔሻ ൌ ൝ ͳǡͳ ݔ൏ ͵ ݔ ͳǡ ݔ͵ 1. Desde fichero .m Esta definición debe hacerse desde la ventana del Editor de Matlab, icono de NewScript o más directamente en NewĺFunction. Se crea con ello un archivo .m que, si no se indica nada, se guarda con el nombre que se le haya puesto a la función. Es importante que si posteriormente se modifica, se tenga cuidado de no cambiarle el nombre, ya que la llamada para ser ejecutada se hace por el nombre del fichero. Para evaluarla basta referirse a ella con su nombre. Si se realiza para la función del Ejemplo 1.5, quedaría function y=funcion2(x) if x<1 y=x^2; elseif 1<=x&&x<3 y=1; else y=x+1; end. y para evaluarla >>funcion2(2) % para evaluarla ans= 1. 16.
(25) Entorno de trabajo Matlab. 2. Vectorizada x. Para introducir y evaluar una función así definida es conveniente usar el comando >>inline:. >>f=inline('(x.^2).*(x<1)+1.*((1<=x)&(x<=3))+(x+1).*(3<x)') f= Inline function: f(x) = (x.^2).*(x<1)+1.*((1<=x)&(x<=3))+(x+1).*(3<x) >> f(3) ans = 1. x. También puede definirse mediante Anonymus, en este caso hay que evaluarla, de nuevo, llamándola por el nombre que tiene asignado:. >> f=@(x)(x.^2).*(x<1)+1.*((1<=x)&(x<=3))+(x+1).*(3<x) f= @(x)(x.^2).*(x<1)+1.*((1<=x)&(x<=3))+(x+1).*(3<x) >> f(-3) ans = 9 >> f(4) ans = 5 >> f(2) ans = 1. Para representarlas gráficamente, dirigirse al Capítulo 2, donde se indica cómo dibujar cada una de las posibles definiciones.. 17.
(26)
(27) Capítulo 2 Gráficos con Matlab 2. 2.1. Introducción. Este capítulo se dedica a mostrar cómo dibujar funciones con Matlab, tanto combinaciones de las funciones ya existentes, como funciones creadas por el usuario, o funciones a trozos. Si se quiere conocer con más detalle algo de los comandos para gráficos, tipos de argumentos que admiten o cualquier característica suya, basta introducir el comando: >> help nombredelcomando. y automáticamente, Matlab proporciona una ayuda sobre dicha instrucción. Otra opción es teclear >>helpwin para acceder a los temas de la ayuda de Matlab, o darle al icono de ayuda en la barra de herramientas. Con el comando >>help graph2d, Matlab da ayuda sobre gráficos en dos dimensiones y con >>help graph3d proporciona ayuda para dibujar superficies.. Ͳ. Guardar y cargar figuras: puede hacerse directamente desde la ventana de la gráfica, en el menú de Herramientas: File>Save. Matlab permite guardarlas con diversas extensiones (por defecto las guarda con extensión .fig). Para recuperar una figura, basta con teclear: >> openfig('nombre') 19.
(28) Matlab para Matemáticas en ingenierías. Otra posibilidad es en la ventana de Current Directory, haciendo doble click sobre el archivo en el que se tiene la figura. Ͳ. Para borrar una figura, o bien se cierra la ventana que abre Matlab por defecto al plotearla, o bien se teclea al comando >>clf, que borrará la última figura creada.. Aunque se van a detallar en este capítulo todos los comandos más importantes relacionados con gráficos -necesarios para muchas versiones anteriores de Matlab como Matlab R2011a-, cabe destacar que en la versión de Matlab R2013b aparecen directamente como iconos en la pestaña plots, y se activan sin más que seleccionar la variable o función a dibujar, ofreciendo ayuda si se pone el cursor encima de ellos:. Figura 2.1 Ayuda de Matlab. 2.2. Funciones de una variable, y=f(x). 2.2.1 Algunos Comandos para representar Los comandos más usado son los indicados a continuación: Comando >>plot(x,y) Comando >>fplot Comando >>ezplot D. Comando >> plot(x,y) Es uno de los comandos más sencillos, >>plot(a,b). Si, por ejemplo, se quiere dibujar la gráfica de la función y=sin(x), primero se ha de crear una tabla de valores para x, lo que puede llevarse a cabo de varias formas; o bien >> x=0:pi/100:2*pi;. 20.
(29) Gráficos con Matlab. donde se origina un vector que toma valores de [0,2ʌ] y la distancia entre los puntos es de ʌ/100; es decir, un total de 200 puntos en los que la función tomará valores. O bien, el mismo resultado puede conseguirse con el comando: >>x=linspace(0,2*pi,200);. El siguiente paso es darle valores a la variable a representar: >>y=sin(x). Y para dibujar la figura, se introduce la orden: >>plot(x,y). Ejemplo 2.1. Figura 2.2 Representación de y=sinx , y=cosx. 21.
(30) Matlab para Matemáticas en ingenierías. En la figura 2.2 se han representado en la misma ventana dos funciones gracias al comando >>hold on. Pueden seguir añadiéndose gráficas en la misma figura, y para representar una gráfica posterior en una ventana aparte indicarse con el comando >>hold off. Otra forma de dibujar varias funciones en una misma ventana gráfica, es ponerlas todas en el propio comando >>plot >> plot(x,sin(x),'r-',x, cos(x),'b.'). Las opciones del trazado del comando >>plot pueden consultarse con >>help plot, aunque la siguiente tabla proporciona un resumen de ellas: Tabla 2.1 Tabla de símbolos, trazado y color entorno gráfico SÍMBOLO. COLOR. SÍMBOLO. TIPO DE LÍNEA. SÍMBOLO. TÍPO DE LÍNEA. y. amarillo. .. puntos. s. cuadrados. m. magenta. o. círculos. d. diamantes. c. cian. x. equis. ^. Triángulo (bajo). r. rojo. +. mases. v. triángulo (arriba). g. verde. *. asteriscos. <. Triángulo (izquierda). b. azul. -. >. Triángulo (derecha). w. blanco. :. p. pentagrama. k. negro. -.. línea continua línea de puntos guiont línea de guiones. h. hexagrama. -. Nota: En caso de utilizar algún símbolo para representar puntos de la gráfica, debe especificarse a continuación el tipo de trazado, para forzar a que una dichos puntos mediante una línea. Ejemplo 2.2 Representación de vectores de datos. Representar los pares de valores [t,v] de la siguiente tabla, donde la velocidad viene dada por (v) frente al tiempo (t) v t. 1.1 1.65. 1.2 1.80. Introducir primero la matriz de datos >> t=[1.65,1.80,1.95,2.25,3];. 22. 1.3 1.95. 1.5 2.25. 2 3.00.
(31) Gráficos con Matlab. >> v=[1.1,1.2,1.3,1.5,2]; >> plot(t,v); % representa una línea continua. 2 1.9 1.8 1.7 1.6 1.5 1.4 1.3 1.2 1.1 1.6. 1.8. 2. 2.2. 2.4. 2.6. 2.8. 3. Figura 2.3 Representación [t, v] línea continua. >> plot(t,v,’bo’); %Si se quiere indicar cómo representar el tipo de puntos >> plot(t,v,'bo-') % Si se quiere indicar trazo de puntos y de línea 2. 2. 1.9. 1.9. 1.8. 1.8. 1.7. 1.7 1.6. 1.6. 1.5. 1.5. 1.4. 1.4. 1.3. 1.3 1.2. 1.2 1.1 1.6. 1.1 1.6. 1.8. 2. 2.2. 2.4. 2.6. 2.8. 1.8. 2. 2.2. 2.4. 2.6. 2.8. 3. 3. Figura 2.4 Representación [t, v] puntos y puntos con línea. E. Comando >>fplot La gráfica del seno dibujada en el Ejemplo 2.1 también podría representarse mediante el comando >>fplot con la siguiente orden: >>fplot(‘sin(x)’,[0,2*pi]). La función >>fplot puede dibujar varias gráficas a la vez, indicando en el segundo argumento el dominio de la variable x y de la y mediante una caja. Puede indicarse el trazado, siendo conveniente que en el caso de función a trozos o con asíntotas, se le exija un trazado discontinuo. Por defecto une mediante un trazo continuo.. 23.
(32) Matlab para Matemáticas en ingenierías. Respondería al siguiente comando: >>fplot(‘[funcion1,funcion2]’,[xmin xmax ymin ymax],’trazadofuncion1,trazadofuncion2’). Los trazados se pueden modificar desde la ventana de gráficos en el menú Edit/Figure Properties/…, botón derecho del ratón y seleccionando la función que se quiere modificar. O con el último icono de la barra de herramientas en la ventana de la figura: Show Plot Tools and Dock Figure Nota: hay que tener cuidado a la hora de dibujar funciones que realicen operaciones con la variable x definida mediante un >>linspace o mediante un vector, ya que al evaluarlas debe realizarse coordenada a coordenada. Por lo tanto, salvo en las sumas y restas que lo hace por defecto, en las demás operaciones debe especificarse: ./, .*, o bien .^ dependiendo de la operación a realizar. Ejes: En cuanto a los ejes, además de poder cambiarlos desde la misma ventana de la gráfica como se verá en la siguiente sección, también pueden ser establecidos desde el principio. Para ello, como se detallaa en el Ejemplo 2.1 hay varias formas. Una de ellas es el comando >>axis([xmin xmax ymin ymax]). Si se desea un escalado logarítmico en los ejes, basta utilizar estos comandos: >>semilogx, >>semilogy, (eje x en logarítmico y eje y en lineal, o viceversa respectivamente) >>loglog, (escalado logarítmico para ambos ejes) >>polar, para coordenadas polares (que serán descritas más adelante) F. Comando >>ezplot A la hora de representar gráficas, en general, es mucho más sencillo utilizar el comando >>ezplot. Este comando dibuja también funciones definidas de forma implícita. Las variables deben ser simbólicas o ir escritas entre comillas simples. Además dibuja perfectamente los saltos de las funciones, o las asíntotas, sin unirlas con un trazo como ocurre con el comando >>fplot (si en este último comando no se exige trazo discontinuo). . Ejemplo 2.3 Representar la gráfica de la función ࢟ ൌ en el intervalo [-5,3]. ࢞. 24.
(33) Gráficos con Matlab. Se puede observar, en las Figuras 2.5 y 2.6, la diferencia de gráficos que se obtienen al representar la función 1/x en el intervalo cerrado [-5,3], usando ezplot, fplot y fplot forzando, en esta última, el trazo discontinuo: >> syms x, ezplot(1/x,[-5 3]) 1/x 2.5 2 1.5 1 0.5 0 -0.5 -1 -1.5 -2 -2.5 -5. -4. -3. -2. -1. 0. 1. 2. 3. Figura 2.5 Representación usando >>ezplot. Mientras que, con el comando >>fplot: >> fplot('1./x',[-5 3]). >> fplot('1./x',[-5 3],'k.'). 150. 150. 100. 100. 50. 50. 0. 0. -50. -50. -100. -100. -150 -5. -4. -3. -2. -1. 0. 1. 2. 3. -150 -5. -4. -3. -2. -1. 0. 1. 2. 3. Figura 2.6 Representación usando >>fplot, en la segunda gráfica con trazo discontinuo. Este comando será desarrollado con mayor amplitud en secciones posteriores. Captura de coordenadas: Si una vez representada la gráfica se busca obtener las coordenadas de algún punto de la gráfica, Matlab lo permite con la instrucción >>ginput En ese momento, aparece el cursor sobre la gráfica y basta hacer click con el ratón en cada punto del que se quiere obtener su posición. Pulsando Enter se vuelve a la ventana de comandos, donde aparecen las coordenadas de los puntos seleccionados.. 25.
(34) Matlab para Matemáticas en ingenierías. Borrado de formato: para borrar el formato de una gráfica, o bien se cierra la ventana correspondiente a esa gráfica (si no se indica lo contrario, Matlab abre una nueva ventana para cada gráfica), o bien se escribe el comando: >> clf reset 2.2.2 Subventanas Cuando en una misma figura se desea visualizar varias ventanas con sus gráficas correspondientes, se tiene el comando >> subplot. Los argumentos de este comando son, el número de filas y columnas de ventanas y el lugar que estas ocuparán. Ejemplo 2.4. Si una vez que Matlab ha creado la figura, interesa modificarla, no hay más que situarse en esa ventana y darle al icono de más a la derecha de la barra de herramientas:. Figura 2.7 Subventanas gráficas del Ejemplo 2.4. 26.
(35) Gráficos con Matlab. Al accionar este icono se abrirá una nueva ventana donde modificar cada una de las gráficas, clicando sobre ellas. Permite modificar su color, sus ejes, y muchas más propiedades descritas en la subventana inferior, seleccionado el recuadro Ticks.. Figura 2.8 Opciones para modificar cada una de las gráficas. Para nombrar los ejes cartesianos, si no se desea hacer directamente desde la ventana mostrada en la Figura 2.8, existen también los comandos >>xlabel(‘etiqueta’) e >>ylabel(‘etiqueta’), para los ejes OX y OY, respectivamente.. 2.3. Representación de funciones simbólicas. Para definir funciones o variables simbólicas hay diferentes modos de hacerlo, algunos ya explicados en el Capítulo 1; es conveniente recordar que, para declarar la variable x como simbólica se hará >>syms x o bien, con >>x=sym(‘x’). A. Representación de función simbólica definida usando Anonymus Cuando las funciones a representar son básicas de Matlab, a la hora de definirlas, no hace falta indicar el argumento si este es x. Los comandos para representar las funciones así definidas son tanto >>ezplot, como >>fplot. Ambos trabajan en simbólico.. 27.
(36) Matlab para Matemáticas en ingenierías. Ejemplo 2.5 Definir y representar las funciones y=arctg(x), y =sen(x), una con cada comando.. >>fun=@atan, ezplot(fun,[-2 2]), >>fun2=@sin, fplot(fun2,[-3,3]) 1. 1.5. 0.8. 1. 0.6 0.4. 0.5 0.2 0. 0. -0.2. -0.5. -0.4 -0.6. -1 -0.8. -1.5 -2. -1.5. -1. -0.5. 0. 0.5. 1. 1.5. -1 -3. 2. Figura 2.9 Representación de f(x)= arctg(x). -2. -1. 0. 1. 2. 3. Figura 2.10 Representación de f(x)= sin(x). Sin embargo, si se trabaja con composiciones de funciones o funciones con varios argumentos, entonces el o los argumentos deben indicarse al principio: >>fun3=@(x)sin(1./x), ezplot(fun3,[.01 0.1]) sin(1/x). 1. 0.5. 0. -0.5. -1 0.01. 0.02. 0.03. 0.04. 0.05. 0.06. 0.07. 0.08. 0.09. 0.1. x. Figura 2.11 Representación de f(x)= sin(1/x). B. Representación de función simbólica definida mediante el comando >>inline Las funciones así definidas se dibujan, también, con el comando: >>fplot(f,[a,b]) donde [a,b] es el intervalo de las abscisas en el que la función toma valores y f el nombre asignado a la variable inline.. 28.
(37) Gráficos con Matlab. C. Representación de función simbólica definida directamente En el caso de introducirla de forma directa, es decir definiendo la variable como simbólica, o definiendo entre comillas simples directamente la función, también puede ser dibujada con el comando >>fplot: >> y='sin(x)' y= sin(x) >> fplot(y,[0,pi]) 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0. 0. 0.5. 1. 1.5. 2. 2.5. 3. Figura 2.12 Función y=’sin(x)’ con >>fplot. Nota: De todas formas, en general, para dibujar funciones simbólicas -tanto definidas vía inline, vía Anonymus, o vía variable simbólica o función entre comillas simples-, es recomendable por su sencillez, el comando: >>ezplot(función, intervalo). El argumento intervalo es opcional, tomando por defecto el intervalo [0,2ʌ] si no se le indica. Además este comando ya le pone título a la gráfica con el nombre de la función dibujada. Ejemplo 2.6 Dibujar la función y=sin(x) definiéndola de varias formas >> f=@sin(x),ezplot(f) >> f=inline('sin(x)');ezplot(f) >> syms x, y=sin(x); ezplot(y) >> y='sin(x)';ezplot(y) Todas estas instrucciones devuelven la figura:. 29.
(38) Matlab para Matemáticas en ingenierías. sin(x). 1. 0.5. 0. -0.5. -1 -6. -4. -2. 0 x. 2. 4. 6. Figura 2.13 Representación del Ejemplo 2.5. Las figuras creadas en Matlab, se guardan y salvan sin más que acceder a File/Save as en el menú de la ventana de Figure, con la extensión que más interese.. Figura 2.14 Imagen de cómo guardar una figura. 30.
(39) Gráficos con Matlab. 2.3.1 Representación de funciones creadas como fichero .m Si se definen las funciones desde la ventana del Editor de Matlab, se crea un fichero .m quedando la función almacenada como fichero y no como variable (casos anteriores). Para llamar a ese archivo desde cualquier sesión se ejecuta el comando Open, o bien se hace doble click en su nombre. Este archivo aparecerá en la ventana de Current Directory una vez haya sido cargado. En este último caso, ya no hay que declarar la variable como simbólica al ser introducida como argumento de entrada:. Figura 2.15 Introducción de una función con el Editor. Para representarla se le referencia con el nombre puesto al archivo creado (debe coincidir el nombre de la función con el nombre del archivo). Matlab pone este por defecto pero hay que prestar atención si se efectúan modificaciones para no cambiarle el nombre. Esta llamada se hace como argumento carácter, es decir, ‘nombre del archivo’:. Figura 2.16 Cómo dibujar una función .m. 31.
(40) Matlab para Matemáticas en ingenierías. 2.4. Funciones a trozos: definición y representación. Las funciones definidas a trozos pueden ser definidas de diversas formas. En este apartado se destacan dos formas distintas, usando fichero .m o función a trozos vectorizada. 2.4.1 Función a trozos desde fichero .m Si se quiere definir y representar, por ejemplo, la función siguiente: ݔ݅ݏ൏ ͳ ݔଶǡ ݂ሺݔሻ ൌ ൝ͳǡ ͳݔ൏͵ ݔ ͳǡ ݔ͵ se ha de utilizar un poco de programación, ya que una función a trozos no es más que una sentencia de la forma: if, elseif, else, end. Esta definición debe hacerse desde la ventana del Editor de Matlab, icono de NewScript, o más directamente en New/Function. Se crea con ello un archivo .m, que se guarda con el nombre puesto a la función. Para evaluarla basta referirse a ella con su nombre. Ejemplo 2.7 Definir la función a trozos anterior y evaluarla en x=4, 3, 1, 2,-2. En el Editor se introduce la siguiente función: function y=funcion2(x) if x<1 y=x^2; elseif 1<=x&&x<3 y=1; else y=x+1; end Para evaluarla con una sola sentencia: >> valores=[funcion2(4) funcion2(3) funcion2(1) funcion2(2) funcion2(-2)] valores = 5. 32. 4. 1. 1. 4.
(41) Gráficos con Matlab. A la hora de dibujarla se hará uso del comando >>fplot. Como los nombres de las funciones son una cadena carácter, cuando esta es llamada con >>fplot debe ponerse entre comillas simples. Nota: con fplot es importante indicar, como argumento, el tipo de la línea de la gráfica; por ejemplo puntos, para que dibuje los saltos que puedan producirse en la misma. Por defecto los uniría con una línea continua. >> fplot('funcion2',[-5,10],'.'),axis([-5 10 0 10]) 10 9 8 7 6 5 4 3 2 1 0 -5. 0. 5. 10. Figura 2.17 Representación de función a trozos con >>fplot. 2.4.2 Función a trozos vectorizada Directamente en la ventana Command Window, se introducen los distintos trozos de la función mediante operadores lógicos. De cara a dibujarla, hay varias posibilidades: Ͳ Ͳ. definir previamente la variable a evaluar como un vector de muchas componentes, por ejemplo con el comando >>linspace. dibujarla directamente con fplot, sin definirla, siempre que indiquemos trazo discontinuo para que no una los posibles saltos mediante una línea.. Ejemplo 2.8 Definir y representar la función a trozos: ݔଶǡ ݔ݅ݏ൏ ͳ ݂ሺݔሻ ൌ ൝ͳǡ ͳݔ൏͵ ݔ ͳǡ ݔ͵. Para definirla vectorizada: >> x=linspace(-10,10,100); >> y=(x.^2).*(x<1)+1.*((1<=x)&(x<=3))+(x+1).*(3<x); Para representarla >> plot(x,y,'.'),grid on, title('Función definida a trozos'),axis([-5 5 0 10]). 33.
(42) Matlab para Matemáticas en ingenierías. Función definida a trozos 10 9 8 7 6 5 4 3 2 1 0 -5. -4. -3. -2. -1. 0. 1. 2. 3. 4. 5. Figura 2.18 Representación usando >>linspace. Otra forma de representarla: >> fplot('x^2.*(x<1)+1.*((1<=x)&(x<3))+(x+1).*(x>3)',[-3 5],'b.') 9 8 7 6 5 4 3 2 1 0 -3. -2. -1. 0. 1. 2. 3. 4. 5. Figura 2.19 Representación directa de función a trozos con trazo discontinuo. Para evaluar una función vectorizada, es conveniente definirla primero con el comando >>inline (o con Anonymus), y ya entonces pasar a evaluarla con su nombre:. 34.
(43) Gráficos con Matlab. >>f=inline('(x.^2).*(x<1)+1.*((1<=x)&(x<=3))+(x+1).*(3<x)') f= Inline function: f(x) = (x.^2).*(x<1)+1.*((1<=x)&(x<=3))+(x+1).*(3<x) >> f(3) ans = 1. O de otra forma, mediante Anonymus: >> f=@(x)(x.^2).*(x<1)+1.*((1<=x)&(x<=3))+(x+1).*(3<x) f= @(x)(x.^2).*(x<1)+1.*((1<=x)&(x<=3))+(x+1).*(3<x) >> salida=[ f(-3) f(4) f(2)] salida = 9. 5. 1. Nota: x Para dibujar los saltos de una función, o una función que vaya a presentar asíntotas, es recomendable usar:. x. 2.5. a) O el comando >>plot definiendo la variable x con un vector y no con un >>linspace, b) O el comando >>ezplot (más detallado a continuación). Para dibujar una función a trozos se recomienda, o el comando >>plot, o bien el >>fplot pero con trazo discontinuo (puntos o asteriscos o similares, no trazado de líneas). El comando >>ezplot, une con trazado continuo los saltos no siendo esto lo deseado.. Otros comandos para dibujar curvas en el plano y curvas paramétricas: >>ezplot. El comando más fácil de usar para dibujar curvas planas definidas por una fórmula matemática (no por un conjunto de valores), es el comando >>ezplot(f) donde: -. f es una cadena de caracteres conteniendo la expresión de una función y=f(x), dibuja la función y=f(x) para x en el intervalo [-2ʌ,2ʌ]. 35.
(44) Matlab para Matemáticas en ingenierías. Directamente Matlab abrirá una ventana gráfica como primera representación de la figura; en ella, editando la figura y dándole al icono de “Show Plot Tools and Dock Figure” pueden modificarse ejes, texto y más propiedades del gráfico. >>ezplot(f,[a,b]), lo mismo que el comando anterior para x variando en el intervalo [a,b] Ejemplo 2.9 Representar las funciones y. 2 sin 2x
(45) cos 3x
(46) , y. sin 2x
(47) .. >> ezplot('2*sin(x/2)*cos(3*x)'), >> ezplot('2*sin(x/2)*cos(3*x)',[0,pi/2]) 2 sin(x/2) cos(3 x). 2 sin(x/2) cos(3 x). 2. 0.2. 1.5 0 1 -0.2 0.5 0. -0.4. -0.5. -0.6. -1. -0.8. -1.5 -1 -2 -6. -4. -2. 0. 2. 4. 6. 0. 0.5. 1. 1.5. Figura 2.20 Representación con >>ezplot(f) y con >>ezplot (f,[a,b]). Nota: los comandos >>ezplot(f), >>ezplot(f,[a,b]), donde f es una expresión de (x,y), dibujan la curva implícitamente definida por f(x,y)=0, para x e y variando en el intervalo [-2ʌ,2ʌ] en el primer caso; y para x e y variando en el intervalo [a,b], en el segundo caso. Ejemplo 2.10 Representar la función definida en forma implícita f(x,y)=x2y-1. >> ezplot('x^2*y-1') x 2 y-1 = 0 6. 4. y. 2. 0. -2. -4. -6 -6. -4. -2. 0 x. 2. 4. 6. 2. Figura 2.21 Representación de f(x,y)=x y-1. 36.
(48) Gráficos con Matlab. 2.5.1 Curvas en paramétricas Sea una curva en paramétricas r(t) = (x(t), y(t)), con t [ אa, b]. Una primera forma de dibujarla sería usando las órdenes: >>ezplot(x,y), >>ezplot(x,y,[a,b]) donde - x e y son dos cadenas de caracteres conteniendo las expresiones de dos funciones x(t) e y(t). - dibuja la curva de ecuaciones paramétricas x=x(t) y=y(t) para t en el intervalo [0,2ʌ], en el primer caso y para t ࣅ[a,b], en el segundo. Ejemplo 2.11 Usando los comandos arriba indicados, representar las curvas >> ezplot('sin(3*t) ', 'cos(3*t)'), ezplot('sin(3*t)','cos(t)') x = sin(3 t), y = cos(t) 1. x = sin(3 t), y = cos(3 t) 1. 0.8. 0.8. 0.6. 0.6. 0.4. 0.4. 0.2. y. y. 0.2 0. 0 -0.2. -0.2 -0.4. -0.4. -0.6. -0.6 -0.8. -0.8. -1. -0.5. 0 x. 0.5. 1. -1. -0.8. -0.6. -0.4. Figura 2.22 Representaciones del ejemplo. -0.2. 0 x. 0.2. 0.4. 0.6. 0.8. 1. Otra posibilidad que ofrece Matlab es la siguiente. Para dibujar la gráfica de la curva ൜. ݔሺݐሻ ൌ ሺ ݐଶ െ ͳሻȀሺ ݐଶ ͳሻ ݕሺݐሻ ൌ ʹሺ ݐଶ െ ͳሻȀሺ ݐଶ ͳሻ. con í5 t 5, en primer lugar se generan los valores de t en el intervalo indicado: >>t=linspace(-5,5,1000); Se puede dibujar de dos formas distintas (como ocurre con todas las gráficas): >>plot((t.*(t.^2-1))./(t.^2+1),(2*(t.^2-1))./(t.^2+1)). 37.
(49) Matlab para Matemáticas en ingenierías. 2. 1.5. 1. 0.5. 0. -0.5. -1. -1.5. -2 -5. -4. -3. -2. -1. 0. 1. 2. 3. 4. 5. Figura 2.23 Primera representación con >>plot. Y otra forma de hacerlo es utilizar el comando >> comet(x(t),y(t)): >>comet((t.*(t.^2-1))./(t.^2+1),(2*(t.^2-1))./(t.^2+1)) Los dos comandos producen el mismo resultado. Sin embargo, la forma de ejecución es diferente. Minimizando un poco la ventana principal de Matlab, se consigue ver simultáneamente la Command Window y la ventana de gráficas. Al ejecutar este comando, se observa que en la ventana de la figura aparece un circulito, el cometa, que va dibujando la curva. La velocidad de ejecución depende del número de puntos que se hayan generado con el comando >>linspace.. 2.6. Curvas planas en coordenadas polares. Una curva en coordenadas polares es la imagen de la función r=h(ș), donde ș [ אș1, ș2]. Un punto de la curva en polares (r0, ș0) tiene distancia al origen r0, y el ángulo que forma el vector de posición del punto con el semieje positivo horizontal, medido en sentido positivo, es ș0. Por lo tanto, la relación entre las coordenadas polares y las coordenadas cartesianas o rectangulares viene dada por: ൜. ݔൌ ݏܿݎሺߠሻ ݕൌ ݊݁ݏݎሺߠሻ. Para dibujar una curva en polares con Matlab se utiliza el comando >>polar. Los valores del ángulo son generados mediante el comando >>linspace.. 38.
(50) Gráficos con Matlab. Ejemplo 2.12 Dibujar la curva cardioide r = 2 í 4cos(ș), con íʌ ș ʌ . >> theta=linspace(-pi,pi,100);r=2-4*cos(theta);polar(theta,r) 90. 6. 120. 60 4. 150. 30 2. 180. 0. 330. 210. 300. 240 270. Figura 2.24 Representación en coordenadas polares. 2.6.1 Otros comandos para curvas en coordenadas polares >>ezpolar(f), >> ezpolar(f,[a,b]) donde: -. f es una cadena de caracteres conteniendo la expresión de una función f(ș) dibuja la curva definida en coordenadas polares por r= f(ș) para ș variando en el intervalo [0,2ʌ], en el primer caso y en el intervalo [a,b], en el segundo.. Ejemplo 2.13 a) Dibujar la curva rosácea de 5 hojas en polares r=cos (5T). b) Dibujar la curva en polares r=sin(2ߠሻ ሺ͵ߠሻ, en el intervalo [0,ʌ]. >> ezpolar('cos(5*theta)',[0,2*pi]), ezpolar('sin(2*ߠ)*cos(3*ߠ)',[0,pi]) 90. 0.6. 90. a). 1. 1. 120. 0.6. 0.6. 150. 30. 30. 0.4. 0.4. 0.2. 0.2. 0.2. 60 0.8. 150. 0.4. 1. 120. 60 0.8. 0.8. 180 0. 0. 180. 0. -0.2 -0.4 -0.6. 330. 210. 210. 330. -0.8. 240. 300. 240. -1. 270 -1. -0.8. -0.6. -0.4. -0.2. 0. 0.2. 0.4. 0.6. 0.8. 1. 300 270 r = sin(2 t) cos(3 t). r = cos(5 T). Figura 2.25 Representaciones de curvas en polares. 39.
(51) Matlab para Matemáticas en ingenierías. 2.6.2 Cambios de coordenadas rectangulares a polares Cuando se desea cambiar las coordenadas en las que viene expresada una función, existen comandos que lo hallan de forma directa. Estos son: >> [TH,R] = cart2pol(X,Y) ……………… pasa de coordenadas cartesianas a polares. El ángulo lo devuelve en radianes. Nota: Estos comandos sólo sirven para hallar puntos, es decir, los argumentos no pueden ser variables simbólicas. Para calcular ecuaciones en coordenadas cualesquiera, ha de hacer uno mismo las cuentas; o bien hacer cambio de variable y simplificar con el comando >>simplify. Ejemplo 2.14 Obtener en polares la ecuación de la circunferencia (x-1)2+y2=4. >> syms x y r theta, f=(x-1)^2+y^2-4, F=simplify(subs(f,{x,y},[r*cos(theta),r*sin(theta)])) f= (x - 1)^2 + y^2 - 4 F= r^2 - 2*cos(theta)*r – 3. Por lo tanto, la ecuación en polares de la circunferencia quedaría: r2 - 2cos(theta) r = 3. Nota: Si la función se define vía inline, en vez del comando >>subs, bastará con evaluar la función en (rcos(theta),rsin(theta)).. 2.7. Relleno de regiones del plano. En ocasiones, puede interesar sombrear regiones del plano o áreas encerradas entre curvas. Esto puede realizarse en Matlab mediante el comando >>fill. Si las curvas se cortan, previamente han de hallarse los puntos de corte, y posteriormente, para rellenar, recorrer las curvas desde sus puntos de corte de izquierda a derecha. Esto último lo hace el comando >>fliplr. Si las curvas a rellenar son polígonos es más sencillo. Basta indicar los valores de las x y de las y de los puntos de corte y rellenar con >>fill. Todo esto va a ser ilustrado con ejemplos para entender mejor el comando y sus argumentos. Primero, es necesario saber el punto de corte de las gráficas, el cual se hallará con el comando >>solve (este comando se desarrolla ampliamente en el siguiente capítulo).. 40.
(52) Gráficos con Matlab. Ejemplo 2.15 Dibujar las curvas y=x2, y=2-x2 y rellenar el área encerrada entre ambas curvas. >>% para encontrar los puntos de corte >> solve(x^2==2-x^2,x) ans = 1 -1 Aunque el dominio de representación será x[-2,2], la región a pintar se encuentra entre los puntos de corte, x[-1,1]. La representación de las curvas, la región pintada y los comandos utilizados, se pueden consultar en la Figura 2.26 (el tercer argumento ‘c’ en >>fill indica el color, cyan en este caso) >> subplot(1,3,1);. >> subplot(1,3,2);. >> subplot(1,3,3);. >>x=linspace(-2,2,50);. >>x=linspace(-2,2,50);. >>x=linspace(-2,2,50);. >>plot(x,x.^2,'b-',x,2x.^2,'b--'). >>plot(x,x.^2,'b-',x,2-x.^2,'b--'). >>plot(x,x.^2,'b-',x,2-x.^2,'b--'). >>hold on;. >> hold on;. >> xn=linspace(-1,1,10);. >> xn=linspace(-1,1,50);. >>plot([xn;xn],[xn.^2;2xn.^2],'k--'). >>fill([xn,fliplr(xn)],[xn.^2,flipl r(2-xn.^2)],'c'). Figura 2.26 Representaciones de regiones sombreadas con >>fill y >>fliplr. 41.
(53) Matlab para Matemáticas en ingenierías. En el caso de representación de polígonos se puede proceder de dos modos diferentes, como se muestra en los Ejemplos 2.16 y 2.17. Ejemplo 2.16 Dibujar el triángulo cuyos vértices son (0,0), (0,1) y (1,1). Rellenar el área encerrada por este triángulo. >> x=[0,1,0];y=[0,1,1]; % Vértices del triángulo recorridos de izquierda a derecha >> fill(x,y,'b'), axis square 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0. 0.2. 0.4. 0.6. 0.8. 1. Figura 2.27 Representación de relleno de un polígono usando >>fill. Ejemplo 2.17 Dada la recta y=x, dibujar el área encerrada por esta recta y los ejes coordenados en el primer cuadrante. Evidentemente debe salir lo mismo que el ejemplo 2.16. Primero, se dibujará la recta y=x, y luego se rellenará la figura, recorriéndola de izquierda a derecha, con el comando >>fliplr. Es decir: >>x=linspace(0,1,100);y=x;plot(x,y,'k-'),hold on, >>xn=linspace(0,1,100);yn=linspace(1,1,100);fill([xn,fliplr(xn)],[xn,yn],'b'). Figura 2.28 Representación de relleno de un polígono usando >>fliplr. 42.
(54) Gráficos con Matlab. Nota: Se obtendría el mismo relleno, pero recorriendo la figura de izquierda a derecha y comenzando por la parte superior, ejecutando: >>x=linspace(0,1,100);y=x;plot(x,y,'k-'), hold on >> xn=linspace(0,1,100);yn=linspace(1,1,100);fill([xn,fliplr(xn)],[yn,fliplr(xn)],'b'). 2.8. Funciones de varias variables. Superficies. 2.8.1 Representación de funciones en 3D: z=f(x,y). Comandos más usados Una superficie se define por la expresión z=f(x,y), siendo x,y las variables independientes. Los comandos más usados son: Comando. Dibuja. >> ezmesh(f). En el cuadrado [-ʌ,ʌ]u[-ʌ,ʌ]. z=f(x,y). en el cuadrado [a,b]u[a,b]. z=f(x,y). en el rectángulo [a,b]u[c,d]. f. >> ezmesh(f,[a,b]). expresión de dos variables. >> ezmesh(f,[a,b,c,d]). (x,y) varía en. z=f(x,y). El proceso para dibujar consiste en crear una malla con segmentos coloreados, en función de los valores de los extremos. Editando posteriormente la gráfica, se pueden cambiar colores, ejes y demás propiedades. En caso de querer que los ejes X e Y se orienten al revés, en la ventana de la figura, con los ejes seleccionados, se elige la opción Reverse. ି࢞࢟. Ejemplo 2.18 Representar la superficie dada por la función ࢌሺ࢞ǡ ࢟ሻ ൌ ࢞ࢋି࢞ >> ezmesh('x*exp(-x^2 - y^2)') x exp(-x 2 - y 2). 0.5. 0. -0.5 3 2 3. 1. 2. 0. 1 0. -1. -1. -2 y. -2 -3. -3 x. 43.
(55) Matlab para Matemáticas en ingenierías. Otros comandos interesantes para representar superficies son: >>ezmesh(... , 'circ') ........................... dibuja la función correspondiente sobre un círculo centrado en el origen. >>ezsurf(f) ......................................... dibuja una superficie coloreada z=f(x,y). Sus argumentos son como en >>ezmesh. Ejercicio: Ejecutar las órdenes indicadas y observar las diferencias: >>ezmesh('x*exp(-x^2 - y^2)','circ'), y >>ezmesh('x*exp(-x^2 - y^2)'). Ejemplo 2.19 La sentencia para representar. ࢙ඥ࢞ ା࢟ ඥ࢞ ା࢟. es:. >> ezsurf('sin(sqrt(x^2+y^2))/sqrt(x^2+y^2)'). 2.8.2 Curvas de nivel de una superficie Para representar curvas de nivel pueden utilizarse los comandos: >> ezcontour(f), >> ezcontour(f,[a,b]), >>ezcontour(f,[a,b,c,d]) Estos comandos dibujan las líneas de nivel (isovalores) de la función z=f(x,y). Pueden ejecutarse los siguientes ejemplos para ir comprobando los resultados. Ejemplo: >> ezcontour('x*exp(-x^2 - y^2)') x exp(-x 2 - y 2) 3. 2. y. 1. 0. -1. -2. -3. -3. -2. -1. 0 x. 1. 2. 3. >>ezcontourf(. . . )…………. hace lo mismo que >>ezcontour, pero rellenando con un color sólido las distintas zonas determinadas por las líneas de nivel.. Ejemplo: >> ezcontourf('x*exp(-x^2 - y^2)') 44.
(56) Gráficos con Matlab. >>ezmeshc(f) ………………con los mismos argumentos que >>ezmesh, dibuja simultáneamente las líneas de nivel y la superficie. Ejemplo: >> ezmeshc('sin(u/2)*sin(v/2)') sin(u/2) sin(v/2). 1. 0.5. 0. -0.5. -1 6 4. 6. 2. 4 0. 2 0. -2. -2. -4 -6 v. -4 -6 u. >>ezsurfc(f)………………..como >>ezsurf pero, además, dibuja las líneas de nivel.. Ejemplo: >>ezsurfc('sin(sqrt(x^2+y^2))/sqrt(x^2+y^2)') 2.8.3 Curvas en el espacio Para dibujar curvas en el espacio en paramétricas se tienen los comandos detallados a continuación: >> plot3(x,y,z)…………… dibuja una línea en el espacio a través de los puntos cuyas coordenadas son los elementos de los vectores x, y, z. Ejemplo: >>t = 0:pi/50:10*pi; plot3(sin(t),cos(t),t, ’r’);. 40. 30. 20. 10. 0 1 0.5. 1 0.5. 0. 0. -0.5. -0.5 -1. -1. >>ezplot3(x,y,z), >>ezplot3(x,y,z,[a,b]) ……… donde -. x , y , z son tres cadenas de caracteres conteniendo las expresiones de tres funciones x(t) , y(t) , z(t) (por eso en la llamada de la función deben ponerse entre comillas simples). 45.
(57) Matlab para Matemáticas en ingenierías. -. dibujan la curva de ecuaciones paramétricas x=x(t), y=y(t), z=z(t), para t en el intervalo [0,2ʌ], en el primer caso y para t ࣅ[a,b], en el segundo.. Ejemplo: >>ezplot3('3*cos(t)','2*t.*sin(t)','sqrt(t)'), ezplot3('3*cos(t)','3*t.*sin(t)','sqrt(t)') x = 3 cos(t), y = 2 t sin(t), z = sqrt(t). x = 3 cos(t), y = 3 t sin(t), z = sqrt(t). 3. 3. 2.5. 2.5 2. z. z. 2 1.5. 1.5. 1. 1. 0.5. 0.5. 0 5. 0 10. 4. 0. 2. 4. 0. 2. 0. -5 -2 y. -10. -4. 0. -10 -2 y. x. -20. -4. x. 2.8.4 Superficies de revolución Matlab tiene implementadas algunas funciones para ello: Ͳ. Ͳ. Cilindro: El comando >>cylinder(R,n) genera automáticamente un cilindro de revolución de radio R, donde n es el número de puntos de la circunferencia de la base del cilindro. Si no se indica el segundo argumento, el número n es, por defecto, 20. Esfera, Elipsoide: Existen de forma similar al comando anterior, >>sphere, >>ellipsoid.. Lo realmente interesante de este comando >>cylinder, es que también admite radios variables R(t), donde t [ אa, b]. De esta forma, puede ser utilizado para obtener las gráficas de diferentes tipos de superficies de revolución, donde la generatriz es una función definida por R(t). No conviene poner demasiados puntos a la hora de generar el vector, de cara a apreciar bien el dibujo. Ejemplo 2.20 Dibujar la superficie de revolución que se obtiene al girar la curva z=e-y alrededor del eje OZ. En este caso, la función radio es r=r(z), y por lo tanto será y=-ln(z). Con lo que la ecuación de la superficie vendrá dada por: ݔଶ ݕଶ ൌ ሾെ ሺݖሻሿଶ Para ello en Matlab se introduce:. 46.
(58) Gráficos con Matlab. >>t=linspace(0.1,5);r=-log(t);cylinder(r). 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 -2.5. -2. -1.5. -1. -0.5. 0. 0.5. 1. 1.5. 2. 2.5. 2.5. 1.5. 2. 1. 0.5. -0.5. 0. -1. -1.5. -2. -2.5. Figura 2.29 Superficie de revolución. Ͳ Superficies de revolución con respecto a cualquier eje En el supuesto de que la superficie de revolución no venga de girar alrededor del eje OZ, debe tenerse especial atención. Ejemplo 2.21 Dibujar la superficie de revolución que se obtiene al girar la curva y=ࢋି࢞ , alrededor del eje OX. En este caso, la función radio es r=r(x) y por lo tanto será y=݁ ି௫ . Así, la ecuación de la superficie vendrá dada por: ݕଶ ݖଶ ൌ ሾ݁ ି௫ ሿଶ ൌ ݁ ିଶ௫ En Matlab se introducen las expresiones: >> t=linspace(-5,5);r=exp(-t);cylinder(r) 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 -150 -100 -50 0 50 100 150. 150. 100. 50. 0. -50. -100. -150. Figura 2.30 Superficie de revolución mostrando como eje el vertical. 47.
(59) Matlab para Matemáticas en ingenierías. Esta no es la gráfica esperada ya que el eje de rotación debe ser el eje OX. Sin embargo, la superficie es la correcta. Simplemente, puede interpretarse la representación gráfica pensando que, en este caso, el eje vertical es el eje OX, y girar el orden de los ejes en sentido contrario a las agujas del reloj. Quedando:. 1 0.9 0.8 0.7. EJE X. 0.6 0.5 0.4 0.3 0.2. -150 -100. 0.1 -50 0 -150. 0 -100. -50. 50 0. 50. 100 100. 150. 150 EJE Y. EJE Z. Figura 2.31 Superficie de revolución con los ejes indicados. Nota: En el caso de que querer dibujar una superficie de revolución que gire con respecto al eje OX, o bien eje OY, y obtener una representación realista en dichos ejes, debe parametrizarse la superficie. La parametrización en este caso es sencilla, ya que simplemente deben parametrizarse las circunferencias que se obtienen en el plano deseado, teniendo en cuenta que los radios son variables, y dejar como parámetro la variable que nos da el radio. Se ilustra esto mediante el siguiente ejemplo. Ejemplo 2.22 Dibujar la superficie de revolución que se obtiene de girar la curva y=x2 con respecto al eje OY. Se va a realizar tanto la representación de la curva, como de la superficie de revolución obtenida. Como el giro se efectúa con respecto al eje OY, la función radio es ݔൌ ඥݕ. Y la ecuación de la superficie de revolución será: ݔଶ ݖଶ ൌ ሺඥݕሻଶ ֜ ݕൌ ݔଶ ݖଶ. En este caso, la parametrización de las circunferencias vendría dada por:. 48.
(60) Gráficos con Matlab. ݔൌ ඥ ݕሺݐሻ ݖൌ ඥݕሺݐሻ. Puede hacerse de varias formas: Opción 1: asignar a la variable y el parámetro t (como luego es un radicando, sólo tomará valores positivos) >> t=-5:.1:5;y1=t.^2;subplot(1,2,1),plot(t,y1,'b'),title('Curva a girar'),axis square >> subplot(1,2,2),t=0:.1:5;u=0:.1:2*pi;surf(sqrt(t)'*cos(u),t'*ones(size(u)),sqrt(t)'*sin(u)) Curva a girar 25. 3 20 2 1 15 0 -1 10 -2 -3 0. 5. 1. -4 2. 0 -5. -2 3. 0. 5. 0 4. 2 5. 4. Figura 2.32 Curva originaria y superficie generada. La orientación de los ejes ha sido cambiada desde la ventana gráfica, dándole a la opción de ‘Reverse’ para el eje OY. También hubiera bastado poniendo como argumento de la variable y: >> t=-5:.1:5;y1=t.^2;subplot(1,2,1),plot(t,y1,'b'),title('Curva a girar'),axis square >> subplot(1,2,2),t=0:.1:5;u=0:.1:2*pi;surf(sqrt(t)'*cos(u),t,sqrt(t)'*sin(u)). Para elegir el color de la superficie con el comando >>surf, es suficiente añadir un último argumento >> surf(sqrt(t)'*cos(u),t'*ones(size(u)),sqrt(t)'*sin(u),’FaceColor’,blue’). 49.
(61) Matlab para Matemáticas en ingenierías. Opción 2: parametrizar de otra manera para que no haya radicales, esta vez asignar a la variable y el valor t2, es decir, el parámetro t es ඥݕ. >> t=-5:.1:5;y1=t.^2;subplot(1,2,1),plot(t,y1,'b'),title('Curva a girar'),axis square >> subplot(1,2,2), u=0:.1:2*pi;surf(t'*cos(u),t.^2,t'*sin(u),'FaceColor','blue') Curva a girar 25. 5. 20. 15 0 10 -5 0. 5. 5. 10 0. 20 0 -5. 0. 30. 5. -5. Figura 2.33 Curva origen y superficie de revolución obtenida. Opción 3: Con el comando >>cylinder. Este exige darle como argumento la función radio, aunque dibujará siempre en el eje OZ. Es el interesado el que debe saber que, en realidad, esa figura es en torno al eje OY -en este caso-, y en cada ejercicio elegir la rotación de ejes adecuada: >> t=0:.1:5;y=sqrt(t);cylinder(y). 1. 0.8. EJE Y. 0.6. 0.4. 0.2. 0 3 2 1 0 -1 -2 -3 EJE X. 2.5. 2. 1.5. 1. 0.5. 0. -0.5. EJE Z. Figura 2.34 Ejecución del comando >>cylinder. 50. -1. -1.5. -2. -2.5.
(62) Gráficos con Matlab. 2.8.5 Superficies Paramétricas Una superficie S puede ser representada por una función vectorial r(u,v) = (x, y, z), donde (u,v)Ruv Թ 2.. Las ecuaciones x=x(u,v),. y=y(u,v),. z=z(u,v),. se denominan ecuaciones paramétricas de S. Una superficie S parametrizada por r(u,v) es suave en un punto (u0,v0) si dichas funciones (u,v) son continuas, tienen primeras derivadas parciales continuas en (u0,v0) y existe plano tangente a S en (u0,v0). Si se quiere dibujar superficies expresadas en paramétricas, los comandos a utilizar son: >> ezmesh(x,y,z), >> ezmesh(x,y,z,[a,b]), >>ezmesh(x,y,z,[a,b,c,d]) donde -. x, y, z son expresiones de funciones de dos variables dibujan la superficie de coordenadas paramétricas x=x(u,v), y=y(u,v), z=z(u,v) para (u,v) variando en el cuadrado [-2ʌ,2ʌ]u[-2ʌ,2ʌ] en el primer caso; en el cuadrado [a,b]u[a,b] en el segundo; y en el rectángulo [a,b]u[c,d] en el tercer caso.. Ejemplo: >> ezmesh('u*cos(v)','u*sin(v)','v',[-pi,pi]). 4 3 2. z. 1 0 -1 -2 -3 -4 4 2 0. 1 -2 y. -2 -4. -4. 2. 3. 4. 0. -1. -3 x. Figura 2.35 Representación del helicoide. 51.
Documento similar
Los textos funcionales son textos en donde predomina la función apelativa del lenguaje?. Es decir, se dirigen a un receptor en forma directa, clara y precisa para indicarle los pasos
Dada una ecuación diferencial, se dice que una función es solución de la ecuación si al sustituirla en la ecuación, ésta se verifica, es decir, da lugar a una identidad en la
Dominio de fx o campo de existencia de fx es el conjunto de valores para los que está definida la función, es decir, el conjunto de valores que toma la variable independiente “x”..
La distribución inicialmente la vamos a realizar de forma directa, es decir, no tendremos intermediarios y el producto pasará de la empresa directamente al consumidor, lo vamos a