1 practica1.nb Práctica 1 ª : INTRODUCCION A MATHEMATICA ¿Qué es Mathematica? Mathematica es un paquete de software de Matemáticas de uso fácil y gran capacidad que integra los elementos siguientes: Cálculo numérico, Cálculo simbólico, Grafismo en 2D/3D, Lenguaje de programación y Aplicaciones En esta introducción nos iniciaremos en el conocimiento básico de las funciones más importantes de Mathematica que nos serán imprescindibles para el posterior desarrollo de las prácticas de la asignatura de Matemática VI . En cada una de las prácticas posteriores se hará un estudio de los comandos específicos que son necesarios para el desarrollo de las mismas. Estructura interna de Mathematica Este paquete tiene una estructura que permite su utilización en diferentes entornos: Pc, Mac, Unix, etc. Para ello está dispuesto en dos partes fundamentales. El Kernel (motor de cálculo) y el Front End (Interfaz de comunicación con el usuario). Cuando se comienza a utilizar el programa se activa el Front End con lo que se puede comenzar a introducir datos y expresiones. En el momento en que se desea realizar la primera operación se activa el Kernel que es el módulo que realiza el cálculo. En el Kernel se encuentran introducidos los procedimientos de cálculo relacionados con una gran cantidad de operaciones (las más habituales). Sin embargo, dada la potencia de cálculo del paquete, operaciones y procedimientos más complejos se encuentran almacenados en diferentes "Packages" que deben ser activados antes de realizar los cálculos con ese tipo de sentencias. En el entorno Windows en que nos movemos, el Front End está dispuesto de manera que todo el desarrollo realizado puede ser almacenado prácticamente como en un editor de texto y tiene además todas las características de conectividad con otros paquetes que funcionen en el mismo entorno windows (OLE). También, muchos de los comandos que ejecuta Mathematica han sido introducidos en ventanas gráficas "Palettes" que permiten una más rápida implementación de las sentencias y evitan memorizar parte de los comandos utiliza dos. Todas estas características permiten un manejo sencillo y rápido de modo que, con una pequeña introducción a las funciones básicas, al modo de introducir datos y a la utilización de la ayuda, se puede manejar con soltura en un corto espacio de tiempo. 2 practica1.nb Empezando a trabajar con Mathematica Entradas/salidas, celdas, %, %n Comenzar a trabajar con Mathematica es muy sencillo, basta con introducir la operación que se desea realizar y pulsar las teclas Shift + Intro (o también la tecla Intro del teclado numérico). Así Mathematica realiza la operación indicada y genera una serie de celdas de entrada y salida perfectamente distinguibles que podremos manipu lar como cualquier objeto del entorno Windows. Procediendo de este modo las operaciones quedan numeradas en el orden en que se van realizando, con lo que se pueden ir utilizando los resultados previos con solo indicar en qué momento se obtuvieron. El resultado de la última operación se puede recuperar utilizando el símbolo %, el penúltimo mediante %% y en general, el resultado de la k-ésima operación con el símbolo %k. 23 5 2 3 2 a 2.15 3 4 2 a % %1 La barra de menús De la barra de menús distinguiremos especialmente las siguientes partes: File, Edit, Kernel y el Help. En ellas se encuentran recogidas aquellas acciones de uso más frecuente: abrir, salvar, imprimir, copiar, pegar, salirse del Kernel, etc. Para copiar una celda basta con pinchar en la parte derecha sobre el segmento correspondiente a esa celda y copiar y pegar tal y como se hace normalmente en windows.. El ágil manejo de la ayuda nos será de especial utilidad en nuestro trabajo con Mathematica. Pinchando en la opción Help de la barra de menús y a continuación en la opción Help Browser se activa la ayuda. Para obtener información sobre cualquier función o comando normalmente se activan los botones Built-in-functions o Master Index , o el botón Add-ons en el caso de un comando dentro de un determinado paquete. Dentro de la información básica que inmediatamente ofrece la ayuda se puede acceder a secciones del Mathematica Book. Estas secciones están ordenadas desde las más elementales a las más avanzadas. Finalmente la ayuda dispone de una serie de ejemplos de la utilización de la función o comando. 3 practica1.nb Números y operaciones Números: racionales, con punto decimal y complejos Operaciones aritméticas: + , - , * , / ,^ Números exactos y aproximados. N[exp] (o exp //N) , N[exp,n] En Mathematica se puede trabajar con números racionales, con punto decimal o complejos, expresados estos últimos en la forma x+yI Las operaciones aritméticas: adición (+), sustracción (-), multiplicación (*), división (/) y potenciación (^) nos permiten trabajar con números . El orden jerárquico de las mismas es el usual, empleándose paréntesis (nunca corchetes) para indicar las agrupaciones que interese realizar. El símbolo del producto (*) puede ser sustituído por un espacio en blanco. Mathematica siempre que puede llega al resultado exacto. Ahora bien, en ocasiones puede interesar llegar a un resultado aproximado en vez de al resultado exacto, para hacerse una idea del orden de magnitud del resultado obtenido. Esto se puede hacer: a) Introduciendo alguno de los factores de la operación que se desea realizar de forma aproximada. Para ello basta con poner en forma decimal algún factor. b) Utilizando el comando N. Con él podemos incluso indicar el número de decimales que se desea aparezcan. Por defecto presenta 6 pero internamente trabaja con 16. Solo se verán más si se piden más de 16. Otra forma de utilizar el comando N es , al final //N. 3 5 2^ 2 N3 5 2 ^2 3 5 2^ 2 N N3 ^50 N3 ^50, 20 Constantes y funciones predefinidas Constantes predefinidas: Pi , E , Degree , I Mathematica dispone de ciertas constantes de interes matemático predefinidas. Las indicadas representan, respec tivamente, a los números: , e, /180 y a la unidad imaginaria 1 4 practica1.nb Funciones elementales predefinidas: Sqr[ ] , Exp[ ] , Log[ ] , Sin[ ] , Cos[ ] ,Tan[ ] , ArcSin[ ] , Abs[ ] , ... Asímismo, Mathematica tiene predefinidas un amplio abanico de funciones elementales Para una mayor comodidad, se puede recurrir a la utilización de paletas para introducir constantes y funciones predefinidas así como los comandos operativos más frecuentes. Ejercicios 1- Utilice N para calcular con 50 decimales. 2- Utilice N para ver a qué entero se aproxima E . A continuación utilizar los comandos Floor[E ] y Ceiling[E ], recurriendo previamente a la ayuda para obtener información acerca de cada uno de ellos. 3- Calcule dos números aleatorios con Random[ ] y a continuación multiplíquelos. Variables definidas por el usuario Cómo escribir una variable. Operador asignación (=). Cómo pedir información sobre una variable: ? . Cómo borrar una variable: Clear[ ] , Remove[ ] Para definir una variable propia en Mathematica se puede utilizar cualquier sucesión alfanumérica que comience por una letra o el símbolo $. Puesto que las funciones internas de Mathematica siempre comienzan por una letra mayúscula, suele ser una práctica recomendable, en la definición de nuestras propias variables, comenzar por una letra minúscula. Para asignar un valor a una variable se utiliza el operador asignación (=) Cálculos secuenciales En Mathematica es posible realizar más de un cálculo en una misma entrada, siempre y cuando separemos los mismos por (;). Poniendo al final de una entrada (;) la salida correspondiente no se muestra en pantalla. x 3; y 8; x ^ 2 y ^3 x 3; y 8; x ^ 2 y ^3; Clearx, y 5 practica1.nb Cálculo simbólico. Operador reemplazamiento (/.) (OPCIONAL) Listas: Vectores y Matrices. Una lista permite representar conjuntos de elementos, los cuales puede que no sean del mismo tipo, como valores numéricos, variables, texto, etc. Para utilizar ciertos elementos de una lista se considera la posición que ocupan en ella. Las listas se utilizan para representar vectores y matrices. Un vector vendrá dado por una lista de sus elementos separados por comas y entre llaves. Una matriz es una lista de listas, así el primer elemento es una lista que contiene la primera fila de la matriz, etc. Por otra parte, las listas pueden ser manipuladas, en muchas ocasiones, como si de simples objetos se tratase. Dentro del Análisis Numérico será necesario obtener el mayor elemento de un vector en valor absoluto. Para ello aplicaremos al vector las funciones Max y Abs. a 1, 2, 1.25, 3.84, 6.87 a3 1 a Abs1 a MaxAbsa La función de Mathematica Table : Table[exp,{i,imax}]; Table[exp,{i,imin,imax}]; Table[exp,{i,imin,imax,paso}] Table[exp,{i,imin,imax},{j,jmin,jmax}] Este comando permite generar listas de forma automática. La forma más complicada es una lista anidada, con dos contadores. El que va en medio representa al bucle más exterior(al que varia más despacio). Tablei i 1, i, 5 Tablei i 1, i, 5, 10 Tablei i 1, i, 5, 10, 2 m Tablei j, i, 1, 3, j, 2, 5 6 practica1.nb MatrixFormm n 1, 2, 3, 4, 5, 6 MatrixFormn v 1, 0, 0, 0 m.v m Tablei j, i, 1, 3, j, 2, 5 MatrixFormm n 1, 2, 3, 4, 5, 6 MatrixFormn v 1, 0, 0, 0 m.v Algunos comandos de Mathematica de utilidad para la manipulación de matrices son: DiagonalMatrix[{x1,x2,...,xn}] IdentityMatrix[n] Transpose[a] Det[a] Inverse[a] RowReduce[a] Eigenvalues[a] Eigenvectors[a] Eigensystem[a] mat DiagonalMatrixa, b, c, d IdentityMatrix4 Detmat Inversemat 7 practica1.nb RowReduce realiza una versión de la eliminación gaussiana para obtener el mayor nº de ceros en la matriz resultante. Si la matriz es cuadrada y tiene inversa, el resultado es la matriz unidad. Si la última linea es de ceros, la matriz no tiene inversa, o lo que es igual, hay una combinación lineal entre sus filas. 1 0 3 4 2 4 RowReduce MatrixForm 7 8 9 1 2 3 4 5 6 RowReduce MatrixForm 7 8 9 Mathematica permite calcular valores y vectores propios. Los comandos son : Eigenvalues[m], da los valores propios de la matriz m como elementos de una lista. Eigenvectors[m] da una lista con los vectores propios. Eigensystem[m] da una lista con dos elementos, el 1º es la lista de valores propios, y el 2º es la lista de vectores propios(lista de listas). Para estos tres comandos la matriz m debe ser cuadrada. 1 5 m 6 4 2 3 2 2 3 2 1 8 ; valprop Eigenvaluesm 8 9 1 7. valprop1 vectprop Eigenvectorsm valprop, vectorprop Eigensystemm vectorprop2 Paréntesis, LLaves y Corchetes. El significado de cada uno de estos elementos es muy diferente y conviene manejarlos correctamente desde el principio. Paréntesis : ( ) Se utilizan para alterar la prioridad de las operaciones aritméticas del mismo modo que lo hacemos en la pizarra en las clases de matemáticas o en el cuaderno. 8 practica1.nb 2 3 5 Corchetes : [ ] Se utilizan para encerrar los argumentos de funciones o comandos Cos 3 Tablei, i, 5 Llaves : { } Se utilizan para encerrar los elementos de una lista y dentro de algunos comandos mat a, b, c, d, e, f, g, h, i Dobles corchetes [[ ]] Se utilizan para seleccionar elementos de una lista. mat1 mat2, 2 Ejercicios 1- Utilice Table para hacer una lista conjunta de los cuadrados y los cubos de los números pares del uno al nueve. 2- Utilice Table para crear una lista con las potencias de x de 2 a 9 con paso 3. 3- Representar una matriz 3x3 tal que aij =xi y j . Tomar un vector p, de dimensión 3x1, que sea la evaluación de la 1ª fila de la matriz para x=2,y=3. 4- Construir una matriz m, cuadrada de orden 3 con los siguientes elementos: {{a,b,c},{d,e,f},{g,h,i}}. Extraer el vector m1 , como la 1º fila de la matriz m. Extraer m2 , que sea la 2ª columna de la matriz m. Idem m3 , como la diagonal principal. Idem m4 , como la otra diagonal. Obtener m5 , una matriz 2x2 formada por los elementos esquina de m . Asociar también a m6 , la matriz 2x2 adjunta al elemento (3,3). 5- Sea un vector v1={a,b,c}. Sea v2={d,e,f}. En Mathematica el producto elemento a elemento de vectores o matrices se realiza utilizando el simbolo (*). Sin embargo el producto matricial o el escalar de vectores se consigue usando el operador (.). Multiplicar los 2 vectores elemento a elemento y escalarmente. Repetir los cálculos con una matriz 3x2. En su caso utilizar la función Transpose[ ], cuando se necesite transponer un operando. 9 practica1.nb 1 3 1 2 2 4 1 3 . 6- Sea A= 5 1 2 3 3 5 4 1 a)Hallar el valor del determinante de A. b) Hallar el rango de A. 2 1 1 7- Hallar la inversa de la matriz A= 4 2 0 . 3 1 1 8- Calcular los valores y vectores propios de las matrices: 1 2 2 m 0 2 m 0 A= 2 1 2 B= 0 4 2 2 1 m 0 2 m Funciones definidas por el usuario. A parte de las funciones predefinidas (trigonométricas,hiperbólicas,exponencial,..)Mathematicapermite definir al usuario sus propias funciones. Dos formas de definir funciones: f[x_,y_,...]:= regla f[x_,y_,...]=regla Los nombres que representarán a las funciones deben seguir el mismo criterio que los de las variables. No debemos olvidar el símbolo (_) que acompaña a cada variable independiente y que garantiza que ésta pueda ser sustituida por cualquier expresión. Una función se puede definir con = o bien :=. En el primer caso se pide a Mathematica que la defina y seguidamente haga las operaciones que se indican, en el segundo caso solo que la defina , las operaciones las hará después cuando vayamos a utilizar la función. En este caso Mathematica no devuelve ninguna salida. (Se debe usar esta forma cuando Mathematica no puede evaluar f(x) a menos que x tenga un valor concreto). Si se intenta definir f(x) con = y se obtienen uno o más mensajes de error se debe utilizar := . Utilizaremos preferiblemente la definición con el signo igual. fx_ Expandx 1^ 2 ?f f2 fa b 10 practica1.nb Expresiones algebraicas (polinómicas / racionales) Algunas de las funciones de Mathematica más habituales para manipular expresiones algebraicas: Simplify[expresion] Factor[expresion] Expand[expresion] Apart[expresion] Together[expresion] Cancel[expresion] (ó (ó (ó (ó (ó (ó expresion//Simplify) expresion//Factor) expresion//Expand) expresion//Apart) expresion//Together) expresion//Cancel) (Se recomienda, o bien recurrir a la ayuda o bien preguntar en el propio Front-End, con (?) o (??), para tener la información necesaria sobre cada una de dichas funciones.) Expandx 2 ^ 2 x 1^ 3 x 1 4 4 x 7 x2 6 x3 4 x4 2 x5 x6 Factor a b a b 2 Cos Cos 2 2 2 2 Representación gráfica. La representación gráfica es una de las características de mayor utilidad y aplicación cuando se comienza a utilizar Mathematica. Se pueden representar curvas en el plano o curvas y superficies en el espacio. El comando Plot es uno de los más utilizados. Tiene muchas opciones que permitirán obtener desde representaciones gráficas muy sencillas a otras más complejas. Una gráfica se puede representar en varios tonos de gris (GrayLevel[w], con w entre 0 y 1),varios colores ( RGBColor[r,q,b], con r,q,b iguales a 0 o 1) y distintos tipos de trazo (Dashing). Todo esto se consigue utilizando la opción PlotStyle del comando Plot. Es importante poner nombre a los gráficos, en especial si se van a necesitar varias veces , o si se quieren mostrar varios gráficos conjuntamente con el comando Show. Cuando se representan varias funciones en la misma gráfica , estas funciones deben ir entre llaves. En los ejemplos siguientes se representan varias funciones con distintos estilos. Ejemplo Sea f(x) = 4x3 6x2 9x 2. Los siguientes comandos nos permiten obtener su representación en el intervalo [-3,2]. Clearf fx_ 4x3 6x2 9x 2; 11 practica1.nb Plotfx, x, 3, 2 En muchas ocasiones una curva plana viene dada en forma paramétrica. Para representar curvas dadas de esta forma Mathematica dispone del comando ParametricPlot. Con el comando Show se pueden mostrar conjuntamente varios gráficos . Para ello conviene almacenar dichos gráficos en distintas variables. Ejemplo Con el comando ParametricPlot se puede representar la circunferencia de centro (2,1) y radio 3 : ParametricPlot2 3 Cost, 1 3Sint, t, 0, 2 , AspectRatio 1 Con Mathematica también se pueden representar un conjunto de puntos en lufgar de una función. Para ello utilizaremos el comando ListPlot. El argumento de este comando es una lista cuyos elementos a su vez, son listas de dos elementos, la abscisa y la ordenada. Una opción interesante de este comando es la PlotJoined->True con la que los puntos representados quedan unido mediante segmentos rectilíneos. Vamos a representar los puntos cuyas coordenadas vienen dados por : b = { (1,1.5), (2,1),(3, 0.73),(4, 0.6), (5,0.3),(6, 0.2),(7, 0.1),(8, 0.08)} b 0, 0, 1, 1.5, 2, 1, 3, 0.73, 4, 0.6, 5, 0.3, 6, 0.2, 7, 0.1, 8, 0.08; ListPlotb, PlotStyle PointSize.02, AxesOrigin 0, 0 Ejercicios 1.- Sean f(x) = 4x3 6x2 9x 2, g(x) = 12x2 12x 9 y h(x) = 24x+12. Representar las tres funciones en el mismo gráfico utilizando distintos estilos para cada una. 2.- Representar las funciones senx, sen(2x) y sen(x/2) conjuntamente en el intervalo [0, 4]. 3.- Las ecuaciones :{ x=at-bsent , y=a-bcost} representan una cicloide. La hoja de Descartes tiene como representación paramétrica: {x=3at/(1+t3 , y=3at2 /(1+t3 }. Representar estas dos curvas para a=1 y b=2.