PRÁCTICAS 1 y 2: MANEJO DEL PROGRAMA MATHEMATICA El programa Mathematica es una herramienta muy útil para realizar cálculos matemáticos. Puede utilizarse como calculadora científica. Es capaz de manipular números enteros, racionales, reales y complejos, realizando numerosas operaciones con ellos. Además permite definir funciones, realizar operaciones con símbolos, trabajar con matrices y vectores, resolver ecuaciones, calcular derivadas e integrales, representar funciones, etc. Cuando queremos evaluar una expresión con Mathematica, una vez escrita hay que pulsar la tecla INTRO del teclado numérico (en la parte inferior derecha del teclado), o bien la combinación simultánea de las teclas SHIFT+ENTER (se mantiene pulsada la tecla SHIFT y después se pulsa ENTER). Entonces el programa ejecuta la expresión y le pone un contador de entradas de la forma In (que precederá a la expresión), y si tiene que mostrar el resultado de la evaluación éste va precedido por un contador de salidas de la forma Out. Así, para la primera evaluación pondrá In[1] y Out[1] en los datos de entrada y salida, respectivamente; para la segunda evaluación pondrá In[2] y Out[2], y así sucesivamente. Todos estos datos de entrada o salida Mathematica los guardará en la memoria durante toda la sesión, incluso aunque sean borrados de la pantalla. Ejemplo 0.1 Ejecutar las siguientes sentencias (en el primer cálculo Mathematica necesita cargar el núcleo del programa, con lo que tardará unos segundos) a) 4−6 b) 4∗8 c) 5 + 18 Para modificar en pantalla una expresión, en primer lugar necesitamos situarnos en el lugar adecuado, para lo cual se puede utilizar el ratón o las flechas del teclado. Después pueden eliminarse algunos caracteres usando las teclas SUPR o ”←−”. Incluso pueden ser aprovechadas expresiones ya escritas para no tener que volver a copiarlas si vamos a utilizar otra similar. Esto puede hacerse marcando en negrita la expresión que queramos copiar, mediante el ratón (pinchando a un lado de la expresión y manteniendo pulsado el botón izquierdo del ratón hasta llegar al otro lado de la expresión, donde soltaremos el botón) o mediante la tecla SHIFT (poniendo el cursor a un lado de la expresión, teniendo pulsada la tecla SHIFT, se lleva el cursor, bien con el ratón o con las teclas de dirección, al otro lado de la expresión); después se hace una copia de la expresión con las teclas CONTROL+C, o bien con el botón derecho del ratón seleccionando la opción COPY (o con la opción COPY del menú EDIT de la parte superior de la ventana). Una vez hecha una copia de esto se coloca el cursor en el lugar donde se quiere poner lo que se ha copiado y se pulsa CONTROL+V, o bien con la opción PASTE del botón derecho del ratón o del menú EDIT. Existen otras formas de realizar lo anterior y otras variantes, que pueden adquirirse con la práctica, pero no es nuestro propósito adquirir dominio en esta faceta. 1 1 Operaciones aritméticas elementales Los operadores aritméticos son + − ∗ / ˆ Es conveniente que se tengan bien localizadas las teclas en las están cada uno de estos símbolos; todos, excepto ˆ se pueden encontrar también en el teclado numérico, que está en la parte derecha del teclado. Algunos de ellos precisan de la tecla SHIFT para su pulsación (esto no ocurre cuando se utiliza el teclado numérico): ∗ / ˆ Además, hay que tener presente que ˆ no aparece en la pantalla hasta escribir otro carácter. Las operaciones que representan son: x+y suma x−y resta x∗y ó xy (con un espacio en blanco en medio) producto x/y división xˆy potencia Para combinar estos operadores han de tenerse en cuenta los criterios de prioridad en matemáticas: En un primer nivel de prioridad está la potencia; en un segundo nivel están el producto y el cociente; finalmente aparecen la suma y la resta. Si dos operadores tienen la misma prioridad se evualúa primero el que figura a la izquierda y después el de la derecha. Para cambiar el orden de ejecución de las operaciones pueden utilizarse paréntesis. Observación 1.1 Aunque en la mayoría de las ocasiones puede usarse tanto las teclas del teclado numérico como las otras, es aconsejable no utilizar las del teclado numérico que a veces presentan problemas. Ejemplo 1.2 Ejecutar las siguientes sentencias 1) 6) 11) 14) 2∗4+3 2) (6/3) − 2 7) b/c + aˆd − e b/(c + aˆd − e) 2 ∗ (4 + 3) 3) (2 ∗ 4) + 3 4) 6/3 − 2 2 3ˆ2 8) (2 3)ˆ2 9) 2 (3ˆ2) 10) 12) b/(c + a)ˆ(d − e) 13) (b/c + a)ˆd − e 15) (b/c + a)ˆ(d − e) 16) (3 − 8)10 Observación 1.3 Soluciones: 11, 14, 11, 0, 6, 0, 18, 36, 18, 18, ad + b (a + cb )d − e, ad +c−e , (a + bc )d−e , -50 Ejercicio 1.4 Realizar las siguientes operaciones con Mathematica a) (1 − 2)3+8 b) 8 4·2+3 Observación 1.5 Soluciones: −1, c) 8 , 11 − 13 , 17 3−4·22 3·4+23 −3 √ 3 3 16 2 3 d) (7·5−25 ) 2 4 ( 3 −67 )4 7 b c 5) 6/(3 − 2) 2(3ˆ2) − e, b (a + c)−d+e , Observación 1.6 En general, cuando se ponga Ejemplo deberán escribirse literalmente las expresiones que figuran. Cuando se ponga Ejercicio las expresiones figurarán escritas del modo habitual matemático, y el alumno deberá pasarlas al lenguaje del Mathematica. Para aprovechar sentencias anteriores y no tener que volver a escribirlas enteramente puede utilizarse también el recurso que vamos a ver a continuación. Como ya hemos comentado anteriormente Mathematica guarda en la memoria todas las entradas y salidas en una misma sesión. Pues bien, podemos referirnos a éstas gracias al símbolo %. Este símbolo hace referencia al In[-] anterior. Así por ejemplo, si ponemos % + 8 el resultado será el inmediatamente anterior más 8. Si queremos hacer referencia al resultado dos veces anterior (el anterior del anterior) deberíamos poner %%, y al tres veces anterior %%%, y así sucesivamente. También podemos hacer referencia a un resultado anterior con su número de entrada (o salida). Así, si ponemos %14 nos debe dar como resultado, el que había en el In[14]. Ejemplo 1.7 Ejecutar las siguientes sentencias 1) 6) 4−7 %% 2) 7) 5∗3 3) %%%%%% 4) 9/3 % 5) %%% Observación 1.8 Soluciones: −3, 15, 3, 3, 15, 3, −3 Ejemplo 1.9 Ejecutar las siguientes sentencias 1) 6) 2∗4+3 5b 7) 2) %∗5 3) 3 ∗ % − 2 %% 6/3 − 2 4) 6/(% − 2) 5) 11 a Observación 1.10 Soluciones: 11, 55, 0, −3, 11a, 5b, −22a + 15b Ejercicio 1.11 (3 · 4 − 5)5 · a 1. Realizar la operación 2. Multiplicar la expresión anterior por 4. 3. Realizar ahora la operación − ( 30 4 15 4 ) 10 9 2 · a − ( 12 ) · 16a 4. Sumar ahora las expresiones de los apartados 2 y 3 5. Situarse en la línea de tipo In[] (no en el Out[]) donde aparece la expresión (3 · 4 − 5)5 · a y borrar esa expresión. En esa misma línea escribir la sentencia %%% y ejecutarla. Observar el resultado. Observación 1.12 Soluciones: 16807a, 67228a, 1287a, 68515a Observación 1.13 (Abortar un cálculo) Es posible que Mathematica tarde demasiado en hacer algún cálculo. No es lo habitual, pero en alguna ocasión puede suceder que la operación sea extremadamente compleja, o incluso que nos hallamos equivocado al escribirla y casualmente se transforme en algo que le haga al programa dar demasiadas vueltas. Cuando queremos detener alguno de estos cálculos bastará con seleccionar la opción Abort Evaluation del Menú Kernel, de la parte superior de la pantalla. 3 2 Números Mathematica puede operar con números: Racionales: Si se hacen operaciones con fracciones el resultado suele venir en forma de fracción. Comprobarlo en el siguiente ejemplo (2/3 − 3/5) ∗ 5/2 Irracionales: El programa trabaja con sus expresiones. Comprobarlo en el siguiente ejemplo 2ˆ(1/2) Aproximación: En la mayoría de las ocasiones interesa tener una aproximación decimal del resultado. En este caso podemos introducir uno de los números con un punto decimal o utilizar //N al final de la expresión o N[expresión] obteniéndose alrededor de 6 cifras significativas. Si queremos tener un número n de cifras significativas de la expresión x debemos poner N[x, n] Con estos comandos también es posible obtener aproximaciones de números enteros grandes. Ejemplo 2.1 Ejecutar las siguientes sentencias a) 2ˆ100 %//N (2./3−3/5)∗5/2 e) 2.ˆ100 f) j) N[%%] b) (2/3−3/5)∗5/2//N c) 2ˆ100//N g) N[2ˆ100, 10] N[(2/3−3/5)∗5/2, 30] h) (2/3 − 3/5) ∗ 5/2 d) i) Observación 2.2 Soluciones: 0.166667, 0.166667, 0.166666666666666666666666666667, 1267650600228229401496703205376, 1.2676530 , 1.2676530 , 1.2676530 , 16 ,0.166667,0.166667, Ejercicio 2.3 Obtener los siguientes números a) c) √ 2 √ 3 35 con 17 cifras significativas b) con 100 cifras significativas q 3 8 con 10 cifras significativas Observación 2.4 Soluciones: 1.4142135623730950,0.612372 3 Notación y símbolos Mathematica, como la mayoría de los programas informáticos, es muy estricto con las sentencias que se le dice que ejecute. Un pequeño cambio en una expresión y el resultado puede ser muy distinto, o bien, el programa puede no entender la sentencia. He aquí unas situaciones en las que conviene hacer hincapié. a) Mayúsculas y minúsculas: el programa distingue unos caracteres de otros. Los comandos propios del programa empiezan por mayúsculas. b) Espacios en blanco: se interpretan como un signo de multiplicar. Si un comando o una expresión esta compuesto por varias palabras no hay que dejar espacios en blanco entre ellas. 4 c) Llaves, paréntesis y corchetes: las llaves definen listas de elementos, conjuntos finitos, vectores y matrices. Los paréntesis agrupan e indican prioridad de operaciones. Los corchetes son exclusivos de las funciones para delimitar argumentos. Estos tres tipos de objetos pueden ponerse las veces que sean necesarias, pero nunca pueden cambiarse unos por otros. Tanto llaves como corchetes se obtienen manteniendo pulsada la tecla AltGr y pulsando después la correspondiente tecla [ ] { } . 4 Algunas constantes y funciones propias de Mathematica El programa lleva incorporadas numerosas constantes y funciones propias. 4.1 Constantes Algunas constantes de Mathematica son: P i Es el número habitualmente designado por π, y cuyo valor aproximado es 3.1416 E Es el número habitualmente designado por e, y cuyo valor aproximado es 2.71 √ I Es la raíz imaginaria de −1, habitualmente designada por i = −1 Infinity Habitualmente denotado por +∞ π Degree Es la constante 180 , útil para la conversión de grados a radianes. Hay que tener en cuenta que las funciones trigonométricas usuales trabajan por defecto con el argumento en radianes. 4.2 Funciones A continuación ponemos algunas de las funciones más importantes que Mathematica lleva incorporadas (a la izquierda figura la función en el lenguaje del Mathematica y a la derecha tal y como nosotros la escribimos habitualmente): Log[x]= ln x Log[b,x]= logb x Sin[x]= senx Cos[x]= cos x Tan[x]= tan x ArcSin[x]= arcsenx ArcCos[x]= arccos x ArcTan[x]= arctan x Abs[x]= |x| (mi√ de el valor absoluto si x es un número real, y el módulo si x es un número complejo) Sqrt[x]= x x Exp[x]= e Ejercicio 4.1 Realizar las siguientes operaciones en Mathematica: √ 1) cos π3 2) log2 256 3) 48 4) e−3x 5) sen30 6) sen30o 1 7) |3 − 4i| 8) ∞−∞ 9) ∞+∞ 10) 11) ln0 12) Calcu∞ √ lar e con 100 cifras decimales y 5 con 1000 √ Observación 4.2 Soluciones: 12 , 8, 4 3, e−3x , Si n[30], 12 , 5, In det er min ación, ∞, 0, −∞ Observación 4.3 Pueden hallarse el valor de las funciones trigonométricas tanto en radianes como en grados. Por ejemplo, para hallar el seno de π radianes pondríamos Sin[P i] y si lo hacemos en grados (que serían 180) deberíamos poner Sin[Degree ∗ 180] 5 5 Variables y funciones Estos objetos nos van a permitir definir nuevas variables y funciones que podremos utilizar de la misma forma que las propias de Mathematica. A este tipo de objetos hay que asignarle un nombre, siempre que dicho nombre no empiece por un número ni por el simbolo $. También es conveniente que la primera letra del nombre sea minúscula, para evitar colisiones con objetos propios de Mathematica, que comienzan todos con una letra mayúscula. Nombres adecuados para las variables o funciones podrían ser x y z pepe hola x1 variable1 f f uncion1 f uncion3bis Es importante destacar que algo como xy será identificado por el programa como un solo objeto, una sola expresión. Si lo que pretendemos es expresar el producto del objeto x con el objeto y deberíamos poner xy ó x∗y Para indicar que estamos multiplicando el número 5 por el valor de x podemos poner 5x ó 5∗x o incluso 5x (cuando el primer factor de la multiplicación es un número, no una variable o función que pueda ser representada mediante una expresión, puede omitirse el signo de multiplicación). Ahora bien si ponemos x5 el programa lo identificará como un objeto (una variable o función) que tiene ese nombre completo. Ejemplo 5.1 Ejecutar estos ejemplos, observando el resultado a) b) c) d) e) f) 5x + 4x + 4 x − 7 x − 8 ∗ x + x3 − 5x3 + x2 − 6x2 2x − 3y + 5xy − 6yx + 8x ∗ y − 6y ∗ x + 3 x ∗ y − 45 y ∗ x 3xyˆ2 − x ∗ yˆ2 + yxˆ2 − 2y ∗ xˆ2 2xyˆ2 + 3x ∗ yˆ2 − 2yxˆ2 − y ∗ xˆ2 % + %% xyˆ2 ∗ xy Ejercicio 5.2 Transcribir al lenguaje del Mathematica las siguientes expresiones 1) 3) 5.1 x3 − 45x2 + 3x − 5 2) x2 y 3 − 4xy 2 + x3 y − 6x + xy 2 6x2 y 2 z 3 − 4xy + 5xz − 44y 2 z + √x y−3z 2 2 x y +1 Variables Si ponemos x = 0 habremos definido la variable x con valor 0. Si a continuación ponemos x = 4 le habremos cambiado el valor a la variable x que ahora pasará a valer 4. Si ponemos la sentencia y = x+1 estamos definiendo una variable y a la que le estamos asignando el valor que tiene x más 1. Una situación similar sería la sentencia x = x+1 que no representa una ecuación, sino que significa que a x le asignamos el valor que tiene en este momento más 1. En este caso, después de esta operación, el nuevo valor de x es 5. 6 Si queremos borrar el valor de una variable o función es suficiente que escribamos Clear[nombre] Así pues para borrar el nombre de una variable llamada t y una función llamada u debemos ejecutar las dos sentencias Clear[t] Clear[u] o bien de una sola vez Clear[t,u] Supongamos que tenemos definida la variable c cuyo valor actual es 3. Si escribimos la sentencia t := c estaremos definiendo una variable t con valor igual a c ¿En qué se diferencia esto de la sentencia u=c ? En que, además de que con los dos puntos no se obtiene ningún Out, t será una variable cuyo valor coincidirá con el que tenga c en cada momento; en cambio u será una variable que tendrá el valor fijo 3, siempre que no pongamos otra sentencia del tipo u = nuevovalor Para saber el valor actual de una variable introducimos su nombre y lo ejecutamos como si fuera una sentencia. Ejemplo 5.3 Ejecutar las siguientes sentencias a) 5.2 x1 = 2 b) x2 = x1 c) x3 := x1 d) x3 e) x1 = −3 f) x2 g) x3 Funciones Para definir una función que dependa de n variables debe utilizarse el siguiente esquema nombrefuncion[variable1 _,variable2 _,...,variablen _]= expresión en función de las variables Ejemplo 5.4 Ejecutar la siguiente sentencia a) f 1[v_] = vˆ3 − 4; f 2[p_, q_] = Sin[p ∗ q] Para obtener el valor de la función en un punto basta con sustituir las variables por las coordenadas del punto, y no utilizar la raya ”_”, pues ésta sólo se utiliza a la hora de la definición de la función. Así pondremos, para una función f de una variable f [4] para hallar el valor de esa función en el punto 4; ó g[−1, a] si queremos hallar el valor de una función g de dos variables al evaluarla en el punto (−1, a) Hay que llevar precaución para usar las funciones y evaluar expresiones en ellas. Así por ejemplo si tenemos definida la función de una variable f y ponemos f [x] el resultado será la expresión de f evaluada en el valor x Si x no tiene ningún valor asignado previamente la expresión quedará de forma genérica en función del valor del ”parámetro” x Ahora bien si x ya tiene algún valor asignado la expresión f [x] no quedará de forma genérica. Por ello, cuando queremos que la expresión quede en forma genérica debemos asegurarnos que los nombres que empleamos para los parámetros no han sido empleados anteriormente, o, en su defecto, debemos eliminar el valor que hayan tenido antes con el comando Clear Ejemplo 5.5 Ejecutar las siguientes sentencias 7 a) f 3[variable_] = variableˆ3 b) f 3[parametro] c) c1 = 3 d) f 3[c1] e) f 4[cc_] = 3cc f) f 4[parametro2] g) Clear[f 4] Cuando vayamos a definir un nuevo objeto es conveniente asegurarnos de que no hay ninguno anterior con ese mismo nombre, eligiendo un nombre no utilizado anteriormente. En caso contrario, el programa podría no dejarnos asignarle el mismo nombre a otro objeto, o podría eliminar el valor anterior. Ejercicio 5.6 Definir en Mathematica las siguientes funciones 2 2 cos√x f 5(x) = x− f 6(x, y) = e−(x +y ) cos xseny 3 y obtener los siguientes valores √ a) f 5(π) b) f 5( 3) c) f 6(0, π) f 7(x, y, z) = xyz cos(x + y + z) d) f 6( π4 , − π4 ) e) f 7(−1, 1, 0) π2 Observación 5.7 Soluciones: − −√13+x , Inf inito, 0, − 12 e− 8 , 0 ,y Ejercicio 5.8 Crear las funciones g1(x) = −4x3 +x2 −7x, g2(x) = x4 −6x2 −3x+4 y g3(x) = g1(x) g2(x) evaluarlas en un parámetro (sin valor asignado) llamado a Después borrarlas de la memoria. Observación 5.9 Aunque guardemos información en un archivo en el que se hayan definido una serie de funciones o variables, éstas sólo permanecerán en memoria hasta que cerremos el programa. Esto quiere decir que cuando arranquemos de nuevo el programa y abramos el archivo, aunque estén escritas esas definiciones hasta que no volvamos a ejecutar las sentencias correspondientes Mathematica no tendrá guardadas en la memoria dichas funciones o variables. Apéndice de las prácticas 1 y 2 5.3 El uso del punto y coma Su función principal de separación de varias sentencias para ser ejecutadas en una misma línea (aunque esto puede hacerse también en distintas líneas separadas por ENTER y no por INTRO). Si se utiliza detrás de una sentencia el resultado de su ejecución, aunque existirá, no se mostrará en pantalla. Ejemplo 5.10 Ejecutar las siguientes sentencias a) g) c = 3; t = c; u := c; b) t c) u d) c = −1; 2 Clear[x, y, z, f ] h) x = 2; f [z_] = z + 3; y = f [x]; y 8 e) t f) u 6 Ayuda El menú Help, situado en la barra superior, contiene un manual del programa, en el que vienen todos los comandos de Mathematica, el uso de cada uno de ellos e incluso ejemplos aclaratorios. No obstante existe una forma sencilla de conseguir ayuda en pantalla mediante algunos símbolos como ? ?? ∗ Ejemplo 6.1 ?Log 1. 2. ?Arc* 3. ?*Cos* 4. ?*Sin 5. ?@ ó ??Log nos dan información acerca de la función Log nos da una lista de todas las funciones que empiezan por Arc nos da una lista de todos los comandos que contienen la expresión Cos nos da una lista de todos los comandos que terminan en Sin nos da una lista de todos los objetos que hemos definido. PRÁCTICA 3: VECTORES Y MATRICES 7 Definición de vectores y matrices Los vectores en Mathematica se escriben entre llaves y no con paréntesis. Así para escribir el vector (−1, 2, 0) pondremos {−1, 2, 0}. Los vectores también pueden utilizarse en Mathematica para evaluar una función en varios puntos. Así si f es una función de una variable, y escribimos f [{0, P i, a}] estaremos aplicando f a los puntos 0, π y a, respectivamente, y el resultado será un vector cuyas coordenadas son f [0], f [P i] y f [a]. Ejemplo 7.1 Teclear y ejecutar las siguientes sentencias: 1. f uncion[x ] = Cos[x] 2. f uncion[{0, P i, a}] 3. Sin[{0, P i, a}] Supongamos que queremos definir la función f : R3 → R dada por f (x, y, z) = xyz 2 . Para escribir esto en Mathematica debemos poner f [x , y , z ] = x∗y ∗zˆ2 ó f [{x , y , z }] = x∗y ∗zˆ2. La única diferencia entre estas dos formas está en que en el primer caso la función hay que evaluarla en tres números (por ejemplo f [1, 2, 0] ) y en el segundo en caso debemos evaluar la función en un vector de tres coordenadas (por ejemplo f [{1, 2, 0}] ). Se le pueden dar nombres a los vectores. Así, escribiendo u={2,-1,0,3} estaremos definiendo el vector u que vale (2, −1, 0, 3). Si ponemos u[[1]] estaremos refiriéndonos a la primera coordenada del vector u, es decir, a 2; y así ocurre con el resto de coordenadas u[[2]], u[[3]] y u[[4]]. Éstas 9 pueden ser modificadas, pues basta poner u[[2]]=5 para que la segunda coordenada deje de ser −1 y valga ahora 5. Las matrices en Mathematica hay que definirlas como un vector de vectores. Al poner {{1,2},{-3,0},{4,6}} estaremos definiendo en Mathematica la matriz quetiene porfilas los 1 2 vectores anteriores, es decir, la matriz que nosotros usualmente escribimos así −3 0 . Si le 4 6 asignamos un nombre a esta matriz, poniendo por ejemplo matriz={{1,2},{-3,0},{4,6}} podemos referirnos a sus coeficientes o a sus filas, o incluso cambiarlos. Poniendo matriz[[3,1]] nos debe dar como salida el elemento de la matriz anterior que ocupa la tercera fila y la primera columna, es decir, 4. Si ponemos matriz[[3,1]]=-2 le habremos cambiado el valor que tenía, valiendo ahora −2. Si ponemos ahora matriz[[3]] nos debe dar como salida la tercera fila de la matriz anterior. Si queremos ver en forma matricial la matriz anterior hay que poner MatrixForm[matriz]. Este comando sólo sirve para visualizar la matriz. Al poner DiagonalMatrix[{a1 , a2 , ..., an }] estamos poniendo una matriz diagonal cuyos elementos de la diagonal principal son a1 , a2 , ..., an . Si escribimos IdentityMatrix[n] obtenemos la matriz identidad de orden n. Ã ! 1 −1 2 Ejercicio 7.2 1. Definir la matriz m= . Cambiar el primer vector-fila por el vector 0 3 5 (0, 3, 4), y asignarle al coeficiente a22 el valor −4. 2. Ver en forma matricial la matriz identidad de orden 11, la matriz diagonal cuyos elementos son π, −1, 0, 3, 2, −2 y la matriz cuyas filas son los vectores (−1, 3, 4, 5, 6), (2, 4, −1, 0, 456), (5, −1, −9, 55, 0) y (0, 0, 0, 3, −2). 8 Operaciones con vectores y matrices La suma o resta de dos vectores o dos matrices se realiza, igual que para los números, mediante los símbolos + y − El producto de dos matrices se realiza mediante un punto . Este último símbolo, utilizado sobre vectores, sirve para realizar el producto escalar. En el caso de vectores podemos usar también el comando Dot Para el producto vectorial (en R3 ) se usa Cross Para multiplicar un escalar por un vector o por una matriz puede utilizarse el símbolo de multiplicación usual entre números, esto es, ∗ o dejar un espacio en blanco. Ejemplo 8.1 Teclear y ejecutar las siguientes sentencias: 1. u1 = {a1, b1, c1}; u2 = {a2, b2, c2}; u1 + u2 u1 − u2 10 3u1 − 5 u2 −5 ∗ u1 + 2u2 2. m1 = {{1, 2}, {−3, 0}, {4, 6}}; m2 = {{−1, 0}, {2, 1}, {6, 4}}; m1 + m2 m1 − m2 a m1 − 3m2 m3 = {{−1, 1, 0}, {6, 5, 4}, {4, 5, −2}}; 6 ∗ m1 − m3.m2 u1.u2 Dot[u1, u1] Cross[u1, u2] Ejemplo 8.2 El producto escalar de los vectores (1, 0, −2) y (1, −2, 3) es Dot[{1,0,-2},{1,-2,3}] La norma del vector (−3, 0, 1, −2, 5) es Sqrt[Dot[{-3,0,1,-2,5},{-3,0,1,-2,5}]] Ejercicio 8.3 Supongamos que tenemos los vectores u = (1, −1, 0, 2) y v = (3, 4, 1, 2). 1. Realizar el producto escalar de u y v. 2. Deducir si u y v son ortogonales. 3. Hallar la norma de u y la norma de v. 4. Deducir si alguno de los vectores es unitario. 5. Hallar el ángulo que forman u y v. 6. Hallar dos vectores LI w1 y w2 , que sean ortogonales tanto a u como a v. La sentencia Transpose[m] nos da la traspuesta de una matriz m Si la matriz m es cuadrada para hallar el determinante bastará teclear Det[m] Si la matriz m es invertible, la inversa de m se puede hallar poniendo Inverse[m] Para realizar la potencia n-ésima de una matriz cuadrada m (es decir, el producto n veces de m consigo misma, que usualmente lo denotamos por mn ) existe el comando MatrixPower[m,n] 1 2 3 Ejercicio 8.4 Dada la matriz m1= 0 3 −1 hallar su traspuesta (y defiirla como m2) y su 1 5 3 determinante. Comprobar que m1 es invertible y hallar su inversa (definirla como m3), la traspuesta de m3 y la inversa de m2. Finalmente comprobar que las dos últimas matrices coinciden. Ã ! 2 3 Ejemplo 8.5 Para calcular la potencia de orden 5 de la matriz podemos escribir −3 0 MatrixPower[{{2,3},{-3,0}},5] 11 Ã −1 2 Ejercicio 8.6 Dada la matriz m = 3 6 mando MatrixPower y poniendo m.m.m y observar el resultado. ! hallar m3 . Realizar esta operación mediante el coTeclear también m^3 mmm y m*m*m Apéndice de la sección: Operaciones con vectores y matrices Existen comandos de Mathematica que sirven para crear vectores y matrices dependientes de ”contadores”. Así es Table Observemos su funcionamiento. Si ponemos Table[i,{i,1,4}] nos dará como salida el vector (1,2,3,4). Si escribimos Table[i^2,{i,1,4}] nos dará como salida el vector (1,4,9,16). Tecleando Table[i-1,{i,3,7}] nos dará como salida el vector (2,3,4,5,6). Su expresión general es Table[expresión,{contador,inicio,final}] la cual crea una tabla (que puede ser por ejemplo un vector o una matriz) que tiene como entradas el valor de expresión en las que contador empieza en inicio y termina en final. Además, pueden ponerse más de un contador (si se pone sólo uno el resultado es un vector; si se ponen dos el resultado es una matriz; si se ponen tres el resultado será una tabla tridimensional, etc.). Ejemplo 8.7 Teclear las siguientes sentencias 1. Table[-i,{i,2,6}] 2. Table[i^3,{i,3,9}] 3. Table[2i-1,{i,3,10}] 4. Table[i j,{i,4,8},{j,1,3}] 5. Table[i+j,{i,2,11},{j,2,3}] 6. u={2,-3,9};Table[-i u[[i]],{i,1,3}] 7. m={{1,2},{3,4},{5,6}};Table[(-1)^j m[[j]],{j,1,3}] Observación 8.8 Puede omitirse inicio y se supondría que vale 1. 9 Rango Dada una matriz m puede obtenerse (realizando transformaciones elementales-fila) una escalonación de la matriz inicial tecleando RowReduce[m] Ésta última tiene por tanto el mismo rango que m y sus filas no nulas constituyen una base del subespacio generado por las filas de m Si queremos obtener todos los menores de orden n de la matriz debemos teclear Minors[m,n] Mathematica mostrará, en el resultado de esta sentencia, dichos menores ordenados a su vez en forma de matriz (según los órdenes). De este modo cada uno de los números que aparezca en la matriz resultado será un menor de la matriz m de orden n. 12 2 0 1 0 Ejemplo 9.1 Para hallar el rango de la matriz 1 −2 0 2 podemos teclear 1 2 1 −2 m={{2,0,1,0},{1,-2,0,2},{1,2,1,-2}};RowReduce[m] El resultado sería una matriz escalonada que tiene dos filas no nulas, por tanto el rango de m es 2. Otra forma sería teclear m={{2,0,1,0},{1,-2,0,2},{1,2,1,-2}};Minors[m,1] Minors[m,2] Minors[m,3] Observando que hay menores de orden 2 no nulos y no hay menores de orden 3 no nulos deduciríamos también que el rango vale 2. Ejercicio 9.2 Hallar el rango de las siguientes matrices (de tres formas: utilizando menores, escalonando la matriz por filas y escalonando la matriz por columnas): 1 2 −1 0 3 2 2 −2 1 8 −6 −2 1 1 2 0 2 2 −2 3 −2 0 5 0 −2 1 −4 3 Ejemplo 9.3 Para hallar una base del subespacio de R4 generado por los vectores (−1, 3, 2, 4), (1, −3, −2, −4), (1, 0, −2, 1) y (0, 3, 0, 5) podríamos teclear m={{-1,3,2,4},{1,-3,-2,-4},{1,0,-2,1},{0,3,0,5}};RowReduce[m] El resultado sería una matriz escalonada cuyas filas no nulas constituyen dicha base Ejercicio 9.4 Hallar una base del subespacio de R4 generado por los vectores (0, 0, 0, 4), (0, 0, −2, −4), (1, 0, −2, 1), (4, 0, 2, 3) y (1, 0, 0, 5). Ejemplo 9.5 Dadas las bases B1 = {(1, 0), (1, −1)} y B2 = {(1, −2), (3, 1)} de R2 hallar las matrices cambio de base MB1 B2 y MB2 B1 . Para la primera basta con teclear la sentencia Inverse[Transpose[{{1,-2},{3,1}}]].Transpose[{{1,0},{1,-1}}] La segunda es inversa de la primera. Ejercicio 9.6 Dadas las bases B1 = {(1, 0, 1), (1, 1, 0), (0, 1, 1)} y B2 = {(1, 2, 3), (1, 3, 0), (3, 2, 3)} de R3 hallar las matrices cambio de base MB1 B2 y MB2 B1 . PRÁCTICA 4: SISTEMAS DE ECUACIONES LINEALES Y APLICACIONES LINEALES 13 10 Sistemas de ecuaciones lineales Para resolver sistemas de ecuaciones hemos usado ya los comandos Solve y Reduce Cuando las ecuaciones son lineales Mathematica puede usar también LinearSolve y NullSpace El primero actúa así: si tenemos un sistema de ecuaciones, dado en forma matricial de la forma mx=b donde la matriz de coeficientes del sistema es m y el vector de términos independientes es b ejecutando la sentencia LinearSolve[m,b] obtendremos una solución del sistema (si éste es compatible). En caso de que sea incompatible el programa nos lo dirá. Ya tenemos una forma de ver si un sistema lineal es SC o SI: con LinearSolve Nos interesamos ahora por determinar si un SC es SCD o SCI. Para ello utilizaremos el Ejercicio de la hoja 2, en el que obteníamos la solución general de un SC a partir del sistema homogéneo asociado (es decir, el sistema lineal homogéneo que tiene la misma matriz de coeficientes): la solución general del sistema se obtiene sumando a una solución particular soluciones del sistema homogéneo asociado. Cuando este sistema homogéneo tenga alguna solución no nula entonces el SC inicial será SCI, y cuando no ocurra así será SCD. Tecleando NullSpace[m] obtenemos una base de este sistema homogéneo asociado, si éste es no nulo. Ejemplo 10.1 Discutir y resolver, en su caso, los siguientes sistemas de ecuaciones lineales: ( 2x − 3y = −3 1. 2x + 2y = 2 Tecleando LinearSolve[{{2,-3},{2,2}},{-3,2}] determinamos una solución particular (0, 1) del sistema (por lo que vemos el sistema es compatible). A continuación ponemos NullSpace[{{2,-3},{2,2}}] y vemos que el sistema homogéneo asociado tiene solución nula (la respuesta del programa es que este espacio vectorial no tiene ninguna base). Concluimos que es un SCD cuya única solución era el vector (0, 1). x − 2y − 3z = 1 2. −x − y + z = 0 2x − y − 4z = 2 Para determinar una solución del sistemas tecleamos LinearSolve[{{1,-2,-3},{-1,-1,1},{2,-1,-4}},{1,0,2}] y observamos que el programa nos responde que no tiene solución. Por tanto es un SI. 3. ( x − y + 2z − t = 3 2x + y + z + t = −2 Tecleando LinearSolve[{{1,-1,2,-1},{2,1,1,1}},{3,-2}] hallaríamos en primer lugar una solución particular v0 = ( 13 , − 83 , 0, 0) del sistema (y ya de paso sabemos que el sistema es compatible). Ahora hallaríamos una base de sistema homogéneo asociado tecleando 14 NullSpace[{{1,-1,2,-1},{2,1,1,1}}] En este ejemplo concreto nos saldrían dos vectores u1 = (0, −1, 0, 1) y u2 = (−1, 1, 1, 0) con lo que sabemos ya que estamos con un SCI. De este modo la solución general de nuestro sistema lineal está formada por todos los vectores u que son de la forma u = v0 + αu1 + βu2 , para cualesquier escalares α y β ∈ R, es decir, los vectores de la forma 1 8 1 8 ( , − , 0, 0) + α(0, −1, 0, 1) + β(−1, 1, 1, 0) = ( − β, − − α + β, β, α) 3 3 3 3 Ejercicio 10.2 Discutir y resolver los siguientes sistemas lineales: x + 2y + z + 3t = 45 x + 2y − z + t + u = 0 x + y + z + 4t = 48 3x − y + t − u = 6 x−y+z =2 c) a) b) 3x + 2y − 2z = 1 2x + y + 4z + 10t = 101 6x + y + t + u = 1 −x + 3y − z = 2 −x − 3y + 7z + 5t = −4 x − 2y + 2z − 2t = −5 Saber resolver sistemas lineales nos permite hacer algunas cosas más relacionadas con vectores. Así por ejemplo, para saber si un vector se pone o no como combinación lineal de otros, y, en su caso, hallar los escalares que permiten hacer esto, lo que tenemos que hacer es precisamente resolver un sistema lineal. Un caso particular de esta situación se presenta cuando queremos hallar las coordenadas de un vector en una base, o, incluso, cuando queremos hallar la matriz cambio de base de dos bases de un espacio vectorial. Ejercicio 10.3 Responder a las siguientes preguntas: 1. Comprobar si el vector (1, −1, 0, 2) es combinación lineal de los vectores (0, −2, 3, 1) y (1, 0, 0, 1), y en caso afirmativo, hallar los escalares que permiten dicha combinación lineal. 2. Hallar las coordenadas del vector (1, −1, 0) en la base {(1, 2, 3), (1, 3, 0), (3, 2, 3)} de R3 . 11 Aplicaciones lineales Ejemplo 11.1 Consideremos la aplicación f : R4 → R3 , definida por f (x, y, z, t) = (x − z, 0, y − 2z + t). Responder a las siguientes cuestiones: 1. Definir la aplicación f . 2. Hallar la matriz asociada a f respecto de las bases canónicas de R4 y R3 . 3. Hallar bases del núcleo y de la imagen de f . 4. Clasificar f . 5. Hallar la matriz asociada a f respecto de las bases C4 (=base canónica de R4 ) y B = {(1, 1, 0), (1, 1, 1), (1, 0, 0)}. 15 6. Hallar la matriz asociada a f respecto de las bases B1 = {(1, 2, 3, 4), (0, 1, 2, 3), (0, 0, 1, 2), (0, 0, 0, 1)} de R4 y B2 = {(−2, 1, 0), (1, 1, 0), (3, 0, −3)} de R3 . Ejecutando Clear[f,x,y,z,t];f[{x_,y_,z_,t_}]={x-z,0,y-2z+t} tenemos definida la función. La matriz m=Transpose[{f[{1,0,0,0}],f[{0,1,0,0}],f[{0,0,1,0}],f[{0,0,0,1}]}] es la asociada a f respecto de las bases canónicas de R4 y R3 . En este caso esta matriz es 1 0 −1 0 0 0 0 0 0 1 −2 1 Para el núcleo la línea NullSpace[m] nos da una base de él. Para la imagen, la sentencia RowReduce[Transpose[m]] nos da un SG de la imagen ya escalonado, y quitando los vectores nulos tendremos una base de la imagen. Claramente dim ker f = 2 y dim Im f = 2, por lo que la clasificación es: f no es ni inyectiva ni suprayectiva (por tanto tampoco es biyectiva). Para la matriz asociada del penúltimo apartado podemos construimos en primer lugar la matriz cambio de base de B a C3 la cual es n=Transpose[{{1,1,0},{1,1,1},{1,0,0}}] Seguidamente obtenemos nuestra matriz sin más que hacer el producto Inverse[n].m Similarmente podemos hacer para la última en donde construimos en primer lugar las matrices cambio de base de B1 a C4 y de B2 a C3 las cuales son, respectivamente p=Transpose[{{1,2,3,4},{0,1,2,3},{0,0,1,2},{0,0,0,1}}] y q=Transpose[{{-2,1,0},{1,1,0},{3,0,-3}}] Finalmente obtenemos nuestra matriz haciendo el producto Inverse[q].m.p Ejercicio 11.2 Consideremos la aplicación f : R3 → R2 , definida por f (x, y, z) = (x−y−z, x−y−z). Responder a las siguientes cuestiones: 1. Definir la función f . 2. Hallar la matriz asociada a f respecto de las bases canónicas de R3 y R2 . 3. Hallar bases del núcleo y de la imagen de f . 4. Clasificar f . 5. Hallar la matriz asociada a f respecto de las bases B1 = {(1, 1, 0), (1, 1, 1), (1, 0, 0)} y B2 = {(2, −1), (3, 1)}. Apéndice de las práctica 4 16 12 Ecuaciones En Mathematica la igualdad en una ecuación se escribe con el símbolo == para distinguirlo del símbolo = que utilizábamos para definir variables o funciones. Así la ecuación que nosotros habitualmente designamos por x = 2x − 3 se escribiría x == 2x − 3 Para resolver una ecuación o un sistema de ecuaciones, Mathematica dispone de varios comandos: a) Solve[ecuación,variable] o Solve[{ec1 ,ec2 ,...,ecn },{var1 ,var2 ,...,varn }] Con estas sentencias el programa resuelve, si existe solución, la ecuación o el sistema de ecuaciones, para las variables dadas. b) Reduce[ecuación,variable] o Reduce[{ec1 ,ec2 ,...,ecn },{var1 ,var2 ,...,varn }] Con estos comandos el programa simplifica todo lo posible la ecuación o el sistema, considerando sus soluciones, tanto en términos de las variables como de los posibles parámetros (dando los valores de los parámetros para los cuales existe la solución y la solución correspondiente) c) El comando FindRoot halla una raíz (mediante aproximación numérica) de una ecuación de una variable, a partir de una condición inicial próxima (utilizando el conocido método de Newton). Con los otros comandos Mathematica intenta hallar las soluciones del sistema de ecuaciones más o menos despejando y sustituyendo, utilizando funciones inversas, y eso no es siempre posible. Por ello no será capaz de resolver muchos sistemas de ecuaciones. Ahora bien, a veces nos puede interesar hallar una solución concreta de una ecuación (bien porque las otras no nos sean de interés, o bien porque sepamos que es única). Puede aplicarse el método de Newton para hallarla. No vamos a ver detalles de este método, pero sí diremos que funciona en numerosas situaciones y que proporciona una solución de una ecuación si damos un valor inicial próximo a la solución. Ejemplo 12.1 1. Vamos a hallar las raíces del polinomio y 4 −3y 3 +2y 2 la sentencia Solve[yˆ4 − 3yˆ3 + 2yˆ2 == 0, y] Para ello escribimos y x2 + (y − 1)2 = 1 2. Vamos a intersectar las circunferencias x2 + y 2 = 1 ello escribimos la sentencia Solve[{xˆ2 + yˆ2 == 1, xˆ2 + (y − 1)ˆ2 == 1}, {x, y}] Para 3. Sabiendo que la ecuacion ex = 3x tiene una raíz próxima a 1 vamos a hallarla escribiendo F indRoot[Eˆx == 3x, {x, 1}] Ejercicio 12.2 Resolver las siguientes ecuaciones, para la variable x (utilizar tanto Solve como Reduce y observar la diferencia): 1. x4 − 5x3 + 5x2 + 5x − 6 = 0 2. ax + b = c 3. ax2 + bx + c = 0 17 Ejercicio 12.3 Resolver el siguiente sistema en las variables Solve como Reduce y observar la diferencia): x2 + y 2 = 1 Ejercicio 12.4 Hallar la raíz de la ecuación x e y (utilizar tanto x+y =a cos x = 3senx próxima a 0. Observación 12.5 Para mostrar los resultados de Solve y Reduce es necesario conocer los operadores lógicos que se explican a continuación. 12.1 Operadores lógicos Mathematica a veces necesita mostrar resultados en los que intervienen proposiciones lógicas. Para este tipo de cosas es necesario conocer los siguientes símbolos: == igualdad 6= desigualdad && conjunción (y) || disyunción (o) Ejemplo 12.6 1. La expresión igual a 3 o a igual a 4”. 2. La expresión distinto de 4”. a == 2 || a == 3 || a == 4 significa ”a igual a 2 o a significa ”a distinto de 2 y a distinto de 3 y a a6=2 && a6=3 && a6=4 PRÁCTICA 5: DIAGONALIZACIÓN Y LÍMITES Y REPRESENTACIÓN GRÁFICA DE FUNCIONES DE UNA VARIABLE 13 Diagonalización de matrices Supongamos que m es una matriz cuadrada de orden n. Para hallar los valores propios de m deberemos ejecutar la sentencia Eigenvalues[m] Si lo que queremos es unir bases de todos los subespacios propios de m lo que deberemos poner es Eigenvectors[m] Hay que tener en cuenta que el último comando lo que hace es hallar bases de cada uno de los subespacios propios y después unirlas. Para cada valor propio, añade tantos vectores cero como diferencia hay entre la multiplicidad del valor propio (multiplicidad que tiene como raíz del polinomio característico de m) y la dimensión del correspondiente subespacio propio. Además, los valores propios los ordena según el orden natural de los números, y los vectores propios aparecen en el mismo orden que los valores propios a los que van asociados. Para saber si una matriz m es diagonalizable tenemos que ver que 18 todos los valores propios son reales y que existe una base del espacio formada por vectores propios. Esto último puede hacerse directamente viendo si el número de vectores propios (no nulos) que el programa nos da después de ejecutar la sentencia Eigenvectors[m] es igual al tamaño de la matriz. Ejemplo 13.1 Ejecutando las siguientes sentencias: m = {{3, 0, 0}, {0, 2, 0}, {0, 0, 2}} Eigenvalues[m] Eigenvectors[m] vemos que la matriz es diagonalizable, pues todos los valores propios son reales y los vectores que salen son no nulos. Ejecutando el comando JordanDecomposition[m] vemos cuál es la matriz de paso (primera) y la diagonal (segunda), o visualmente con MatrixF orm[%] la matriz de paso está arriba y la diagonal abajo. Ejemplo 13.2 Ejecutando las siguientes sentencias: n = {{1, −1, 3}, {0, −2, 3}, {0, 0, 2}} Eigenvalues[n] Eigenvectors[n] vemos que la matriz es diagonalizable, pues todos los valores propios son reales y los vectores que salen son no nulos. Ejecutando el comando JordanDecomposition[n] vemos cuál es la matriz de paso (primera) y la diagonal (segunda), o visualmente con MatrixF orm[%] la matriz de paso está arriba y la diagonal abajo. Ejemplo 13.3 Ejecutando las siguientes sentencias: a = {{1, 0, 0, 0, 0, 0}, {1, 1, 0, 0, 0, 0}, {0, 1, 1, 0, 0, 0}, {0, 0, 0, 2, 0, 0}, {0, 0, 0, 1, 2, 0}, {0, 0, 0, 0, 0, −1}} Eigenvalues[a] Eigenvectors[a] vemos que la matriz es no diagonalizable, pues aunque todos los valores propios son reales hay vectores que salen nulos. Ejercicio 13.4 Para las siguientes matrices, hallar los valores propios, una base de cada subespacio propio, comprobar si son diagonalizables, y, en caso afirmativo, hallar las matrices cambio de base correspondientes P y P −1 y las matrices diagonales correspondientes D (observar cuáles son los elementos de la diagonal de D): 1 −1 −1 5 0 −4 1 2 0 0 0 1 −1 −1 3 1 0 3 1 0 −1 2 0 −1 0 1 1 19 14 Límites de funciones de una variable La sentencia Limit[funcion[variable],variable->punto] proporciona el límite de la función funcion cuando variable tiende hacia punto (el símbolo -> se consigue poniendo primero un guión y luego el signo de mayor que; puede sustituirse por la flecha de la tabla de símbolos que aparece al principio). Ejemplo 14.1 Teclear la siguiente sentencia Limit[(x − 1)/(xˆ2 − 1), x− > 1] Ejercicio 14.2 Calcular los siguientes límites: x2 −1 2 x→∞ 2x −x−1 1. lim 2. lim x→0 sen5x x 1+senx−cos x , x→0 1+senpx−cos px 3. lim 15 p∈R Representación gráfica de funciones Mathematica es capaz de hacer gráficas de funciones de una variable. El comando a utilizar es Plot La forma de usarlo es la siguiente: Plot[funcion,{variable,extremoizquierdo,extremoderecho}] También pueden hacerse simultáneamente las gráficas de S funciones poniendo Plot[{funcion1,funcion2,...,funcionS},{variable,extremoizquierdo,extremoderecho}] Ejemplo 15.1 Ejecutar las siguientes sentencias (observar lo que ocurre con el ejemplo 8)) 1. P lot[Cos[x], {x, −P i, P i}] 2. P lot[xˆ3 − 2x, {x, −1, 1}] 3. P lot[Exp[x], {x, 0, 4}] 4. P lot[Sqrt[1 − xˆ2], {x, −1, 1}] 5. P lot[{Sin[x], Cos[x]}, {x, −P i, P i}] 6. P lot[{Sin[x], Cos[x]}, {x, 0, 2P i}] 7. P lot[Sin[x]ˆ2 ∗ Cos[3x], {x, −P i, P i}] 8. P lot[1/x, {x, −1, 1}] 20 Si lo que queremos es representar una superficie de ecuación z = f (x, y) en el rectángulo [a, b] × [c, d] en el espacio deberemos poner Plot3D[f[x,y],{x,a,b},{y,c,d}] También puede utilizarse la forma paramétrica para representar las curvas o superficies. Así poniendo ParametricPlot[{f[t],g[t]},{t,a,b}] nos da la representación en R2 de la curva cuya ecuación paramétrica es (f (t), g(t)) en el intervalo dado [a, b]. Poniendo ParametricPlot3D[{f[t],g[t],h[t]},{t,a,b}] puede obtenerse la gráfica de una curva en R3 cuya ecuación paramétrica sea (f (t), g(t), h(t)) en el intervalo [a, b]. Poniendo ParametricPlot3D[{f[u,v],g[u,v],h[u,v]},{u,a,b},{v,c,d}] puede obtenerse la gráfica de una superficie en R3 cuya ecuación paramétrica sea (f (u, v), g(u, v), h(u, v)) en [a, b] × [c, d]. Ejemplo 15.2 Ejecutar las siguientes sentencias 1. P lot3D[Cos[x ∗ y], {x, −P i, P i}, {y, −P i, P i}] 2. P lot3D[xˆ2 − yˆ2, {x, −1, 1}, {y, −1, 1}] 3. P lot3D[Sin[x] ∗ Cos[y], {x, −P i, P i}, {y, −P i, P i}] 4. P arametricP lot[{Sin[t] + Sin[t]ArcT an[t], Cos[t] + Sin[t]ArcT an[t]}, {t, −20P i, 20P i}] 5. P arametricP lot[{Eˆ(−t/20)Sin[t], Eˆ(−t/20)Cos[t]}, {t, 0, 20P i}] 6. P arametricP lot3D[{Sin[P i t], Cos[P i t], Eˆ(1 − t(t + 1))Cos[t]}, {t, 0, 20P i}] 7. P arametricP lot3D[{Sin[t], Cos[t], t/10}, {t, −4P i, 4P i}] 8. P arametricP lot3D[{Cos[v], Sin[v]Cos[u], Sin[v]Sin[u]}, {u, 0, 2P i}, {v, 0, P i}] 9. P arametricP lot3D[{t, Sin[s], Cos[s]}, {t, 0, 3}, {s, 0, 2P i}] Apéndice de las práctica 5 16 Manipulación de expresiones Los siguientes comandos son útilles para manipular expresiones polinómicas: Apart reduce una fracción a suma de fracciones simples Cancel simplifica denominadores comunes en fracciones Expand multiplica y realiza potencias ExpandAll multiplica y realiza todas las potencias Factor expresa como producto de factores irreducibles Simplify simplifica expresiones Together agrupa una suma de fracciones con un denominador común 21 Los siguientes comandos son para expresiones trigonométricas TrigExpand Desarrolla expresiones en sumas TrigFactor Transforma expresiones en productos TrigReduce Reduce expresiones usando múltiplos de los ángulos iniciales Ejemplo 16.1 Ejecutar las siguientes sentencias (eliminar previamente el valor de todas los parámetros que se usen) 1. Apart[1/((x − 1) ∗ (x − 3))] 2. Cancel[(x − 1)/(xˆ2 − 1)] 3. Expand[(x − 1)ˆ3(x − 4)ˆ2] 4. Expand[((x − 3)ˆ2(x + 4))/((x − 5)ˆ2(x + 2))] 5. ExpandAll[((x − 3)ˆ2(x + 4))/((x − 5)ˆ2(x + 2))] 6. F actor[xˆ4 − 3xˆ3 + 2xˆ2] 7. Simplif y[(b ∗ aˆ2 − aˆ2)/(a ∗ bˆ2 − b a)] 8. T ogether[1/(x − 1) − 3/(xˆ2 − 1)] 9. T rigExpand[Cos[3x]Sin[x]Cos[10x]] 10. T rigF actor[Sin[x] − Sin[5x]] 11. T rigReduce[Cos[x]ˆ5Sin[x]ˆ2 + 4Sin[x]] 17 Proposiciones lógicas Mathematica es capaz de manejar proposiciones lógicas y decir el valor que tienen: True (verdadero) o False (falso). Veamos el siguiente ejemplo: Ejemplo 17.1 Ejecutar las siguientes sentencias: 1) x = 2; y = 3; z = 3; 2) {x, y, z} 3) x == y 4) x == z 5) y == z PRÁCTICA 6: FUNCIONES DE UNA VARIABLE: DERIVADAS, POLINOMIOS DE TAYLOR E INTEGRALES 22 18 Derivadas Para derivar funciones de una variable podemos usar el comando D Su formulación es la siguiente: D[funcion,variable] También puede utilizarse la comilla 0 con el nombre de la función. Para hallar la derivada de orden n de una función f es suficiente con ejecutar la sentencia D[f[variable],{variable,n}] Ejemplo 18.1 Ejecutar las siguientes sentencias 1. D[xˆ3 − 2x, x] 2. D[xˆ3 − 2y, y] 3. D[ArcSin[(x − 1)/4], x] 4. D[ArcT an[(3x + 1)/2], x] 5. D[Exp[Cos[t]ˆ2 − tˆ4], t] 6. f [x ] = xˆx 7. D[f [u], u] 8. g[y ] = f [3y] 9. D[g[u], u] 10. D[ArcCos[x], {x, 5}] 11. D[Exp[xˆ2], x, x, x] 12. Clear[f, x]; f [x ] = Si n[3x − 1] ∗ xˆ2; f 0 [x] Ejercicio 18.2 Calcular las derivadas de órdenes 3, 6 y 10 de las funciones que se indican a continuación: 1. f (x) = sen(x2 ) 2. f (x) = log(cos x) √ 2 3. f (x) = sen( x) · e1+x 4. f (x) = 1+x−x2 1−x+x2 3 −2 5. f (x) = ((1 + cos x) · log x)x 23 19 Polinomios de Taylor Si lo que queremos es hallar el polinomio de Taylor de f en el punto centro de grado n debemos ejecutar la sentencia Series[f[variable],{variable,centro,n}] Ejemplo 19.1 Teclear la siguiente sentencia Series[Cos[x], {x, 0, 5}] Ejercicio 19.2 Calcular los polinomios de Taylor de las siguientes funciones en los puntos que se indican: 1. f (x) = ex−1 · cos πx − arctan x 2. g(x) = 3. ) · log(6x − 11) h(x) = cos2 ( πx 3 20 arcsen(x3 ) √ 1−x2 en el punto 1 de grado 6 en el punto 0 de grado 12 en el punto 2 de grado 5 Integrales Para calcular integrales de funciones de una variable podemos usar el comando Integrate Su formulación es la siguiente: Integrate[funcion,variable] calcula una primitiva de la función indicada Integrate[funcion,{variable,extremoizquierdo,extremoderecho}] calcula la integral definida de la función indicada en el intervalo indicado. R Ejemplo 20.1 Para calcular la integral cos xdx tendríamos que teclear Integrate[Cos[x], x] y R2 3 para calcular la integral x dx tendríamos que teclear Integrate[xˆ3, {x, −1, 2}] −1 Ejemplo 20.2 Ejecutar las siguientes sentencias 1. Integrate[xˆ3 − 2x, x] 2. Integrate[Cos[x]ˆ8, x] 3. Integrate[ArcT an[x], x] 4. Integrate[Sqrt[3t − tˆ2], t] 5. Integrate[x/((xˆ2 + 1) ∗ (x − 2)ˆ3), x] 6. Integrate[(xˆ3 − 2x)/((xˆ2 − 1) ∗ (x − 2)ˆ2 ∗ (xˆ2 + 2x + 2)), x] 7. Integrate[Cos[x]ˆ3, {x, −P i, P i}] 8. Integrate[s ∗ Log[s], {s, 0.1, 1}] Apéndice de las práctica 6 24 21 Otras funciones de Mathematica Función factorial n! o F actorial[n] calcula el factorial del número natural n ¡n¢ n! Números combinatorios Binomial[n, m] calcula m = m!(n−m)! Parte entera IntegerP art[x] halla la parte entera del número real x (es decir, el mayor número entero que es menor o igual que x). Además, el comando Round[x] da el entero más próximo a x. División módulo n Mod[n, m] halla el resto resultante de la división de n entre m (ambos números naturales). Divisors[n] Calcular los divisores del número natural n. F actorInteger[n] Calcula la factorización en primos del número natural n. P rime[n] Calcular el número primo número n (n es el lugar que ocupa dentro de la lista de los números primos). Max[x1, x2, ...] y Min[x1, x2, ...] hallan el máximo y el mínimo, respectivamente, del conjunto de números que hay en su argumento. GCD[x1, x2, ...] y LCM[x1, x2, ...] hallan el máximo común divisor y el mínimo común múltiplo, respectivamente, del conjunto de números naturales que hay en su argumento. P olinomiaRemainder[p, q, x] da el resto de dividir p entre q (ambos polinomios en la variable x) P olynomialGCD[p1 , p2 , ..., pk ] o P olynomialLCM[p1 , p2 , ..., pk ] da el MCD o el MCM, respectivamente, de los polinomios en cuestión. F indMinimum[f [x], {x, x0 }] encuentra el mínimo relativo de f cercano a x0 Re[z], Im[z], Conjugate[z], Arg[z] y Abs[z] calculan la parte real, parte imaginaria, el conjugado, el argumento principal y el módulo de un número complejo z. Para realizar sumas o productos mediante un contador, los comandos a emplear son Sum y P roduct Su empleo es similar al del comando T able Así por ejemplo, la sentencia Sum[jˆ2, {j, 1, 5, 1}] nos da 12 + 22 + 32 + 42 + 52 , la sentencia P roduct[2i + 3, {i, 2, 8, 2}] nos da 7 · 11 · 15 · 19. Finalmente, la sentencia Sum[1/2ˆj, {j, 0, Inf inity}] nos da la suma de P 1 la serie 2j j≥0 25