Matlab para matemáticas en ingenierías Lucía Agud Albesa Mª Leonor Pla Ferrando
EDITORIAL UNIVERSITAT POLITÈCNICA DE VALÈNCIA
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.
Lucía Agud Albesa Mª Leonor Pla Ferrando
Matlab para matemáticas en ingenierías
EDITORIAL UNIVERSITAT POLITÈCNICA DE VALÈNCIA
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.
Para todas las personas que nos han ofrecido su apoyo día a día.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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> 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> 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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> plot(x,y,'.'),grid on, title('Función definida a trozos'),axis([-5 5 0 10])
33
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
Gráficos con Matlab
>>f=inline('(x.^2).*(x<1)+1.*((1<=x)&(x<=3))+(x+1).*(3> f(3) ans = 1
O de otra forma, mediante Anonymus: >> f=@(x)(x.^2).*(x<1)+1.*((1<=x)&(x<=3))+(x+1).*(3> 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
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 cos 3x , y
sin 2x .
>> 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Matlab para Matemáticas en ingenierías
También puede ser usado el comando >>mesh, creando previamente una matriz de puntos o definida por el usuario, o con >>meshgrid ya que los argumentos deben ser matrices de puntos (puede verse el ejemplo desarrollado en el tema de funciones de varias variables). Ejemplo 2.23 Sea el semicono de ecuación z2=x2+y2 con z[0,1]. Parametrizar y representar para los valores de z[0,1]. Para realizar la parametrización, considérese que sobre planos paralelos al plano XY se tienen circunferencias con radio variable: x(u,v)= u*cos(v), y(u,v)=u*sin(v), Sustituyendo en la ecuación del cono, se obtiene la variable z que, en este caso, es z(u,v)= u con u[0,1], v[0,2S]. Las expresiones necesarias para representar el semicono son: >> u=linspace(0,1,20);v=linspace(0,2*pi,20); >> [U,V]=meshgrid(u,v); >> X=U.*cos(V);Y=U.*sin(V);Z=U;
1 0.8 0.6 0.4 0.2 0 1 0.5
1 0.5
0
0
-0.5
-0.5 -1
-1
Figura 2.36 Representación del semicono parametrizado
Ejemplo 2.24 Sea el paraboloide de ecuación z=2-x2-y2 con zԹ. Parametrizar y representar el trozo de paraboloide con z[0,2]. Para realizar la parametrización, considérese que sobre planos paralelos al plano XY se tienen circunferencias con radio variable x(u,v)= u*cos(v), y(u,v)=u*sin(v),
52
Gráficos con Matlab
Sustituyendo en la ecuación del paraboloide, se obtiene la variable z que, en este caso, es z(u,v)= 2-u2 donde u [0,1], v[0,2S]. Como del ejemplo anterior ya se tienen valores asignados para u y v, en este caso no hace falta volver a definirlas: >> X=U.*cos(V);Y=U.*sin(V);Z=2-U.^2; >> surf(X,Y,Z);axis([-1 1 -1 1 0 2])
2 1.8 1.6 1.4 1.2 1 1 0.5
1 0.5
0
0
-0.5
-0.5 -1
-1
Figura 2.37 Representación del paraboloide
Ejercicio: Indicar qué órdenes deben darse para representar conjuntamente el semicono y el paraboloide de los ejemplos anteriores y que el resultado final sea la siguiente representación:
2 1.5 1 0.5 0 1 0.5
1 0.5
0
0
-0.5
-0.5 -1
-1
Figura 2.38 Representación conjunta del semicono y paraboloide
53
Matlab para Matemáticas en ingenierías
2.8.6 Cambios de coordenadas a cilíndricas y esféricas y viceversa >>[TH,R,Z] = cart2pol(X,Y,Z) .............. pasa de coordenadas cartesianas a cilíndricas. >>[X,Y,Z] = pol2cart(TH,R,Z) .............. pasa de coordenadas cilíndricas a cartesianas. >>[TH,PHI,R] = cart2sph(X,Y,Z) ......... pasa de coordenadas cartesianas a esféricas. El orden de los argumentos de salida es: TH es el ángulo en sentido contrario a las agujas del reloj en el plano XY, PHI es el ángulo de elevación desde el plano XY y R es el radio. >>[X,Y,Z] = sph2cart(TH,PHI,R) ......... pasa de coordenadas esféricas a cartesianas
2.9
Ejercicios
1.- Representa las siguientes gráficas: a) ݂ሺݔሻ ൌ
௫ మ ିଷ௫ାଶ ௫ାଵ
,
௫ మ ିହ௫ାସ
e) ሺݔሻ ൌ ට
௫ మ ିସ௫ାଶ
b) ݃ሺݔሻ ൌ ,
௫ య ିଵ ௫ మ ାଶ௫ିଷ
,
௫ మ ିହ௫ାସ
f) ݍሺݔሻ ൌ ට
௫ మ ିଶ௫ାଵ
c) ݄ሺݔሻ ൌ ,
௫ య ାଵ ௫ మ ାଶ௫ିଷ
g) ݎሺݔሻ ൌ ݈݊ ቀ
௫ିଵ ௫ିଶ
,
d) m(x)=log2(x-2),
ቁ
2.- a) Dibujar en una sola ventana con dos subventanas las funciones y = x2 í 3x – 2, z = x3 í 2x + 1 con x variando entre -5 y 5 a intervalos de 0.02. Marcar con un ’+’ en color rojo el punto (2,1) en ambas gráficas. b) Además de las anteriores, dibujar ahora 4 subventanas dispuestas de dos en dos de forma que en cada una de ellas se representen las funciones anteriores y además, y= -x2 + 3x + 2, z= -x3 + 2x. c) ¿Qué se observa en las gráficas anteriores? ¿Cuáles son los coeficientes directores de los polinomios en cada caso? ¿Qué puede decirse de los límites en el infinito sin necesidad de calcularlos? 3.- Dibujar la superficie z = sin(x) + cos(y), donde x e y toman valores entre -5 y 5 a intervalos de 0.1. 4.- Dibujar la función y = x כeíx2 con x variando entre -5 y 5 a intervalos de 0.05. 5.- Dibuja la superficie z=ି ݁ݔ௫
54
మ ି௬ మ
, en el rectángulo [-2,2]u[-2,2].
Gráficos con Matlab ଵ
ଵ
௫
ሺ௫ିଶሻ
6.- Dibujar en la misma ventana las funciones ݕൌ , ݕൌ
,ݕൌ
ଵ
. ¿Qué puede
௫ାଵ
decirse sobre la relación existente entre las tres funciones? 7.- Representar las siguientes funciones a trozos y evaluarlas en distintos valores de cada uno de los trozos. Dibujar y definir alguna de ellas de dos formas distintas: ଵ
a)
௫
ୱ୧୬ሺ௫ሻ
ǡ ݔ൏ Ͳ
௫ ௫
f(x)=ቐ ݁ ௫ିଷ ǡͲ ݔ ͵ , ͵ǡ ݔ ͵
ǡ ݔ൏ Ͳ
b) g(x)=൞݁ ǡͲ ݔ൏ ʹ െሺ ݔെ ʹሻଶ ǡʹ ݔ ͷ
8.- Indicar, desde la representación gráfica, los valores de los límites más importantes de las funciones anteriores: puntos frontera, límites en los infinitos. Realizar analíticamente con Matlab dichos límites. 9.- Representar en coordenadas polares las siguientes curvas: a) r=cos(4ș),
b) r=3,
c) r=4cos(ș),
d) ș=3ʌ/4,
ଶ
e) r=
ୱ୧୬ሺሻାୡ୭ୱሺሻ
10.- Representar las siguientes superficies de revolución a partir de su generatriz: a) Curva z=ln(y) sobre el plano XZ al girar alrededor del eje OZ. b) Curva z2 =4y sobre el plano YZ al girar alrededor del eje OY. 11.- Representar los dominios de las siguientes funciones de dos variables: a) ݂ሺݔǡ ݕሻ ൌ
ට ʹݔ ʹݕെͶ
ݕെʹݔ
,
b) ݂ሺݔǡ ݕሻ ൌ ݊ܮ
ʹݔʹ ʹݕെͳ ݔെݕͳ
12.- Calcular en coordenadas polares la ecuación de la Lemniscata de Bernoulli ሺ ݔଶ ݕଶ ሻଶ െ ሺ ݔଶ െ ݕଶ ሻ ൌ Ͳ. Hacerlo definiendo la función con variables simbólicas y también definiendo la función vía inline. 13.- Representar las siguientes superficies en el intervalo indicado a) paraboloide de ecuación z = 2-x2-y2 con -1 z 2 b) cono de ecuación x2 +y2- z2 =0 con 1 z 4 c) cilindro de ecuación x 2 y 2
1 4
con 0 z 2.
55
Capítulo 3 Operaciones básicas con funciones 3
3.1
Polinomios
Para trabajar con polinomios en Matlab se puede actuar de dos formas, bien introducirlos como vectores, o bien como función. Dependiendo de cómo se trabaje con ellos, los comandos a utilizar son diferentes. 3.1.1 Polinomio introducido como vector En este caso se introducen sólo los coeficientes del polinomio, ordenados desde el de mayor grado hasta el término independiente, y poniendo un 0 cuando el monomio correspondiente no aparezca. Así, aparecen tantos coeficientes como el grado del polinomio. a) Para evaluar se usará el comando >>polyval. Ejemplo 3.1 Introducir el polinomio p=5x4 – x3 +2 x +1 y evaluar en x=0. >> p=[5 -1 0 2 1] >> polyval(p,0) ans = 1
57
Matlab para Matemáticas en ingenierías
b) Si se quiere calcular sus raíces, se empleará el comando >>roots. En el Ejemplo 3.1 como se tiene un polinomio de grado 4 con coeficientes reales, tendrá 4 raíces (tantas como el grado). Pudiendo ser 4 raíces reales, 4 complejas (conjugadas dos a dos) o dos reales y dos complejas (una y su conjugada). Matlab devuelve que para este caso las 4 raíces son complejas y por lo tanto conjugadas dos a dos: >> format rat >> roots(p) ans = 1700/3047 + 367/549i 1700/3047 - 367/549i -234/511 + 137/589i -234/511 - 137/589i c) Para calcular el producto o división de dos polinomios, p y q, introducidos mediante vectores, los comandos en Matlab son >>conv(p,q) y >>deconv(p,q), respectivamente. 3.1.2 Polinomio introducido como función Lo primero será definir la variable x como simbólica y después introducirlo de la forma habitual mediante operaciones: >> x=sym('x'); p=5*x^4-x^3+2*x+1 p= 5*x^4 - x^3 + 2*x + 1 Destacar que si al introducirlo hubiera monomios semejantes, Matlab ya devolverá el polinomio reduciendo esos monomios. a) Para evaluarlo, depende de cómo haya sido introducido. Si se ha hecho como acaba de explicarse: >> subs(p,0) ans = 1 Pero también podría haberse definido como una función inline, directamente, sin declarar x como variable simbólica. En dicho caso para evaluarlo: >> p=inline('5*x^4-x*3+2*x+1') p= Inline function p(x) = 5*x^4-x*3+2*x+1 >> feval(p,0)
58
Operaciones básicas con funciones
ans = 1 también directamente >>p(0) ans= 1 b) Para calcular sus raíces se usará el comando >>solve. Las soluciones complejas las devuelve en formato decimal. Si en el comando solve no se especifica la variable, Matlab entiende que la variable definida es la única variable de la función. Si hubiera varias deberá especificarse cuál de ellas es la que se desea resolver ya que sino Matlab elige siempre la más cercana alfabéticamente a la variable x. Si no se indica nada por defecto Matlab sobreentiende que el usuario resuelve p(x)=0. >> solve(p,x) ans = 0.66848752167174464637516725170716*i + 0.55792579323393509147440680377195 0.55792579323393509147440680377195 - 0.66848752167174464637516725170716*i 0.2325976273176772911514690533212*i - 0.45792579323393509147440680377195 - 0.2325976273176772911514690533212*i - 0.45792579323393509147440680377196
También podría haberse hecho directamente, llamando al polinomio desde el argumento. Obsérvese que en este caso dicho argumento debe ir entre comillas simples: >>solve('5*x^4-x^3+2*x+1') ans = 0.66848752167174464637516725170716*i + 0.55792579323393509147440680377195 0.55792579323393509147440680377195 - 0.66848752167174464637516725170716*i 0.2325976273176772911514690533212*i - 0.45792579323393509147440680377195 - 0.2325976273176772911514690533212*i - 0.45792579323393509147440680377196
Nota: Si se pretende resolver en vez p(x)=4, debe especificarse prestando atención a que el = en Matlab sólo indica asignación. Cuando se desee indicar una igualdad hay que usar el operador lógico de Matlab ==. Es conveniente tener especial cuidado aquí con las versiones de Matlab. Por ejemplo en Matlab R2011a basta poner:
59
Matlab para Matemáticas en ingenierías
>> solve('5*x^4-x^3+2*x+1=4') ans = 0.78652986718776168488859802566479 -0.94832032580079086894804119425066 0.87846082447569315793472841177844*i + 0.18089522930651459202972158429294 0.18089522930651459202972158429294 - 0.87846082447569315793472841177844*i
Pero con la versión Matlab R2013b, entiende todas estas órdenes: -
Variable no simbólica y polinomio simbólico:
>> solve('5*x^4-x^3+2*x+1==4') ans = 0.78652986718776168488859802566479 -0.94832032580079086894804119425066 0.18089522930651459202972158429294 - 0.87846082447569315793472841177844*i 0.18089522930651459202972158429294 + 0.87846082447569315793472841177844*i >> solve('5*x^4-x^3+2*x+1=4') ans = 0.78652986718776168488859802566479 -0.94832032580079086894804119425066 0.18089522930651459202972158429294 - 0.87846082447569315793472841177844*i 0.18089522930651459202972158429294 + 0.87846082447569315793472841177844*i
-
Variable definida simbólica: aquí sólo admite utilizar ==
>> x=sym('x');solve(p==4,x) ans = 0.78652986718776168488859802566479 -0.94832032580079086894804119425066 0.18089522930651459202972158429294 - 0.87846082447569315793472841177844*i 0.18089522930651459202972158429294 + 0.87846082447569315793472841177844*i
Si dada una ecuación o un polinomio, sólo se busca que saque por pantalla las raíces reales, está la opción: >>solve(5*x^4-x^3+2*x-3, 'Real', true) Si se buscan sólo raíces positivas, pídase: >>syms x positive, solve(5*x^4-x^3+2*x-3) 60
Operaciones básicas con funciones
c) Finalmente, para calcular productos o divisiones de polinomios, se efectúa con las operaciones habituales. El comando >>solve, lo desarrollamos en el párrafo posterior.
3.2
Dominios de funciones e inecuaciones
Para calcular dominios de funciones, es necesario recordar que: a) Si las funciones son polinómicas, su dominio son todos los reales. Dom(f)=Թ. b) Funciones exponenciales, Dom(f)=Թ. c) Funciones racionales: f(x)=
ሺ௫ሻ
, con p(x) y q(x) polinomios. Dom(f)={xࣅԹȀݍሺݔሻ ്
ሺ௫ሻ
Ͳሽ
d) Funciones irracionales: f(x)= ඥ݃ሺݔሻ. Donde: ǣ݉ܦሺ݂ሻ ൌ Թ ൜ ǣ݉ܦሺ݂ሻ ൌ ሼݔԖԹȀ݃ሺݔሻ Ͳሽ e) Funciones logaritmo: f(x)=log(g(x)). Dom(f)= ሼݔԖԹȀ݃ሺݔሻ Ͳሽ Por lo tanto, calcular dominios no es más que resolver ecuaciones o inecuaciones. Este proceso en Matlab se ejecuta con el comando >>solve. Para ello, la variable debe ser simbólica o introducir la función entre comillas simples. 3.2.1 Comando >>solve Este comando, que trabaja en simbólico, resuelve tanto ecuaciones, inecuaciones como sistemas. Hay que tener cuidado cuando se quiere resolver un sistema con parámetros, en definirle todas las variables como simbólicas e indicarle quién es el parámetro: syms a u v [Sa,Su,Sv] = solve(a*u^2 + v^2,u - v == 1,a^2 - 5*a + 6) solves the three equations for a, u and v. Mientras que si se pide: syms a u v [Su,Sv] = solve(a*u^2 + v^2 == 0,u - v == 1) regards 'a' as a parameter and solves the two equations for u and v. Nota: También hay que prestar atención y pedir variables de salida cuando se resuelva un sistema con varias variables, ya que Matlab puede devolverlas desordenadas. Esto se corrige imponiendo en la salida el orden de las variables. 61
Matlab para Matemáticas en ingenierías
Si en algún momento al ejecutar este comando no devolviera todas las soluciones de la ecuación sino sólo una de ellas, es conveniente ejecutar la orden: >>solve(ecuación,x,’IgnoreProperties’,true) Nota: Puede ocurrir que al resolver en Matlab una ecuación tan sencilla como sin(x)=0, sólo devuelva una solución de todas las existentes: >> solve(sin(x)) ans = 0 O incluso, si se le pide que saque las raíces positivas, devuelva una de ellas pero no la deseada: >> syms x positive, solve(sin(x)) ans = 2*pi Para solventar este problema existe el comando que se explica a continuación. 3.2.2 Comando >>fzero (resolución numérica o aproximada de ecuaciones) Este hecho, que puede darse con más ecuaciones, se resuelve usando funciones que hallen las raíces de la ecuación que se encuentren más próximas a un número que el usuario decida. Dicha acción la realiza el comando >>fzero. Su argumento debe ser una función simbólica. Como segundo argumento se introduce o bien el punto al que la solución buscada debe acercarse; o bien un intervalo donde se verifique el Teorema de Bolzano;es decir, la función cambie de signo en dicho intervalo y por lo tanto seguro exista solución en ese dominio especificado. Ejemplo 3.2 Para encontrar los puntos de corte de la función seno con el eje OX, es sabido que el valor x=ʌ es uno de dichos puntos. Pero con >>solve no será detectado (por problemas de redondeo y aproximaciones internas de Matlab). Su hallazgo vendrá forzado cuando se busquen las soluciones más próximas, por ejemplo, a x=3, de la siguiente forma: >> fzero('sin(x)',3) ans = 3.1416 También podría haberse definido vía inline o vía Anonymus: >>X = fzero(@sin,3) X= 3.1416
62
Operaciones básicas con funciones
O, de otra forma, si el argumento no es sólo la variable x: >> fzero(@(x)sin(3*x),3) ans = 3.1416 Ejemplo 3.3 Calcula el dominio de f x
x 1 . x 2 5x 6
୶ିଵ
Ha de verificarse que మ Ͳ. Matlab se encuentra con un inconveniente al pedir ୶ ିହ୶ା que lo haga directamente: >> syms x,solve((x-1)/(x^2-5*x+6)>=0,x) ans = solve([0.0 <= (x - 1.0)/(x^2 - 5.0*x + 6.0)], [x]) Es decir, Matlab no puede efectuar de golpe esta operación. Para solucionarlo deben distinguirse los dos casos a estudiar. Para que una fracción sea toda ella positiva puede ocurrir que: -
o numerador y denominador sean ambos positivos o numerador y denominador ambos negativos.
Se pedirá con dos instrucciones: Caso I) Si ambos son positivos. Vigilar que el denominador no puede ser cero: >> solve(x-1>=0,x^2-5*x+6>0) Warning: 2 equations in 1 variables. > In \\izar2\matlab\R2013b\toolbox\symbolic\symbolic\symengine.p>symengine at 56 In mupadengine.mupadengine>mupadengine.evalin at 97 In mupadengine.mupadengine>mupadengine.feval at 150 In solve at 170 ans = Dom::Interval([1], 2) Dom::Interval(3, Inf) Por lo tanto la solución en este primer caso viene dada por: [1,2)(3,) Nota: si se hubiera definido la variable como simbólica, en vez de sólo declararla, saldría directamente (según ordenadores): >> x=sym('x');solve(x-1>=0,x^2-5*x+6>0) 63
Matlab para Matemáticas en ingenierías
ans = Dom::Interval([1], 2) Dom::Interval(3, Inf) Caso II) Cuando ambos son negativos (con denominador distinto de cero): >> solve(x-1<=0,x^2-5*x+6<=0,x-1<=0,x^2-5*x+6<0) Warning: 4 equations in 1 variables. > In \\izar2\matlab\R2013b\toolbox\symbolic\symbolic\symengine.p>symengine at 56 In mupadengine.mupadengine>mupadengine.evalin at 97 In mupadengine.mupadengine>mupadengine.feval at 150 In solve at 170 Warning: Explicit solution could not be found. > In solve at 179 ans = [ empty sym ] Por lo tanto, este segundo caso no ocurre nunca. Y la solución final sería: Dom(f)= (Solución del caso I) U (Solución del caso II)= [1,2][3,) [=1,2] [3,)
3.2.3
Inecuaciones con valores absolutos
Matlab no resuelve de golpe inecuaciones con valores absolutos. Se tienen que aplicar las propiedades del valor absoluto con respecto a desigualdades: |x| ܾ ֞ െܾ ݔ ܾ ֞ ߳ݔሾെܾǡ ܾሿ ݔܾ ȁݔȁ ܾ ֞ ቄ ֞ ߳ݔሺെλǡ െܾሿ ሾܾǡ λሻ ݔ െܾ
Ejemplo 3.4 Resuelve la siguiente inecuación |x2-7x+12|<2. Si se intenta de golpe con Matlab: >> syms x, solve(abs(x^2-7*x+12)<2) ans = 4 3
64
Operaciones básicas con funciones
Que evidentemente no son las soluciones de la inecuación. Esto ocurre porque en Matlab, para resolver inecuaciones, hay aplicar primero las propiedades y luego hacer la unión o intersección de los casos, según convenga. Es decir, como |x2-7x+12|<2 ֞-2< x2-7x+12<2 Se resuelve por separado, pidiendo que obtenga sólo las soluciones reales: Caso I: hallar cuándo -2< x2-7x+12 >> syms x, solve(x^2-7*x+12>-2, 'Real',true) ans = R_ Es decir, la solución del Caso I es xࣅԹ Caso II: resolver x2-7x+12<2 >> solve(x^2-7*x+12<2, 'Real',true) ans = Dom::Interval(2, 5) Por lo tanto, la solución final es: Solución Caso I Solución Caso II= (2,5) Թ ൌ ሺʹǡͷሻ.
3.3
Simplificar, factorizar, expandir y demás operaciones algebraicas
Cuando uno quiere trabajar con expresiones algebraicas, o polinómicas, en su forma más simplificada, o al contrario, expandir una expresión, en Matlab se poseen los siguientes comandos: COMANDO SIMPLIFY: simplifica expresiones algebraicas >> p=(x-1)/(x^2-2*x+1) p= (x -1)/(x^2 - 2*x + 1) >> simplify(p) ans = 1/(x - 1) Otro ejemplo: >> simplify(sin(x)^2+cos(x)^2) ans = 1
65
Matlab para Matemáticas en ingenierías
En ocasiones, hay expresiones que Matlab las simplifica de forma automática. Por ejemplo si se introducen polinomios no reducidos: >> f=x-1+2*x+5 f= 3*x + 4 COMANDO FACTOR: devuelve el polinomio factorizado en los factores más simples posibles. También realiza operaciones devolviendo el resultado factorizado. >> factor((x-1)*(x^2-3*x+2)) ans = (x - 1)^2*(x - 2) COMANDO EXPAND: Devuelve desarrollada la expresión introducida. Muy útil para recordar fórmulas de igualdades notables o de desarrollos trigonométricos. >> expand((x-1)^2) ans = x^2 - 2*x + 1 O también por ejemplo: >> syms x y >> expand(sin(x+y)) ans = cos(x)*sin(y) + cos(y)*sin(x) COMANDO RESIDUE: Descompone una función racional en fracciones simples. Los polinomios deben ser introducidos como vectores. La salida son los coeficientes de las fracciones simples, tomando las raíces en orden decreciente. Es importante indicar que en el caso de tener un denominador q(x) cuyas raíces sean ெ௫ାே que en ocasiones se busca para complejas, no se obtiene la descomposición de ሺ௫ሻ
después integrar. Matlab las trata como raíces o bien simples o bien múltiples, según sea el caso. Si se quiere obtener algo parecido a esta descomposición, podemos aplicar los comandos >>diff(int(‘expresion’)), cuando el denominador es un polinomio de grado 2 con raíces complejas.
66
Operaciones básicas con funciones ࢞ି
Ejemplo 3.5 Calcular la descomposición en fracciones simples de ࢞ି࢞ା >> residue([1 -1], [1 -5 6]) ans = 2.0000 -1.0000 Por lo tanto, la solución sería:
௫ିଵ ௫ మ ିହ௫ା
ൌ
ଶ ௫ିଷ
െ
ଵ ௫ିଶ
Para comprobarlo: >> factor((2/(x-3))-(1/(x-2))) ans = (x - 1)/((x - 2)*(x - 3))
3.4
Cálculo de límites
Para calcular límites Matlab trabaja con variable simbólica, el comando viene dado por >>limit(f,x,punto). Por ejemplo: >> syms x, limit((x-1)/(x^2-5*x+6),x,1) ans = 0 Para calcular límites en el infinito, hay que especificar el argumento inf. En el ejemplo anterior, claramente, el resultado dará 0 ya que el grado del denominador es mayor que el del numerador >> limit((x-1)/(x^2-5*x+6),x,inf) ans = 0 3.4.1 Límites laterales Si se comienza a calcular de forma analítica el siguiente límite, se obtiene como resultado: x 2 5x 4 x o2 x2
lim
2 0
Este resultado indica que primeramente deben calcularse sus límites laterales para ver si existe o no dicho límite - para ello ambos límites laterales deben coincidir-. Matlab lo indicará devolviendo como resultado NaN, es decir, está indicando que ese límite no existe:
67
Matlab para Matemáticas en ingenierías
>>syms x, limit((x^2-5*x+4)/(x-2),x,2) ans = NaN Para ver el por qué no existe, se calculan los límites laterales y se observa que dan resultados distintos. Por lo tanto, el límite no existirá, como bien ha indicado Matlab. El cálculo de los límites laterales se hace especificándolo como tercer argumento en el comando anterior: >>limit(expression,x,punto,’Right’), o bien >>limit(expression,x,punto,’Left’). Estos argumentos también pueden indicarse con minúsculas. >> limit((x^2-5*x+4)/(x-2),x,2,'right') ans = -Inf >> limit((x^2-5*x+4)/(x-2),x,2,'Left') ans = Inf 3.4.2
Asíntotas
El cálculo de las asíntotas de una función no es más que ir hallando los diversos límites en cada caso. a) Asíntotas verticales: la función f(x) tiene una asíntota lim f x f .
vertical en x=a, si
x oa
De hecho, posee A.V. (asíntota vertical) aunque el límite no exista y aunque sólo uno de los límites laterales dé infinito. ξ࢞ା
Ejemplo 3.6 Hallar las asíntotas verticales de f(x)= . Representar la función y la ࢞ା asíntota en la misma gráfica. Claramente, el punto a estudiar es x=-1, ya que anula el denominador. Se comenzará hallando la asíntota: >> syms x, y=sqrt(x+2)/(x+1);limit(y,x,-1) ans = NaN
68
Operaciones básicas con funciones
Por lo tanto, se observa que no va a existir el límite. Si se hallan los límites laterales: >> limit(y,x,-1, 'Right') ans = Inf >>limit(y,x,-1, 'Left') ans = -Inf Es decir, existe una A.V. en x=-1. Para dibujar la función y la asíntota en una misma ventana: >> x=-2:0.001:5;y=sqrt(x+2)./(x+1);plot(x,y,'b',[-1 -1],[-10 10],'k--'),axis([-2 5 -10 10]) 10 8 6 4 2 0 -2 -4 -6 -8 -10 -2
-1
0
1
2
3
4
5
Figura 3.1 Gráfico de función con asíntota vertical
Nota: Si se dan valores a la variable x con el comando linspace, unirá con un sólo trazo las dos ramas de las figuras. Para que en principio no salga la gráfica toda unida, defínase la variable como un vector y después indíquese la asíntota de forma gráfica. Si se desea en la gráfica cambiar colores, ejes, poner una leyenda, un título o demás propiedades, recordar que puede ser realizado desde la ventana de la gráfica, o bien en el menú Edit> Properties Figure; o bien clicando en el último icono de dicha ventana y luego con el botón derecho del ratón acceder a más propiedades. b) Asíntotas horizontales: la función f(x) tiene una asíntota horizontal en y=b, si lim f x b . x of
69
Matlab para Matemáticas en ingenierías
Ejemplo 3.7 Calcular las asíntotas de la función ݂ሺݔሻ ൌ ción e indicar todas sus asíntotas en la misma gráfica.
ଵ
. Representar dicha fun-
୪୬ሺ௫ሻ
>> syms x, y=1./log(x);limit(y,x,inf) ans = 0 >> limit(y,x,1) ans = NaN Por lo tanto, este límite no existe. Se comprueba con los límites laterales: >> limit(y,x,1,'right') ans = Inf >> limit(y,x,1,'left') ans = -Inf Así que existe una A.H. en y=0, y una A.V. en x=1. Para representarlas: >> x=0.01:0.0001:6;y=1./log(x);plot(x,y,'b',[1 1], [-5 5],'r--'), axis([0 6 -5 5]),hold on,plot(x,0,'r--') 5 4 3 2 1 0 -1 -2 -3 -4 -5
0
1
2
3
4
5
6
Figura 3.2 Gráfico de función con asíntota horizontal y vertical
c) Asíntotas oblicuas: Para hallar las asíntotas oblicuas, rectas de la forma y=mx+n, deben verificarse dos propiedades: ݂ሺݔሻ ൌ λ
௫՜ஶ
70
Operaciones básicas con funciones
݂ሺݔሻ אԹ ךሼͲሽ ௫՜ஶ ݔ
݉ ൌ ݈݅݉
Cuando se verifiquen estas dos propiedades, entonces se calcula n
lim ª¬ f x mx º¼ . xof
Con lo que la ecuación de la asíntota oblicua (A.O.) será y=mx+n, con lo valores de m y n obtenidos. Observar que, por propia definición, si hay asíntotas horizontales ya no hay oblicuas y viceversa. Ejemplo 3.8 Calcular las asíntotas de la función ࢌሺ࢞ሻ ൌ
࢞ ି ࢞ି
Se estudia el punto x=2 por anular el denominador, candidato a ser una A.V. >> syms x, limit((x^2-1)/(x-2),x,2,'right') ans = Inf >>limit((x^2-1)/(x-2),x,2,'left') ans = -Inf Efectivamente en x=2 existe una asíntota vertical.
Si se representa la función y la asíntota: >> ezplot((x^2-1)/(x-2),[-5 5]), axis([-5 5 -10 10]), hold on, y=-10:.001:10;plot(2,y,'r--') (x 2 - 1)/(x - 2) 10 8 6 4 2 0 -2 -4 -6 -8 -10 -5
-4
-3
-2
-1
0 x
1
2
3
4
5
En el dibujo ya se ha destacado la A.V. x=2, pero también se observa que existe una asíntota oblicua que va a ser calculada:
71
Matlab para Matemáticas en ingenierías
>> limit((x^2-1)/(x-2),x,inf) ans = Inf
Por lo tanto, se cumple la primera condición para que haya A.O. Hay que verificar ahora si m אԹ ךሼͲሽǣ >> m=limit((x^2-1)/(x*(x-2)),x,inf) m= 1 >> n=limit(((x^2-1)/(x-2))-x,x,inf) n= 2
Concluyendo que existe A.O., en la recta y=x+2. Para representar todo en una sola gráfica: >>syms x, ezplot((x^2-1)/(x-2),[-5 5]), axis([-5 5 -10 15]), hold on ; >>y=-10:.001:15;plot(2,y,'r--') >> hold on,ezplot(x+2,[-5 5]), axis([-5 5 -10 15]) 15
10
5
0
-5
-10 -5
-4
-3
-2
-1
0 x
1
2
3
4
5
Figura 3.3 Gráfico de función con asíntota oblicua y vertical
3.4.3 Límites de funciones a trozos Hasta el momento Matlab no calcula de forma directa límites de funciones a trozos, debe irse seleccionando, en cada caso, el trozo de función en el que se está trabajando según dónde se quiera calcular el límite. Ejemplo 3.9 Dada la función f x
x 2 1 ,x 1 ° ,1 d x 3 , averigua si es continua o no. ®1 ° x 1 ,x ! 3 ¯
Primero, observar que el Dom(f)=Թ. Además, como en cada uno de los trozos es continua, por ser funciones polinómicas, basta estudiar qué ocurre en los puntos frontera x=1,3. 72
Operaciones básicas con funciones
Se introduce la función en Matlab, vía inline o vía Anonymus: >> f=inline('(x.^2).*(x<1)+1.*((1<=x)&(x<=3))+(x+1).*(3
x
f(1)=3, comprobado mediante >> f(1) ans = 1 Calcular lim f x . Como x=1 es un punto frontera, se calcularán los límites x o1
laterales, pero al ser una función a trozos debe indicarse qué trozo es el adecuado ష ݂ሺݔሻ ൌ ݔଶ ௫՜ଵ
௫՜ଵ
݂ሺݔሻ ൌ శ ͳ
௫՜ଵశ
௫՜ଵ
>> syms x, l1=[limit(x^2,x,1),limit(1,x,1)] l1 = [ 1, 1] x
Como lim f x x o1
lim f x
x o1
f 1 1 .El límite existe, coincide con la
función en el punto y, por lo tanto, f es continua en x=1. Continuidad en x=3: x
x
f(3)=1, pues: >> f(3) ans = 1 Para calcular lim f x ,de nuevo se hallan los límites laterales: x o3
lim f x
x o 3
lim f x
x o 3
lim x 1
x o 3
lim x 1
x o3
>> l3=[limit(1,x,3),limit(x+1,x,1)] l3 = [ 1, 2] x
Por lo tanto lim f x , ya que los límites laterales no coinciden. Además, al x o3
dar valores reales distintos, se tiene en x=3 discontinuidad de salto |2-1|=1. 73
Matlab para Matemáticas en ingenierías
Así, la función f es continua en Թ̳ሼ͵ሽ.
3.5
Números Complejos
Para trabajar con zࣅԧ, Matlab proporciona las siguientes posibilidades.
Primero el usuario puede construir un número complejo con el comando >>complex(a,b), siendo a,bԹ
>> format rat >> complex(2,-3) ans = 2 - 3i Con esta orden, ans pasa a ser ya un número complejo, no real, como puede comprobarse con el siguiente comando lógico (la respuesta de este tipo de comandos es 1 si la comparación es cierta, y 0 si la comparación es falsa): >> isreal(ans) ans = 0
Para calcular sus partes reales e imaginarias, Matlab posee los comandos >>reale>>imag, respectivamente:
>> z=complex(2,-3) z= 2 - 3i >> real(z) ans = 2 >> imag(z) ans = -3
Para operar con números complejos puede hacerse con las operaciones habituales.
Ejemplo 3.10 Calcular >> z1=complex(1,1) z1 = 1 + 1i 74
1 i . 2 3i
Operaciones básicas con funciones
>> z1/z ans = -1/13
+ 5/13i
O incluso directamente: >> (1+i)/(2-3*i) ans = -1/13 + 5/13i
Para hallar el complejo conjugado, se tiene el comando>>conj:
>> conj(z) ans = 2 +
3i
Y para hallar su módulo y argumento, si se pretende expresarlo en forma polar, exponencial o trigonométrica, será>>abs,>>angle, respectivamente:
>> format short,abs(z) ans = 3.6056 Observar que este valor corresponde a: >> sqrt(13) ans = 3.6056 Nota: angle nos devuelve el ángulo en radianes, ya en el cuadrante adecuado. Si ሺ௭ሻ el argumento de un número complejo, se calculase mediante ܽ݊ܽݐሺ ሻ, este ሺ௭ሻ
comando devuelve el ángulo en radianes en el primer cuadrante, si la tangente es positiva; y el ángulo en el cuarto cuadrante –medido en sentido negativo-, si la tangente es negativa. Siendo el usuario el que deberá seleccionar el ángulo adecuado, según la representación del número complejo.
Para calcular raíces, de forma directa Matlab sólo averigua una de ellas.
>> z^(1/4) ans = 1.3366 - 0.3352i Para obtenerlas todas, se puede pasar el número complejo de forma binómica a forma exponencial, y trabajar con la expresión de un número complejo en forma exponencial:
75
Matlab para Matemáticas en ingenierías
z=|z|eiArg(z). Ahora basta operar así el número complejo, acordándose de que en Matlab el número e debe ser definido mediante >>e=exp(1) Finalmente, la fórmula para calcular raíces n-ésimas de un número complejo, z=|z|eiArg(z), dado en forma exponencial, quedaría resuelta con: >> w=nthroot(abs(z),n)*exp(i*(angle(z)+2*pi*k)/n) con n dato y k=0, …, n-1 Donde el comando >>nthroot(X,N), siendo X un número real y N el índice de la raíz, calcula las raíces N-ésimas del número real X. Ejemplo 3.11 Cálculo de las 4 raíces cuartas de z=2-3i >> z_0=(abs(z)^(1/4))*exp(i*angle(z)/4) >> z_1=(abs(z)^(1/4))*exp(i*(angle(z)+2*pi)/4) >> z_2=z_1*exp(i*2*pi/4) >> z_3=z_2*exp(i*2*pi/4) Estos resultados pueden obtenerse directamente con la fórmula: >> z=2-3*i;N=4;k=0:N-1;w=nthroot(abs(z),N)*exp(i*(angle(z)+2*pi*k)/N) w= 1.3366 - 0.3352i 0.3352 + 1.3366i -1.3366 + 0.3352i -0.3352 - 1.3366i
Para pasar un número complejo a su forma polar (o viceversa). Dadas las coordenadas cartesianas también puede efectuarse (además de calculando su módulo y argumento por separado), con el comando
>>[t,m]=cart2pol(a,b) Cabe tener en cuenta que el ángulo lo devuelve en radianes y que devolverá el Argumento principal. Por lo que, según el afijo del número complejo, debe elegirse el ángulo adecuado correspondiente al cuadrante en el que se encuentre. Para pasar de polares a cartesianas, se realiza con el comando: >>[a,b]=pol2cart(m,t)
76
Para representar el número complejo como un vector en el plano se tiene el comando
Operaciones básicas con funciones
>>compass(z) % siendo z=a+bi o también como >>compass(real(z),imag(z)) Si lo que se quiere es representar sólo el afijo del número complejo z: >>plot(z,’o’) Ejemplo 3.12 Representa los siguientes números complejos z1=2+2i y z2=3-2i. Para representarlos en una misma ventana, usando la sintaxis indicada anteriormente, introducir >> z1=2+2i; compass(z1); hold on; compass(3,-2) De donde se obtiene 90 3
120
60
2 150
1
180
30 0
210
330 240
300 270 Figura 3.4 Representación usando >>compass
Aunque este comando permite ir más allá, ya que directamente representa todas las raíces obtenidas de un número complejo. Retomando el Ejemplo3.11, si se quiere representar las raíces cuartas de z=2-3i, cuyo resultado estaba en la variable w, se escribe: >> compass(w) 90
1.5 60
120 1 150
30 0.5
180
0
210
330
240
300 270
77
Matlab para Matemáticas en ingenierías
Ejemplo 3.13 Se pide (a) Dados los números complejos z1=2+3i, z2=-3+i, representar en color azul los afijos de z1 y z2; en color rojo el afijo de z1+ z2; y en verde el afijo de i z1. (b) Dado z 9, representar el triángulo cuyos vértices son los afijos de las raíces cúbicas de z. Comprobar que el triángulo es equilátero. (c) Representar, en una misma figura, el triángulo del apartado (b) y el triángulo girado un ángulo cualquiera. a) >>z_1=2+3*i; >>z_2=-3+i; >>suma=z_1+z_2;giro=i*z_1; >>plot(z_1, 'ob') >>text(real(z_1)+0.2,imag(z_1), 'z1') %indicamos las coordenadas donde ponemos el texto >>hold on >>plot(z_2, 'ob') >>text(real(z_2)+0.2,imag(z_2),'z2') >>plot(suma, 'or') >>text(real(suma)+0.2,imag(suma),'z1+z2') >>plot(giro, 'og') >>xlabel('real') >>ylabel('imaginario') >>puntos=[0 z_1 suma z_2 0]; >>plot(real(puntos), imag(puntos), 'b') >>vector1=[0 suma]; >>plot(real(vector1),imag(vector1),'r') >>vector2=[0 giro]; >>plot(real(vector2), imag(vector2), 'g') >>axis equal -3 -2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2
Figura 3.5 Representación del polígono cuyos vértices son los afijos
78
Operaciones básicas con funciones
b) >> z=-9; % Cálculo de las 3 raíces cúbicas por nuestra cuenta >>z_0=(abs(z)^(1/3))*exp(i*angle(z)/3); >>z_1=(abs(z)^(1/3))*exp(i*(angle(z)+2*pi)/3); >>z_2=z_1*exp(i*2*pi/3); >>% Representación del triángulo >>vertices=[z_0 z_1 z_2 z_0]; >>plot(real(vertices),imag(vertices), 'g') Es interesante comprobar que se ha obtenido un triángulo equilátero, calculando la medida de cada uno de los lados, ejecutar para ello >>lado1=abs(vertices(1)-vertices(2)),lado2=abs(vertices(2)-vertices(3)) >>lado3=abs(vertices(3)-vertices(1)) c) Representación en la misma figura del triángulo girado >>hold on >>anguloGiro=pi/4; >>verticesGirados=vertices*exp(i*anguloGiro); >>plot(real(verticesGirados),imag(verticesGirados), 'r')
Figura 3.6 Representación de las raíces cúbicas y del giro efectuado
3.6
Derivadas
Para derivar en Matlab se utiliza el comando >>diff el cual trabaja en simbólico. Si no fuera así, Matlab lo que hace es calcular derivación numérica mediante diferencias finitas, que no es objeto de estudio de este libro. Por 79
Matlab para Matemáticas en ingenierías
eso, para hallar derivadas de funciones, se definirá previamente como simbólica aquella variable con respecto a la cual se quiere derivar la función. Si se acude a la ayuda del comando que proporciona Matlab para derivación simbólica, se encuentra:
diff(S,'v') or diff(S,sym('v')) differentiates S with respect to v. diff(S,n), for a positive integer n, differentiates S n times. diff(S,'v',n) and diff(S,n,'v') are also acceptable. diff(S,'v1','v2',...) or diff(S,sym('v1'),sym('v2'),...) differentiates S with respect to v1, v2, ...
Así, se ve cómo ir obteniendo las derivadas sucesivas, sin más que indicar el orden de derivación en el segundo o tercer argumento.
3.6.1 Funciones de 1 variable Cuando sólo se trabaja con una variable, no hace falta indicarla para obtener la derivada. Ejemplo 3.14 Obtener la primera y segunda derivada de f x
x2 1
Para obtener la primera derivada: >> syms x, diff(sqrt(x^2+1)) ans = x/(x^2 + 1)^(1/2) >> pretty(ans) …………………….. (aquí no queda tan bien por el formato en papel) x ----------2 1/2 (x + 1) Para obtener la derivada de orden 2: >> diff(sqrt(x^2+1),2) ans = 1/(x^2 + 1)^(1/2) - x^2/(x^2 + 1)^(3/2)
80
Operaciones básicas con funciones
>> pretty(ans) 2 1 x ----------- - ----------2 1/2 2 3/2 (x + 1) (x + 1) Finalmente, para poner esta operación más simplificada, se pide a Matlab que realice la suma de fracciones algebraicas: >> factor(ans) ans = 1/(x^2 + 1)^(3/2)
3.6.2
Funciones de varias variables En el caso de varias variables sí que debe especificarse con respecto a qué variable se deriva, obteniendo con ello las derivadas parciales. Es decir, las derivadas con respecto a las variables de los ejes. Aunque se desarrollará con más profundidad en el capítulo de funciones de varias variables, se ilustra aquí un ejemplo. Ejemplo 3.15 Hallar las derivadas parciales de la función f (x,y)=3x2-y2+6. Hallar
డ డ௫
>>syms x y, f=3*x^2-y^2-6; diff(f,x) ans = 6*x Hállese ahora
డ డ௬
>> f=3*x^2-y^2-6; diff(f,y) ans = - 2*y
3.7
Integración
Al igual que para la parte de derivación, en integración se procede a centrarse en el caso simbólico. El comando existente es: >>int Si de nuevo se accede a la ayuda de Matlab para integración simbólica:
81
Matlab para Matemáticas en ingenierías
int(S,v) is the indefinite integral of S with respect to v. v is a scalar SYM. int(S,a,b) is the definite integral of S with respect to its symbolic variable from a to b. a and b are each double or symbolic scalars. The integration interval can also be specified using a row or a column vector with two elements, i.e., valid calls are also int(S,[a,b]) or int(S,[a b]) and int(S,[a;b]). int(S,v,a,b) is the definite integral of S with respect to v from a to b. The integration interval can also be specified using a row or a column vector with two elements, i.e., valid calls are also int(S,v,[a,b]) or int(S,v,[a b]) and int(S,v,[a;b]).
3.7.1 Integrales impropias Destacar que en este caso, además de las integrales impropias de primera y segunda especie y las integrales mixtas, puede ocurrir que se quiera calcular la integral con el ‘Valor principal de Cauchy’. Para integrales impropias de 1ª especie, el Valor Principal de Cauchy se define como: ஶ
௧
ݒǤ Ǥ න ݂ሺݔሻ݀ ݔൌ න ݂ሺݔሻ݀ ݔ ௧՜ஶ ି௧
ିஶ
Y para el caso de una integral impropia de 2ª especie, con problemas en el punto x=b[a,c], el Valor principal de Cauchy sería
ିఌ
ݒǤ Ǥ න ݂ሺݔሻ݀ ݔൌ න
ఌ՜
݂ሺݔሻ݀ ݔ න ݂ሺݔሻ݀ݔ ఌ՜ ାఌ
Si esto es así, debe indicársele a Matlab dentro del comando >>int, mediante el siguiente argumento extra: >>int(...,'PrincipalValue',VAL) Los valores que toma la variable VAL son true o false, siendo este último el que se toma por defecto cuando no se indica nada. En cualquiera de los otros casos, Matlab calcula directamente las integrales impropias sin hallar su valor principal.
82
Operaciones básicas con funciones
Ejemplo 3.16 Sea la función f x
2 , calcular las siguientes integrales: x 1 3
2
2
0
2
³ x 1 dx , ³1 x 1 dx , ³1 x 1 dx 2
Para calcular la integral indefinida
³ x 1 dx , introducir
>> syms x,int(2/(x+1),x) ans = 2*log(x + 1) 3
Para calcular la integral definida
2
³ x 1 dx : 1
>> int(2/(x+1),x,1,3) ans = log(4) 0
Si ahora se pide como uno de los extremos de integración el valor x=-1,
2
³ x 1 dx
se
1
pasa a tener una integral impropia de 2ª especie, ya que la función no está definida en ese punto. Matlab lo calcula de forma directa, dando una integral impropia divergente: >> int(2/(x+1),x,-1,0) ans = Inf f
2 dx . 1 x2 1
Ejemplo 3.17 Hallar la integral impropia de 1ª especie ³
De nuevo, Matlab directamente calcula la integral, sea o no impropia. En este caso, la integral impropia es convergente >> int(1/(1+x^2),x,1,inf) ans = pi/4
83
Matlab para Matemáticas en ingenierías
3.7.2 Cálculo de áreas Para calcular áreas, Matlab permite representar el recinto que queda encerrado entre una curva y el eje OX. Para ello, en las pestañas de PLOTS, se tiene el icono de la barra de herramientas de area:
Figura 3.7 Imagen de Matlab del icono area
A continuación, se introduce la función de la que se quiere calcular el área, teniendo cuidado de que al ser representada, no puede definirse de forma simbólica. Al darle al icono, Matlab pone la orden en la ventana Command Window de forma automática. Ejemplo 3.18 Calcular el área encerrada entre la curva sinusoidal y=sin(x) y el eje OX con x[-2ʌ,2ʌ]. Primero se va a hacer una representación gráfica del área solicitada, usando las instrucciones anteriores. >> x=linspace(0,2*pi,1000); y=sin(x);axis([0 2*pi -1 1]) >> area(y) 1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1
100
200
300
400
500
600
700
800
Figura 3.8 Área encerrada
84
900
1000
Operaciones básicas con funciones
Para calcular el área encerrada, debe separarse en dos integrales, ya que el segundo trozo da una aportación negativa. Para ello, si es necesario, primero calcular los puntos de corte con los ejes mediante el comando >>solve o con >>fzero ya explicados. En este caso, como ya son conocidos se calculan de golpe las integrales: >> syms x, y=sin(x); S=int(y,x,0,pi)+abs(int(y,x,pi,2*pi)) S= 4
3.8
Ejercicios
1.- Hallar el dominio de las siguientes funciones. Hallar también sus asíntotas: ௫ିଵ
a) ݂ሺݔሻ ൌ ௫మ ା௫ାଶ,
௫ିସ
b) ݃ሺݔሻ ൌ ୪୬ሺ௫మିହ௫ାሻ,
௫ మ ାସ௫ାଷ
c) ݄ሺݔሻ ൌ ට
௫ మ ି௫
,
௫ିଵ
d) ݎሺݔሻ ൌ ௫మା௫ିଶ
2.- Representar las siguientes gráficas: a)݂ሺݔሻ ൌ
௫ మ ିଷ௫ାଶ ௫ାଵ
,
ʹݔെͷݔͶ
e) ሺݔሻ ൌ ටʹݔെͶݔʹ,
͵ݔെͳ
b) ݃ሺݔሻ ൌ ʹݔʹݔെ͵, ʹݔെͷݔͶ
͵ݔͳ
c) ݄ሺݔሻ ൌ ʹݔʹݔെ͵,
d) j(x)=log2(x-2),
ݔെͳ
f) ݍሺݔሻ ൌ ටʹݔെʹݔͳ, h) ݎሺݔሻ ൌ ݈݊ ቀݔെʹቁ
3.- a) En cada apartado del ejercicio anterior, calcular todas las asíntotas de las funciones y dibujarlas en las gráficas ya obtenidas. b) Observando las gráficas anteriores, indicar el dominio de cada apartado. Después calcularlo también analíticamente. c) Observando las gráficas nuevamente y sin necesidad de calcularlos, indicar los límites en los infinitos y en los puntos siguientes -según el apartado que se indica-: x=1 a); x=1,-3 b); x=-1,3 c); x=2 d),; x=2 e); x=1 f) y finalmente, para el apartado g) en x=1, 2. 4.- Indicar la expresión para representar las siguientes funciones, introdúcelas y represéntalas gráficamente:
85
Matlab para Matemáticas en ingenierías
4x 2 si x 0 ° x 1 ° 2 ° x 2 si 0 d x 3 ® 2 °x x6 °tag x si x ! 3 ° ¯
1
si x 1 ° 4e x 2 ® °¯ 4 sin( 2 x ) si 1 d x d 20
a) f ( x )
b) f ( x )
5.- Realizar con Matlab las siguientes operaciones algebraicas. Simplificar siempre que sea necesario. Obtener factorizados los resultados y, cuando se pueda, hallar el valor numérico: x 3 3x 2 a) 2 , x 4x 3
b) 2
S
3
S4
S
6
S
2
21 12
ǡ
e ln e5 4 ( e 1 ) sen( 2 x ) c) , d) e4 e tg( x )( 1 sen 2 x ) ሺଵି௫ሻሺ௫ାଶሻ
ଵ
ሺ௫ିଷሻ
మ ାାଵ
Soluciones: a)
, b)0, c)2, d)
6.- Dada la función y=sen(x). Evaluar dicha función para x=ʌ, ʌ/2, 0, ʌ/4, -ʌ/3. 7.- Calcular los siguientes límites: § 3x 2 2 x 16 · b) lim ¨ ¸ 2 x o2 © x x 2 ¹ x d) lim x o0 1 1 x
2x · § 1 2 a) lim ¨ ¸ xo2 © x2 x 4¹ § x 3 3x 2 · c) lim ¨ 3 ¸ x o1 © x x 2 ¹ 1
§ x 2 3 x 2 · x2 4 e) lim ¨ ¸ xo2 © x2 ¹
g) lim x xof
2x 4 2x 2
§ x2 3 · ¸ i) lim ¨ x of ¨© x 2 2 ¸¹
f) lim xo0
2 x sen( x ) x sen( x )
h) lim x o0
x 1
j) lim
xo0
x 2 sin 1x sin x ln( 1 x ) sin x x sin x
1 x
m) lim f x siendo f x x o0
xe 2 ,x 0 °° 2x 1 ® 2 ° x x 2 ,x t 0 °¯ x 1
8.- Resolver las ecuaciones: a) x 6-1 =0 86
b) tag x 2 1
c) sen x = -1/2 x[0,2S]
Operaciones básicas con funciones
9.- Hallar el conjunto de valores de xԹ para los que se verifican las siguientes desigualdades a)
1 3 t5 x 2x
b) x 2 1
1 2
d)
x 1 1 x2
e) | x+2| < | x-5|
x x3 ! x 2 3x 1
c)
x 2 x 1 !0 5 x
d)
g) x2 -2x -3 >0
f ) -3d x-5 d 2
10.- Resolver la ecuación ez=z0, para los valores de z0=-2,1+ξ͵ y 1. 11.- Calcular las siguientes raíces complejas y representarlas: a) ξʹ݅,
ల
b)ඥͳ െ ξ͵ ,
ర
c) ξͺ,
d) ξെͳ
12.- Dados los números z1=2-i, z2= 4S, z3= 3 cos S4 i sin S4 , realizar las operaciones que se indican a continuación expresando el resultado en forma binómica. (i) z1z2 (ii) z3 + z2 (iii) z2 (iv) z34 (v) 3 z3
13.- Dada la función
f x
e x x si x 0 ° 2 . Obtener b para que la ®§ bx x · °¨ x ¸ 2 si 0 d x 10 ¹ ¯©
función sea continua en x=0. 14.- Estudiar qué valor (o valores) debe tomar el parámetro a para que la siguiente función sea continua en su dominio de definición f x
° senx a cos x ® 2 °¯ 2 x a 2
si x 0 si x t 0
15.- Calcular las derivadas obteniendo la expresión más simplificada posible
a) f x
e x 1 x3
b) f x Ln
x 1 x 1
c) f x
x
2
5 x 6 Ln x 3
x 1 . Analizar: x 1 a) Dominio y asíntotas. b) Representar en la misma gráfica la función y las asíntotas.
16.- Sea f x x
17.- Hallar los extremos relativos de f(x)=݁ ௫ିଵ ሺ ݔെ ͳሻଷ Ǥ
87
Matlab para Matemáticas en ingenierías
18.- Para las siguientes funciones indicar: intervalos de crecimiento, decrecimiento, concavidad o convexidad y obtener, en caso de existir, máximos, mínimos y los puntos de inflexión. a) f(x)= x3 – 3x2 – 3x + 4 b) f(x) = x4– 6x3 +11x2–6x c) f(x) = x3 – 6x2 + 5x + 6 19.- Hallar las derivadas de las siguientes funciones
a) f x
e x 1 x3
b) f x Ln
x 1 x 1
x
c) f x
2
5x 6 Ln x 3
20.- Calcular las siguientes integrales: a)
2
³ x arctg( x ) dx
2 d) ³ cos ( 3x )dx
1
³ 4 x x 2 dx
b)
e)
³ arctg( 2x )dx
c)
f) ³
³
1 sen( x ) cos( x ) dx
x2 1 dx x2 1
3 g) ³ x 1 Lnx dx
e
1
21.- Hallar el área de la figura que queda entre las curvas y=-x+1, y=ln(x+2), ௫ y=݁ ൗସ െ ʹ, cuando x Ͳ. Representar la figura y sombrear el área pedida. 22.- Sea f(x) =(x-1) e-x. Calcular el área de la región limitada por la curva f(x) y el eje OX en el intervalo [1, e]. 23.- Calcular el área encerrada entre las gráficas de las funciones g(x)= -x2+6.
24.- Dada la función f x
x 1 ,x d 1 ° 2 . Calcular ®1 x ° x arctg x ,x ! 1 ¯
f(x)=x2+4 ,
3
³ f x dx . 0
x 1 , calcular el valor del parámetro b (con b>3) de x2 4 manera que en la región limitada por la gráfica de la curva, el eje de abscisas y
25.- Dada la curva la curva y
3
las recta x=3, x=b, el área sea Ln 4 b 2 .
88
Capítulo 4 Funciones de varias variables. Ecuaciones diferenciales 4
4.1
Derivación de funciones de varias variables
El comando para hallar las derivadas parciales sigue siendo >>diff, pero aquí sí que debe ser especificado con respecto a qué variable se deriva, obteniendo así las derivadas parciales. Es decir, las derivadas con respecto a las variables de los ejes. Destacar que se deben definir todas las variables como simbólicas. Ejemplo 4.1 Hallar las derivadas parciales de la función f (x,y)=x2+y2-1. Dibujarla. Para hallar
wf wx
>>syms x y, f=x^2+y^2-1; diff(f,x) ans = 2*x wf Ahora se calcula wy >> f=x^2+y^2-1; diff(f,y) ans = 2*y Para representarla: >>ezplot(x^2+y^2-1, [-2 2])), o bien >>ezplot(f,[-2 2])
89
Matlab para Matemáticas en ingenierías x2 + y2 - 1 2 1.5 1
y
0.5 0 -0.5 -1 -1.5 -2 -2
-1.5
-1
-0.5
0 x
0.5
1
1.5
2
Para calcular derivadas parciales sucesivas, hay que indicar como argumentos las variables con respecto a las cuales se quiere ir derivando y esto ya dice el orden de derivación. >>diff(f,var1,var2,...) Ejemplo 4.2 Hallar las primeras y segundas derivadas parciales de f(x,y)=x2y2+xy-3x+2y. >>syms x y, f=x^2*y^2+x*y-3*x+2*y; >> diff(f,x) ans = 2*x*y^2 + y – 3 Se obtiene,
డ డ௫
ሺݔǡ ݕሻ=2xy2+y-3
>> diff(f,y) ans = 2*y*x^2 + x + 2 Se obtiene,
డ డ௬
ሺݔǡ ݕሻ=2yx2+x-2
>> diff(f,y,x) ans = 4*x*y + 1 Se obtiene, >> diff(f,y,y) ans = 2*x^2
90
డమ డ௫డ௬
(x,y)=4xy+1
Funciones de varias variables. Ecuaciones diferenciales
Se obtiene,
డమ డ௬ మ
(x,y)=2x2
>> diff(f,x,y) ans = 4*x*y + 1 Se obtiene,
డమ డ௬డ௫
(x,y)=4xy+1. Con lo que se observa que se verifica el Teorema de Sch-
wartz, coincidiendo las derivadas cruzadas por tener una función continua con derivadas parciales continuas. >> diff(f,x,x) ans = 2*y^2 Y finalmente se obtiene,
డమ డ௫ మ
(x,y)=2x2.
En las siguientes subsecciones se van a ver los comandos que Matlab posee para calcular directamente el Jacobiano, vector gradiante y Hessiano, donde el cálculo de las derivadas de órdenes superiores lo hará de forma directa.
4.2
Vector gradiente
Dada una función de varias variables, por ejemplo f(x,y,z), se puede hallar directamente con Matlab su vector gradiente. Para calcular este vector, formado por las primeras derivadas de la función con respecto a cada una de las variables, sería >> G = gradient(f,v) El cual devuelve en G el vector gradiente de la función f, derivando con respecto a cada una de las variables indicadas en el vector v.
G
Ejemplo 4.3 Sea la función f(x,y,z)= xy + 2zx. Hallar su vector gradiente, f >> syms x y z; gradient(x*y + 2*z*x, [x, y, z]) ans= [y + 2*z; x; 2*x]
4.3
Matriz Jacobiana y Jacobiano
La matriz Jacobiana es la matriz formada por las primeras derivadas parciales de la función. El Jacobiano es el determinante de la matriz Jacobiana. 91
Matlab para Matemáticas en ingenierías
Si se desea hallar el Jacobiano del cambio de coordenadas cartesianas a polares, y de la transformación de cartesianas a cilíndricas de forma analítica, sería respectivamente: డ௫ డ J(r,ș)=ቮడ௫ డఏ
డ௬ డ ቮ=r, డ௬
డ௫
డ௬
డ௭
డ J(r,ș)=ተడ௫
డ డ௬
డ డ௭ ተ
డఏ
డఏ
డఏ
Ͳ
Ͳ
ͳ
డఏ
Para pasar de coordenadas cartesianas a esféricas: J(ȡ,T,M)=
=r
డ௫
డ௬
డ௭
డ ተ డ௫
డ డ௬
డ డ௭ ተ
ተ డఏ డ௫
డఏ డ௬
డఏ ተ డ௭
డ
డ
డ
=ɏଶ sen(ɔሻ
El comando en Matlab para calcular el Jacobiano es >>jacobian >> jacobian(f,v) computes the Jacobian of the scalar or vector f with respect to the vector v. The (i,j)-th entry of the result is df(i)/dv(j). Note that when f is scalar, the Jacobian of f is the gradient of f. Also, note that scalar v is allowed, although this is just DIFF(f,v). Example: syms x y z u v; jacobian([x*y*z; y; x+z],[x y z]) returns [y*z, x*z, x*y; 0, 1, 0; 1, 0, 1] jacobian(u*exp(v),[u;v]) returns [exp(v), u*exp(v)]
Puede comprobarse con este comando, que los Jacobianos de los cambios de coordenadas cartesianas a polares, a cilíndricas y finalmente a esféricas salen los expuestos arriba.
4.4
Matriz Hessiana y Hessiano
La matriz Hessiana está formada por las derivadas de orden 2 de la función z=f (x,y). La matriz Hessiana, ሺݔǡ ݕሻǡ viene definida por: ߲ଶ݂ ݔ߲ ۇଶ ൌ ۈଶ ߲ ݂ ݔ߲ݕ߲ۉ
92
߲ଶ݂ ߲ۊݕ߲ݔ ߲ଶ݂ ۋ ߲ ݕଶ ی
Funciones de varias variables. Ecuaciones diferenciales
Y en general, si se trabaja con una función de n-variables (x1,x2, …,xn), su definición sería: ߲ଶ݂ ଶ ݔ߲ ۇଵ ൌڭ ۈ ߲ଶ݂ ݔ߲ۉ ߲ݔଵ
߲ଶ݂ ߲ݔଵ ߲ݔଶ ڭ ߲ଶ݂ ߲ݔ ߲ݔଶ
߲ଶ݂ ߲ݔଵ ߲ݔ ۊ ǥ ۋ ڭ ߲ଶ݂ ǥ ߲ݔ ଶ ی ǥ
Además, como se ha citado anteriormente, para funciones continuas con derivadas parciales continuas se verifica el Teorema de Schwartz. Este tipo de funciones son las que van a manejarse, por lo tanto siempre se cumple: ߲ଶ݂ ߲ଶ݂ ൌ ߲ݕ߲ݔ߲ ݔ߲ݕ
Esta propiedad da lugar a que la matriz Hessiana sea una matriz simétrica, es decir, ൌ ். Aunque en este libro se trabaja con funciones de dos variables, este comando es válido para cualquier número de variables, siempre que estas sean indicadas como segundo argumento del comando >>hessian: >> help hessian --- help for sym/hessian --hessian Hessian matrix. hessian(f,x) computes the Hessian of the scalar f with respect to the vector x. The (i,j)-th entry of the resulting matrix is (d^2f/(dx(i)dx(j)). Note that scalar x is allowed although this is just DIFF(f,x,2). Example: syms x y z; hessian(x*y + 2*z*x, [x, y, z]) returns [0, 1, 2; 1, 0, 0; 2, 0, 0] Ejemplo 4.4 Calcular la matriz hessiana y el hessiano de la función f (x,y)= 2x2+y2+8x6y+20. >> syms x y,hessian(2*x^2+y^2+8*x-6*y+20,[x,y]) ans = [ 4, 0] [ 0, 2]
93
Matlab para Matemáticas en ingenierías
Por lo tanto, ൌ ቀ
Ͷ Ͳ
Ͳ ቁ. Y para calcular su determinante, es decir, el hessiano: ʹ
>> det(ans) ans = 8 Con lo que ȁȁ ൌ ͺǤ En este ejercicio, ha salido que el hessiano de esta función es siempre un valor constante y no depende, por tanto, del punto donde es evaluado. Pero esto no es siempre así, y la matriz hessiana puede depender de variables: ൌ ሺݔǡ ݕሻ. En ese caso, primero se calculará el hessiano en general y luego ya se evaluará en el punto que interese. Ejemplo 4.5 Calcular el hessiano en el punto (0,1) de la función f(x,y)= x2+y2sin(xy). Primero se halla la matriz hessiana: >>syms x y, A=hessian(x^2+y^2*sin(x*y),[x,y]) A= [ 2 - y^4*sin(x*y), 3*y^2*cos(x*y) - x*y^3*sin(x*y)] [ 3*y^2*cos(x*y) - x*y^3*sin(x*y), 2*sin(x*y) + 4*x*y*cos(x*y) - x^2*y^2*sin(x*y)] Es decir, ʹ െ ݕସ ݊݅ݏሺݕݔሻ ͵ ݕଶ ܿݏሺݕݔሻ െ ݕݔଷ ݊݅ݏሺݕݔሻ ൌ൬ ଶ ൰. ͵ݏܿ ݕሺݕݔሻ െ ݕݔଷ ݊݅ݏሺݕݔሻ ʹ݊݅ݏሺݕݔሻ Ͷݏܿݕݔሺݕݔሻ െ ݔଶ ݕଶ ݊݅ݏሺݕݔሻ
Para calcular el hessiano con Matlab: a) Sustituir el punto en la matriz hessiana y luego calcular el determinante. Para sustituir en una variable simbólica dos variables, como es en este caso, indicar las variables viejas y las nuevas: >> subs(A,{x,y},{0,1}) ans = [ 2, 3] [ 3, 0] >> det(ans) ans = -9 b) O bien calcular primero el determinante y sustituir ahí el punto: >> det(A) 94
Funciones de varias variables. Ecuaciones diferenciales
ans = 4*sin(x*y) - 9*y^4*cos(x*y)^2 - 2*y^4*sin(x*y)^2 + 8*x*y*cos(x*y) 2*x^2*y^2*sin(x*y) + 2*x*y^5*cos(x*y)*sin(x*y) >> subs(ans,{x,y},{0,1}) ans = -9 Nota: en el caso de poseer muchos puntos a evaluar, se explica una forma rápida de evaluar en el siguiente ejemplo.
4.5
Puntos críticos de funciones de varias variables
Para hallar los puntos críticos (máximos y mínimos relativos y puntos silla o puntos de inflexión), debe cumplirse la condición de: ሬሬሬሬԦ ሬԦ ݂ሺݔǡ ݕሻ ൌ Ͳ Esto es equivalente a resolver el sistema formado por las derivadas parciales: ߲݂ ሺݔǡ ݕሻ ൌ Ͳۗ ߲ݔ ߲݂ ሺݔǡ ݕሻ ൌ Ͳۘ ߲ݕ ۙ Los puntos (a,b) que son solución del sistema (no necesariamente lineal y resoluble mediante el comando >>solve) serán los puntos críticos. Para clasificarlos, hay que tener en cuenta el siguiente criterio: ȁȁሺܽǡ ܾሻ ൏ Ͳ ֜ ሺܽǡ ܾሻ݈݈݁ܽ݅ݏݐ݊ݑ݊ݑݏ ۓ ߲ଶ݂ ۖ ۓ Ͳ ֜ ሺܽǡ ܾሻ݁ݒ݅ݐ݈ܽ݁ݎ݉݅ݔ݉ݏ ۖ ߲ ݔଶ ȁȁሺܽǡ ܾሻ Ͳ ֜ ሬሬሬሬԦ ሺܽǡ ܾሻ ൌ Ͳ ଶ ሬԦݕ ݂ ݂ ߲۔ ሺܽǡ ܾሻ݁ݒ݅ݐ݈ܽ݁ݎ݉݅ݔ݉ݏ ۔ ݔ߲ەଶ ൏ Ͳ ֜ ۖ ۖ ȁȁሺܽǡ ܾሻ ൌ Ͳ ֜ ܱܰܫܥܣܯܴܱܨܰܫܻܣܪVܰ ە
Ejemplo 4.6 Hallar y clasificar los puntos críticos de f(x,y)=xy(1-x2-y2). Primero, se calcula el vector gradiente, pero se va a pedir a Matlab que lo devuelva en su expresión más simplificada: >> syms x y,simplify(gradient(x*y*(1-x^2-y^2),[x,y])) ans = -y*(3*x^2 + y^2 - 1) -x*(x^2 + 3*y^2 - 1)
95
Matlab para Matemáticas en ingenierías
ሬሬሬሬԦ ሺݔǡ ݕሻ ൌ Ͳ ሬԦ, mediante el comando solve, es conveniente pedir argumentos Al resolver ݂ de salida, para que así se obtengan las dos coordenadas de las soluciones, ya guardadas en sus respectivas variables: >> [S1,S2]=solve(-y*(3*x^2 + y^2 - 1),-x*(x^2 + 3*y^2 - 1)) S1 =
0 1 0 -1 0 1/2 -1/2 1/2 -1/2 S2 = 0 0 1 0 -1 1/2 1/2 -1/2 -1/2 Es decir, se encuentran 9 posibles puntos, donde en S1 se han colocado las opciones de la variable x mientras que en S2 están las de la variable y. Los puntos críticos a clasificar son: (0,0),(1,0),(0,1),(-1,0),(0,-1),(1/2,1/2),(-1/2,1/2),(1/2,-1/2) y (-1/2,-1/2). Para clasificarlos, se calcula el hessiano y se evalúa en estos puntos: >> HESI=det(hessian(x*y*(1-x^2-y^2),[x,y])) HESI = - 9*x^4 + 18*x^2*y^2 + 6*x^2 - 9*y^4 + 6*y^2 – 1 96
Funciones de varias variables. Ecuaciones diferenciales
>> p1=subs(HESI,{x,y},{0,0}) p1 = -1 Por lo tanto, como al sustituir el punto (0,0) el hessiano es menor que 0, esto asegura que: (0,0) es un PUNTO SILLA
x
Puede ir haciéndose así, uno por uno, o construir una sentencia donde los vaya evaluando todos, indicando el vector formado por los valores de la variable x y el vector de las coordenadas de la variable y: >> determinanteevaluado=subs(HESI, {x,y},{[0,1,0,-1,0,1/2,-1/2,1/2,-1/2],[0,0,1,0,1,1/2,1/2,-1/2,-1/2]}) O mejor y más abreviado, ya que los vectores de ambas variables son S1 y S2: >> determinanteevaluado=subs(HESI, {x,y},{S1,S2}) Obteniendo, en ambos casos, como salida: determinanteevaluado = [-1, -4, -4, -4, -4, 2, 2, 2, 2] Ahora ya pueden clasificarse todos los puntos, observando que: x
PUNTOS SILLA: (0,0),(1,0),(0,1),(-1,0),(0,-1)
Los demás puntos son máximos o mínimos relativos, al tener hessiano positivo. Para saber si son máximos o mínimos, hay que estudiar el signo de
డమ డ௫ మ
ሺܽǡ ܾሻǤ
>> matriz=hessian(x*y*(1-x^2-y^2),[x,y]); >>deri2x=[subs(matriz(1,1),{x,y},{1/2,1/2}),subs(matriz(1,1),{x,y},{1/2,1/2}),subs(matriz(1,1),{x,y},{1/2,-1/2}),subs(matriz(1,1),{x,y},{-1/2,-1/2})] deri2x = [-3/2 , 3/2, 3/2, -3/2] Esta instrucción puede hacerse con un solo >>subs, como anteriormente, optimizando el lenguaje de comandos: >> deri2x=subs(matriz(1,1),{x,y},{[1/2,-1/2,1/2,-1/2],[1/2,1/2,-1/2,-1/2]}) deri2x = [ -3/2, 3/2, 3/2, -3/2]
97
Matlab para Matemáticas en ingenierías
Así: x x
Máximos relativos: (1/2,1/2), (-1/2,-1/2) Mínimos relativos: (-1/2,1/2), (1/2,-1/2)
Formato tabla: Para una mejor visualización, ilustramos lo obtenido mediante una tabla. Para ello, se va a usar el comando >>table que trabaja con datos numéricos. Así que lo primero es convertir los datos que son simbólicos (por haber sido obtenidos mediante el comando >>subs) en numéricos: >> componentes=double([S1,S2]) componentes = 0 0 1.0000 0 0 1.0000 -1.0000 0 0 -1.0000 0.5000 0.5000 -0.5000 0.5000 0.5000 -0.5000 -0.5000 -0.5000 >> determinante=double(determinanteevaluado) determinante = -1 -4 -4 -4 -4 2 2 2 2 >> segundaderivadax=double(deri2x) segundaderivadax = 0 0 0 0 0 -1.5000 1.5000 1.5000 -1.5000
98
Funciones de varias variables. Ecuaciones diferenciales
>> Analisis=table(componentes,determinante,segundaderivadax) Analisis = componentes determinante segundaderivadax _______________ ____________ _______________ 0 0 -1 0 1 0 -4 0 0 1 -4 0 -1 0 -4 0 0 -1 -4 0 0.5 0.5 2 -1.5 -0.5 0.5 2 1.5 0.5 -0.5 2 1.5 -0.5 -0.5 2 -1.5 Evidentemente de la columna de segundaderivadax sólo interesan los datos correspondientes a los puntos con determinante positivo para discernir si son mínimos o máximos. Y ya, desde la tabla, se puede clasificar: x x x
4.6
Puntos silla: (0,0),(1,0),(0,1),(-1,0),(0,-1) Máximos relativos: (1/2,1/2), (-1/2,-1/2) Mínimos relativos: (-1/2,1/2), (1/2,-1/2)
Integración de funciones de varias variables
Siempre que se pueda aplicar el Teorema de Fubini, el cálculo de integrales múltiples consistirá en realizar las integrales de forma iterada, indicando en cada caso la variable respecto a la cual estamos integrando. De nuevo el comando a emplear es >>int. Se describen varios ejemplos para ilustrar este apartado. 1 1
Ejemplo 4.7 Calcular la siguiente integral
³³e
y2
dy dx . Representar el dominio de
0 x
integración. మ
Analíticamente, como la función ݁ ௬ no tiene primitiva con respecto a la variable y, no se podría hallar esta integral. Sin embargo, esto no resulta ser un problema para Matlab, que cambiando el orden de integración por su cuenta, calcula la integral: >> syms x y, int(int(exp(y^2),y,x,1),x,0,1) ans = exp(1)/2 - ½
99
Matlab para Matemáticas en ingenierías
Para representar el dominio de integración, al ser un triángulo de vértices (0,0), (0,1) y (1,1), bastará con: >> x=[0,1,0];y=[0,1,1]; % Vértices del triángulo >> fill(x,y,'b'),xlabel('x fijo', 'Fontsize',11),text(0.6,0.5,'y=x'), title('Dominio de integración'), axis square Dominio de integración 1 0.9 0.8 0.7 0.6 0.5
y=x
0.4 0.3 0.2 0.1 0 0
0.2
0.4
0.6
0.8
1
x fijo
Figura 4.1 Relleno de figuras y dominio de integración
Ejemplo 4.8 Hallar la integral
³³ x
2
y 2 1 dA , donde D es el disco limitado por la
D
circunferencia x2+y2 =4. Para ello, se realiza un cambio a polares tanto de la función como del recinto. No olvidar añadir el Jacobiano de la transformación a la hora de integrar. La función quedaría: >>syms x y r theta, f=inline('x^2+y^2+1') f= Inline function: f(x,y) = x^2+y^2+1 >> F=simplify(f(r*sin(theta),r*cos(theta))) F= r^2 + 1 Y para cambiar a polares el recinto: >> g=x^2+y^2-4;D1=simplify(subs(g,{x,y},{r*cos(theta),r*sin(theta)})) D1 = r^2 – 4
100
Funciones de varias variables. Ecuaciones diferenciales
Si se calcula la integral en el recinto, las variables toman valores entre rࣅ[0,2] y șࣅ[0,2ʌ]. Es decir: ଶ
ଶగ
ඵ ሺ ݔଶ ݕଶ ͳሻ݀ ܣൌ න න ݎሺ ݎଶ ͳሻ݀ߠ݀ݎ
Por ello con Matlab: >> int(int(r*F,r,0,2),theta,0,2*pi) ans = 12*pi Ejemplo 4.9 Hallar el volumen del sólido situado en el primer cuadrante y comprendido entre el plano OX, el plano z=y y el cilindro x2+y2=1. 1º.- Antes que nada, es conveniente representar el sólido y el dominio de integración, parte importante de este tipo de ejercicios para conocer así dónde se mueven las variables. Se pueden rotar las figuras desde la propia ventana gráfica con el icono adecuado (segunda figura). Además, si se rotan puede verse la figura desde arriba y así observar qué curva queda como intersección de ambas superficies. Se va a utilizar el comando >>cylinder para la representación >> syms y, cylinder(1,100),hold on, ezsurf(y,[-3,3])
Figura 4.2 Cilindro y plano desde dos puntos de vista
También puede dibujarse el cilindro en paramétricas, tomando, por ejemplo, altura 3. El cilindro tiene de ecuación r=1 y considérese altura 3 para representarlo. Usando el comando >>plot3 o el comando >>mesh, quedaría respectivamente:
101
Matlab para Matemáticas en ingenierías
>>t=[0:0.1:2*pi]';u=[0:.1:3];x=cos(t)*ones(size(u));y=sin(t)*ones(size(u));z=ones(size(t) )*u; plot3(x,y,z),hold on >>t=[0:0.1:2*pi]';u=[0:.1:3];x=cos(t)*ones(size(u));y=sin(t)*ones(size(u));z=ones(size(t) )*u; mesh(x,y,z),hold on
3
3
2.5
2.5
2
2
1.5
1.5
1
1
0.5
0.5
0 1
0 1
0.5
1
0.5
0.5
0
0
-0.5
-0.5 -1
1 0.5
0
0
-0.5
-0.5 -1
-1
Figura 4.3 Representación usando >>plot
-1
Figura 4.4 Representación usando >>mesh
Se dibujará el plano en la segunda gráfica, por tener una malla más clara (rotando la figura para obtener una mejor visión): >>[x,y]=meshgrid(0:.1:2);z=y;mesh(x,y,z),box on,xlabel('Eje X'),ylabel('Eje Y'),zlabel('Eje Z')
3
2.5
Eje Z
2
1.5
1
0.5 -1 0 -1
0 -0.5
0
0.5
1
1 1.5
2
2 Eje X
Eje Y
2º.- Obtener el dominio de integración Claramente la función a integrar es z=y que es la tapa del sólido. En este ejemplo hay que restringirse al primer cuadrante. Primeramente, se calculará la proyección sobre el plano XY. Todo esto puede hacerse con Matlab, siempre que se tenga en cuenta que, al estar dentro del cilindro x2+y2=1 y en el primer cuadrante, hay que despejar y quedarse con el caso y=ξͳ െ ݔଶ , con xࣅ[0,1]. Quedando el dominio de integración:
102
Funciones de varias variables. Ecuaciones diferenciales
>> x=[0:.1:1];y=sqrt(1-x.^2);area(x,y),legend('Dominio de integración'),axis square Desde la ventana gráfica, se puede manipular la figura para insertar cuadro de texto: 1 Dominio de integración
0.9
y=sqrt(1-x 2)
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 4.5 Dominio de integración
3º.- Calcular la integral que halla el volumen; es decir: ܣ݀ݕ ଵ
ξଵି௫ మ
Aplicando Fubini se realiza la integral iterada
ݔ݀ݕ݀ݕ:
>> syms x y, V=int(int(y,y,0,sqrt(1-x^2)),x,0,1) V= 1/3 (u3 o u.d.v.)
4.7
Ecuaciones diferenciales
El comando que resuelve ecuaciones diferenciales es: >>dsolve Nota: En el caso de que Matlab no encuentre una solución analítica explícita, el paquete proporciona una solución implícita, dando un mensaje de aviso. Al igual que ocurre con el comando >>solve, el comando >>dsolve también trabaja con argumentos simbólicos. Por defecto toma como variable t, pero la variable puede ser cambiada especificándola >> syms y(t), dsolve(diff(y)==t) ans = t^2/2 + C2
Pueden pedirse condiciones iniciales, teniendo así un P.V.I. (Problema del Valor Inicial):
103
Matlab para Matemáticas en ingenierías
>> syms y(t),dsolve(diff(y)==t, y(0)==1) ans = t^2/2 + 1
Si se desea resolver ecuaciones diferenciales donde los coeficientes sean parámetros, deben declararse dichos parámetros como simbólicos; y en la llamada al comando introducir, como argumento, la nueva variable independiente (por ejemplo, si ahora la variable fuera x): >> syms a y(t), y=dsolve(diff(y)==a*y,y(0)==1,'x') y= exp(a*x) Ejemplo 4.10 Resolver la siguiente ecuación diferencial: yc (x2+1)ey - (2x2+1) (1+e y ) =0. Como, en este caso, la variable independiente es x, puede ejecutarse de dos formas. O bien: >> syms y(t), dsolve(diff(y)==(2*x^2+1)*(1+exp(y))/((x^2+1)*exp(y)),'x') ans = log(exp(C5 + 2*x - atan(x)) - 1) pi*i O bien, indicando desde el principio que y=y(x) con: >> syms y(x), dsolve(diff(y)==(2*x^2+1)*(1+exp(y))/((x^2+1)*exp(y))) ans = log(exp(C5 + 2*x - atan(x)) - 1) pi*i Nota: De forma similar al comando >>solve, puede ocurrir que, al resolver una EDO, se obtenga una sola solución, aun sabiendo que existen más. En ese caso se introducirá un argumento adicional, 'IgnoreAnalyticConstraints', indicando como argumento último: false Ejemplo 4.11 Resuelve la ecuación diferencial
yc t
y t .
Evidentemente, esta ecuación puede ser vista como y’(t)=y2(t). Y resolverla mediante ௗ௬ ିଵ ൌ ݐ ܥ. variables separadas de la forma మ ൌ ݀ݐ. Por lo tanto, la solución sería ௬
௬
Despejando la función y(t), para dar la solución de forma explícita, se tendrá: y(t)=
104
ିଵ ௧ା
.
Funciones de varias variables. Ecuaciones diferenciales
Si se resuelve directamente con Matlab, sale un solo resultado, lo que indica que la solución no es correcta del todo pues una EDO sin condiciones iniciales tendrá infinitas soluciones. De hecho, la solución encontrada es la trivial,: >> syms y(t),dsolve(sqrt(diff(y))==y) ans = 0 Por ello se exigirá: >> syms y(t),dsolve(sqrt(diff(y))==y,'IgnoreAnalyticConstraints', false) Warning: The solutions are subject to the following conditions: (C13 + t)*(1/(C13 + t)^2)^(1/2) = -1 > In dsolve at 219 ans = -1/(C13 + t)
4.7.1 Sistemas de EDO’s Este comando también resuelve sistemas de EDO’s sin más que indicarle las ecuaciones a resolver. Eso sí, en últimas versiones de Matlab, se le debe introducir como argumentos de salida tantas funciones solución como se busquen, para obtenerlas todas: ° f c t 2 f t f Ejemplo 4.12 Resolver el sistema siguiente ® °¯ g c t t y
Si se escribe directamente la orden, que funcionaba en anteriores versiones: >> syms f(t) g(t), S=dsolve(diff(f)-2*f==t*f,diff(g)==t+g) S= g: [1x1 sym] f: [1x1 sym] Y no devuelve, en verdad, las soluciones buscadas. Por ello, se pedirá en el argumento de salida dos funciones: >> syms f(t) g(t), [Sf,Sg]=dsolve(diff(f)-2*f==t*f,diff(g)==t+g) Sf = C4*exp((t*(t + 4))/2) Sg = exp(t)*(C5 - exp(-t)*(t + 1))
105
Matlab para Matemáticas en ingenierías
4.7.2 Métodos numéricos para la resolución de EDO’s En muchas ocasiones no es posible resolver, de forma analítica, una ecuación diferencial, y es por ello que hay que recurrir al uso de métodos numéricos. Matlab también tiene implementados métodos numéricos para resolver ecuaciones diferenciales. Para ver más información sobre ellos basta ir, con >>helpwin, a la sección de matlab\funfun donde se indicarán los comandos que existen para resolver, de forma numérica, ODE’s (Ordinary Differential Equations). Por ejemplo, si se pretende aplicar los métodos de Runge-Kutta de órdenes 2 o 3, o de órdenes 4 o 5, existen respectivamente los siguientes comandos: >> ode23, >> ode45 >>[x y]=ode45(función, intervalo, condición inicial y0) Salvo que se modifiquen los argumentos (mirar la ayuda de Matlab para este comando, >>help ode23), trabaja con tolerancia relativa, por defecto, de 10-3. Y con una tolerancia absoluta de 10-6, como ocurre con el método >>ode45. Ejemplo 4.13 Resolver el siguiente P.V.I. (Problema del Valor Inicial) mediante algún ° y c x 0.1 y x 0.02 y método Runge-Kutta, dos métodos al menos: ® . Representar °¯ y 0 0.01 las soluciones obtenidas con dichos métodos. Como primera parte, se va a aplicar un Runge-Kutta de orden 2 o 3. En este caso, la función se define de forma simbólica mediante Anonymus: >> f=@(x,y) 0.1*y-0.02*y.^2; [x y]=ode23(f, [0 130], 0.01); plot(x,y,'LineWidth',3), grid on, axis([0 130 -1 6]) No se muestra por pantalla el vector con las soluciones, ya que interesa más su representación con ambos métodos. 6
5
4
3
2
1
0
-1 0
20
40
60
80
100
120
Figura 4.6 Solución aportada por Runge-Kutta de orden 2,3
106
Funciones de varias variables. Ecuaciones diferenciales
Si ahora se aplicase un Runge-Kutta de órdenes 4 o 5: >> f=@(x,y) 0.1*y-0.02*y.^2; [x y]=ode45(f, [0 130], 0.01); plot(x,y,'LineWidth',3), grid on, axis([0 130 -1 6]) Y la representación gráfica obtenida sería: 6
5
4
3
2
1
0
-1 0
20
40
60
80
100
120
Figura 4.7 Solución aportada por Runge-Kutta de orden 4,5
4.8
Ejercicios
1.- Calcular el vector gradiente de las funciones: a) f(x,y) =
y 2
x y2
d) f(x,y) = x2 y3
b) f(x,y) = e-x cos y
c) f(x,y)= 2+y2sen(xy)
e) f(x,y) = x4+y4 -4xy+1
f) f x, y
4 x2 y2
2.- Determinar y clasificar los puntos críticos de las siguientes funciones: a) f(x,y)= y x2- 4xy + 3x2+ (1/2) y2 b) f(x,y) = (x+y) 2 -5 c) f(x,y)= x3 -y2 -3x -4y -4 d) f(x,y)= y3+(x+y)2 +6(x-y). e) f(x,y)= y3-2x2-4xy +30 f)
f(x,y)= y3-2x2-4xy +30
g) f(x,y)= x3+x2 y+y2+2y h) f (x,y ) = -5x2-8y2-2xy+42x+ 102 y i)
f x, y
1 2
x 3 6 x 2 4 xy 12 y
107
Matlab para Matemáticas en ingenierías
3.- Considerar la función de dos variables f(x,y) = a(2xy+y2+yx2)+x2(a2-y) donde a ࣅԹ. Sabiendo que en el punto (0,0) la función presenta un punto crítico, aplicar el criterio del Hessiano para clasificar dicho punto en función de los valores de a. 4.- Sea f(x,y) = x3- 3axy +y3 . Determinar y clasificar los puntos críticos de la función según los valores de a Թ. 5.- Sea la función f (x,y)= 1-px2+2y2. Sea la derivada direccional de la función en el o
punto (1, -1) según la dirección del vector v
G G i j es 3. Obtener el valor de p.
6.- Dada la región D del plano limitada por las rectas y = -3x+6 e y = 0, la parábola y = 4x-x2 y la recta x = 4 y dada la superficie z = x2+y2, calcular el área de la superficie. 7.- Calcular el volumen de una peonza modelizada por las superficies de ecuaciones S1{x2+y2=z2, S2{x2+y2+(z-2)2=4. 8.- Una caja rectangular sin tapa superior debe tener un volumen de 12m3. Determinar las dimensiones de la caja que darán un área mínima. 9.- Sea D la región limitada por las curvas xy=9, y=x, x=9 e y=0. Calcular: a) Área de la región D. b) Volumen limitado inferiormente por la región y superiormente por el plano z=2x+3y. c) Área del plano z=2x+3y situado sobre la región D. 10.- Resolver las ecuaciones diferenciales siguientes: a) (2y-x3)dx=x dy b) ey dx- y x (x-1)dy =0 x 3y c) y c 3x y 11.- Resolver la ecuación diferencial yc (x2+1)ey - (2x2+1)(1+ey) =0. Obtener la solución particular para la condición inicial y(1) = 1.
108
Funciones de varias variables. Ecuaciones diferenciales 2
12.- Resolver la ecuación diferencial y'
3( 1 x ) e 1 ey
y
. Obtener la solución particular
para la condición inicial (1,0). 13.- Resolver la ecuación diferencial y obtener la solución particular para la condición inicial dada x2 3 y2 ½ ° 4 xy ¾ ° y 1 0 ¿ yc
109
Capítulo 5 Introducción a la Estadística Descriptiva 5
5.1
Introducción
Este capítulo ofrece al lector una introducción a la estadística descriptiva, tanto teórica como en el marco de Matlab. La Estadística es la parte de las Matemáticas que se encarga del estudio de una determinada característica en una población. Recogiendo los datos, organizándolos en tablas, representándolos gráficamente y analizándolos para sacar conclusiones de dicha población. En el caso de la estadística descriptiva, el estudio se realiza sobre la población completa, observando una característica y calculando unos parámetros que proporcionen información global de toda la población. Si se realizase un estudio descriptivo sobre un subconjunto de la población llamado muestra y, posteriormente, se extendiesen los resultados obtenidos a toda la población, se estaría realizando inferencia estadística. Matlab posee toolbox o herramientas para el cálculo de estadísticos, ajuste por rectas de regresión, mínimos cuadrados, distribución de probabilidad, función de densidad. etc.
111
Matlab para Matemáticas en ingenierías
Estas aplicaciones pueden encontrarse en el directorio de stats\statsdemos (dentro del índice de ayuda proporcionado por >>helpwin). Para cálculo de parámetros estadísticos y funciones de probabilidad se puede acudir al directorio de: >>helpwin y dentro de los diferentes temas examinar stats\stats. O directamente, >>help stats. Ahí se encuentran los comandos necesarios para trabajar con funciones de probabilidad ya conocidas, o cálculo de parámetros estadísticos, indicados en el apartado correspondiente a Descriptive Statistics. En las tablas 5.1, 5.2, 5.3 y 5.4 se indica una relación de parámetros estadísticos, órdenes para gráficos, cálculo de probabilidad y función de densidad, tomado de la ayuda que ofrece el programa, aunque las tablas son de elaboración propia. Tabla 5.1 Relación de parámetros estadísticos
PARÁMETROSESTADÍSTICOS corr
Linearorrankcorrelationcoefficient.
corrcoef
Linearcorrelationcoefficient(inMATLABtoolbox).
cov
Covariance(inMATLABtoolbox).
geomean
Geometricmean.
iqr
Interquartilerange.
mad
MedianAbsoluteDeviation.
mean
Sampleaverage(inMATLABtoolbox).
median
50thpercentileofasample(inMATLABtoolbox).
mode
Mode. or most frequent value in a sample (in MATLABtoolbox). Linearorrankpartialcorrelationcoefficient.
partialcorr partialcorri prctile quantile range std
Partial correlation coefficients with internal adjustͲ ments. Percentiles. Quantiles. Range. Standarddeviation(inMATLABtoolbox).
tabulate var
Frequencytable. Variance(inMATLABtoolbox).
112
Introducción a la Estadística Descriptiva Tabla 5.2 Relación de opciones para representar
REPRESENTACIONES hist(X,n)
HistogramadedatosX,nnúmerodeclaseequidistantes
bar(X)
Diagramadebarrasvertical
plot
Polígonodefrecuencias
barh(X)
Diagramadebarrashorizontal
pie(f)
Gráficodesectores, dondefcorrespondealasfrecuencias
En cuanto a trabajar con distribuciones, o bien discretas o bien continuas, Matlab también proporciona comandos al respecto: Tabla 5.3 Distribuciones de probabilidad
DISTRIBUCIONESDEPROBABILIDAD binostat
Binomialmeanandvariance.
nbinstat
Negativebinomialmeanandvariance.
normstat
Normal(Gaussian)meanandvariance.
poisstat
Poissonmeanandvariance.
normcdf
Normal(Gaussian)cumulativedistributionfunction.
poisscdf
Poissoncumulativedistributionfunction.
binocdf
Binomialcumulativedistributionfunction.
Si se quiere trabajar con las funciones de densidad, de nuevo ya están implementadas. Recordar que, una función de densidad para una variable aleatoria, es la función f(x) que verifica:
ܲሾܽ ܺ ܾሿ ൌ න ݂ሺݔሻ݀ݔ x
Y la función de distribución es, F(x) tal que: F x
³ f u du
f
113
Matlab para Matemáticas en ingenierías
Tabla 5.4 Opciones de funciones de densidad en Matlab
FUNCIONESDEDENSIDAD binopdf
Binomialdensity.
nbinpdf
Negativebinomialdensity.
normpdf
Normal(Gaussian)density.
poisspdf
Poissondensity.
A lo largo de este capítulo se introducirá, primero, la teoría necesaria para trabajar el tema de estadística: definiciones, representaciones, parámetros, etc. Después, mediante ejemplos, se detallará cómo realizar el cálculo de los resultados buscados mediante el uso de los comandos de Matlab.
5.2
Estadísticos y representación
5.2.1 Variables estadísticas El cometido de la Estadística Descriptiva es facilitar el establecimiento de comparaciones entre diferentes grupos. Bien entre grupos distintos, o bien para un mismo grupo en dos instantes de tiempo diferentes. Según sea la naturaleza de los valores, la variable estadística puede clasificarse en:
Cualitativas. Cuando los valores que toma la variable no son numéricos.
Cuantitativas. Cuando los valores que toma la variable son números reales.
Las variables cuantitativas se clasifican en discretas y continuas.
Variable cuantitativa discreta: si los posibles valores pertenecen a un conjunto numerable. Por ejemplo, puntuaciones obtenidas por un grupo de alumnos en una asignatura.
Variable cuantitativa continua: si los posibles valores pertenecen a un conjunto no numerable. Como las alturas de un conjunto de alumnos.
Si sólo se tiene en cuenta una característica de la población, se dice que es un estudio unidimensional. Si se estudian dos o más características, es un estudio bidimensional o multidimensional, respectivamente. Población: conjunto de elementos con alguna o algunas características comunes. Muestra: Es un subconjunto de la población.
114
Introducción a la Estadística Descriptiva
Variable estadística: divide la población, de manera natural, en grupos denominados clases (conjuntos disjuntos) al considerar los diversos atributos de la variable. Si se desea conocer con gran exactitud, cómo es cierta característica de una determinada población, la mejor forma será recoger los datos de todos, y cada uno, de los individuos que integran la población completa, analizarlos y extraer las conclusiones correspondientes. El cometido de la Estadística Descriptiva de este capítulo, es un estudio básico en el que se muestra cómo obtener gráficos y parámetros, representativos de una serie de datos unidimensionales.
5.3
Distribución de frecuencias
El conjunto de valores observados, o serie numérica, constituye el material inicial a partir del cual debe llevarse a cabo el análisis estadístico descriptivo. Sí el número de datos no es muy reducido, su interpretación se facilita presentándolos agrupados en una tabla. (a) Cuando la variable estudiada es de tipo discreto, cualitativa o cuantitativa, con un número reducido de valores posibles, los datos pueden sintetizarse en una tabla, en la que para cada valor xi se muestra la frecuencia absoluta ni o número de veces que dicho valor se observa en la muestra. Dado que la frecuencia absoluta depende del número total de observaciones N, la frecuencia relativa no es más que ni/N. -
Frecuencia absoluta, ni, es el número de veces que se repite cada valor de la variable. A la suma de todas las frecuencias absolutas se le llama N = ¦ ni
-
Frecuencia relativa, fi, es el cociente entre la frecuencia absoluta y el número total de datos: ݂ ൌ ே Frecuencia absoluta acumulada, Ni, indica el número de datos que hay iguales o inferiores al considerado. Frecuencia relativa acumulada, Fi, es el resultado de dividir cada frecuencia absoluta acumulada entre el número total de datos. Informa del tanto por uno de datos que hay igual o inferior al considerado.
i
-
(b) Cuando la variable estudiada es de tipo continuo, como es difícil encontrar valores repetidos, se procede a un agrupamiento de datos en intervalos, por lo general de igual amplitud, que suele denominarse clase. Generalmente la marca de la clase es el punto medio del intervalo. La anchura de la clase se obtendrá dividiendo la diferencia entre el mayor y el menor valor por el número de clases. También se puede hacer de otro modo, estableciendo una anchura de clase determinada. Pero hay que tener en cuenta 115
Matlab para Matemáticas en ingenierías
que, el número de clases resultantes esté comprendido entre 5 y 20, para que la tabla y los gráficos puedan transmitir con facilidad la idea de la distribución de frecuencias. Analizando como antes, pero referido ahora a la marca de la clase: -
Frecuencia absoluta, ni, N = ¦ ni
-
Frecuencia relativa, ݂ ൌ ே Frecuencia absoluta acumulada, Ni Frecuencia relativa acumulada, Fi
i
5.3.1 Representaciones gráficas En el análisis descriptivo tienen mucha utilidad las representaciones gráficas de los datos que se poseen de las variables estadísticas, a partir de los cuales se puede llegar de forma más fácil a conclusiones. Los tipos de gráficos que aquí se destacan son: (1) Diagrama de barras (>>bar(Datos)): rectángulos de igual base, generalmente dispuestos en posición vertical, en el que la altura de cada uno es proporcional a la frecuencia. 10 9 8 7 6 5 4 3 2 1 0
0
5
10
15
20
25
(2) Gráficos de tarta o sectores (>>pie(f)): la superficie total de un círculo se divide en sectores de forma que el área de cada sector es proporcional a la frecuencia de la clase. 4%
4%
8%
8%
13% 21%
17%
13% 13%
116
data1 data2 data3 data4 data5 data6 data7 data8 data9
Introducción a la Estadística Descriptiva
(3) Polígono de frecuencias (>>plot(d)): las ordenadas de las frecuencias absolutas se unen mediante una línea poligonal. 5 4.5 4 3.5 3 2.5 2 1.5 1
2
3
4
5
6
7
8
9
10
(4) Histograma (>>hist(Datos,n)): representación gráfica formada por rectángulos cuyas áreas son proporcionales a las respectivas frecuencias de los intervalos considerados. Si la amplitud de los intervalos es constante, el gráfico se convierte en un diagrama de barras. 5 4.5 4 3.5 3 2.5 2 1.5 1 0.5 0
2
3
4
5
6
7
8
9
10
5.3.2 Ejemplos con Matlab de distribución de frecuencias y diagramas A. Ejemplo Caso Variable discreta Los datos pueden sintetizarse en una tabla, en la que para cada valor xi se muestra la frecuencia absoluta ni. Considérense las puntuaciones obtenidas en una prueba mostradas en la serie de datos siguiente: Datos= {6,4,5,8,5,4,7,4,5,10,9,9,3,8,4,4,6,7,7,8,2,3,6,7} Se pide: 117
Matlab para Matemáticas en ingenierías
a) Ordenarlos, calcular el mínimo y máximo de los datos. b) Obtener una tabla de frecuencias. c) Representar el polígono, histograma y diagramas de barras. Resolución: a) Se introducen los datos definiendo el vector D >> D=[6, 4, 5, 8,5,4,7,4,5,10,9,9,3,8,4,4,6,7,7,8,2,3,6,7] En este apartado hay que: - Ordenar datos >>sort(D); - obtener el mínimo >>min(D); - obtener el Máximo >> max(D) >> D=sort(D) D= Columns 1 through 13 2
3
3
4
4
4
4
4
5
5
5
8
8
8
9
9
10
6
6
Columns 14 through 24 6
7
7
7
7
>>min(D) % devuelve el valor mínimo ans= 2 >> max(D) % devuelve el valor máximo ans= 10 b) Obtener tablas de frecuencias con variable discreta es muy rápido, ya que el nombre de la clase coincide con el valor numérico del dato. Con la orden >>tabulate(D), Matlab devuelve una tabla en la que la primera columna son los valores de d, ordenados de menor a mayor; la segunda columna corresponde a la frecuencia absoluta ni ; y finalmente, la tercera columna muestra la frecuencia relativa fi en %. >> tabulate(D)
118
Introducción a la Estadística Descriptiva
Value
Count Percent
1
0
0.00%
2
1
4.17%
3
2
8.33%
4
5
20.83%
5
3
12.50%
6
3
12.50%
7
4
16.67%
8
3
12.50%
9
2
8.33%
10
1
4.17%
c) Representaciones Al tener variable discreta, el valor numérico coincide con el nombre de la clase. En el valor 1 no hay ningún dato, por tanto se tienen nueve clases. Para obtener el histograma de frecuencias se pide como argumento los datos y el número de clases. En este caso, datos= D, número de clases= 9 >>hist(D,9) % histograma con 9 clases 5 4.5 4 3.5 3 2.5 2 1.5 1 0.5 0
2
3
4
5
6
7
8
9
10
También pueden generarse los diagramas de barras en horizontal y vertical: >>bar(D) % diagrama de barras 119
Matlab para Matemáticas en ingenierías
10 9 8 7 6 5 4 3 2 1 0
0
5
10
15
20
25
>>barh(D) % diagrama de barras horizontal 25
20
15
10
5
0
0
2
4
6
8
10
B. Ejemplo Caso variable continua En este caso, como es difícil encontrar valores repetidos, se procede a un agrupamiento de datos en intervalos, por lo general de igual amplitud, que suele denominarse clase. Generalmente la marca de la clase es el punto medio del intervalo. Considérense los siguientes datos correspondientes a la estatura de 200 personas: 1.83 1.80 1.71 1.80 1.78 1.89 1.72 1.70 1.70 1.70 1.80 1.61 1.71 1.83 1.58 1.76 1.63 1.65 1.71 1.69
120
1.65 1.61 1.89 1.77 1.73 1.66 1.86 1.88 1.69 1.71 1.71 1.72 1.58 1.64 1.66 1.78 1.75 1.71 1.68 1.69 1.68 1.77 1.63 1.75 1.74 1.82 1.78 1.94 1.70 1.69
1.89 1.74 1.78 1.72 1.80 1.77 1.74 1.61 1.54 1.68
1.74 1.76 1.83 1.65 1.83 1.72 1.57 1.83 1.56 1.81 1.71 1.71 1.77 1.83 1.82 1.86 1.60 1.65 1.67 1.79 1.78 1.77 1.83 1.69 1.88 1.75 1.56 1.83 1.88 1.83 1.64 1.90 1.70 1.68 1.62 1.73 1.69 1.87 1.68 1.87 1.68 1.77 1.69 1.94 1.67 1.71 1.69 1.70 1.75 1.85 1.72 1.64 1.64 1.84 1.86 1.78 1.80 1.68 1.77 1.68 1.86 1.76 1.93 1.77 1.72 1.63 1.67 1.83 1.76 1.66 1.79 1.72 1.79 1.59 1.62 1.67 1.81 1.71 1.74 1.68 1.72 1.77 1.69 1.89 1.51 1.60 1.75 1.79 1.69 1.73 1.62 1.91 1.72 1.88 1.69 1.60 1.77 1.74 1.64 1.87 1.71 1.79 1.68 1.67 1.79 1.54 1.73 1.80 1.78 1.65 1.81 1.73 1.85 1.77 1.78 1.58 1.74 1.75 1.81 1.74 1.82 1.50 1.62 1.74 1.80 1.79 1.65 1.69 1.70 1.73 1.75 1.71 1.87 1.70 1.83 1.74 1.79 1.83 1.71 1.88
Introducción a la Estadística Descriptiva
Se desea: a) Introducir la tabla en Matlab, asignarle nombre de variable. b) Pasar de matriz de datos a vector columna. c) Obtener valor mínimo, valor máximo, ordenar. d) Construir una tabla de frecuencias absolutas y relativas. e) A partir de la tabla de frecuencias, ¿cuántas personas miden menos de 1.70?, ¿qué porcentaje de personas su altura se encuentra en el intervalo [1.6, 1.7)?, ¿qué porcentaje de personas tiene un altura inferior a 1.90? f)
Representar los diferentes tipos de gráficos.
Resolución a) Crear la variable: Para no tener que introducir a mano la matriz, selecciónese la matriz anterior y cópiese. Entrar en Matlab y clicar en New variable
Figura 5.1 Imagen de Matlab
Se abre el asistente y se pega, el resultado obtenido se muestra en la figura 5.2
Figura 5.2 Imagen de Matlab con la tabla de datos almacenada en variable
121
Matlab para Matemáticas en ingenierías
Poner el cursor en wokspace/unnamed y clicar el botón derecho para seleccionar rename
Con esto se renombra la variable matriz como x. b) Si se quiere trabajar con un vector columna. Para transformar la matriz en un vector existe el comando >>reshape(A,m,n), donde A es la matriz de la que se parte, m nuevo número de filas y n nuevo número de columnas). En este caso se tienen 200 datos y, por ello, se va a originar un vector de 200 filas >>d=reshape(x,200,1) c) Se obtiene el valor mínimo y máximo >> min(d) ans = 1.5000 >> max(d) ans = 1.9400 d) Para obtener la correspondiente tabla de frecuencias Si se usase >>tabulate(d), devolvería las frecuencias considerando d como variable discreta. Como en este caso la variable es continua, hay que emplear otros comandos. Primero, para ello, se distribuyen los datos en intervalos, los valores van del min= 1.5 al max=1.94, siendo anchura =(max-min)/nº clases= (1.94-1.5)/nº de clases=0.44/nº de clases 122
Introducción a la Estadística Descriptiva
Si se considera 5 clases, anchura=(1.94-1.5)/5=0.088. Para no tener que trabajar con decimales es conveniente tomar anchuras de 0.1 [1.5,1.60[, [1.60,17[, [1.7,1.8[, [1.8,1.9[ , [1.9,2.0[ Los datos se agrupan en 5 grupos, es decir en 5 clases. Marca de la clase, punto medio del intervalo. Clase
Marca de la clase
Intervalo que describe
1
1.55
[1.5, 1.6[
2
1.65
[1.6, 1.7[
3
1.75
[1.7, 1.8[
4
1.85
[1.8, 1.9[
5
1.95
[1.9, 2.0[
El siguiente paso es crear un vector de clase, m, y un vector de frecuencia f. Nota: si a la orden de histograma se le asigna una salida numérica, ya no representa el gráfico del histograma, sino que devuelve el vector fila de frecuencias absolutas. Esto puede comprobarse creando un vector m con los valores que van del mínimo al máximo de 0.1 en 0.1.
Como son vectores filas, para dar lugar a los vectores columna han de transponerse y a continuación, ya se puede construir la tabla de frecuencias. Si se desea una salida con forma de tabla, se tiene el comando >>table(columna1,columna2…), proporcionándole como argumentos las columnas que van a intervenir en la tabla. Con este fin se crea la columna clase y la columna fabs, del siguiente modo:
123
Matlab para Matemáticas en ingenierías
>>clase=m’ >>fabs = f’ %frecuencia absoluta >>table(clase, fabs)
La orden >> cumsum(vector) es la que suma los elementos de vector. Queda por obtener la frecuencia relativa frel, la frecuencia absoluta acumulada fabsacumulada y la frecuencia relativa acumulada frelacumulada, para construir una tabla de frecuencias en la que aparezcan como columnas: clases, frecuencia absoluta, frecuencia absoluta acumulada y frecuencia relativa. Las expresiones introducidas para los cálculos y los resultados se muestran a continuación:
124
Introducción a la Estadística Descriptiva
Y para crear, finalmente, la tabla completa
Con la tabla anterior ya se puede dar respuesta a todas estas cuestiones: Ͳ
¿Cuántas personas miden menos de 1.70?, si uno observa en la tabla son un total de 73.
Ͳ
¿Qué porcentaje de personas tiene su altura en el intervalo [1.6, 1.7)?, mirando en la tabla le corresponde 0.295, que es un 29.5%.
Ͳ
¿Qué porcentaje de personas tiene una altura inferior a 1.90?, se ve que van desde 1.50 hasta 1.90; es decir la suma de frecuencia relativa acumulada corresponde a 0.98, que es un 98%. f) Representación del histograma con la orden >>hist(Datos,clases). En este ejercicio, los datos corresponden a la matriz d y las clases que se han creado anteriormente se han asignado al vector m. Escribiendo la orden indicada se consigue representar el histograma: >>hist(d,m)
125
Matlab para Matemáticas en ingenierías
90 80 70 60 50 40 30 20 10 0 1.5
5.4
1.6
1.7
1.8
1.9
2
PARÁMETROS ESTADÍSTICOS DE POSICIÓN Y DISPERSIÓN
Fundamentalmente, la pauta de variabilidad constatada en un conjunto de observaciones relativas a una variable cuantitativa unidimensional, puede caracterizarse por dos tipos de parámetros que definen, respectivamente, la posición y la dispersión. 5.4.1 PARÁMETROS ESTADÍSTICOS DE POSICIÓN Los parámetros de posición tienen por objetivo proporcionar valores en torno a los cuales se encuentran las observaciones. Entre ellos están: media aritmética, media geométrica, mediana, moda, cuartiles y percentiles. Las expresiones a usar en Matlab son las indicadas en la tabla siguiente. Tabla 5.5 Parámetros estadísticos de posición en Matlab
PARÁMETROSESTADÍSTICOSDEPOSICIÓN mean
Mediaaritmética
median
Mediana
mode
Moda
geomean
Mediageométrica
quantile(X,p)
Quartiles.
prctile
Percentiles.
126
Introducción a la Estadística Descriptiva
a)
Media aritmética: dado un conjunto de N valores, ^x1 ,x2 ,...,xN ` , de una varia-
ble estadística cuantitativa, el valor medio o media aritmética, ݔҧ , es la suma de todos los valores dividido por el número total de datos N:
1 ( x1 x2 .... x N ) N
x
Si se conocen las frecuencias, la media aritmética se obtiene mediante:
¦x f i
Media
Promedio
Media Aritmética
x
i
i 1
N
b) Mediana: la mediana de un conjunto de datos es el valor del dato situado en el centro de la serie de valores, cuando estos están ordenados. En general, si hay N valores, N impar, la mediana correspondería a la posición
N 1 2
.
En el caso de que el número de datos, N, de la serie sea par, la mediana se obtiene como promedio de los dos valores centrales. N 2
N
y
Por tanto, para calcular la mediana
2
1
x N 1 ° 2 ° ® xN xN 1 ° 2 2 °¯ 2
N
impar debe distinguirse si
N
par
el número de datos es par o impar. c) Moda: de un conjunto de datos es el valor que aparece con mayor frecuencia. La moda de una serie estadística es un indicador de posición central. Puede denominarse robusto, porque resulta poco influida por la presencia de algunos valores extremos, digamos anormales, y que en ocasiones provienen de errores en la medición o lectura. Su uso es muy recomendable cuando se trata de variaciones muy discontinuas en una serie. d) Media Geométrica de un conjunto de N valores es la raíz n-ésima de los productos de dichos números. n
MG
n
xi i 1
n
o
n
x f
i i
i 1
127
Matlab para Matemáticas en ingenierías
Ejemplo 5.1 Sean los siguientes datos correspondientes a una variable discreta, Datos={6,4,5,8,5,4,7,4,5,10,9,9,3,8,4,4,6,7,7,8,2,3,6,7}. Calcular la media, moda, mediana y media geométrica. Las órdenes a utilizar se pueden consultar en la Tabla 5.1. El vector de datos será >>D=[6 4 5 8 5 4 7 4 5 10 9 9 3 8 4 4 6 7 7 8 2 3 6 7];
Ejemplo 5.2 Considérese la variable continua d cuya tabla de frecuencias puede consultarse en el epígrafe 5.3.2.2. Hallar los valores de media, mediana y moda, introducidas las ordenes referidas a los datos d.
e) Cuartiles: Una vez ordenado el conjunto de los datos de forma creciente, se procede a dividir la cantidad de datos en cuatro partes iguales. Se está pasando a estudiar los denominados cuartiles: - La primera cuarta parte de los elementos es inferior al primer cuartil Q1. Por lo tanto, el primer cuartil indica el valor tal que hay un 25% de los datos inferiores a él.
128
Introducción a la Estadística Descriptiva
- el segundo cuartil Q2 es el elemento que supera al 50% de los valores. Evidentemente, dicho cuartil es la mediana, - el tercer cuartil Q3 es el elemento supera el 75% de los datos. Acudiendo a >>help quantile se puede encontrar la siguiente ayuda y = quantile(x,.50); % the median of x y = quantile(x,[.25 .50 .75]); % the quartiles of x y = quantile(x,3); % another way to get quartiles y = quantile(x,[.025 .25 .50 .75 .975]); % a useful summary of x f) Percentiles: Cuando el conjunto de los datos se divide en 100 partes iguales, se habla de percentiles. El percentil del 10% de un conjunto de datos, será el dato tal que haya un 10% de los datos inferiores a él. Si se busca la ayuda de Matlab sobre la orden percentil >> help prctile Y = prctile(X,P) returns percentiles of the values in X. P is a scalar or a vector of percent values. When X is a vector, Y is the same size as P, and Y(i) contains the P(i)-th percentile. When X is a matrix, the i-th row of Y contains the P(i)-th percentiles of each column of X. For N-D arrays, prctile operates along the first non-singleton dimension. Examples: y = prctile(x,50); % the median of x y = prctile(x,[2.5 25 50 75 97.5]); % a useful summary of x Ejemplo 5.3 Considérese el conjunto de datos D anterior. Calcular los cuartiles 1, 2, 3 y los percentiles del 25%, 50% y 75%. Los resultados obtenidos se muestran a continuación.
129
Matlab para Matemáticas en ingenierías
Ejemplo 5.4 Considérese el conjunto de datos d de variable continua. Calcular los cuartiles 1, 2, 3 y los percentiles del 25%, 50% y 75%. Los resultados obtenidos son los siguientes:
5.4.2 Medidas de dispersión En el apartado anterior se han mostrado diversas formas de establecer un representante de un determinado conjunto de datos o medidas. Otro aspecto muy importante para completar la imagen que uno se forma del conjunto de datos, a partir de los parámetros de posición, es la dispersión. Se entiende que un conjunto de datos tiene poca dispersión si están agrupados en torno al valor medio de ese conjunto de datos. Por el contrario, se dice que la dispersión es alta si hay bastantes datos suficientemente alejado del promedio.
130
Introducción a la Estadística Descriptiva
Entre las medidas de dispersión se encuentran: recorrido o rango, recorrido intercuartílico, desviación absoluta media, desviación estándar y varianza. a) El Recorrido es el parámetro de posición más intuitivo. Para conjuntos pequeños de datos puede ser el más significativo a efectos prácticos. Se define el Recorrido como la diferencia entre el mayor valor observado y el menor valor observado. - ejemplo de variable discreta de las notas: Recorrido =10-2=8 - ejemplo de variable continua de las alturas: Recorrido =1.94-1.5=0.44 En Matlab para calcular el rango puede hacerse mediante la función >> range (datos) o mediante >>max(datos)-min(datos). b) Recorrido intercuartílico: En los casos en que la media no es un indicador adecuado de posición (caso de distribuciones muy asimétricas), la desviación típica no resultará un parámetro adecuado de dispersión. En esos casos se utiliza, a veces, con dicho fin el recorrido o distancia intercuartílica. Para calcularlo analíticamente: Recorrido intercuartílico= diferencia entre el tercer y primer cuartil= Q3-Q1. En Matlab, la orden >>iqr(datos), devuelve directamente el recorrido intercuartílico. Uno de los significados del recorrido intercuartílico es que en un intervalo centrado en la mediana de longitud, se encuentran el 50% de los elementos del conjunto. El intervalo intercuartílico es un indicador robusto de dispersión (resulta poco influido por los valores anómalos). Ejemplo 5.5 Con los datos d de variable del ejemplo anterior, halla el recorrido intercuartílico y el recorrido. -Para calcular el recorrido intercuartílico, basta hallar Q3-Q1. Este valor indica dónde se encuentra acumulado el 50% de la población. Puede ser calculado a partir de los cuartiles o, utilizando directamente la función >>iqr(datos). Los resultados son los mostrados a continuación. >>iqr(D) ans= 3.5000 -Para hallar el recorrido, basta restar al valor máximo de la población el valor mínimo. Otra forma es utilizando la función >> range (datos). Los resultados utilizando ambas opciones son:
131
Matlab para Matemáticas en ingenierías
>> max(D)-min(D) ans = 8 >>range(D) ans = 8 c) Desviación absoluta media: En un conjunto de N datos, de media x , se denomina desviación de cada elemento a su diferencia respecto a la media del conjunto. Se define la desviación absoluta media como el promedio de los valores absolutos de las desviaciones. Las fórmulas que la calculan son: Variable Discreta d)
¦x
i
N
x
,
Variable continua
¦| x
x | fi
i
i 1
N
Varianza: Se define la varianza como la media de las desviaciones al cuadrado.
Se representa por V
2
V
¦ x x i
2
2
fi
i 1
N
O bien, si no se tienen los datos agrupados por frecuencias ߪଶ ൌ
ଶ σே ୀଵሺݔ െ ݔҧ ሻ ܰ
La varianza mide la dispersión de los valores de la variable respecto de la media. Cuanto mayor sea la varianza, menos representativa es la media. e) Desviación estándar: A la raíz cuadrada de la varianza se le denomina Desviación Estándar. Se expresa en las mismas unidades que la media. Variable discreta V
¦( x x )2 n
¦ x x i
,
Variable continua V
2
fi
i 1
N
La media puede no resultar un indicador de medida central en aquellas series asimétricas o con valores extremos. Como consecuencia, la desviación estándar tampoco será un parámetro adecuado de dispersión, ya que su cálculo se basa en desviaciones respecto a la media. En esos casos se utiliza el intervalo intercuartílico.
132
Introducción a la Estadística Descriptiva
Un resumen de los parámetros de dispersión con la expresión a introducir en Matlab se puede consultar en la siguiente tabla
EXPRESIÓNMATLAB
PARÁMETROSESTADÍSTICOSDEDISPERSIÓN
range(datos) RecorridooRango iqr(datos) Recorrido cuartílico
máximoͲmínimo Q3ͲQ1
interͲ
mad(datos) Desviaciónmedia
¦x
i
N
Std(datos,1) Desviación estánͲ dardelapoblación V var(datos) Varianza
x
¦| x
x | fi N
n
¦( x x ) n
¦ x x
2
¦( x x )
2
fi
i
i 1
V
N
2
V
i
i 1
V
2
¦ x x i
2
fi
i 1
N
Ejemplo 5.6 Obtener los parámetros de dispersión para el conjunto de datos de variable continua d utilizada en los ejemplos anteriores. El resultado es:
133
Matlab para Matemáticas en ingenierías
f) Coeficiente de variación: También es una medida relativa de dispersión. Determina el grado de dispersión de un conjunto de datos relativo a su media aritmética. Si se ha realizado un estudio estadístico en dos poblaciones diferentes y se quiere comparar la variabilidad de dichas poblaciones, con valores medios muy diferentes, analizar las diferencias entre sus desviaciones típicas no es significativo. La varianza está afectada por los cambios de escala y, por tanto, no es útil para comparar dispersiones entre variables estadísticas con distintas unidades. Por ello, para comparar la dispersión entre muestras o poblaciones, se utiliza el coeficiente de variación CV. El coeficiente de variación se define como la relación entre la desviación típica y la media de la población:
CV
V 100 , se expresa en % x
Este valor, expresado en tantos por uno, siempre está en el intervalo [0,1]. Cuanto más cercano a 0, indica una menor separación de los datos con respecto a la media, y al revés si es cercano a 1. Ejemplo 5.7 La demanda de un detergente en un hipermercado tiene un promedio de 400 paquetes diarios con una desviación típica de 75 paquetes. Este mismo producto en una pequeña tienda de barrio tiene una demanda media de 10 paquetes con una desviación típica de 4 paquetes. ¿En qué establecimiento la demanda es más variable? En este caso se recurre para compararlas al coeficiente de variación de las dos muestras Hipermercado CV=(75/400)*100=18.75 % Pequeña tienda CV=(4/10)*100=40% La demanda es más variable en la pequeña tienda de barrio. Ejemplo 5.8 Dos estudiantes universitarios, A y B, tienen las siguientes calificaciones en las 10 asignaturas que cursan en su carrera: Calificaciones del estudiante A: 8, 7, 10, 9, 8, 7, 8, 10, 9 y 10. Calificaciones del estudiante B: 8, 9, 8, 7, 8, 9, 10, 7, 8 y 10. ¿Qué estudiante tiene menor variabilidad en sus calificaciones? Primero deben definirse los vectores A y B y a continuación, calcular los coeficientes de variación usando directamente Matlab.
134
Introducción a la Estadística Descriptiva
El estudiante A tiene de CV= 12.95% y el estudiante B tiene de CV =12.14%. Por tanto, el estudiante con una menor variabilidad en sus notas es el B.
5.5
Ejercicios
1.- Se considera el número de materias suspensas que constan en el expediente de un grupo de alumnos. Con estos datos se construyó la siguiente distribución de frecuencias: Materias suspensas 0 1 2 3 4 5 6
No de estudiantes 12 14 27 18 9 6 5
a) Generar con Matlab una tabla con clases, frecuencias absolutas, relativas y acumuladas. b) A partir de la tabla indicar: ¿Cuántos estudiantes tienen menos de dos asignaturas suspendidas? ¿qué porcentaje de estudiantes tienen más de 5 materias suspendidas? c) Representar el histograma. d) Calcular la moda, la media, la mediana, la desviación típica y el coeficiente de variación.
135
Matlab para Matemáticas en ingenierías
2.- Calcular el tiempo medio y la mediana de montaje si los tiempos obtenidos han sido: 3.4, 3.5, 2.7, 3.6, 2.8, 2.9, 3.2, 3.5, 2.6, 2.8 horas. 3.- Se considera la siguiente serie de datos x, ordenados de mayor a menor 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 7, 7, 8, 9, 12, 15, 20. Al transcribir los datos se reemplaza, por error, el valor 20 por 0 dando lugar a una nueva serie de datos y. a) Calcular para ambas series de datos, x, y, el valor medio, moda, desviación típica, Q1, Q3 y el recorrido intercuartílico. b) Analizar cuál de los valores calculados muestra mayor robustez como medida de posición, y cuál mayor robustez como medida de dispersión al producirse el error. 4.- Se ha realizado una encuesta en 30 hogares en la que se les pregunta el nº de individuos que conviven en el domicilio habitualmente. Las respuestas obtenidas han sido las siguientes: 4, 4, 1, 3, 5, 3, 2, 4, 1, 6, 2, 3, 4, 5, 5, 6, 2, 3, 3, 2, 2, 1, 8, 3, 5, 3, 4, 7, 2, 3. a) Calcule la distribución de frecuencias de la variable obteniendo las frecuencias absolutas, relativas y sus correspondientes acumuladas. b) ¿Qué proporción de hogares está compuesto por tres o menos personas? ¿Qué proporción de individuos vive en hogares de tres o menos miembros? c) Dibuje el diagrama de frecuencias absolutas y el diagrama de frecuencias acumuladas. d) Agrupar por intervalos de amplitud 2 los valores de la variable. Obtener histograma, tabla de frecuencias, absolutas y relativas. 5.- La tabla siguiente muestra el resultado de una encuesta entre los alumnos de primer curso, analizando el número de suspensos en la primera evaluación : 022403325232434314110411424203130522303051140 323233124231314 a) Construir la tabla de frecuencias. b) Obtener: media, varianza, cuartiles.
136
Introducción a la Estadística Descriptiva
c) Recorrido, recorrido intercuartílico, varianza. 6.- Las estaturas en cm de 40 estudiantes son: 168 176 198 146 191 a) b) c) d) e) f) g) h)
194 188 156 173 175
180 170 168 172 165
162 177 196 177 172
174 166 193 165 180
155 178 199 183 186
179 182 184 170 175
187 174 195 165 158
Construir la tabla de frecuencias con ancho de clase de 5 cm. Construir la tabla de frecuencias con 8 clases. Representar los histogramas de frecuencias. Analizar las diferencias. Calcular la media y la mediana utilizando los datos originales. Buscar la moda y compararla con la media y la mediana. Indicar el primer y tercer cuartil de esta distribución. Indicar el recorrido. Indicar la distancia intercualtílica.
7.- Se ha medido la velocidad de un automóvil durante un viaje de 4 horas, siendo los resultados Km/h Menos de 40 Entre 40 y 50 Entre 50 y 60 Entre 60 y 70 Entre 70 y 80 Entre 80 y 90 Entre 90 y 100 Entre 100 y 120 Entre 120 y 150
minutos 10 20 35 40 50 40 30 10 5
Calcúlese la velocidad media y la desviación típica, teniendo en cuenta las marcas de clase. Representar el histograma. 8.- Sobre un grupo de 25 personas se realizan las siguientes observaciones de sus pesos (en Kg): 58, 42, 51, 54, 43, 42, 49, 56, 58, 57, 59, 63, 58, 66, 70, 72, 71, 69, 70, 68, 64, 60, 54, 49, 71
137
Matlab para Matemáticas en ingenierías
a) Construir una tabla de frecuencias, agrupando los datos en 5 grupos. b) Obtener la tabla de frecuencia absoluta, frecuencia relativa, tomando intervalos de longitud 4kg. c) Representar en un histograma. d) Indicar el peso medio y coeficiente de variación. 9.- El número de unidades defectuosas encontradas en la inspección sistemática de 20 cajas de un lote es: 1, 0, 0, 1, 0, 2, 1, 3, 0, 0, 0, 1, 2, 0, 0, 1, 0, 2, 4, 1 a) Construir una tabla de frecuencias absolutas y frecuencias acumuladas b) Indicar el tanto por ciento de lotes que tienen al menos una defectuosa c) Indicar promedio, moda y mediana de unidades defectuosas por caja. d) Calcular el recorrido y la desviación típica. 10.- Quince estudiantes del grupo A de matemática I obtuvieron las siguientes notas definitivas al final del periodo: 5, 6, 5.5, 9, 4.5, 7, 5.8, 6.5, 8.8, 6, 7, 8, 4 y el grupo B de 20 estudiantes obtuvo en la misma asignatura las siguientes notas: 7.1, 9, 4.6, 7.5, 7.8 ,8.8, 7.8, 4, 4, 5.8, 7.8, 9.2, 5.6, 6, 7, 7.2, 5.6, 5.8, 8, 7.6 El profesor desea averiguar cuál de estos dos grupos es más homogéneo, teniendo en cuenta las notas definitivas obtenidas.
138
6
6.1
Capítulo 6 Introducción al Álgebra matricial
Introducción a las matrices en Matlab
Una de las características de Matlab es que está especialmente diseñado para trabajar con variables vectoriales y matriciales. Este capítulo va a comenzar repasando cómo introducir un vector o una matriz, aunque ya se indicó en capítulos anteriores. Las matrices están formadas por filas (horizontal), y columnas (vertical). Los elementos de las filas están separados por espacios o comas y las columnas por intro o por punto y coma. 6.1.1 Generar matrices. Operaciones con matrices Para las diferentes explicaciones que van a ser usadas en posteriores ejemplos, van a definirse las matrices A y B siguientes, que quedarán almacenadas en el Workspace:
§1 2 3 5· A ¨¨ 3 2 4 1 ¸¸ B ¨6 4 3 2¸ © ¹
§ 4 3 2· ¨ 5 3 0¸ ¨ ¸ ¨2 5 9¸ © ¹
>> A=[1 2 3 5;3 2 4 1;6 4 3 2]
139
Matlab para Matemáticas en ingenierías
>> B=[4 3 2 ;5 3 0 ;2 5 9]
Nota: Para introducir los elementos de una matriz no es necesario hacerlo uno a uno, si se observa que los elementos siguen algún tipo de progresión o ley matemática. Para tal fin puede usarse el operador ‘:’, indicando el primer elemento, el paso (siempre en medio) y el último elemento. Cuando el paso no se indica, se sobreentiende que este es 1. También pueden usarse matrices ya conocidas o implementadas en Matlab. Ejemplo 6.1 Introducir en Matlab la matriz E: ͳ ͳ ܧൌ൮ ͳ ͳ
͵ ͳ Ͳ ʹ
ͷ ͳ െͳ ͵
ͳ ൲ െʹ Ͷ
>> E=[1:2:7;1:-1:-2;ones(1,4);1:4] E= 1 3 5 7 1 0 -1 -2 1 1 1 1 1 2 3 4 Matlab tiene implementadas expresiones tipo la de ones, que genera una matriz de unos u otras matrices que se verán en la siguiente sección. 6.1.2 Matrices especiales En esta sección se trabajará con las matrices A y B introducidas al principio:
§1 2 3 5· A ¨¨ 3 2 4 1 ¸¸ , B ¨6 4 3 2¸ © ¹
140
§ 4 3 2· ¨ 5 3 0¸ ¨ ¸ ¨2 5 9¸ © ¹
Introducción al álgebra matricial
Todas las matrices sobre las que se va a explicar cómo generarlas en Matlab, se pueden consultar en la Tabla 6.1. Las últimas columnas indican la salida de Matlab y la correspondiente expresión matricial. Dicha tabla es un breve resumen de algunas matrices especiales, definidas ya en Matlab, y la simbología para las operaciones entre matrices: Tabla 6.1 Algunas Matrices especiales en Matlab
MATRIZ
SINTAXIS
EJEMPLO
Identidad
eye(n)
>>eye(2)
§1 0· ¨0 1¸ © ¹
zeros(m,n)
>>zeros(2,3)
§ 0 0 0· ¨ 0 0 0¸ © ¹
ones(m,n)
>>ones(2,1)
§ 1· ¨ 1¸ © ¹
diag([a b,…,n])
>>diag([1,3])
§ 1 0 · ¨ 0 3¸ © ¹
triu(A)
>>triu(A)
§1 2 3 5· ¨0 2 4 1¸ ¨ ¸ ¨0 0 3 2¸ © ¹
tril(A)
>>tril(A)
§1 0 0 0· ¨ 3 2 0 0¸ ¨ ¸ ¨6 4 3 0¸ © ¹
Nula
Unos Diagonal
Triangular superior
Triangular inferior
Salida Matlab
Matriz
Nota: Las matrices nulas y de unos, pueden ser cuadradas (número de filas igual a número de columnas, n=m) o rectangulares. En caso de querer construir cualquiera de ellas cuadrada basta indicar un solo argumento: >> ones(3) ans = 1 1 1 1 1 1 1 1 1
141
Matlab para Matemáticas en ingenierías
Nota: Matlab también permite construir una matriz identidad rectangular (aunque se llama realmente matriz identidad a una matriz cuadrada). En realidad lo que hace es, poner una diagonal de 1’s en una matriz de las dimensiones indicadas: >> eye(3,2) ans = 1
0
0
1
0
0
Nota: Si se introduce la orden >> diag(A), donde A es una matriz, Matlab devuelve el vector columna formado por la diagonal de la matriz argumento. >> diag(A) ans = 1 2 3 >> diag(diag(A)) ans = 1
0
0
0
2
0
0
0
3
6.1.3 Manipulación de matrices, submatrices En ocasiones puede interesar cambiar elementos de una matriz, seleccionar alguna columna o columnas, fila o filas, intercambiar filas, columnas, etc. Para ilustrar de forma más sencilla dichas manipulaciones sobre las matrices A y B definidas anteriormente, las autoras han agrupado todos los resultados en una tabla. El lector puede comprobar cada uno de los casos detallados en la Tabla 6.2., la cual se expone a continuación:
142
Introducción al álgebra matricial Tabla 6.2 Ejemplos de manipulación de matrices I
OPERACIÓN Cambiar el valor numérico del elemento am,n Sustituye los valores de la fila m por el vector v Sustituye los valores de la columna n por el vector w
SINTAXIS A(m,n)=p
A(m,:)=v
EJEMPLO
SALIDA MATLAB
>>A(2,4)=-1
>>A(2,:)=ones(1,4)
A(:;4)=w
>>A(:,4)=zeros(3,1)
A([fi,fj],:)=A([fij,fi],:)
>>A([2,3],:)=A([3,2],:)
A(:,[ck;cl])=A(:,[cl;ck])
>>A(:,[1;2])=A(:,[2;1])
A(f1 : fn, : )
>>A(1:3,:)
Intercambiar filas Fila fi por fj
Intercambiar columnas columna ck por cl Submatriz de A formada por las filas entre f1 y fn Submatriz de A con elementos consecutivos de las filas y columnas Submatriz todas las filas de A y las columnas de la ck a la cl
A(f1 : f2, c1 : c2)
A( : , ck: cl)
>>A(1 : 2, 3 : 4)
>>A( : , 2 : 3)
143
Matlab para Matemáticas en ingenierías Tabla 6.3 Ejemplos de manipulación de matrices II
OPERACIÓN Submatriz de A al extraer filas y columnas no consecutivas
Añadir a una matriz una fila
SINTAXIS
EJEMPLO
A([f1 fk],[c1,c8,cn])
>>A([1 3],[1,3,4])
al final
>>F=
[A;F]
ones(1,4);Af=[A;F]
al principio
>>F=
[F;A]
ones(1,4);fA=[F;A]
entre las fila fi y fi+1
>>H=
SALIDA MATLAB
[A(1:2,:);F;A(3,:)]
[A(1:fi:);F;A(fi+1:f m:)]
Añadir a una matriz una columna
al final
>>C=
[C A]
ones(3,1);cA=[C A]
al principio
>>C=
[A C]
ones(3,1); Ac=[A C]
Entre ck y cck+1
>>J= [A(:,1:2) C A(:,3:4)]
[A(:,1:ck) A(:,ck+1:cn)]
C
Nota: todos los cambios se hacen partiendo de la matriz A introducida.
144
Introducción al álgebra matricial
6.1.4 Operaciones con matrices Las operaciones que pueden realizarse con matrices son: suma de matrices, producto de un escalar por una matriz y producto de matrices. Matlab permite realizar las operaciones habituales del álgebra, algunos ejemplos pueden consultarse en la tabla 6.4. También pueden realizarse operaciones sobre elementos de una matriz o entre elementos de matrices. Los ejemplos correspondientes pueden consultarse en la tabla 6.5. Tabla 6.4 Operaciones algebraicas con matrices.
OPERACIONES
Tipo de operador
SINTAXIS
suma (+) o resta (-)
>>A+ones(3,4)
mismo (mun)
EJEMPLO
tamaño
Producto (*)
>>B*A
(mun)(nup)
Potencias (^) Operaciones algebraicas con matrices
>>B^2
sólo matrices cuadradas
Matriz traspuesta
>>A’
Matriz Inversa
>>A^-1
Tamaño nun
No es cuadrada(3u4) >>B^-1 Cuadrada(3u3)
145
Matlab para Matemáticas en ingenierías
Para aplicar operaciones entre elementos de matrices se requiere que las matrices tengan el mismo tamaño. Tabla 6.5 Operaciones elemento a elemento
OPERACIÓN
SINTAXIS
Producto de componentes
>>A.*zeros(3,4)
Cuadrado de componentes
>>A.^2
División de componentes
>>A./A
Matriz elevada a matriz
>>A.^A
EJEMPLO
6.1.5 Otras funciones implementadas en Matlab Matlab tiene entre sus herramientas obtener la traza, el determinante de una matriz, hallar su tamaño, redimensionar una matriz, etc. Todas ellas se muestran en la tabla 6.6. Los ejemplos se han realizado sobre las matrices A o B, introducidas al principio del capítulo.
§1 2 3 5· A ¨¨ 3 2 4 1 ¸¸ , B ¨6 4 3 2¸ © ¹
§ 4 3 2· ¨ 5 3 0¸ ¨ ¸ ¨2 5 9¸ © ¹
Si queremos obtener el rango de las matrices usamos el comando >>rank >>rank(A) ans 3
146
Introducción al álgebra matricial Tabla 6.6 Más funciones de Matlab
OBJETIVO
SINTAXIS
SALIDA DE MATLAB
>>A( : )
Cambia de matriz a vector
Tamaño matriz
de
la
Redimensiona una matriz
>>size(A)
>>reshape(A, 4, 3)
A (m u n) en otra de tamaño pu q
Determinante
>>det(B)
ans= 11.0000
Traza
>>trace(B)
Suma de los elementos de la diagonal Forma Escalonada reducida de una matriz
>>rref(A)
147
Matlab para Matemáticas en ingenierías
También es posible voltear las matrices como se muestra en la siguiente tabla Tabla 6.7 Uso del comando flip
OBJETIVO
voltear los elementos de matriz
SALIDA DE MATLAB
vector o
>>flip >>flip([1 2 3 4]) >>flip([1; 2; 3 ;4]) >>flip (B)
voltear de izquierda a derecha fliplr
voltear de arriba a bajo flipud
Nota: El comando >>flip(A) puede aplicarse tanto a matrices, como a vectores columna o fila, actuando de diversa forma según sea el argumento de entrada. Así: a) Si A es una matriz, >>flip(A) devuelve otra matriz de las mismas dimensiones recorrida de abajo a arriba:
148
Introducción al álgebra matricial
>> A=[1 2 3 5;3 2 4 1;6 4 3 2] A= 1 3 6
2 2 4
3 4 3
5 1 2
3 4 3
2 1 5
>> flip(A) ans = 6 3 1
4 2 2
b) Si A es un vector fila, como no puede recorrerlo de abajo a arriba, devuelve el vector recorrido de izquierda a derecha. Es decir, en este caso hace lo mismo que el comando >>fliplr(A): >> C=[ 1 2 3 4 5] C= 1 2 3 >> flip(C)
4
5
2
1
2
1
ans = 5 4 3 >> fliplr(C) ans = 5 4
3
c) Si A es un vector columna, de nuevo lo devuelve recorrido de abajo a arriba. En este caso coincide con el comando >>flipud(A) >> D=[1;2;3;4;5] D= 1 2 3 4 5
149
Matlab para Matemáticas en ingenierías
>> flip(D) ans = 5 4 3 2 1 >> flipud(D) ans = 5 4 3 2 1 Es decir, el comando >>flip actúa tanto sea el argumento de entrada matriz o vector, haciendo la operación adecuada en cada caso. Sin embargo, cuando se usen los comandos >>fliplr y >>flipud, si no pueden efectuar su acción sobre la matriz introducida, la devolverán tal cual: >> fliplr(D)
%recordemos que D es vector columna
ans = 1 2 3 4 5 >> flipud(C)
%recordemos que C es vector fila
ans = 1
2
3
4
5
Nota: El comando >>fliplr se utiliza también para rellenar áreas (consultar ejemplos del Capítulo de gráficos)
150
Introducción al álgebra matricial
6.2
Clasificación y resolución de sistemas de ecuaciones lineales
Un sistema lineal de m ecuaciones y n incógnitas x1, x2, ..., xn es el conjunto de m igualdades:
a11 x1 a12 x2 "
a1n xn
a21 x1 a22 x2 " a2n xn #
#
am1 x1 am 2
" # x 2 " a m n xn
b1 ½ b2 °° ¾ # ° bm °¿
El sistema de ecuaciones lineales queda determinado cuando se conozca la matriz que forman sus coeficientes y sus términos independientes, situados en la misma posición relativa que ocupaban en el sistema. Denominación de matrices asociadas a un sistema Matriz de coeficientes
§ a11 ¨a A ¨ 21 # ¨a © m1
a12 " a1n a22 " a2 n # # am 2 " amn
Matriz de términos independientes
§ b1 · b b ¨¨ 2 ¸¸ # ¨b ¸ © m¹
· ¸ ¸ ¸ ¹
Matriz ampliada
§ a11 ¨a A b ¨ 21 # ¨a © m1
a12 " a1n b1 · a22 " a2 n b2 ¸ # # ¸ am 2 " amn bm ¸¹
El sistema se escribe matricialmente como: AX=b
§ ¨ ¨ ¨ ¨ ©
a11 a12 " a1 n a 21 # am 1
6.2.1
· ¸ a 22 " a 2 n ¸ ¸ # # ¸ am 2 " amn ¹
§ ¨ ¨ ¨ ¨ ©
x1 ·
¸ x2 ¸= # ¸ ¸ xn ¹
§ b1 · ¨b ¸ ¨ 2¸ ¨# ¸ ¨ ¸ © bm ¹
Clasificación de sistemas de ecuaciones
Dada una matriz A, se denomina rango de A, y se escribe rg(A), al número de unos principales que aparecen en cualquier forma escalonada de la matriz A. Clasificación de sistemas en función del rango (Rouché-Frobenius) En la siguiente tabla, n denotará el número de incógnitas del sistema a clasificar, tal y como se indica en las notaciones empleadas en párrafos superiores.
151
Matlab para Matemáticas en ingenierías
CRITERIO rg (A)< rg (A|b)
CLASIFICACIÓN Sistema Incompatible
rg (A)= rg (A|b)=n
Sistema Compatible Determinado
rg (A)= rg (A|b)
Sistema Compatible Indeterminado (donde nº de parámetros=n-rg(A))
El comando que tiene Matlab para calcular el rango de matrices es >>rank(A). Se conocen diversos procedimientos para clasificar y resolver sistemas de ecuaciones. Aunque hallando directamente los rangos de las matrices A, y la matriz ampliada, A|b, (>>rank(A), rank(Ab)) pueden ser clasificados según la tabla anterior. Clasificar sistemas usando la función >>rref >> rref(A)
devuelve la forma escalonada reducida de la matriz A
Ejemplo 6.2 Clasificar los sistemas de ecuaciones lineales siguientes con el comando >>rref x (a) x x x (b) 2 x
y y y
y 4 y 2 x 3 y
z z z z 2 z 2 z
x 4 y z (c) 3x y 2 z 2 x 5 y z
1½ ° 1¾ 1°¿ 1½ ° 2¾ 2 °¿ 3½ ° 1¾ 1°¿
Primero, se introducen las matrices de coeficientes y las de términos independientes para construir la matriz ampliada de cada apartado.
152
Introducción al álgebra matricial
Una vez obtenida la matriz escalonada reducida, se procede a clasificar y resolver el sistema para cada caso. Las soluciones de cada sistema se han volcado en la tabla 6.8, que se muestra a continuación: Tabla 6.8 Soluciones de los sistemas y clasificación
>>rank(A)=3
>>rank(B)=2
>>rank(C)=2
>>rank([A,b1])=3
>>rank([B,b2])=2
>>rank([B,b3])=3
SCI
SI
x+z=1,y=1, zԹ
No tiene solución
SCD x=1,y=1,z=1
Es evidente que los rangos se podrían haber calculado directamente con el comando >>rank, pero no era ese el objetivo de este ejemplo. Para resolver los sistemas, basta partir de la forma escalonada reducida e ir haciendo sustitución regresiva; es decir, despejar de la última ecuación obtenida la variable que queda aislada e ir sustituyendo en las ecuaciones anteriores.
153
Matlab para Matemáticas en ingenierías
6.2.2 Resolución de sistemas usando la función: >>inv(A) o A-1 Dado un sistema de ecuaciones escrito matricialmente como AX=b, siempre que exista la matriz inversa de A (det(A)0), la solución del sistema viene dada por la expresión X= A-1 b. Nota: Únicamente se puede recurrir a la función >>inv(A) si la matriz de coeficientes es invertible, es decir, si el determinante es no nulo. Pero en ocasiones, aun siendo la matriz invertible, si posee un valor del determinante muy próximo a cero, Matlab puede interpretarlo como nulo y no permitir calcular su inversa. Por lo tanto, para estos casos deberá aplicarse otro método. Si se calculan los determinantes para cada sistema propuesto, a partir del resultado se concluye
Tiene inversa
No tiene inversa
(valor próximo a cero) No tiene inversa
x=1,y=1,z=1 6.2.3 Resolución de sistemas usando división matricial a la izquierda: A\b Aplicando esta operación para resolver el sistema AX=b1 del ejemplo anterior, se tendrá: >> A\b1 % devuelve la misma solución que con el cálculo de la inversa ans = 1 1 1
154
Introducción al álgebra matricial
Nota: de nuevo este método sirve solo cuando los sistemas son compatibles determinados. 6.2.4 Resolución de sistemas usando la función: >>solve La función >>solve implementada en Matlab resuelve ecuaciones y sistemas de ecuaciones lineales (ya explicado este comando en la parte de Análisis en el Capítulo de Operaciones básicas). Recordar que >>solve trabaja con variables simbólicas, así que o previamente se declaran como simbólicas, o bien los argumentos se escriben con comillas simples. La resolución se muestra en la tabla 6.6. También se puede acceder a la ayuda que ofrece el propio programa: >>help doc solve
x y La resolución del sistema (a) x y x y
z z z
1½ ° 1¾ del Ejemplo 6.2 mediante solve 1°¿ x= 1
>>[x,y,z]=solve('-x+y+z=1','xy+z=1','x+y-z=1')
y= 1 z=
SCD
1
La solución es única y el sistema se clasifica como Sistema Compatible Determinado.
155
Matlab para Matemáticas en ingenierías
x y z Uso de solve para resolver el sistema (b) 2 x 4 y 2 z 2 x 3 y 2 z
1½ ° 2 ¾ del Ejemplo 6.2 2 °¿
>> [x,y,z]=solve('x+y+z=1','2*x+4*y+2*z= 2','2*x+3*y+2*z=2') >> [x,y,z]=solve('x+y+z=1','2+x+4*y+2*z= 2','2*x+3*y+2*z=2')
Warning: The solutions are parametrized by the symbols: z1 = C_ > In solve at 190 x= 1 - z1 y= 0 z= z1
SCI
Nota: En caso de sistema compatible indeterminado el programa avisa con un mensaje indicando el parámetro. x 4 y z Resolución del sistema (c) 3x y 2 z 2 x 5 y z
3½ ° 1 ¾ del Ejemplo 6.2. 1°¿
Warning:Explicit solution could not be found.
> In solve at 179 >>[x,y,z]=solve('x+4*y+z=3','3*xy+2*z=1','2*x+-5*y+z=-1')
x=
[ empty sym ] y= []
SI
z= []
156
Introducción al álgebra matricial
6.2.5 Resolución de sistemas usando la Regla de Cramer Para resolver sistemas de n ecuaciones con n incógnitas compatibles determinados, es conocida la Regla de Cramer donde, dado el siguiente sistema cuadrado: a11 x1 a12 x2 " a1n xn a21 x1 a22 x2 " a2 n xn #
#
"
#
an1 x1 an 2 x2 " ann xn
b1 ½ b2 °° ¾ # ° bn °¿
puede ser resuelto mediante: b1
a12 " a1n
b2 a22 " a2n # x1
#
a11 b1 " a1n
a11
a12 " b1
a21 b2 " a2n
a21
a22 " b2
% #
#
# % # bn " ann ,} a12 " a1n
# # % # a n1 an 2 " bn a11 a12 " a1n
bn an 2 " ann , x2 a11 a12 " a1n
a n1 a11
a21 a22 " a2 n
a21 a22 " a2n
a21 a22 " a2n
# # % # an1 an 2 " ann
# # % # an1 an 2 " ann
#
Es decir, en general
xi
, x2
a n1
a11
a12
} b1i
a1i 1 } a1n
a21
a22
} b2i
a2i 1 } a2 n
#
#
#
#
an1 an 2 } bni
| A|
#
#
# % # an 2 " ann
#
ani 1 } ann
x1 x2 + x3 =1 ½ ° Ejemplo 6.3 Resolver el siguiente sistema mediante Cramer: x1 x2 x3 =1 ¾ 2 x1 x2 x3 =1 °¿
>> A=[1 1 1;1 -1 1;2 1 1],b=[1;1;1],Ab=[A b] A= 1
1
1
1
-1
1
2
1
1
157
Matlab para Matemáticas en ingenierías
b= 1 1 1 Ab = 1
1
1
1
1
-1
1
1
2
1
1
1
>> rank(A) %primero se comprueba mediante rangos que el sistema es SCD ans = 3 >> rank(Ab) ans = 3 Por lo tanto, el sistema es COMPATIBLE DETERMINADO, y puede ser resuelto usando la Regla de Cramer. Así: >> x1=det([b A(:,2) A(:,3)])/det(A),x2=det([A(:,1) b A(:,3)])/det(A),x3=det([ A(:,1) A(:,2) b])/det(A) x1 = 0 x2 = 0 x3 = 1 O bien, también puede escribirse: >> x=[det([b A(:,2) A(:,3)])/det(A),det([A(:,1) b A(:,3)])/det(A),det([A(:,1) A(:,2) b])/det(A)] x= 0
158
0
1
Introducción al álgebra matricial
x
Programando Cramer:
Para no ir poniendo en cada caso la matriz de coeficientes en la que se reemplaza el vector de los términos independientes y así aplicar Cramer, se puede programar el método en Matlab. Debe hacerse desde el Editor de Matlab y usando sentencias de programación. Los bucles en Matlab se realizan a través del comando for o while y las condiciones mediante la estructura if. Para ir al editor, bastará seleccionar en el menú la opción New Script:
Figura 6.1 Cómo acceder al editor de Matlab
Una vez abierta la ventana del Editor
Figura 6.2 Editor de Matlab
159
Matlab para Matemáticas en ingenierías
ya puede escribirse en él. Los ficheros creados tendrán extensión .m y reciben el nombre con el que se guarda el fichero. Asegurarse de que el nombre del fichero coincida con el de la función o instrucción que se crea (es el nombre que Matlab, además, le pone por defecto). Este fichero en cuanto es guardado aparecerá en la ventana de Current Folder, siempre que esté seleccionada la ruta adecuada para poderlo ejecutar:
Figura 6.3 Acceso desde Current Folder a una función
Las autoras han creado para su asignatura una función que aplica la regla de Cramer (se llamará cramer). Aunque no se adjunta aquí dicha función, sí se expondrán ejemplos de su uso para ilustrar Cramer más ampliamente, e iniciarse un poco con el tema de programación. Una función se crea directamente, siempre que conozcamos su estructura, o bien clicando en el icono desplegable de New desde el Editor, y ahí seleccionando function. Para poder usarla posteriormente, en la sesión de trabajo, debe estar cargada y tener la ruta donde está almacenada en Matlab. Si se duda acerca de lo que hace o de los argumentos de entrada, teclear en la Command Window: >> help cramer Este programa calcula la solución de un sistema de n ecuaciones con n incógnitas que sea SCD mediante la Regla de Cramer. Los argumentos de entrada de esta función deben ser: 1.- en primer lugar la matriz de los coeficientes 2.- en segundo lugar el vector columna de los términos
160
Introducción al álgebra matricial
independientes. El argumento de salida será la solución del sistema. El programador de una función habrá puesto comentarios previos a la primera instrucción, que son los que se obtienen cuando se pide la ayuda con el comando >>help. Su ejecución indicará si la Regla de Cramer es o no aplicable, y en caso de respuesta afirmativa resolverá el sistema. Ejemplo 6.4 Resolver mediante Cramer los siguientes sistemas: x 2x2 =-1½ a) 1 ¾ 2x1 4x2 =-2 ¿
b) x1 2x2 +3 x3 =1
x1 x2 + x3 =1 ½ ° c) x1 x2 x3 =1 ¾ 2 x1 x2 x3 =1 °¿
Resolución: a) Claramente es un sistema compatible indeterminado, por lo tanto no se puede usar directamente la regla de Cramer, y así nos lo indicará el programa cramer: >> cramer([1 2; 2 4],[-1 ;-2]) Error using cramer (line 16) Aunque la matriz es cuadrada, el sistema NO es compatible determinado. NO podemos usar la regla de Cramer b) En este caso el sistema no es un sistema cuadrado, luego tampoco se puede aplicar Cramer, hecho que también lo indicará función: >> cramer([ 1 2 3],[1]) Error using cramer (line 22) La matriz no es cuadrada. NO podemos aplicar Regla de Cramer c) Este sistema de momento es cuadrado, luego se introducen las matrices argumento: >> cramer(A,b) La matriz es cuadrada y el sistema es Compatible Determinado. Podemos aplicar Regla de Cramer x= 0
0
1
Observar que la función cramer precisa de 2 argumentos, la matriz de coeficientes y el vector columna de términos independientes. Si no se le proporcionan, devolverá la
161
Matlab para Matemáticas en ingenierías
solución nula y un mensaje de error avisando de que no hay suficientes argumentos de entrada: >> cramer([1 1;1 1]) x= 0 0 Error using cramer (line 10) Not enough input arguments. De todas formas, para aquel alumno interesado en la programación y que desee tener el código empleado, o bien podrá pedir una vez cargado >>type cramer, saliendo por pantalla en la Command Window el código del programa, o bien >>edit cramer, que abrirá la ventana del editor y accederá al programa desde ahí. (Matlab usa colores para indicar las sentencias de programación –azul-, los comentarios –verde-, las asignaciones o instrucciones –negro-, las salidas de texto por pantalla –morado-. Ayudando así a una mejor comprensión del código del programa). 6.2.6 Resolución de sistemas de ecuaciones dependientes de parámetros Para resolver sistemas de ecuaciones lineales con parámetros hay que recurrir a aplicar Gauss para obtener la forma escalonada asociada al sistema. De este modo el usuario clasifica y obtiene las soluciones. Para ello deben realizarse operaciones elementales sobre filas .Si la matriz es A, las filas de la matriz se identifican como A(1,:){Fila 1; A(2,:){Fila 2, etc. En la tabla posterior se indican cómo efectuarlas: Tabla 6.9 Operaciones elementales con Matlab OPERACIONES ELEMENTALES POR FILAS
OPERACIÓN SOBRE LA MATRIZ A
CÓMO SE EXPRESA EN MATLAB
Intercambio de filas
Intercambiar F1 por las F2 la matriz A
Definimos la nueva matriz como A1
Multiplicación de una fila por un número no nulo k Fj
la fila 3 por (1/4)
Definimos la nueva matriz como A2
Sumar a una fila un múltiplo de otra
F2 la cambio por F2(1/4)F1
Fi lFj
Fi +k Fj
162
>>A1=[A(2,:);A(1,:);A(3,:)] >>A2=[A(1,:);A(2,:); (1/4)*A(3,:)] Definimos la nueva matriz como A3 >>A3=[A(1,:);A(2,:)- (1/4)*A(1,:); A(3,:)]
Introducción al álgebra matricial
Ejemplo 6.5 Estudiar y resolver en función de m y p Թǡ el sistema de ecuaciones
x x
y z my z px y z
1½ ° 1¾ 1°¿
Resolución. 1º Definiendo como simbólicas las variables m y p, se introduce la matriz ampliada y se aplican operaciones elementales sobre filas para obtener la matriz escalonada asociada al sistema de ecuaciones.
Se ha obtenido la matriz escalonada asociada al sistema. 2º Sustituir los valores de p y m que pueden modificar el rango, es decir, el número de unos principales. Para clasificar se mira el número de unos principales y, para resolver, se usará el comando >>rref. Los resultados en función de los valores de m y p se muestran en la Tabla 6.10.
163
Matlab para Matemáticas en ingenierías Tabla 6.10 Resultados de clasificación dependiendo de los valores de m y p
Caso m=1, pz1
Caso mz1, p=1
Caso m=1, p=1
Caso mz1, pz1
>>rank(A)=2
>>rank(A)=2
>>rank(A)=1
>>rank(A)=3
>>rank([A,b])=2
>>rank([A,b])=2
>>rank([A,b])=1
>>rank([A,b])=3
SCI
SCI
SCD
x+z=1,y=1, z Թ
x=1-y-z, z Թǡ y Թ
x=0, y=0, z=1
SCI x+y=1, z=1 zԹ
6.3
Ajustes de datos (mínimos cuadrados)
El ajuste de curvas se utiliza cuando se tiene una serie de datos calculados y se desea conocer valores intermedios no conocidos, o también, en aquellos casos en que se desee una versión simplificada de una función que se ajuste a un número de valores concretos, y posteriormente usar la función simplificada para obtener nuevos valores. Si los datos no son muy exactos, o tienen asociado un error (ruido), entonces la mejor manera es establecer una sola curva que represente la tendencia general de los datos observados. Este procedimiento se conoce como REGRESIÓN LINEAL, cuyo método más sencillo es la regresión por mínimos cuadrados. La forma de realizar ajustes mediante Mínimos Cuadrados en Matlab es usando el comando >>polyfit(x,y,n), donde: Ͳ 164
x e y son vectores que contienen los datos puntuales que se desean ajustar
Introducción al álgebra matricial
Ͳ
n es el número de datos
Ͳ
p son los coeficientes del polinomio de ajuste.
La función >>polyfit se utiliza para obtener el ajuste sobre m puntos, para cualquier grado indicado por n. Si n=1 ajustamos a una recta; n= 2 será un parábola, etc. La salida son los coeficientes del polinomio. El número de coeficientes depende del grado del polinomio que pidamos para ajustar. Coeficiente de correlación: Para estudiar el grado de relación lineal que existe entre dos variables, se calcula el coeficiente de correlación lineal R, con R ࣅ[-1,1]. Si el coeficiente de correlación lineal está próximo a 1, los datos se agrupan en torno a una recta de pendiente positiva; si está próximo a -1, los datos se agrupan en torno a una recta de pendiente negativa. Cuanto más alejado del valor 1 o -1, más dispersa se encuentra la nube de puntos de la curva ajustada. Cuando el valor de R es positivo, indica que la relación entre las variables es directa, es decir, a mayor cantidad de una variable, mayor cantidad de la otra. Mientras que si da un coeficiente de correlación negativo, la relación sería indirecta, a mayor valor de una variable menor valor de la otra. Matemáticamente el coeficiente de correlación de Pearson viene dado por la expresión: ߪ௫௬ ܴൌ ߪ௫ ߪ௬ donde ߪ௫௬ es la covarianza de las variables, y ߪ௫ ߪ௬ el producto de las desviaciones típicas de x e y respectivamente. En Matlab, el comando >>cov(X), donde X es una matriz de datos, o bien >>cov(X,Y) donde X e Y son los vectores de datos de las dos variables a analizar, devuelve una matriz C donde los elementos de la diagonal son las varianzas de cada una de las variables. Con este matriz es con la que Matlab calcula el coeficiente de correlación. R, en verdad, será de nuevo una matriz, donde la posición que al usuario le interesa para conocer el coeficiente de correlación de Pearson, es la posición (1,2) o (2,1), ya que es una matriz simétrica. En Matlab se calcula mediante >> corrcoef(x,y) % devuelve la matriz de correlación entre ambas variables Una vez obtenida la curva de regresión, se pueden obtener las predicciones para la variable y a partir de los valores conocidos de la variable x, sustituyendo convenientemente o bien utilizando el comando >>polyval de MATLAB. 165
Matlab para Matemáticas en ingenierías
>> polyval(m,X) % evalúa el polinomio con coeficientes almacenados en el vector m en todos los valores de la variable X Ejemplo 6.6 Se han realizado medidas de la velocidad de un coche en (m/s) cada 0.5 segundos. Los datos obtenidos se muestran en la siguiente tabla: v (m/s) t (s)
1.58 0.5
3.26 1.0
4.84 1. 5
6.38 2.0
8.24 2.5
9.72 3.0
Sabiendo que v= v0+at (a) Ajustar los datos a un polinomio de grado uno (recta), indicando velocidad inicial y aceleración. (b) Representar los datos de las tablas. (c) Escribir la orden adecuada para que la salida sea el vector de los valores estimados de la aproximación dada por la recta. (d) Representar la recta de regresión en la misma ventana que los datos del apartado (b). (e) A partir de la recta de regresión predecir la velocidad que alcanzará en el instante t=1 minuto. (a) >> v=[1.58 3.26 4.84 6.38 8.24 9.72];t=[0.5 1.0 1.5
2.0 2.5 3.0];
>> recta=polyfit(t,v,1) recta = 3.2674 -0.0480 Por lo tanto, la recta de ajuste buscada es:
v = 3.2674 - 0.0480*t
>> R=corrcoef(t,v) R= 1.0000 0.9997 0.9997 1.0000 En este caso el coeficiente de correlación es R= 0.9997, próximo a 1, lo que indica una fuerte relación lineal directa entre las medidas.
166
Introducción al álgebra matricial
(b) representación >>plot(t,v,'o');xlabel('tiempo');ylabel('velocidad') 10 9 8
velocidad
7 6 5 4 3 2 1 0.5
1
1.5
2
2.5
3
tiempo
(c) >> polyval(recta,t) % la salida es el vector fila de velocidades ans = 1.5857 3.2194 4.8531
6.4869 8.1206 9.7543
(d) Ahora se van a representar los valores de t frente a las velocidades que proporciona el polinomio, denominado como vajuste >> vajuste=polyval(recta,t) vajuste = 1.5857 3.2194 4.8531
6.4869 8.1206 9.7543
>> hold on >> plot(t,vajuste,'r')
167
Matlab para Matemáticas en ingenierías
10 9 8
velocidad
7 6 5 4 3 2 1 0.5
1
1.5
2
2.5
3
tiempo
(e) Al evaluar la velocidad que corresponde al instante t=1 minuto se obtiene >> polyval(recta,60) ans = 195.9977 En las diversas disciplinas científicas, en ocasiones, es necesario utilizar funciones distintas a las polinómicas para ajustar datos. Por ello, se muestra en la tabla 6.11 otros posibles ajustes de curvas: Tabla 6.11 Relación de comando >>polyfit NOMBRE FUNCIÓN
EXPRESIÓN
SINTAXIS DEL COMANDO
recta
y=ax+b
P=polifit(x,y,1)
Potencial
y=bxm
P=polyfit(log(x),log(y))
Exponencial
y = bemx y=b10mx
logarítmica recíproca
168
P=polyfit(x,log(y),1) P=polyfit(x,log10(y),1)
y= mLn(x)+l
P=polyfit(log(x),y,1)
y=mlog(x)+b
P=polyfit(log10(x),y,1)
y
1 mx b
P=polyfit(x,1./y,1)
Introducción al álgebra matricial
6.4
Ejercicios
1.- Introducir la siguiente matriz sin hacerlo elemento a elemento.
§1 ¨0 ¨ ¨0 ¨ ¨0 ¨0 ©
2.- Dada la matriz M
§1 ¨0 ¨ ¨0 ¨ ¨0 ¨0 ©
0 2 3 4· 1 1 1 1 ¸¸ 0 3 0 0¸ ¸ 0 0 3 0¸ 0 0 0 3 ¸¹
0 1 1 1· 1 1 1 1 ¸¸ 0 2 0 0¸ ¸ 0 0 2 0¸ 0 0 0 2 ¸¹
(a) Introducir M en Matlab sin hacerlo elemento a elemento; es decir, utilizando matrices especiales o los cambios explicados. (b) Definir una matriz M1 a partir de M pero con una columna de unos entre la 3ª y 4ª columna. (c) Calcular para M: traza, rango, determinante e inversa. (d) Obtener M2 a partir de M1 cambiando la última fila por los números que van del 2 al 12. (e) ¿qué cambios deben hacerse para generar a partir de M la matriz M3? siendo M3 la siguiente matriz
§1 ¨1 ¨ ¨0 ¨ M 3 ¨0 ¨0 ¨ ¨1 ¨6 ©
2 1 2 1 2 1· 0 1 1 1 2 1¸¸ 1 3 1 1 2 1¸ ¸ 0 0 4 1 2 1¸ 0 0 0 5 2 1¸ ¸ 2 3 4 5 6 1¸ 5 4 3 2 1 1¸¹
169
Matlab para Matemáticas en ingenierías
§1 1 · § 1 2· 3.- Sean las matrices A = ¨ , B= ¨ ¸ ¸ y C= ©3 4 ¹ © -1 0 ¹ X que cumple la igualdad C (B+X) A-1 + CT = A
§1 3 · ¨ 2 10 ¸ . Obtener la matriz © ¹
4.- Discutir el siguiente sistema de ecuaciones lineales en función del parámetro kԹ.
kx y z x ky z x y kz
1 ½ ° k ¾ k 2 °¿
5.- Resolver los siguientes sistemas usando Cramer. Primero hallando cada una de las variables y luego usando la función cramer: ͵ ݔെ Ͷ ݕ ʹ ݖെ ݐ ͷ ݓൌ ͵ Ͷ ݔ ݕെ ͺ ݖ ʹ ݐൌ ͻ ͺ ݔ ݕെ ͻ ݖ ʹ ݐെ ݓൌ ͷ ۗ ۖ ͵ ݔെ ݕ ʹ ݖ ͻ ݐൌ a) ൢ ǡܾሻ ݔെ ʹ ݕ ͵ ݖെ ͵ ݐ Ͷ ݓൌ ͷ ݔ ݕ ʹ ݖെ ݐൌ ͵ ͷ ݔ Ͷ ݕ ݖ ͺ ݐ ݓൌ ʹ ۘ ۖ ͺ ݔെ ͵ ݕ ʹ ݖെ ݐൌ ͷ ͺ ݔ ʹ ݕെ ͷ ݖ ͷ ݐെ ͻ ݓൌ ۙ
8 · § 7 x 16 ¨ 6.- Dada la matriz 16 7 x 8 ¸ , estudiar para qué valores de x Թ el ¨ ¸ ¨ 8 ¸ x 8 5 © ¹ determinante de la matriz se anula.
0 1 7.- Encontrar el valor o valores de xԹ que cumple 1 1
k 20 x 2 8.- Resolver en función de x la ecuación
k 0
k Թ.
170
1 0 1 1
1 1 0 1
k 2k 5 x k
1 1 x 3 1 4 1 x 0
9.
0 2
k k 20 x
0 , con 2
Introducción al álgebra matricial
§ p q· ¸ © r s¹
9.- Hallar la relación que debe existir entre los elementos de la matriz A ¨ para que conmute con la matriz B
§ 1 1· ¨ 0 1¸ . © ¹
§ 1 1 0 · ¨ ¸ 10.- Sea la matriz A ¨ 0 2 3 ¸ ¨0 0 3 ¸ © ¹ (i) Calcular A-1 (ii) Si B= A-I, ¿es invertible? 11.- Obtener la recta (pendiente, ordenada en el origen y coeficiente de correlación) que mejor se ajuste a los puntos de la siguiente tabla, utilizando el método de los mínimos cuadrados. x 1.2 2.0 2.4 3.5 3.5
y 1.0 1.6 3.4 4.0 5.2
171
7
Referencias bibliográficas [1] Chapra, Steven C.(2012). Applied numerical methods with Matlab for engineers and scientists Ed Mc Graw Hill International Edition. [2] Estruch, V. & Sapena Piera, A. (2010) Lecciones de estadística. Ed Universitat Politècnica de València. [3] Giner,S. (2008) Curso de Matlab. /Apuntes de simulación de procesos I. Área departamental Igenieria Química. Facultad de Ingenieria. Procedencia Internet [4] Moore, H. (2007) Matlab para ingenieros. [5] Marchand, P. (2003). Graphics and guis with MATLAB. [6] Pabón Ángel, H. (2010). Probabilidad y estadística con matlab® para investigadores MSc. Universidad de Cundimarca. [7] Pateiro López , B. (2008-2009 ) Estadística ingeniería química USC. Curso. [8] Polanía Puentes, J.A, Tutorial de matlab aplicado [9] Rodríguez del Río, R. Gráficas con Matlab, Departamento de Matemática Aplicada, Universidad Complutense de Madrid. [10] Romero,R., Zúnica R. (2012). Métodos estadísticos en ingeniería. Ed Universitat Politècnica de València. [11] https://www.uam.es/personal_pdi/economicas/rociomar/descriptiva.htm [12] http://www.unizar.es/fmi, Versión actualizada en agosto de 2006. Un curso de MATLAB, Grupo FMI, Departamento de Matemática Aplicada, Universidad de Zaragoza. [13] http://dv.ujaen.es/docencia (/ilias.php?ref_id=85771&from_page=33288&frame=_blank&obj_id=33286& cmd=layout&cmdClass=illmpresentationgui&cmdNode=9i&base) [14] http://www.academia.edu/1743296/Manual_de_Introducci%C3%B3n_a_Matl ab [15] https://cristiancastrop.files.wordpress.com/2010/09/matlab_graficos.pdf [16] Borrel i Nogueras, Guillem. Introducción informal al Matlab y Octave. http://www.dc.uba.ar/materias/escuela-compluense/2012/CursoMatlabguillem.
173