el programa mathematica como …exordio.qfb.umich.mx/archivos pdf de trabajo umsnh/libros...permiten...

137
EL PROGRAMA MATHEMATICA COMO HERRAMIENTA EN LA RESOLUCIÓN DE PROBLEMAS Y EJERCICIOS DE MATEMÁTICAS. Cristina Carmona Barranco MATHEMATICA EN LAS MATEMÁTICAS

Upload: trinhliem

Post on 07-Jun-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

 

 

EL PROGRAMA MATHEMATICA COMO HERRAMIENTA EN LA

RESOLUCIÓN DE PROBLEMAS Y EJERCICIOS DE MATEMÁTICAS. 

 

 

 

 

 

Cristina Carmona Barranco

MATHEMATICA EN LAS MATEMÁTICAS 

Page 2: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

 

A mi familia que me apoya a

emprender este reto personal

y profesional.

A mis profesores de la Universidad

de Córdoba que me dieron el saber

necesario para abordarlo.

Page 3: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

 

RESUMEN

Este libro da una introducción a Mathematica, concentrándose en usar Mathematica como sistema interactivo para resolver problemas. Cuando lo haya leído, debe tener suficiente conocimiento de Mathematica para abordar muchas clases de problemas prácticos. Para ello, divido el presente en dos partes. La primera de ellas describe los aspectos fundamentales de Mathematica que deberá considerar para trabajar con él. Se trata de un resumido manual con los aspectos fundamentales y más utilizados de este software. La segunda parte, se trata de aplicaciones de las operaciones y conceptos matemáticos más usuales y su resolución con el programa mathematica. Además, se plantean ejercicios para resolver con Mathematica muy similares a los incluidos en esta segunda parte.

Page 4: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

Índice Parte 1 Introducción 5 Descripción general del programa matemática 7

1.1. Sintaxis general de las órdenes . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2. Información o ayuda . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.3. La orden print . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2. Primeros pasos matemáticos en mathematica 14

1.1. Operaciones aritméticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.2. Funciones matemáticas básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.3. Cálculo simbólico con mathematica. . . . . . . . . . . . . . . . . . . . . . . . . 17

3. Cálculos numéricos 21

3.1. Aritmética . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.2. Resultados exactos y aproximados . . . . . . . . . . . . . . . . . . . . . . . . . .22 3.3. Algunas funciones matemáticas . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.4. Cálculos con precisión algebraica. . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.5. Notaciones matemáticas en cuadernos. . . . . . . . . . . . . . . . . . . . . . . . 25

4. Cálculos 26

4.1. Uso de resultados previos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

4.2. Definición de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.3. Definición de listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

4.4. Secuencia de operaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

5. Uso del sistema Mathematica 31

5.1. Cuadernos como documentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

5.2. Elementos activos en cuadernos . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.3. Paquetes en Mathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Page 5: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

5.4. Interrupción de cálculos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6. Cálculos algebraicos 38

6.1. Cálculo simbólico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

6.2. Valores para símbolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 6.3. Las limitaciones de Mathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

7. Matemáticas simbólicas 42

7.1. Operaciones básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

7.2. Diferenciación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 7.3. Integración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

7.4. Sumas y productos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

7.5. Ecuaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

Page 6: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

PARTE 1

MANUAL TEÓRICO SOBRE ASPECTOS MATEMÁTICOS DEL PROGRAMA MATHEMATICA

Page 7: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

  5

CAPÍTULO 0

INTRODUCCIÓN

Mathematica fue el primer programa de cálculo simbólico capaz de ejecutarse en

diversos sistemas operativos. Se escribió en C en 1988.y desde entonces, se usa en numerosos campos de la Ciencia y la Técnica y también ha tenido una buena acogida entre los estudiantes de carreras en las que las Matemáticas son básicas para su formación.

Antes de empezar a trabajar con Mathematica, conviene conocer todas sus posibilidades. A lo largo de este libro te presento algunas de ellas. Para el resto, podrás consultar la bibliografía que te facilitamos.

No es fácil definir Mathematica, aunque de forma muy simplificada se puede decir que es un programa para la computación y visualización numérica, simbólica y gráfica y que ofrece una herramienta interactiva de cálculo y un lenguaje de programación potente

• Una calculadora de tipo numérico. La diferencia con una calculadora es que tiene implementadas aproximadamente unas 750 funciones y además trabaja con la precisión que se desee (incluyendo precisión infinita).

• Un paquete de subrutinas para cálculo matemático. Se pueden hacer operaciones que requieran el uso de funciones o de procedimientos especiales como la integración numérica, la optimización de funciones, programación lineal, etc. que se pueden utilizar directamente.

• Una calculadora simbólica. Con la posibilidad de trabajar con expresiones simbólicas. Podrás definir una función que quedará almacenada tal como es, y no en forma de algoritmo que pueda dar aproximaciones a la función. Se pueden sustituir valores de la variable como expresiones, parámetros, etc. y el sistema entiende y opera en forma simbólica (exacta).

• Una potente herramienta de cálculo simbólico. Podrás derivar e integrar funciones, resolver ecuaciones diferenciales, calcular límites, manipular series de potencias, utilizar transformadas integrales, ...

• Un paquete gráfico. Permite dibujar en dos o tres dimensiones, elegir perspectivas, sistemas de representación, sistemas de coordenadas, animar las gráficas, ...

• Un lenguaje de programación, se puede realizar programación a tres niveles:

Programación de tipo procedural (uso de bloques, iteraciones y ciclos,

recursiones, etc.).

Programación funcional (con la posibilidad de definir funciones, operadores

funcionales, etc.).

Programación basada en reglas (suministrando reglas que indican como operar o

transformar expresiones simbólicas, funciones, etc.).

• Un sistema para crear documentos interactivos, con posibilidad de incluir texto,

gráficos, sonidos, animaciones, etc.

Page 8: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

Introducción 6

• Un sistema de apoyo a otros programas. Podrás comunicar con Mathematica desde otros programas y pedirles tareas que realizará y después enviará los resultados.

El programa Mathematica constituye una herramienta muy potente para la realización de

todo tipo de cálculos matemáticos: operaciones aritméticas, cálculo simbólico, gráficos,…

Las últimas versiones del programa incorporan un editor de texto (bastante aceptable) y

permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

instrucciones del programa y la utilización de la simbología habitual en las fórmulas y

operaciones matemáticas. El programa Mathematica está estructurado en 2 partes:

1.- El Front End: es la interface que permite la comunicación con el usuario. Presenta las

entradas y salidas y permite crear y editar ficheros que contienen texto, cálculos, gráficas,

etc. Estos ficheros tienen la extensión .nb y se denominan Notebooks (Cuadernos de notas).

La información que contienen estos ficheros se estructura mediante un sistema de celdas de

diferentes tipos (título, subtítulo, sección, texto, input, output, ….) . 2.- El Kernel (núcleo): constituye la estructura interna del programa y es el que se encarga de

la realización de los cálculos y operaciones matemáticas que solicita el usuario.

 

 

Aspecto que presenta el programa Mathematica 

Page 9: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

1.Descripción general del programa Mathematica 7

CAPÍTULO 1

DESCRIPCIÓN GENERAL DEL PROGRAMA MATHEMATICA.

Mathematica consiste de dos partes: el Kernel (nucleo) y el Front End (fachada). El Kernel procesa y calcula los resultados. El Front End es la interficie entre el usuario y el Kernel de Mathematica. Con Mathematica se pueden crear distintos tipos de documentos:

1.- Los Notebooks o Cuadernos de Notas, documentos que permiten anidar texto,

gráficos, sonidos y animaciones, ofreciendo la posibilidad de ejecutar el documento de forma interactiva. Al salvar un notebook solo se le tendrá que dar un nombre y no es necesario especificar la extensión, ya que Mathematica le asigna por defecto la extensión nb.

2.- Los Packages o Programas ejecutables en entorno Mathematica Aplicaciones: Ingenieria, Física, Química, Matemáticas, Ciencias de la Computación, Negocios y Finanzas, Ciencias de la Salud, ....

Los Notebooks están compuestos de unidades denominadas celdas y que se distinguen fácilmente unas de otras porque vienen delimitadas en la derecha por un corchete que abarca toda la celda.

Existen diferentes tipos de celdas en Mathematica que responden a cometidos distintos (la forma del corchete nos indica el tipo de celda), entre las que vamos a destacar:

• las de entrada (Input), donde se indican los datos introducidos por el usuario.

• las de salida (Output), que reflejan los resultados de la evaluación y cálculos hechos por el núcleo del programa a partir de los datos introducidos en la correspondiente celda de entrada.

Mathematica asocia una celda de salida a cada celda de entrada que introduce el usuario, y que va numerando de forma consecutiva a medida que se van evaluando dentro de una misma sesión. La numeración se sigue efectuando aunque se cambie de fichero o notebook. El kernel o núcleo guarda todas las definiciones y evaluaciones efectuadas desde que se empezó a correr el programa y hasta que se sale de este.

Algunas veces esto es útil, ya que se puede usar cualquier función o variable definida previamente; pero también puede ser un inconveniente, porque sin darnos cuenta podemos estar empleando una función o variable que creemos que es nueva, y que ya tiene un valor o definición no compatible con el nuevo uso que se quiere dar.

Para limpiar cualquier definición anterior de una función o asignación de variables podemos usar las sentencias: Clear [nombrefunción,…, nombre variable,…]

Page 10: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

O Clear [”Global”] con la primera se limpian las variables especificadas entre corchetes mientras que con la segunda se limpiaran todas las funciones, variables y demás objetos utilizados hasta ese 1.Descripción general del programa Mathematica 8 momento. Sin embargo, hay que tener en cuenta que Mathematica conserva el nombre que se ha utilizado.

Nota: Observa bien la comilla que se tiene que utilizar para borrar: ` . Con cualquier otra comilla que uses no se borra y pueden aparecer errores. Ejemplo1: In[1]:= x = 2 Out[1] = 2

Durante toda la sesión con Mathematica, la variable x valdrá 2 hasta que no le demos otro valor, limpiemos la variable, o cerremos Mathematica y volvamos a entrar.

Así en otro programa distinto, pero de la misma sesión, quiero escribir el vector de componentes (x, y, z) In[2]:= vector = {x, y, z} Out[2] = {2, y, z} Pero si limpiamos el valor de x In[3]:= Clear[x] v ={x, y, z} Out[4]= {x, y, z}

Para crear una celda nueva dentro de un Notebook de Mathematica hay que situar el puntero del ratón al final del Notebook o entre dos celdas que ya existan hasta que el cursor aparezca de forma horizontal. Entonces se pulsa el botón del ratón para hacer aparecer una barra de inserción horizontal a todo lo largo de la ventana, que es donde aparecerá el nuevo corchete cuando empecemos a escribir.

Una vez que se ha escrito la expresión en una celda de entrada, para que la reconozca el núcleo y se pueda evaluar, es necesario que el usuario se lo indique expresamente: mientras que el cursor permanece junto a la expresión o si hemos señalado con el ratón el corchete correspondiente, pulsaremos las teclas Mayúscula + Intro. También se evaluará una celda si en el menú vamos a Kernel y Evaluate donde encontramos diversas opciones de evaluación: celda, notebook, ...

La primera vez que se evalúa una expresión tardará un poco más de lo habitual, debido a que se estará inicializando el programa y es necesario cargar información.

Además de estas celdas, Mathematica dispone de otros tipos que permiten mejorar la presentación y estructura de los Notebooks en forma de secciones y subsecciones, con sus correspondientes títulos.

Se cargará un Notebook concreto mediante la opción Abrir (Open) del menú Fichero

Page 11: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

(File).

Para imprimir un Notebook, en el menú File, dar a Print, marcar Print To y decir la impresora a la que va dirigido. Hay otros menús de gran utilidad que aparecen en la parte superior de la pantalla: 9

• Edit, donde están los comandos habituales que nos permiten acciones como Cortar (Cut), Copiar (Copy) o Pegar (Paste) .... Aquí encontramos las Palettes, útiles para escribir expresiones matemáticas y realizar

cálculos simbólicos. Abre estas paletas y observa las posibilidades que nos ofrecen para escribir y realizar operaciones matemáticas.

• Find para los comandos de búsqueda y sustitución habituales de muchos editores de texto: Find (Buscar), Replace (Reemplazar) o Replace All (efectúa el cambio indicado en todo el documento).

• Kernel. Hay varios comandos interesantes para evaluar celdas seleccionadas (Evaluate Selection) o todas las celdas del Notebook (Evaluate Notebook). Para interrumpir algún cálculo o anular alguna evaluación (por error o porque el programa tarde demasiado en dar la respuesta) se pueden usar las opciones Interrumpir (Interrupt) o Abortar (Abort) de este menú.

1.1. SINTAXIS GENERAL DE LAS ÓRDENES.

Para que podamos estar seguros que la salida obtenida es correcta es necesario escribir de forma adecuada las expresiones (respetando siempre el formato y la sintaxis de cada sentencia) y, en algunas ocasiones, habrá que indicar el orden en que se evaluará la expresión.  

Las normas siguientes afectan a todas las órdenes y expresiones de Mathematica:

• El programa distingue los caracteres escritos en mayúscula de los escritos en minúscula (Case Sensitive), por ello es necesario escribir con mayúscula la primera letra de todas las funciones, órdenes, opciones y constantes propias de Mathematica.

• Es conveniente usar sólo minúsculas para definir nuestras propias variables y funciones (así se podrán diferenciar con facilidad de las anteriores).

• Mathematica interpreta un espacio en blanco como la operación de multiplicar. Por esto, no se deben dejar espacios en blanco dentro del nombre de una función o variable. Este criterio lo sigue Mathematica en sus propias funciones y órdenes, como se observa en los ejemplos: FindRoot (Encontrar Raíz). ParametricPlot (Dibujar en Paramétricas)...

• Para el producto de dos variables se puede usar * ó espacio en blanco; sin embargo xy lo interpretará como el nombre de una nueva variable con dos letras. Existe una excepción a esta regla, cuando multiplicamos un número por una variable. Por ejemplo, 3*x se puede escribir

Page 12: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

1.1. Sintaxis general de las órdenes 10 como 3x. Sin embargo, no obtendremos la misma interpretación al escribir x3. Por esta razón, no podremos dar un nombre a una variable o constante que empiece por un número, sino que siempre debe de empezar con una letra, aunque después contenga números. Los nombres a, aa, a1, a2, a11, etc son válidos para variables; no lo son 1a, 2a, 11a, 1a1, etc. Uso de corchetes, paréntesis y llaves.

Los corchetes, [ ], delimitan los argumentos de todas las funciones y órdenes en Mathematica, y también aquellas que defina el usuario. Cuando hay dos o más argumentos se separan por comas. Ejemplo 2: f[x_], para definir funciones. Sin[1.2]

Las llaves, { }, se usan para la definición de listas de elementos, que pueden ser de cualquier tipo y se separan por comas. También se pueden interpretar como vectores o matrices (que serán listas de listas).

Las llaves son imprescindibles para construir “iteradores” dentro de estructuras de tipo repetitivo y para especificar los límites de actuación de los operadores matemáticos (en integrales, dominio en el que hay que dibujar las gráficas, etc.). También se usan para incluir ciertas opciones dentro de algunas órdenes de Mathematica.  

Ejemplo 3: {2, 3} indica el vector fila (2, 3). {{1,0}, {2,1}} indica una lista formada a su vez por dos listas (matriz de orden 2)

Los paréntesis, ( ), se utilizan para indicar la prioridad de las operaciones de tipo aritmético. Ejemplo 4: In[] (* esto es un comentario *)

Out[] 1 + 2*3

7

In[] 2^(3+4)

Out[] 128

In[] 2^3 + 4

Out[] 12

In[] (-1)^2/5

Out[] 1/5

Page 13: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

11

1.2. INFORMACIÓN O AYUDA.

Ante una duda, es conveniente consultar el manual de órdenes de Mathematica o algún libro con explicaciones y ejemplos.

La versión que usamos de Mathematica, dispone de una ayuda en la que puedes consultar todo lo referente a Mathematica. Para acceder a esta ayuda en la barra superior de Mathematica con el ratón iremos a la opción Help y al abrirse este menú se buscará la opción Find In Help Browser, entonces se abre una ventana de ayuda, donde puedes localizar, entre otras cosas:

• Built-in Functions: permite localizar y encontrar ejemplos de cualquier función predefinida en Mathematica

• Add-ons: proporciona un listado de los paquetes de Mathematica

• The Mathematica Book, que contiene el libro: Stephen Wolfram. The Mathematica Book, Wolfram Media, Cambridge University Press.

• Getting Started /Demos: se pueden ver demostraciones realizadas con Mathematica. Por ejemplo puedes buscar la que se refiere a números de Pisot o el cálculo del número p de forma aproximada usando diferentes técnicas de aproximación.

• Master Index: facilita un listado alfabético de todas las ordenes de Mathematica y remite al lugar del libro donde puedes encontrarlas.

1.3. LA ORDEN PRINT.

Para escribir mensajes en pantalla durante la salida de un programa, se usa la orden Print. Si lo que deseamos escribir es un texto debe ir entre comillas. Ejemplo 5: Realiza los siguientes ejercicios. 1.- Print[“esto es un ejemplo”] 2.- Escribe tu nombre en pantalla 3.- Print[5*3+2� 4.- Print[5, 3, 1� 5.- Print[5, “ “, 3 ,” “, 1� 6.- Observa , lo que ocurre si se cambiamos comas por punto y coma en 5. 7.- n = 20 Print[“Observa”, n , “al cuadrado es” , n^2, “ . ”]

Page 14: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

1.2. Información o ayuda 12

 

Page 15: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

13

 

 

Page 16: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

2. Primeros pasos matemáticos en mathematica 14  

CAPÍTULO 2

PRIMEROS PASOS MATEMÁTICOS EN MATHEMATICA

2.1. OPERACIONES ARITMÉTICAS.

Mathematica puede efectuar operaciones aritméticas, manipular números enteros (Integer), racionales (Rational), reales (Real) y complejos (Complex).

Representa las cantidades tan exactamente como sea posible, e intenta devolver el resultado en la misma forma que los datos o en una forma similar. Los operadores aritméticos son los usuales:

+ suma

- diferencia

* o espacio producto

/ división

^ potencia

Ejemplo 1: In[� 00011001 + 10011101 Out[� 10022102 In[� 532*34978 Out[� 18608296 In[� 34^56 Out[� 5791877320528712784204425412617959985284096849205616406 2843692360166371779746690236416

A partir de ahora solo escribimos la celda de Input, tu deberás realizar los ejercicios y verás los resultados en la pantalla del ordenador.

In[� 1000!

In[] 111111111^2

In[] 9345*456 – 345689^6 + 367/4890 *(2346-89)

Page 17: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

15

In[� 2/4 + 24/144

In[� 2 + 2/5

Puedes usar muchas constantes usuales en Matemáticas siempre que las escribas en forma correcta: Pi (razón entre la longitud de la circunferencia y su diámetro); E (número base de los logaritmos Neperianos);

I (representa el número imaginario �1 )

Infinity: infinito, etc. ... Nota: procura no usar estos nombres para variables.

Un número decimal lo interpreta como una aproximación. Si hay un número con decimales trata toda la expresión como una aproximación. No aproximará los números irracionales.

Una fracción la trata de forma exacta y sólo la aproxima cuando en la expresión exista otro número decimal. Ejemplo 2:

In[� 1/2 + 3.5 0.5 + Pi

1/15+1/35+1/63 Si se trabaja con números irracionales representa los resultados de forma exacta. Ejemplo 3: In[� Sqrt [13� E^3 + Sqrt [13� Si queremos una aproximación de un número real lo indicaremos con la orden N [número, precisión� donde en precisión indicamos el número de cifras significativas que queremos considerar. Si omitimos este argumento, que es opcional, el programa nos dará el resultado con un número de cifras determinado (habitualmente muestra seis cifras significativas), aunque por defecto trabaja con dieciseis decimales de precisión. La función Precisión da el número cifras significativas de un resultado concreto. Ejemplo 4:

In[� N [ (1 � 5) /2�

Page 18: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

2.1. Operaciones aritméticas. 16 Precisión [%

Nota: El símbolo % hace referencia a la última salida obtenida por Mathematica. Si usamos %% se hará referencia a dos salidas anteriores.

Con la función N se puede conseguir más precisión aunque al aumentar la precisión también aumenta el tiempo que tarda en hacer cálculos. Ejemplo 5:

In[ N [ (1 5) /2, 100

N [ 2 2 , 500 3

N [ 33

Si en una expresión con números incluimos un punto decimal la salida será un número real, dado mediante su representación decimal aproximada (con un número de dígitos decimales por defecto salvo que el usuario pida una precisión determinada). Ejemplo 6:

In[ Sqrt [13. E^3 + Sqrt [13.

Hay que tener cuidado cuando se trabaja con números decimales ya que se harán las operaciones con la precisión por defecto, a no ser que se le indique otra cosa, y se llegará a resultados aparentemente falsos. Observa lo que ocurre en los ejemplos siguientes: Ejemplo 7: In[ 5 + 0.00000001 Precision [% N[5 + 0.00000001, 16 (5 + 0.00000001)*0.0000000001 N[%, 22 Precision[%

Nota: Se obtiene este resultado porque previamente se había fijado la precisión, si trabajamos con 10-7 el resultado sería exacto.

Page 19: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

17

2.2. FUNCIONES MATEMÁTICAS BÁSICAS.

El programa Mathematica tiene definidas las funciones matemáticas elementales y otras muchas que se usan con frecuencia en la resolución de problemas de todo tipo. La notación responde a la abreviatura del nombre inglés de las funciones. Las más usuales son:

Existen otras muchas funciones que se utilizan en campos específicos. Por ejemplo, dispone de una serie de “paquetes” de funciones muy diversas, que se guardan en subdirectorios del directorio Packages. Más adelante se verá la forma de acceder a estos paquetes (en tema 5).

Hay varias funciones incorporadas para trabajar con números complejos: Re (devuelve la parte real del complejo), Im (devuelve la parte imaginaria del complejo), Conjugate (devuelve el conjugado del complejo), Abs (devuelve el módulo del complejo).

2.3. CÁLCULO SIMBÓLICO CON MATHEMATICA.

Mathematica maneja perfectamente el cálculo matemático simbólico.

Page 20: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

2.3. Cálculo simbólico con mathematica 18

Manipula con facilidad y rapidez las fórmulas y expresiones algebraicas y

realiza la mayoría de las operaciones: desarrollar, factorizar y simplificar polinomios o expresiones racionales; encontrar soluciones de ecuaciones y sistemas de ecuaciones, evaluar derivadas e integrales simbólicamente, encontrar soluciones de ecuaciones diferenciales, manipular series de potencias, límites y muchas otras facetas de las Matemáticas Aplicadas.

Las funciones más usuales para transformaciones algebraicas las encuentras en una de las paletas. Para acceder a ellas sigue los siguientes pasos:

En el Menú Principal de Mathematica ve a File y busca Palettes. Entre las que

se ofrecen, en la primera que corresponde a AlgebraicManipulation, encontrarás la que corresponden a estas funciones. Úsala para hacer los ejercicios siguientes:

Para obtener la simplificación en fracciones simples tenemos el comando Apart. Para saber algo más sobre este u otros comandos puedes ir a la ayuda o bien teclear: ?Apart y podrás leer una explicación sobre el comando. 

INTERFASE DE CUADERNO utilice un icono o el

menú de formas gráficas de inicializar

Mathematica Inicio comando para inicializar

Mathematica mathematica finalizar texto con entrada para Mathematica <Shift>+<Enter>

salir de Mathematica elegir el ítem salida del

menú Funcionamiento de Mathematica con una interfase de

cuaderno. En una interfase de “cuaderno”, usted interactúa con Mathematica creando

documentos interactivos. Si usa su computadora vía una interfase puramente gráfica haremos como de

costumbre doble en el icono de inicio de Mathematica. En cambio, si la usa vía un sistema operativo basado en texto digitaremos el comando mathematica para iniciar Mathematica.

Cuando Mathematica inicializa usualmente presenta un cuaderno en blanco.

Usted digita la entrada (input), luego presiona (en simultáneo) <Shift>+<Enter> para que Mathematica procese su entrada. <Shift>+<Enter> indica a Mathematica que usted ha finalizado su entrada. Si su teclado posee teclado numérico puede usar la tecla <Enter> del mismo en lugar de <Shift>+<Enter>.

Después de ejecutar una entrada en Mathematica desde un cuaderno,

Mathematica etiquetará su entrada con In[n ]:=. También etiqueta la correspondiente salida

Page 21: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

19

Out[n]=. Usted digita 1 + 1, luego finaliza su entrada con <Shift>+<Enter>. Mathematica

procesa la entrada, luego agrega la etiqueta a la entrada In[1]:=, y devuelve la respectiva salida.

A lo largo de este libro los “diálogos” con Mathematica se mostrarán de la

siguiente manera: Con una interfase de cuaderno, usted sólo digita 1+1. Mathematica añade la

etiqueta In[1]:=, e imprime el resultado. 1 + 1 2 Recuerde que los cuadernos corresponden a la “parte visible” (“front end”) de

Mathematica. El núcleo de Mathematica que realiza realmente los cálculos puede funcionar en la misma computadora que el front end, o en otra computadora conectada vía alguna clase de red o de línea. En la mayoría de los casos, el núcleo incluso no se inicializa hasta que el usuario hace realmente un cálculo con Mathematica.

Para salir de Mathematica, usted elige el ítem salida del respectivo menú en la

interfase de cuaderno. INTERFASE BASADA EN TEXTO

math comando del sistema operativo

para inicializar Mathematica finalizar texto con

<Enter> entrada para Mathematica Control-D, Control-Z ó salir de Mathematica Quit[] Funcionamiento de Mathematica con una interfase basada en Texto. Con una interfase basada en texto, usted interactúa con su computadora

digitando texto en el teclado. Para inicializar Mathematica con una interfase basada en texto, se digita el

comando math en el prompt del sistema operativo. En algunos sistemas, también

Page 22: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

2.3. Cálculo simbólico con mathematica 20 es posible inicializar Mathematica con una interfase basada en texto haciendo

doble clic en el icono del núcleo de Mathematica. Cuando Mathematica ha inicializado, imprimirá el prompt In[1]:=, esto

significa que esta lista para que usted haga su entrada. Puede entonces digitar su entrada, terminándola con <Enter>.

Mathematica procesa la entrada, y genera un resultado, el mismo que

etiquetará con Out[1]=. A lo largo de este libro los “diálogos” con Mathematica se mostrarán de la

siguiente manera: La computadora imprime In[1]:=. Usted sólo digita 1+1. La línea que empieza

con Out[1]= es el resultado de Mathematica. 1 + 1 2 Observe que usted no digita explícitamente el prompt In[1]:=; sólo digita el

texto que sigue después de este aviso. Observe también que la mayor parte de los diálogos dados en el libro

muestran salidas en la forma que usted obtendría con una interfase de cuaderno de Mathematica; la salida con una interfase basada en texto luce similar, pero carece de características tales como caracteres especiales y cambio de tamaño de fuente.

Para salir de Mathematica, digite Control-D, Control-Z ó Quit[ ] en el prompt

de la entrada.

Page 23: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

21

CAPÍTULO 3

CÁLCULOS NUMÉRICOS 3.1. ARITMÉTICA Usted puede hacer aritmética con Mathematica tal y como lo haría con una

calculadora. Aquí tenemos la suma de dos números. 5.6 + 3.7 9.3 Con * indicamos el producto de dos números. 5.6 * 3.7 20.72 Usted puede digitar operaciones aritméticas haciendo uso de los paréntesis. (2 + 3) ^ 3 – 4 (6 + 7) 73 Los espacios no son necesarios, aunque a menudo hacen su entrada más fácil

de leer. (2+3)^3–4(6+7) 73 Las operaciones aritméticas en Mathematica se agrupan de acuerdo con las

convenciones estándares de la matemática. Como es usual, 2+3/7, por ejemplo, significa 2+(3/7), y no (2+3)/7. Usted puede controlar siempre la forma de agrupar explícitamente usando paréntesis.

Este resultado se da en notación científica. 3.7 ^ 36 2.85274x1020 Usted puede incorporar números en notación científica de esta forma. 4.6 10^45 4.6x1045

Page 24: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

3.2. Resultados exactos y aproximados 22

O de esta otra forma. 4.6*^45 4.6x1045

3.2. RESULTADOS EXACTOS Y APROXIMADOS Una calculadora electrónica hace todos sus cálculos con una precisión

determinada, digamos de diez dígitos decimales. Con Mathematica, en cambio, usted puede obtener resultados exactos.

Mathematica da un resultado exacto para 2300 , a pesar que éste tiene 91

dígitos decimales. 2^300 203703597633448608626844568840937816105146839366593 6250636140449354381299763336706183397376 Usted puede pedir a Mathematica que devuelva un resultado aproximado, tal

como lo daría una calculadora, para ello debe finalizar su entrada con //N. Esto da un resultado numérico aproximado. 2^300//N 2.03704×1090 Mathematica puede dar resultados en términos de números racionales. 1/3 + 2/7 13 21 //N siempre da un resultado numérico aproximado. 1/3 + 2/7//N 0.619048 exp //N da un valor numérico aproximado para exp

Page 25: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

23

Obteniendo aproximaciones numéricas. Cuando usted digita un entero como 7, Mathematica asume que es exacto. Si

usted digita un número como 4.5, con un punto decimal explícito, Mathematica asume que desea efectuar cálculo numéricos aproximados.

Cuando usted digita un número con un punto decimal explícito, Mathematica

produce un resultado numérico aproximado. 26.7/78 0.342308 Aquí otra vez, la presencia del punto decimal hace que Mathematica dé un

resultado numérico aproximado. 26./78 0.333333 Cuando cualquier número en una expresión aritmética es digitado con un

punto decimal explícito, usted obtiene un resultado numérico aproximado para toda la expresión.

5. + 9 / 78 - 5/8 4.49038 3.3. ALGUNAS FUNCIONES MATEMÁTICAS Mathematica incluye una gran colección de funciones matemáticas. A

continuación mencionamos las más comunes.

Page 26: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

3.4. Algunas funciones matemáticas 24 Los argumentos de todas las funciones en Mathematica se colocan entre

corchetes. Los nombres de las funciones incorporadas en Mathematica empiezan con

letra mayúscula. Dos puntos importantes acerca de funciones en Mathematica. Es importante recordar que todos los argumentos de funciones se colocan

entre corchetes, no entre paréntesis. Los paréntesis en Mathematica se usan solamente para indicar agrupación de términos, y jamás

para encerrar argumentos de funciones. Esto da loge (15.7) . Note la letra mayúscula para Log, y los corchetes para el

argumento. Note que todos los nombres de las constantes incorporadas en Mathematica

empiezan con mayúscula. Este es el valor numérico de π2 . Pi^2//N 9.8696 Esto devuelve un resultado exacto para sen(π/2).Note que los argumentos de

las función trigonométricas siempre se dan en radianes. Sin[Pi/2] 1 Esto devuelve el valor numérico de sen(20°). Multiplicando por la constante

Degree convertimos el argumento a radianes. Sin[20 Degree]//N 0.34202 Log[x] devuelve el logaritmo de x en base e. Log[E^15] 15 Usted puede obtener logaritmos en cualquier base b usando Log[x]. Como una

notación estándar de Mathematica la b es opcional. Log[3,81] 4

Page 27: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

25 3.4. CÁLCULOS CON PRECISIÓN ARBITRARIA Cuando usted utiliza //N para obtener un resultado numérico, Mathematica

hace que lo que haría una calculadora estándar: devuelve el resultado con un número fijo de cifras significativas. No obstante, usted puede indicarle a Mathematica las cifras significativas con las que desea operar. Esto permite obtener resultados numéricos en Mathematica con cualquier grado de precisión.

exp //N o N[exp] valor numérico aproximado para exp N[exp, n] valor

numérico de exp calculado con n dígitos de precisión Esto devuelve el valor numérico de π con un número fijo de cifras

significativas. Digitar N[Pi] es equivalente a Pi//N. N[Pi] 3.14159 Esto devuelve π con 50 dígitos. N[Pi, 50] 3.1415926535897932384626433832795028841971693993751 Al realizar cualquier tipo de cálculo numérico puede introducir pequeños

errores de redondeo en sus resultados. Cuando se aumenta la precisión numérica estos errores se hacen más pequeños. Asegurarse que usted obtiene la misma respuesta al aumentar la precisión numérica es a menudo una buena forma de verificar los resultados.

La cantidad eπ 163 esta bastante próxima a ser entera. Para verificar que el

resultado no es, de hecho, un entero, usted tiene que usar la precisión numérica suficiente.

N[Exp[Pi Sqrt[163]], 40] 2.625374126407687439999999999992500725972×1017 3.5. NOTACIONES MATEMÁTICAS EN CUADERNOS Si usa una interfase basado en texto con Mathematica, entonces las entradas

que usted vaya a hacer consistirán solamente en caracteres que digite directamente con su teclado. Pero si usa una interfase de cuaderno entonces es posible que realice otro tipo de entradas.

Usualmente se incorporan paletas las cuales operan como extensiones de su

teclado, y poseen botones sobre los que usted puede hacer clic para ingresar alguna forma en particular. Puede acceder a las paleta estándares usando el submenú

Pelettes del menú File.

Page 28: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

Haciendo clic en el botón π de esta paleta ingresará pi en su cuaderno. Haciendo clic en el primer botón una estructura en blanco par ingresar una

potencia. Usted puede usar el mouse para rellenar esta estructura o desplazarse en ella con la tecla <Tab>.

Page 29: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

4. Cálculos 26

CAPÍTULO 4

CÁLCULOS

4.1. USO DE RESULTADOS PREVIOS Al realizar cálculos, muchas veces usted necesita usar resultados previamente

obtenidos. En Mathematica, % siempre hace referencia al último resultado.

Si utiliza una interfase basada en texto en Mathematica, entonces las líneas

sucesivas de entradas y salidas aparecerán siempre en orden, como se muestra en este ítem. Sin embargo, si utiliza una interfase de cuaderno, entonces varias líneas sucesivas de entradas y salidas no necesariamente aparecen en orden. Usted puede por ejemplo “volver atrás” e insertar el cálculo siguiente dondequiera que desee en el cuaderno. Tenga en cuenta que % siempre invoca el último resultado que Mathematica generó. Éste puede o no ser el resultado que aparece inmediatamente encima de su actual posición en el cuaderno. Con una interfase de cuaderno, la única manera de saber cuándo un resultado particular fue generado es mirar la etiqueta de Out[n] que tiene. Como usted puede insertar y suprimir en todas partes en un cuaderno, de acuerdo a su necesidad, el ordenamiento de los resultados en el cuaderno, por lo general, no tiene ninguna relación con el orden en el cual los resultados fueron generados.

4.2. DEFINICIÓN DE VARIABLES Cuando usted efectúa cálculos extensos, muchas veces es conveniente dar

nombre a los resultados intermedios. De la misma manera que en las matemáticas tradicionales o en otros lenguajes de programación, usted puede hacer esto introduciendo variables nombradas.

Esto inicializa el valor de la variable x con 6. x = 6 Donde quiera que aparezca x, Mathematica la reemplaza por su valor 6. x^3 - 25 191

Page 30: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

27

Esto asigna un nuevo valor para x. x = 11 + 5 16 pi es inicializada con el valor numérico de π con 20 dígitos de exactitud. pi = N[Pi, 20] 3.1415926535897932385 Aquí esta el valor de Sqrt[pi]. Sqrt[pi] 1.77245385090551602730 Es muy importante recordar que los valores asignados a las variables son

permanentes. Una vez que usted ha asignado un valor a una variable en particular, el valor será almacenado hasta que usted lo remueva explícitamente. El valor, claro está, desaparecerá si usted inicia una nueva sesión con Mathematica.

Olvidarse de las definiciones hechas es la causa más común de errores al usar

Mathematica. Si usted pusiera x = 5, Mathematica asume que usted siempre quiere que x tenga el valor 5, hasta o a menos que usted e indique explícitamente otra cosa. Para evitar los errores, usted debe quitar los valores definidos en cuanto haya terminado de usarlos.

Quite valores que asigne a las variables en cuanto termine de usarlos. Las variables que usted define pueden tener cualquier nombre. No hay límite

par longitud de sus nombres. Un inconveniente, sin embargo, es que los nombres de las variables nunca pueden empezar con números. Por ejemplo, x3 puede ser una variable, pero 2x significa 2*x.

Mathematica usa letras minúsculas y mayúsculas. Hay una convención para

los objetos incorporados en Mathematica, los nombres de todos ellos empiezan con letra mayúscula. Para evitar alguna confusión, usted siempre debe escoger nombres que empiecen con letra minúscula.

4.3. CONSTRUCCIÓN DE LISTAS Al realizar cálculos, a veces es conveniente agrupar ciertos objetos, y tratarlos

como una sola entidad. Las listas proporcionan una manera de coleccionar objetos en Mathematica. Como veremos después las listas son muy importantes en

Mathematica.

Page 31: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

4.3. Construcción de listas 28 Una lista como {4,7,6} es una colección de tres objetos. Pero en muchos casos

usted puede tratar esta lista como un solo objeto. Usted puede, por ejemplo, hacer aritmética con esta lista o asignarla a una variable.

Aquí hay una lista de tres números. {4, 7, 6} {4, 7, 6} Esto eleva al cubo cada número de la lista, y le resta 2. {4, 7, 6}^3 - 2 {62, 341, 214} Esto toma la diferencia entre los correspondientes elementos de las dos listas.

Las listas deben ser de la misma longitud. {9.5, 8, 7} - {3, 4, 2.3} {6.5, 4, 4.7} El valor de % es el de la lista % {6.5, 4, 4.7} Usted puede aplicar cualquier función matemática a la lista. %//N {665.142, 54.5982, 109.947} Esto asigna una lista en la variable u. u = {5, 3, 8.2} {5, 3, 8.2} 4.4. Manipulación de los elementos de una lista Muchas de las más potentes operaciones de manipulación de listas en

Mathematica tratan a las listas como un solo objeto. A veces, sin embargo, extraer un conjunto individual de elementos de una lista.

Usted puede referirse a un elemento de una lista en Mathematica mediante su

“índice”. Los elementos son numerados en orden, empezando en 1.

Page 32: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

29 Operaciones con elementos de una lista. Esto extrae el tercer elemento de la lista. {4, -1, 8, -6}[[3]] Esto extrae una lista de elementos. {4, -1, 8, -6}[[ {2, 3, 1, 2, 3, 4, 1} ]] {-1, 8, 4, -1, 8, -6, 4} Esto asigna una lista en la variable u. u = {7, 2, 4, 6} {7, 2, 4, 6} Usted puede extraer elementos de u. u[[3]] 4 Aquí hay una lista. u = {2, 1, 5, 7} {2, 1, 5, 7} Esto resetea el segundo elemento de la lista. u[[2]] = 0 0 Ahora la lista asignada a u se ha modificado. u {2, 0, 5, 7}

Page 33: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

4. 5. Secuencia de operaciones 30 4.4. SECUENCIA DE OPERACIONES Al realizar cálculos con Mathematica, usted usualmente lo hace mediante una

secuencia de pasos. Si usted desea puede realizar cada paso en una línea separada. A veces, sin embargo, es conveniente ingresar varios pasos en una misma línea. Usted puede hacer esto simplemente separando cada una de las partes ingresadas con punto y coma.

Esto realiza tres operaciones en una misma línea. El resultado corresponde a

la última operación. x = 3; y = 7; z = y - 2 5

Page 34: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

31

CAPÍTULO 5

USO DEL SISTEMA MATHEMATICA

Un aspecto importante de Mathematica es que no solamente puede interactuar con usuarios humanos sino que también puede hacerlo con otros programas. Esto se logra principalmente a través del MathLink, el cual es un protocolo estandarizado para la comunicación bidireccional entre programas externos y el núcleo de Mathematica.

Un fragmento de código C que se comunica vía MathLink con el kernel de Mathematica. 5.1. CUADERNOS COMO DOCUMENTOS Los cuadernos de Mathematica le permiten crear documentos que pueden

verse interactivamente en la pantalla o imprimirse en papel. Particularmente, en los cuadernos extensos, es común tener los capítulos,

secciones etc., representados cada uno en grupos de celdas. La extensión de estos grupos de celdas es indicada por el corchete que aparece a la derecha.

La agrupación de celdas en un cuaderno se indica con los corchetes anidados

que aparecen en el lado derecho.

Page 35: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

5. 1. Cuadernos como documentos 32

Un grupo de celdas puede estar abierto o cerrado. Cuando está abierto usted

puede ver todas sus celdas explícitamente. Pero cuando está cerrado, usted sólo puede ver la celda que encabeza el grupo de celdas.

Los cuadernos extensos son a menudo distribuidos con muchos grupos de

celdas cerradas, para que cuando usted vea por primera vez el cuaderno aprecie solamente una lista de su contenido. Usted puede abrir las partes en las que esté interesado haciendo doble clic sobre el corchete apropiado.

Haciendo doble clic sobre el corchete que abarca un grupo de celdas cerramos

el grupo, dejando sólo la primera celda visible. Cuando el grupo está cerrado, el corchete que le corresponde tiene una flecha

en la parte inferior. Haciendo doble clic sobre esta flecha abrimos nuevamente el grupo.

A cada celda dentro de un cuaderno se le asigna un estilo en particular que

indica su rol dentro del cuaderno. Así, por ejemplo, el material entendido como entrada para ser ejecutado por el núcleo de Mathematica está típicamente el estilo de Input (entrada), mientras que el que se entiende para ser leído como puramente de texto está típicamente en estilo Text (texto).

La interfase de Mathematica provee menús y métodos abreviados de teclas

para crear celdas con diferentes estilos, y para cambiar estilos en las celdas existentes.

Page 36: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

33 Esto muestra celdas en diferentes estilos. Los estilos no sólo definen el

formato del contenido de las celdas, sino que también su ubicación y espaciado. Poniendo una celda en un estilo en particular, usted especifica una colección

entera de propiedades para celda, incluyendo por ejemplo el tamaño y la fuente del texto que se digitará.

La interfase de Mathematica permite modificar tales propiedades, bien sea

para las celdas completas o para material específico dentro de las celdas. Incluso dentro de una celda con un estilo en particular, la interfase de

Mathematica permite modificar una amplia gama de propiedades en forma separada.

Vale mencionar que al hacer diversas clases de cosas con los cuadernos de

Mathematica, usted está utilizando diversas partes del sistema de Mathematica. Las operaciones tales como apertura y cierre de grupos de celdas, realización de animaciones y reproducción de sonidos utilizan solamente una parte pequeña del front end de Mathematica, y estas operaciones tranquilamente se pueden realizar con un programa fácilmente disponible conocido como MathReader.

Para poder crear y corregir los cuadernos, usted necesita más que el front end

de Mathematica. Y finalmente, para poder actualizar los cálculos dentro de un cuaderno de Mathematica, necesita un sistema completo de Mathematica, que contenga el front end y el núcleo.

Programas requeridos para diversas clases de operaciones en los cuadernos.

Page 37: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

5. 2. Elementos activos en cuadernos 34 5.2. ELEMENTOS ACTIVOS EN CUADERNOS Una de las características más potentes de los cuadernos de Mathematica es

que sus acciones pueden ser programadas. Así, por ejemplo, usted puede establecer un botón en un cuaderno de Mathematica que permita realizar varias operaciones siempre que usted haga clic sobre él.

He aquí un cuaderno que contiene un botón. Haciendo clic en el botón conseguimos que se muestre la fecha actual. Siempre que una celda se indique como activa, al hacer clic en los elementos

activos dentro ella se producirá las acciones que han sido programadas para que estos elementos realicen.

Es común inicializar paletas que consisten en una serie de botones. A veces

tales paletas aparecen como celdas dentro de un cuaderno. Aunque a menudo, se usa un cuaderno especial que aparece como ventana, que se puede poner convenientemente en algún lado de la pantalla de su computadora y utilizar conjuntamente con cualquier otro cuaderno.

Las paletas que consisten en una serie de botones a menudo son colocadas en

cuadernos separados. En los casos más simples, los botones en las paletas sirven como teclas

adicionales a su teclado. Así, cuando usted presiona un botón, el carácter o el objeto mostrado en aquel botón es insertado en su cuaderno tal como si usted lo hubiera escrito a máquina.

Aquí está una paleta de letras griegas con botones que actúan como teclas

adicionales a su teclado.

Page 38: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

35 A menudo, sin embargo, un botón puede contener un placeholder indicado

por . Esto significa que cuando usted presiona el botón, lo que se selecciona actualmente en su cuaderno será insertado en la posición del placeholder.

Estos botones contienen placeholders indicados por . Este es un cuaderno con una expresión seleccionada. Al presionar el botón superior izquierdo de la última paleta la expresión

seleccionada queda envuelta en una raíz cuadrada. A veces los botones que contienen placeholders serán programados

simplemente para insertar una cierta expresión en su cuaderno. Pero más a menudo, serán programados para evaluar el resultado, enviándolo como una entrada al núcleo de Mathematica.

Estos botones se inicializan para realizar operaciones. He aquí un cuaderno con una expresión seleccionada. Al presionar el botón superior en la última paleta la expresión seleccionada es

simplificada. Hay algunas situaciones en las cuales es conveniente tener varios placeholders

en un solo botón. Su actual selección se inserta en la posición del primer placeholder, indicada por . Los placeholder adicionales se indican por , y usted puede trasladarse a través de los placeholders sucesivos usando la tecla <Tab>.

He aquí una paleta que contiene botones con varios placeholders.

Page 39: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

5. 2. Elementos activos en cuadernos 36 He aquí una expresión en un cuaderno. Presionando el botón superior izquierdo en la última paleta insertamos la

expresión en el lugar de . Usted puede trasladarse a los otros placeholders usando la tecla <Tab>, y

entonces los corrige para insertar lo que usted desea. 5.3. PAQUETES EN MATHEMATICA Una de las características más importantes de Mathematica es que es un

sistema extensible. Hay una cierta cantidad de funciones incorporadas en Mathematica. Pero usando el lenguaje de programación de Mathematica, siempre es posible añadir más funciones.

Para muchos tipos de cálculos, lo incorporado en la versión estándar de

Mathematica será suficiente. Sin embargo, si usted trabaja en particular en un área especializada, puede encontrarse en la necesidad de utilizar ciertas funciones no incorporadas en Mathematica.

En tales casos, usted podría encontrar un package (paquete) de Mathematica

que contiene las funciones que usted necesita. Los paquetes de Mathematica son archivos escritos en el lenguaje de programación de Mathematica . Los mismos consisten en colecciones de definiciones hechas en Mathematica las cuales se aplican a áreas particulares.

<< paquete lee un paquete de Mathematica Si usted quiere usar las funciones de un paquete en particular, primero debe

leer el paquete en Mathematica. Hay varias convenciones que gobiernan los nombres que usted usará para referirse a los paquetes.

Este comando lee un paquete en particular de Mathematica. <<LinearAlgebra`Orthogonalization` La función GramSchmidt está definida en el paquete. GramSchmidt[{{1, 2}, {-7, 0}}] Hay varias sutilezas asociadas a estas cosas como los conflictos entre los

nombres de las funciones en los diferentes paquetes. Un punto importante que no

Page 40: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

5. 3. Paquetes en Mathematica 37

debe olvidar es que usted no debe referirse a una función que leerá desde un

paquete antes de leerla realmente en el paquete. Si usted hace esto por equivocación, deberá ejecutar el comando Remove[“name”] para librarse de la definición de la función que usted hizo antes de leer el paquete. Si usted no usa Remove, Mathematica usará “su” versión de la función, en lugar de la del paquete.

El hecho de que Mathematica pueda extenderse usando paquetes significa que

las “partes de Mathematica” son ilimitadas. En lo que al uso concierne, no hay en realidad ninguna diferencia entre las funciones definidas en paquetes y las funciones incorporadas en Mathematica.

De hecho, un número determinado de las funciones descritas en este libro se

ejecutan como paquetes de Mathematica. Sin embargo, en la mayoría de los sistemas de Mathematica, se han cargado los paquetes necesarios, de modo que las funciones que ellos definen estén siempre presentes.

Usted puede utilizar el Help Browser para obtener información sobre los

paquetes estándares de Mathematica. Para ello seleccione la tarjeta Add-ons & Links del mismo.

5.4. INTERRUPCIÓN DE CÁLCULOS Probablemente habrá veces en que desee detener Mathematica en medio de un

cálculo. Tal vez usted se da cuenta que pidió a Mathematica hacer un cálculo incorrecto. O quizás el cálculo tarda demasiado, y usted quiere saber que es lo que pasa.

La forma en que usted interrumpe un cálculo en Mathematica depende de qué

clase de interfase está utilizando. <Alt>+<,> interfase de cuaderno <Control>+<c> interfase basada en texto Combinaciones de teclas para interrumpir cálculos en Mathematica. En algunos sistemas informáticos, puede tomar a Mathematica un cierto

tiempo para responder a su interrupción. Cuando Mathematica responde, le dará un menú de cosas posibles para hacer.

Page 41: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

38

CAPÍTULO 6

CÁLCULOS ALGEBRAICOS

6.1. CÁLCULO SIMBÓLICO Una de las características importantes de Mathematica es que puede hacer

cálculos simbólicos y numéricos. Esto significa que puede manejar fórmulas algebraicas así como números.

He aquí un típico cálculo numérico. 4 + 36 - 1 39 Este es un cálculo simbólico. 7 x – 3 x + 6 6 + 4x Cálculo numérico 4 + 36 - 1 � 39 Cálculo simbólico 7x - 3x + 6 � 6 + 4x Usted puede digitar cualquier expresión algebraica en Mathematica. -1 + 2 x + x^3 -1 + 2x + x3 Mathematica realiza automáticamente simplificaciones algebraicas básicas.

Aquí combina a x 2 y a � 4x 2 para dar �3x2 . x^2 + x - 4x^2 x – 3x2 Puede utilizar espacios para denotar la multiplicación. Tenga cuidado de no

olvidarse del espacio en x y . Si usted digita xy sin espacio, Mathematica interpretará esto como solo símbolo, con el nombre xy, no como un producto de dos símbolos x y y.

Mathematica reordena y combina términos usando las reglas estándares del

álgebra. x y + 2 x^2 y + y^2 x^2 - 2 y x -xy + 2x2y + x2y2 He aquí otra expresión algebraica. (x + 2 y + 1)(x - 2)^2 (-2 + x)2(1 + x + 2y)

Page 42: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

6. Cálculos algebraicos 39

La función Expand amplía productos y potencias. Expand[%] 4 – 3x2 + x3 + 8y – 8xy + 2x2y Factor hace lo inverso de Expand. Factor[%] 4 – 3x2 + x3 + 8y – 8xy + 2x2y 6.2. VALORES PARA SÍMBOLOS Cuando Mathematica transforma una expresión por ejemplo x + x en 2x, está

tratando la variable x en forma puramente simbólica o formal. En tales casos, x es un símbolo que puede representar cualquier expresión.

A menudo, sin embargo, usted necesita sustituir un símbolo como x por un

“valor” determinado. Algunas veces este valor será un número; aunque frecuentemente será una expresión.

Para sustituir el símbolo x, que aparece en la expresión 1 + 2 x, con un valor

determinado; puede crear una regla de la transformación en Mathematica, y después aplicar esta regla a la expresión. Para sustituir x por el valor 3, usted crearía la regla de transformación x->3. Debe digitar -> como un par de caracteres, sin espacio entre ellos. Puede interpretar x->3 como una regla en la cual “x será sustituido por 3”.

Para aplicar una regla de transformación a una expresión particular de

Mathematica, usted digita expr/.regla. El “operador de reemplazo” /. se digita como un par de caracteres, sin espacio entre ellos.

Esto utiliza la regla de transformación x->3 en la expresión 1 + 2 x . 1 + 2x /. x -> 3 7 6.3. LAS LIMITACIONES DE MATHEMATICA En sólo un comando de Mathematica, usted puede especificar fácilmente un

cálculo que sea demasiado complicado de hacer para cualquier ordenador. Por ejemplo, usted podría pedir Expand[(1+x)^(10^100)]. El resultado de este cálculo tendría más términos que el número total de partículas en el universo.

Usted no tendría ningún problema para resolver Expand[(1+x)^100] en

cualquier ordenador que pueda utilizar Mathematica. Pero cuando usted aumenta el exponente de (1+x), los resultados que consigue tarde o temprano se harán demasiado grandes de almacenar para la memoria de su ordenador. Exactamente en qué punto sucede esto depende no solamente de la cantidad total de memoria

Page 43: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

40 que su computadora tiene, sino a menudo también de detalles tales como qué

otros trabajos esta realizando su computadora cuando usted intenta hacer su cálculo.

Si su ordenador realmente se queda sin memoria en medio de un cálculo, la

mayor parte de versiones de Mathematica no tienen ninguna otra opción, más que pararse inmediatamente. Por consiguiente, es importante planificar sus cálculos de modo que ellos nunca necesiten más memoria de la que su ordenador tiene.

Incluso si el resultado de un cálculo algebraico es absolutamente simple, las

expresiones intermedias que usted genera en el curso del cálculo pueden ser muy complicadas. Esto significa que incluso si el resultado final es pequeño, las partes intermedias de un cálculo pueden ser demasiado grandes de manejar para su ordenador. Si esto sucede, puede particionar su cálculo, y resolver exitosamente cada parte del mismo. Usted debe saber que el esquema interno que Mathematica usa para direccionar la memoria es tal que cuando la parte de un cálculo es terminada, la memoria que se usaba para almacenar las expresiones intermedias que surgen inmediatamente es hecha disponible para nuevas expresiones.

El espacio de memoria es el factor restrictivo más común en los cálculos con

Mathematica. El tiempo también, sin embargo, puede ser un factor restrictivo. Usted por lo general esta preparado para esperar un segundo, o aún un minuto, para obtener el resultado de un cálculo. Pero no lo esta para esperar una hora o un día, y casi nunca será capaz de esperar un año.

El código interno de Mathematica usa algoritmos sumamente eficientes y

optimizados. Pero hay algunas tareas para las cuales los mejores algoritmos conocidos siempre tarde o temprano toman una gran cantidad de tiempo. Una cuestión típica es que el tiempo requerido por el algoritmo puede aumentar casi exponencialmente con el tamaño de la entrada. Un caso clásico es la factorización de números enteros–donde los mejores algoritmos conocidos requieren tiempos que crecen casi de manera exponencial con el número de dígitos. En la práctica, usted encontrará que FactorInteger[k] dará un resultado casi inmediato cuándo k tiene menos de aproximadamente 40 dígitos. Pero si k tiene 60 dígitos, FactorInteger[k] puede comenzar a tomar un tiempo inmanejablemente largo.

En algunos casos, hay mejora progresiva de los algoritmos que se conocen, de

modo que las versiones sucesivas de Mathematica puedan realizar cálculos particulares cada vez más rápidos. Pero las ideas de la teoría de cómputo sugieren que muchos cómputos siempre requerirán una cantidad irreducible de trabajo computacional–de modo que ningún algoritmo más rápido sea encontrado alguna vez para ellos.

Hacer aritmética con los números que contienen algunos cientos millones de

dígitos. Generar un millón de dígitos de números como π y e . Expandir un polinomio que da un millón de términos. Factorizar un polinomio en cuatro variables con unos cien mil términos.

Reducir un sistema de desigualdades cuadráticas para unos miles de componentes independientes.

Encontrar las raíces enteras de un polinomio con grado un millón. Aplicación de una regla recurrente un millón de veces.

Page 44: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

6. Las limitaciones de Mathematica 41 Cálculo de todos los primos hasta diez millones. Encontrar la inversa numérica de una matriz de 1000x1000. Solución de un sistema lineal de un millón de variables con cien mil

coeficientes no ceros. Encontrar el determinante de una matriz entera de 250x250. Encontrar el

determinante de una matriz simbólica de 20x20. Encontrar las raíces numéricas de un polinomio de grado 200. Solución de un problema de programación lineal con cien mil variables.

Encontrar la trasformada de Fourier de una lista con cien millones de elementos. Representación de millón de gráficos primitivos. Clasificar una lista de diez

millones de elementos. Buscar una cadena que tiene diez millones de caracteres. Importación de unos

diez megabytes de datos numéricos. Formatear unas cien de páginas con salida TraditionalForm. Algunas operaciones que típicamente toman algunos segundos en una PC

2004.

Page 45: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

42

CAPÍTULO 7

MATEMÁTICAS SIMBÓLICAS

7.1. Operaciones básicas La capacidad de Mathematica de tratar con expresiones simbólicas, así como

números, le permite usarlo para muchas clases de matemáticas. El cálculo es un ejemplo. Con Mathematica, usted puede diferenciar una

expresión simbólicamente, y conseguir una fórmula para el resultado. Esto encuentra la derivada de xn . D[ x^n, x ] He aquí un ejemplo ligeramente más complicado. D[x^2 Log[x + a], x] Obtener fórmulas como resultado de cómputos es generalmente deseable

cuando es posible. Hay sin embargo muchas circunstancias donde es matemáticamente imposible conseguir una fórmula explícita como resultado de un cómputo. Esto sucede, por ejemplo, cuando intenta solucionar una ecuación para la cual no hay solución de “forma cerrada”. En tales casos, debe recurrir a métodos y aproximaciones numéricas.

7.2. DIFERENCIACIÓN He aquí la derivada xn con respecto a x . D[ x^n, x ] Mathematica conoce las derivadas de todas las funciones matemáticas

estándar. D[ ArcTan[x], x ] La tercera derivada con respecto a x . D[ x^n, {x, 3} ] La función D[x^n,x] realmente da la derivada parcial, en la cual se asume que

n no depende x. Mathematica tiene otra función, llamada Dt, que encuentra

Page 46: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

7.2. Diferenciación 43

derivadas totales, en la cual todas las derivadas se asumen relacionadas. En notación matemática, D[f,x] es como ∂∂fx , mientras Dt[f,x] es como dfdx . Puede entenderse Dt como la “derivada total”.

Dt da una derivada total, asumiendo que n puede depender de x. Dt[ x^n, x ] Así como trata variables simbólicamente, usted también puede tratar

funciones simbólicamente en Mathematica. Así, por ejemplo, puede encontrar fórmulas para las derivadas de f[x], sin especificar una forma explícita para la función f.

Mathematica no sabe como diferenciar f, así que le devuelve un resultado

simbólico en términos de f'. D[ f[x], x ] Mathematica utiliza la regla de cadena para simplificar derivadas. D[ 2 x f[x^2], x ] 7.3. INTEGRACIÓN He aquí la integral ∫xn dx en Mathematica. Integrate[x^n, x] Mathematica sabe resolver casi cualquier integral que puede ser expresada en

términos de funciones matemáticas estándares. Pero debe comprender que aun cuando un integrando pueda contener sólo funciones simples, su integral puede implicar funciones mucho más complicadas–o no puede ser expresable en absoluto en términos de funciones matemáticas estándares.

He aquí una integral simple. Integrate[Log[1 - x^2], x ] Esta integral puede ser expresada sólo en términos de una función de

dilogarítmica. Integrate[Log[1 - x^2]/x, x] Esta integral involucra Erf. Integrate[Exp[1 - x^2], x]

Page 47: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

44

Y esta otra involucra una función de Fresnel. Integrate[Sin[x^2], x] Esta integral incluso requiere una función hipergeométrica. Integrate[(1 - x^2)^n, x] 7.4. SUMAS Y PRODUCTOS Esto construye la suma ∑7 xi . i Sum[x^i/i, {i, 1, 7}] Los productos se obtienen en forma similar a las sumas. Product[x + i, {i, 1, 4}]

Sum[x^i y^j, {i, 1, 3}, {j, 1, i}] La forma en que se especifica los rangos de las variables en Sum y Product es

un ejemplo algo general de la notación de iteradores que Mathematica utiliza. Usted verá esta notación otra vez cuando discutamos la generación de tablas y listas usando Table y cuando describamos los lazos Do .

Page 48: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

7.4. Sumas y Productos 45

{imax} iterador imax sin incrementar

variable alguna {i,imax} i varía de 1 a imax en pasos de 1

{i,imin,imax} i varía de imin a imax en pasos de

1

{i,imin,imax,di} i varía de imin a imax en pasos de

di {i,imin,imax}, i varía de imin a imax, y para cada valor, j varía {j,jmin,jmax},... de jmin a jmax, etc. Notación de iteradores en Mathematica. 7.5. ECUACIONES Esta sección habla de ecuaciones, que prueban una igualdad. La ecuación x ==

y , prueba si x es igual a y. Esto prueba si 2 + 2 y 4 son iguales. El resultado es el símbolo True. 2 + 2 == 4 True Es muy importante que usted no confunda x = y con x == y . Mientras que x =

y es una declaración imperativa que en realidad origina una asignación, x == y simplemente prueba si x y y son iguales, y no causa ninguna acción explícita.

x=y asigna el valor de y a x x==y prueba si x e y son iguales Esto asigna a x el valor 4. x = 4 4 Si pregunta por x, obtiene 4. x 4 Esto prueba si x es igual a 4. En este caso si es. x == 4 True x es igual a 4 no a 6.

Page 49: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

46 x == 6 False Esto remueve el valor asignado a x. x = . 7.5. OPERADORES RELACIONALES Y LÓGICOS

Esto prueba si 10 es menor que 7. El resultado es False. 10 < 7 False No todos estos números son desiguales, por esta razón se obtiene False. 3 != 2 != 3 False Puede mezclar < y <=. 3 < 5 <= 6 True Ya que las cantidades involucradas son numéricas, Mathematica puede

determinar que esto es verdadero. Pi^E < E^Pi True Usted debe recordar que las operaciones lógicas ==, && y || tienen todas doble

Page 50: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

caracter en Mathematica. Si ha usado un lenguaje de programación como C, estará 7.5. Ecuaciones 47

familiarizado con esta notación. Mathematica no sabe si esto es verdadero o falso. p && q p && q Mathematica deja esta expresión inalterada. (p || q) && !(r || s) (p || q) &&! (r || s) Puede usar LogicalExpand para expandir los términos. LogicalExpand[ % ] (p && !r && !s) || (q && !r && !s)

Page 51: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

PARTE 2

EJERCICIOS Y PROBLEMAS DE MATEMÁTICAS CON MATHEMATICA  

Page 52: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

Índice Parte 2 1. Primeros pasos 4

1.1. Cálculo simbólico con Mathematica . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.1.1. Polinomios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.1.2. Expresiones trigonométricas . . . . . . . . . . . . . . . . . . . . . . . . . 15 2. Cómo “dibujar” con Mathematica 17

2.1. La orden Plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.1.1. Opciones de Plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.2. Gráficos en coordenadas paramétricas . . . . . . . . . . . . . . . . . . . . . . . .20

2.2.1. Algunas curvas planas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.3. El comando Show . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.4. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3. Vectores y matrices 24 4. Resolución de ecuaciones 30

4.1. Ecuaciones “sencillas” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

4.2. Sistemas de ecuaciones lineales . . . . . . . . . . . . . . . . . . . . . . . . . . 32

4.3. Resolución de sistemas de ecuaciones . . . . . . . . . . . . . . . . . . . . . . . 34

4.4. Otros métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

4.4.1. Breves conceptos de programación . . . . . . . . . . . . . . . . . . . . . 36

4.4.2. Método de Bisección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4.4.3. Método de Newton-Raphson . . . . . . . . . . . . . . . . . . . . . . . . 40

4.5. El comando FindRoot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 5. Extremos de funciones de una variable 44

5.1. Continuidad y límites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

5.2. Máximos y mínimos relativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 6. Fórmula de Taylor 47

Page 53: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

7. Integración 52

7.1. Integrales definidas e indefinidas . . . . . . . . . . . . . . . . . . . . . . .52 7.2. Longitudes, áreas y volúmenes . . . . . . . . . . . . . . . . . . . . . . . .54 7.3. Integrales impropias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

8. Gráficos en 3D 57

8.1. El comando Plot3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 8.1.1. Opciones del comando Plot3D . . . . . . . . . . . . . . . . . . . . . 58

8.2. Gráficos de contorno. Curvas de nivel. . . . . . . . . . . . . . . . . . . . 59 8.3. Gráficos paramétricos. Curvas y superficies. . . . . . . . . . . . . . . . . .60

8.3.1. Superficies de revolución . . . . . . . . . . . . . . . . . . . . . . . 61 9. Extremos relativos y condicionados 65

9.1. Derivadas parciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65 9.2. Representación gráfica . . . . . . . . . . . . . . . . . . . . . . . . . . . .66

9.2.1. “Campos” de vectores . . . . . . . . . . . . . . . . . . . . . . . . . 69 9.3. Extremos relativos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

9.4. Extremos condicionados. . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

10.Integrales múltiples 81

Page 54: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

CAPÍTULO 1

Primeros pasos

Comenzaremos a familiarizarnos con el Mathematica haciendo, al principio, cosas muy simples

que nos ayudarán a conocer los principales comandos y cómo se deben usar.

Para efectuar cálculos numéricos, el programa Mathema-

tica funciona como una simple calculadora, con la salvedad

de que con el Mathematica puedes obtener una precisión

que no tienen las calculadoras normales.

Una vez que hemos empezado el programa nos encon-

tramos delante de una pantalla más o menos como la de

la figura. Arriba tienes la barra de Menú, debajo tienes una

ventana vacía que es donde trabajaremos, y a la derecha te-

nemos una “paleta” con operaciones que ya iremos comen-

tando con más detalle.

Una vez iniciada la ejecución del programa, pulsa con el

botón izquierdo del ratón en la ventana principal y escribe: 3+2, y luego pulsa ↑ ↪ o Enter en

el teclado numérico. Observarás que en la pantalla aparece lo siguiente:

In[1]:=

3+2

Out[1]=

5

No intentes escribir los símbolos “In[1]:=” y “Out[1]=”, ya que éstos los escribe el programa para

llevar un control sobre las operaciones que va efectuando. No importa si dicho dígito de control no

coincide con el que aparezca en este texto.

A continuación, con el ratón puedes pulsar sobre los números que habías escrito, y cambiarlos,

o añadir nuevos sumandos, etc... y recuerda que siempre que quieras obtener el resultado, deberás

Page 55: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

5

pulsar ↑ ↪ . También podrás escribir los siguientes comandos debajo del resultado anterior,

con lo que quedará constancia escrita de las operaciones que vas haciendo. Observarás que en las

sucesivas operaciones el ordenador responde más rápido que en la primera, ya que al efectuar la

primera operación, el programa debió leer del disco las “reglas de cálculo” (esto es, el kernel del

programa), y dichas reglas permanecen en su memoria a partir de ese momento.

Para multiplicar números no es necesario escribir el símbolo de la multiplicación (opcionalmente

“*”), y basta con poner un espacio entre los factores.

In[2]:=

3 2

Out[2]=

6

Para efectuar potencias, puedes escribir

In[3]:=

385Out[3]=

35917545547686059365808220080151141317043

Ya que lo sabemos hacer directamente, comentemos que la paleta se puede

usar, entre otras cosas, para escribir potencias. Si pulsas en el primer botón de la

paleta te aparecerá en la ventana de comandos lo siguiente:

��

Puedes teclear directamente la base y, cuando termines, el tabulador te lleva al

exponente. Una vez escrito pulsa como siempre ↑ ↪ y obtendrás el resultado,

algo así:

In[4]:=

23

Out[4]=

8

Puedes hacer operaciones con fracciones, y obtener la fracción resultante...

In[5]:=

2+3/13

Out[5]=29

13

Page 56: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

6 Primeros pasos

(¿Por qué el resultado no ha sido 513?) Si lo prefieres, puedes aproximar el resultado mediante

unos cuantos dígitos de su expresión decimal:

In[6]:=

N[2+3/13]

Out[6]=

2.23077

... y si quieres que el Mathematica calcule 40 dígitos (incluyendo la parte entera)...

In[7]:=

N[2+3/13,40]

Out[7]=

2.2307692307692307692307692307692307692308

¿por qué el último dígito del comando anterior fue un 7 y no un 6? y ¿por qué ahora el último

dígito ha sido un 8 y no un 7?

Si quieres, puedes poner dos mil decimales. Haz la prueba.

Sigamos probando... para obtener la raíz de un número se usa el comando Sqrt o utilizar la

paleta (observa que la “S” es mayúscula, y el número debe ir entre corchetes):

In[8]:=

Sqrt[5]

Out[8]=√5

... pues vale... y encima es hasta verdad... pero si quieres la expresión decimal con quince dígitos,

In[9]:=

N[Sqrt[5],15]

Out[9]=

2.23606797749979

También puedes hacer la raíz cuadrada de un número, elevando dicho número al exponente 12

In[10]:=

5(1/2)Out[10]=√

5

Page 57: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

7

¿Podrías ahora obtener una aproximación decimal de 7√

86 con doscientas cifras decimales?.

Inténtalo.

Además de saber calcular las raíces, Mathematica también conoce las reglas de cálculo para

operar con ellas:

In[11]:=

Sqrt[2] Sqrt[3]

Out[11]=√6

...o bien...

In[12]:=

Sqrt[5(1/3)]Out[12]=

51/6

Como ya habrás notado, en la paleta tienes botones que permiten escribir fracciones, raíces de

cualquier orden y algunas de las constantes más usuales como el número e o π .

Se supone que conocemos aproximadamente el valor del número π , y también Mathematica lo

conoce...

In[13]:=

Pi

Out[13]=

π

...ya... parece más interesante así:

In[14]:=

N[Pi]

Out[14]=

3.14159

Es probable que alguno de nosotros conozca más dígitos, pero Mathematica es capaz de decirnos

los primeros cinco mil dígitos de π . Prueba.

Ahora vamos a trabajar con variables. Prueba el siguiente comando (ten en cuenta que para

cambiar de línea dentro de un comando es necesario pulsar sólo ↪ , y finalmente ↑ ↪ para

ejecutar todo el comando)

Page 58: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

8 Primeros pasos

In[15]:=

a=20;

b=4;

a/bOut[15]=

5

Observa que las líneas de comando que terminan en “punto y coma” no producen ninguna res-

puesta del Mathematica . Prueba a quitar (por ejemplo) el punto y coma de la primera línea en el

ejemplo anterior.

Razona la respuesta que da el Mathematica al siguiente comando:

In[16]:=

a=5;

b=12;

N[Sqrt[a+b],b]Out[16]=

4.12310562562

Con Mathematica podemos usar el resultado de una operación anterior sin necesidad de teclearlo.

Esto se consigue con la orden %. Si queremos el resultado de la salida n (Out[n]), podemos obtenerlo

con %n. Por ejemplo, si queremos el resultado de la operación número 15,

In[17]:=

%15Out[17]=

5

además podemos usar esa información como cualquier otro dato

In[18]:=

%152Out[18]=

25

Para obtener el resultado inmediatamente anterior usamos % sin ningún número,

In[19]:=

%Out[19]=

25

Page 59: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

9

% % para el penúltimo, etc...

Además de las operaciones elementales que hemos visto, Mathematica tiene definidas la mayor

parte de las funciones elementales. Los nombres de estas funciones suelen ser su abreviatura en

inglés, que algunas veces difiere bastante de su nombre castellano. En general, cualquier comando

de Mathematica se escribe con la primera letra en mayúscula. Por ejemplo

In[20]:=

Sqrt[4]

Out[20]=

2

Algunos ejemplos de funciones con Mathematica son:

• Función exponencial: Exp[x]

In[21]:=

Exp[2]

Out[21]=

E2

(para Mathematica el número e se escribe E) y si queremos su expresión decimal

In[22]:=

N[Exp[2]]

Out[22]=

7.38906

Otra forma de calcular la función exponencial aplicada a x es elevando E a x. ¿Podrías calcular

así e5? ¿y su primera cifra decimal? Haz lo mismo usando la función Exp y comprueba que da el

mismo resultado.

• Función logaritmo neperiano: Log[x]

In[23]:=

Log[20]

Out[23]=

Log[20]

...ya empezamos... Bueno, si lo que nos interesa es su expresión decimal

In[24]:=

N[Log[20]]

Out[24]=

2.99573

Page 60: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

10 Primeros pasos

En Mathematica , si no decimos lo contrario, los logaritmos serán neperianos. Si queremos calcu-

lar el logaritmo en base b de x usamos Log[b,x]. Por ejemplo, el logaritmo decimal de 100

In[25]:=

Log[10,100]

Out[25]=

2

¿Cuánto valdrá el logaritmo en base 2 de 64? Compruébalo. ¿Cuánto debe valer Log[Exp[7]]? ¿Y

Exp[Log[7]]? Pide a Mathematica que los calcule.

• Funciones trigonométricas: Sin[x], Cos[x], Tan[x] (seno, coseno, tangente)

In[26]:=

Sin[Pi/4]

Out[26]=1√2

También podemos usar las funciones trigonométricas inversas, esto es, el arcoseno, arcocoseno

y arcotangente, que se escriben respectivamente ArcSin[x], ArcCos[x] y ArcTan[x]. Observa que

la cuarta letra de cada comando está en mayúscula; escríbelo así, si no, Mathematica no lo entenderá.

In[27]:=

ArcTan[1]

Out[27]=π4

Prueba a componer dos o más de todas estas funciones y a hacer cálculos con ellas.

1.1. Cálculo simbólico con Mathematica

Hasta ahora sólo hemos usado el Mathematica como una calculadora muy potente, pero práctica-

mente todo lo que hemos aprendido puede hacerse sin dificultad con una calculadora convencional.

Entonces, ¿qué puede hacer Mathematica que sea imposible con una calculadora? Bueno, entre otras

muchas cosas que veremos posteriormente, la principal utilidad de Mathematica es el cálculo sim-

bólico, es decir, el trabajar con expresiones algebraicas (expresiones donde intervienen variables,

constantes... y no tienen porqué tener un valor numérico concreto) en vez de con números. Por

ejemplo, el programa sabe que la función Log es inversa de Exp, con lo que si ponemos

Page 61: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

1.1 Cálculo simbólico con Mathematica 11

In[1]:=

Exp[Log[x]]

Out[1]=

x

es decir, sin saber el valor de la variable x el programa es capaz de trabajar simbólicamente con

ella. Más ejemplos

In[2]:=

Exp[x]Exp[y]

Out[2]=

Ex+y

In[3]:=

a+2a+5b

Out[3]=

3 a + 5 b

Para Mathematica cualquier letra o combinación de letras puede ser una variable o una constante.

Hay excepciones como la letra E, que siempre indica el número e y no puede usarse como variable ni

constante. Sin embargo, las letras x, y, z... a, b, c, d... pueden usarse sin problemas como nombres de

constantes y variables. ¿Cómo podemos hacer que Mathematica diferencie entre constantes (valor

fijo) y variables (valor indeterminado)? Para el programa, si no se le ha asignado un valor a una

letra, ésta será una variable. Si le hemos asignado un valor a una letra, ésta será una constante, es

decir, tendrá siempre un valor concreto. ¿Podemos quitar el valor a una constante? Sí, con la orden

Clear[nombre variable]. Un ejemplo:

In[4]:=

a=7

Out[4]=

7

In[5]:=

a2

Out[5]=

49

es decir, le damos a la letra a el valor 7 y Mathematica la sustituye siempre por ese valor; en este

caso, a es una constante. Si usamos Clear

Page 62: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

12 Primeros pasos

In[6]:=

Clear[a]

(observa que esta entrada no produce ninguna salida)

In[7]:=

a2

Out[7]=

a2

ahora, a es una variable, esto es, no tiene un valor concreto y Mathematica debe tratarla simbólica-

mente. Si queremos que todas las constantes que hayamos definido pierdan su valor concreto (que

pasen a ser variables) usaremos Clear["GlobalÈ*"] (el acento que hay que usar es el que está a la

derecha de la p ).

Vamos a practicar con comandos de Mathematica para manejar expresiones algebraicas: polino-

mios, funciones racionales, expresiones trigonométricas, ecuaciones...

1.1.1. Polinomios

Si introducimos el siguiente polinomio

In[8]:=

x2 + 2 x + 1

Out[8]=

1 + 2 x + x2

Mathematica no intenta simplificarlo. Si escribimos

In[9]:=

(x+1)2

Out[9]=

(1+x)2

Mathematica no desarrolla el cuadrado. Probemos ahora a restar las dos expresiones:

In[10]:=

% % - %Out[10]=

1 + 2 x + x2 - (1 + x)2

Page 63: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

1.1 Cálculo simbólico con Mathematica 13

Mathematica no se da cuenta de que la expresión vale cero. Esto es porque no factoriza ni desa-

rrolla automáticamente, sino que debemos decirle que lo haga. ¿Cómo lo hacemos? Con las órdenes

Expand[expresión] (desarrollar), Simplify[expresión] (simplificar) y Factor[expresión] (fac-

torizar):

In[11]:=

Expand[(x-2)(x-1)x(x+1)(x+2)]

Out[11]=

4 x - 5 x3 + x5

también con varias variables

In[12]:=

Expand[(2y-x)(-3x+y)(x+y)]

Out[12]=

3 x3 - 4 x2 y - 5 x y2 + 2 y3

In[13]:=

Factor[ %]

Out[13]=

(x - 2 y) (3 x - y) (x + y)

In[14]:=

Expand[1+2x+x2 - (1+x)2]

Out[14]=

0

In[15]:=

Factor[1+2x+x2 - (1+x)2]

Out[15]=

0

La orden Simplify sirve para simplificar una expresión, factorizando o no, según convenga:

Page 64: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

14 Primeros pasos

In[16]:=

Simplify[1+x3]

Out[16]=

1 + x3

In[17]:=

Simplify[x2+2x+1+(1+x)2]

Out[17]=

2(1 + x)2

Hay veces que la expresión es “demasiado” complicada y Simplify no da ningún resultado

práctico. En este caso se puede intentar usar la orden FullSimplify, pero hay que tener en cuenta

que el tiempo para realizar los cálculos puede aumentar mucho.

In[18]:=

Simplify[3√

5√

13− 18]

Out[18]=

(-18 + 5√

13)(1/3)

In[19]:=

FullSimplify[3√

5√

13− 18]

Out[19]=12(−3+

√13)

El comando Short sirve para ver mejor polinomios muy grandes, mostrando sólo algunos de los

términos de mayor y menor grado

In[20]:=

Expand[(x+1)5]

Out[20]=

1 + 5 x + 10 x2 + 10 x3 + 5 x4 + x5

In[21]:=

Short[ %]

Out[21]=

1 + 5 x + «3» + x5

Page 65: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

1.1 Cálculo simbólico con Mathematica 15

1.1.2. Expresiones trigonométricas

Mathematica conoce las identidades trigonométricas y puede usarlas para simplificar expresio-

nes en las que aparezcan dichas funciones. En lugar de Expand y Factor, utilizaremos las órdenes

TrigExpand y TrigFactor. Por ejemplo,

In[22]:=

TrigExpand[Cos[α+ β]]Out[22]=

Cos[α] Cos[β]-Sin[α] Sin[β]

In[23]:=

TrigExpand[Sin[2ArcTan[t]]]

Out[23]=2t

1+t2

In[24]:=

TrigExpand[Sin[x+3*y]+Cos[2* z]

Sin[x-y]]Out[24]=

Cos[y]3 Sin[x] +

Cos[y] Cos[z]2 Sin[x] +

3 Cos[x] Cos[y]2 Sin[y] -

Cos[x] Cos[z]2 Sin[y] -

3 Cos[y] Sin[x] Sin[y]2 -

Cos[x] Sin[y]3 -

Cos[y] Sin[x] Sin[z]2 +

Cos[x] Sin[y] Sin[z]2

In[25]:=

TrigExpand[8 Sin[2*x]2 Cos[x]3]

Out[25]=

4Cos[x]3 - 4 Cos[x]7 +

24 Cos[x]5 Sin[x]2 -

4Cos[x]3 Sin[x]4

Page 66: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

16 Primeros pasos

TrigExpand también trabaja con funciones hiperbólicas:

In[26]:=

TrigExpand[Sinh[2 x]3]

Out[26]=

−32 Cosh[x] Sinh[x] +

32 Cosh[x]5 Sinh[x] +

5 Cosh[x]3 Sinh[x]3 +32 Cosh[x] Sinh[x]5

Page 67: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

CAPÍTULO 2

Cómo “dibujar” con Mathematica

2.1. La orden Plot

Una de las grandes virtudes de Mathematica es lo fácil y completo que es su tratamiento de

los gráficos para funciones de una y dos variables. Es posible dibujar a la vez varias funciones y

personalizar el resultado en cuanto a escalas, color, etc. También se pueden representar funciones

en coordenadas paramétricas e incluso se pueden realizar animaciones.

Un primer paso antes de empezar a representar gráficamente una función es tener una manera

cómoda de definirla. Siguiendo la costumbre usaremos las letras f , g, . . . para nombrarlas. Para

definir la función sen(x) haremos lo siguiente

In[1]:=

f[x_]=Sin[x]

Out[1]=

Sin[x]

Observa que se usan los corchetes para todo y que después de la variable x aparece _. No hay

que olvidar este guión después de cada variable cuando estemos definiendo una función.

Una vez definida la función podemos evaluarla en un punto o representarla gráficamente.

Por ejemplo,

In[2]:=

f[1]

Out[2]=

Sin[1]

Page 68: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

18 Cómo “dibujar” con Mathematica

o si queremos su valor numérico

In[3]:=

N[f[1]]

Out[3]=

0.841471

También podemos asignar un valor a la variable x y luego evaluar:

In[4]:=

x=0;

f[x]Out[4]=

0

Observa que a la hora de evaluar una función que hayamos definido no se usa el “_”.

Pueden surgir problemas al definir una función si la variable que usamos tiene asignado un

valor concreto, con lo que la función sería constante; en este caso, resolvemos el problema con la

sentencia Clear que vimos en la practica pasada. Por ejemplo, si queremos definir f(x) = ln(x),podemos poner

In[5]:=

Clear[x,f];

f[x_]=Log[x]

y la función queda bien definida aunque antes hubiésemos asignado un valor a x.

Por último, también se pueden definir funciones “a trozos”. Por ejemplo:

f[t_]:= t /; t>0 && t<2

f[t_]:= -t+4 /; t<=0 || t>=2

(no produce ninguna salida) define la función

f(t) =

t si 0 < t < 2

−t + 4 si t ≤ 0 ó t ≥ 2

Como has visto, hace falta escribir := para definir una función a trozos. El símbolo /; hace las veces

de si (condicional); los símbolos || y && son respectivamente o e y (suma y producto lógicos).

Para representar gráficamente una función de una variable, el comando que se utiliza es

Plot[función,{x,xmin, xmax},opciones]

Mathematica decide automáticamente cual es la escala más apropiada para que la gráfica se vea

lo mejor posible. Si la función que pretendemos representar tiene alguna discontinuidad o no está

definida en algún punto, Mathematica intentará dibujarla poniendo de manifiesto este hecho. Por

ejemplo, intenta dibujar la función tangente entre 0 y 4π :

Page 69: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

2.1 La orden Plot 19

In[6]:=

Plot[Tan[x],{x,0, 4Pi}]

2 4 6 8 10 12

-30

-20

-10

10

20

30

Out[6]= - Graphics -

Un comentario sobre lo que acabamos de hacer: como se puede ver, podemos escribir directamen-

te la función a representar “dentro” del comando Plot. El inconveniente que tiene hacerlo así es que

cada vez que queramos trabajar con esa función tenemos que volver a escribirla, siendo más con-

veniente ponerle nombre (p.e. f[x_]=Tan[x], y usar después el nombre (Plot[f[x],{x,0,4Pi}]).

2.1.1. Opciones de Plot

Cuando presentamos el comando Plot dijimos que podíamos poner “opciones”; veamos cuáles

son algunas de ellas:

AspectRatio–>número

Determina la proporción entre los ejes de abscisas y ordenadas. Si especificamos el valor 1 los

dos ejes tendrán el mismo tamaño.

In[7]:=

Plot[Tan[x],{x,0,4Pi},AspectRatio->2]

PlotRange–>{número1,número2}

Sólo se presentan los valores de f(x) comprendidos entre número1 y número2. Si no se especi-

fica esta opción aparecen todos los valores posibles de f(x), en función del rango de variación

de x.

In[8]:=

Plot[Tan[x],{x,0,4Pi},

PlotRange->{2,20}]

PlotStyle

Permite escoger, entre otras cosas, el color de la siguiente forma:

RGBColor[número1,número2,número3]

Permite escoger un color en función de la cantidad de rojo (número1), verde (número2) y azul

(número3), donde los números pueden tomar cualquier valor entre 0 y 1.

Page 70: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

20 Cómo “dibujar” con Mathematica

In[9]:=

Plot[Tan[x],{x,0,4Pi},

PlotStyle->{RGBColor[1,0,0]}]

Veamos algunos ejemplos de cómo utilizar estas opciones. Prueba las siguientes órdenes, com-

para los resultados e intenta variar algunos de los parámetros “a ver que pasa”.

Clear[x,f];

f[x_]=Exp[x] ArcTan[x];

Plot[f[x],{x,0,5},

PlotRange->{-1,30}];

También se pueden dibujar varias gráficas de funciones a la vez. Una de las formas de distin-

guirlas es dibujando cada una de un color diferente:

Plot[{Sin[x],Cos[x]}, {x,-2 Pi,2 Pi},

PlotStyle->{RGBColor[1,0,0],

RGBColor[0,0,1]}];

Nota: si quieres volver a usar los mismos nombres para funciones distintas recuerda “limpiar”

los nombres de las variables y las funciones con el comando Clear; si quieres borrar los valores de

todas las variables, usa Clear["GlobalÈ*"]. Por ejemplo, si quieres volver a usar las letras f y gpara otras dos funciones haz lo siguiente:

Clear[f,g,x];

f[x_]=Sin[2 x];

g[x_]=Cos[4 x];

Plot[{f[x],g[x]},{x,0,10 Pi},

PlotStyle->{RGBColor[1,0,1],RGBColor[0,1,0.5]}];

Prueba lo mismo que hemos hecho con las funciones sen(x) y sen(−x) o con las funciones

cos(x) y cos(−x). ¿Qué función es par y cuál es impar?.

Intenta lo mismo con las siguientes 3 funciones: f(x) = 2−x sen(6x), g(x) = 2−x y h(x) =−2−x .

2.2. Gráficos en coordenadas paramétricas

Como ya recordarás, al menos para rectas, podemos representar una curva del plano en coor-

denadas paramétricas, o sea, a partir de las coordenadas (x(t),y(t)) variando t a lo largo de un

intervalo.

Para esto tenemos la siguiente orden:

ParametricPlot[{x(t),y(t)},{t,min,max}]

junto con las opciones ya conocidas de la orden Plot. Prueba con alguno de los siguientes

ejemplos:

Page 71: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

2.2 Gráficos en coordenadas paramétricas 21

ParametricPlot[{t,tˆ2},{t,-2,2}]

ParametricPlot[{Cos[t],Sin[t]},{t,0,2 Pi}]

ParametricPlot[{{4 Cos[t],3 Sin[t]},{8 Cos[t],

7 Sin[t]}},{t,0,2 Pi}]

ParametricPlot[{Cos[2 t],Sin[2 t]},{t,0,2 Pi}]

¿Hay alguna diferencia entre el segundo y el último de los ejemplos?.

2.2.1. Algunas curvas planas

Astroide el camino recorrido por un punto de un círculo de radio r rodando dentro de otro círculo

de radio 4r parametrizado en coordenadas rectangulares es el siguiente:

ParametricPlot[{3*Cos[t]/4+ Cos[3*t]/4, 3*Sin[t]/4 -

Sin[3*t]/4},{t, 0, 2 Pi}]

Cardioide

ParametricPlot[{2 Cos[t] + Cos[2 t], 2 Sin[t]

+ Sin[2 t]},{t,0,2 Pi}]

Catenaria es la forma de un cable ideal con densidad uniforme colgando de dos puntos

ParametricPlot[{t,Cosh[t]},{t,-2,2}]

Lemniscata de Bernoulli Es una parametrización de (x2 + y2)2 = (x2 − y2), también llamada

hipérbola lemniscata.

ParametricPlot[{Cos[t]/(1+Sin[t]2), Sin[t]

Cos[t]/(1+Sin[t]2)},{t,0,Pi}]

Espiral equiangular es aquella espiral en la que el radio corta a la curva en un ángulo constante α

ParametricPlot[{ E(t*Cot[α])*Cos[t],E(t*Cot[α])*Sin[t]},{t,0,10 Pi}]

Serpentina Es una parametrización de x2y + a2y − b2x = 0

ParametricPlot[{t,(b2 t)/(a2 + t2)},{t,-10,10}]

Hipérbola la representación en coordenadas cartesianas de una hipérbola con vértice (1,0) y foco

(a,0) (excentricidad a) es x2−y2/(a2−1) = 1. Una hipérbola rectangular tiene excentricidad√2 y su ecuación es xy = 1.

Page 72: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

22 Cómo “dibujar” con Mathematica

ParametricPlot[{-Sec[t],Sqrt[a2-1] Tan[t]},{t,0,2

Pi}]

Epicicloide es la curva que describe un punto fijo de un círculo que rueda sin deslizamiento por el

exterior de otro círculo (n es el número de vueltas).

ParametricPlot[{(1+1n) Cos[t]+

Cos[(1+ 1

n )t1n

]n

,

(1+1n)Sin[t]+

Sin[(1+ 1

n )t1n

]n

} ,{t,0,2 Pi}]

2.3. El comando Show

Como recordarás, el símbolo % era utilizado para referirse al resultado anterior. Cuando el re-

sultado es un gráfico que queremos volver a visualizar usaremos el comando Show en la forma

siguiente

Show[%1]

Si queremos volver a representar los gráficos 1 y 2:

Show[%1,%2]

2.4. Ejercicios

Ejercicio 1. Dibuja la función logaritmo neperiano, exponencial y f(x) = x2 con colores diferentes.

Compara el crecimiento de estas funciones cerca de cero y lejos de cero. ¿Qué pasa si la base de la

exponencial y el logaritmo son menores que uno?

Ejercicio 2. Igual que en el ejercicio anterior compara las gráficas de las funciones trigonométricas

con las respectivas funciones hiperbólicas.

Ejercicio 3. ¿Cómo cambia la gráfica de una función f(x) cuando la cambiamos por f(a∗ x), a∗f(x), f (x + a), o f(x)+ a?. Prueba con alguna de las funciones anteriores.

Ejercicio 4. A continuación puedes encontrar la representación de varias funciones. Encuentra de

qué funciones provienen.

-4 -2 2 4

5

10

15

20

25

Page 73: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

2.4 Ejercicios 23

-4 -2 2 4

-10

10

20

30

-4 -2 2 4

-20

-10

10

20

2 4 6 8 10 12 14

-1

1

2

Page 74: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

CAPÍTULO 3

Vectores y matrices

Para comenzar vamos a ver como trabajar en Mathematica con vectores y matrices. Una matriz

siempre está delimitada por un par de llaves y, separadas por comas, se escriben las filas agrupadas

también con llaves. Por ejemplo,

In[1]:=

{{a11,a12,a13},{a21,a22,a23},{a31,a32,a33}}

Out[1]=

{{a11,a12,a13},{a21,a22,a23},{a31,a32,a33}}

Mathematica no muestra el resultado en la forma de matriz que estamos acostumbrados a ver.

Conseguiremos esto mediante el uso de la orden MatrixForm [ matriz ].

In[2]:=

MatrixForm[ %]

Out[2]= a11 a12 a13

a21 a22 a23

a31 a32 a33

Si la matriz es diagonal podemos ahorrarnos algo de trabajo con la orden

DiagonalMatrix[{a11,a22,...}]

Page 75: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

25

Por ejemplo,

In[3]:=

DiagonalMatrix[{a,b,c,d}]

Out[3]=

{{a,0,0,0},{0,b,0,0},{0,0,c,0},{0,0,0,d}}

En el caso que la matriz diagonal sea la identidad, podemos usar IdentityMatrix[n]. Por ejem-

plo:

In[4]:=

IdentityMatrix[3]

Out[4]=

{{1,0,0},{0,1,0},{0,0,1}}

In[5]:=

MatrixForm[IdentityMatrix[3]]

Out[5]= 1 0 0

0 1 0

0 0 1

Para sumar matrices, si los órdenes lo permiten, solo tenemos que emplear el signo + y para

multiplicarlas por un número podemos usar la simple yuxtaposición o el signo *. Sin embargo, el

producto de matrices, cuando los órdenes lo permiten, tiene una definición distinta. Para multiplicar

dos matrices (filas por columnas) o calcular el producto escalar de dos vectores mediante Mathe-

matica , debemos usar el punto “.” en lugar del signo de la multiplicación “*”. A modo de ejemplo

de estas definiciones puedes comprobar los siguientes cálculos

In[6]:=

A={{1,2,3},{4,5,6},{1,3,2}}

B={{4,3,2},{7,3,1},{1,0,0}}

a={1,5,8}

b={1,3,4}Out[6]=

{{1,2,3},{4,5,6},{1,3,2}}

{{4,3,2},{7,3,1},{1,0,0}}

{1,5,8}

{1,3,4}

Page 76: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

26 Vectores y matrices

Suma de A y B

In[7]:=

A+B

Out[7]=

{{5,5,5},{11,8,7},{2,3,2}}

Producto de una matriz por un número

In[8]:=

5 A

Out[8]=

{{5,10,15},{20,25,30},{5,15,10}}

Producto escalar de a y b

In[9]:=

a.b

Out[9]=

48

Producto de una matriz por un vector A.a (ojo que a se considera columna)

In[10]:=

A.a

Out[10]=

{35,77,32}

Con Mathematica podemos definir matrices de forma automática mediante la orden Table. La

sintaxis es la siguiente

Table[Función de i,j, {i, límite de i},{j,límite de j}]

Page 77: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

27

Puedes comprenderla mejor con el siguiente ejemplo:

In[11]:=

Table[ i*x+ j*y, {i, 3},{j,3}]

Out[11]=

{{x+y,x+2y,x+3y},{2x+y,2x+2y,2x+3y},

{3x+y,3x+2y,3x+3y}}

In[12]:=

MatrixForm[ %]

Out[12]= x+y x+2y x+3y

2x+y 2x+2y 2x+3y

3x+y 3x+2y 3x+3y

Los siguientes comandos son los que nos permiten extraer elementos, filas, columnas y subma-

trices de una matriz. Para extraer el elemento (i,j)-ésimo de una matriz A, escribimos

A[[i,j]]

Para extraer la fila i-ésima,

A[[i]]

Para obtener una submatriz de A el comando es:

A[[{índices de filas},{índices de columnas}]]

Obtener la columna j-ésima de A equivale a extraer la fila j-ésima de la traspuesta de A. Mathematica

usa el comando Transpose para transponer matrices:

Transpose[matriz]

Veamos algún ejemplo. Primero buscamos el elemento (2,3) de la matriz A definida en los ejemplos

anteriores

In[13]:=

A[[2,3]]

Out[13]=

6

Seguidamente la fila segunda de A

In[14]:=

A[[2]]

Out[14]=

{4,5,6}

Page 78: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

28 Vectores y matrices

La traspuesta de A

In[15]:=

Transpose[A]

Out[15]=

{{1,4,1},{2,5,3},{3,6,2}}

Y la tercera columna de A

In[16]:=

Transpose[A][[3]]

Out[16]=

{3,6,2}

Por último, la submatriz de A que tiene las filas (1,2) y las columnas (2,3)

In[17]:=

A[[{1,2},{2,3}]]

Out[17]=

{{2,3},{5,6}}

Seguidamente vamos a ver los comandos que nos permiten calcular inversas y determinantes

de matrices con Mathematica . Para calcular el determinante el comando es Det[matriz] y para

calcular la inversa usamos Inverse[matriz]. Como ejemplo puedes calcular los determinantes de

las matrices A y B del primer ejemplo y, si son no nulos, sus inversas.

Si una matriz no es cuadrada, o si siendo cuadrada su determinante vale 0, ¿cómo podemos

calcular su rango?. Mathematica no tiene una orden específica para calcular rangos de matrices,

pero podemos calcularlos de tres formas:

•Mediante la orden Minors[matriz,orden], que calcula los menores de cierto orden de una matriz

dada, dando el resultado en forma de matriz. El rango de la matriz es el mayor orden para el que

hay algún menor no nulo.

• Mediante la orden RowReduce[matriz], que convierte la matriz en otra equivalente, pero trian-

gular superior. Expresada de esta forma es fácil ver el rango de una matriz: basta ver cuantos

elementos no nulos hay en la diagonal principal (aunque no sea cuadrada).

• Si la matriz es cuadrada, podemos calcularle los valores propios, y su rango será el número

de valores propios no nulos. Para calcular los valores propios de una matriz cuadrada, usamos la

orden Eigenvalues[matriz].

Por último, la orden Eigensystem[matriz] da como resultado una lista con los valores propios

y los vectores propios de la matriz. Si sólamente nos interesan los vectores propios podemos usar

Eigenvectors[matriz]. Por ejemplo,

Page 79: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

29

In[18]:=

Eigensystem[{{2,1},{3,-1}}]

Out[18]=

{{12(1-

√21),1

2(1+√

21},

{16(3-

√21,1},{1

6(3-√

21,1}}

Ejercicio 1. Consideremos las matrices

A =

1 −2 0

2 5 3

−3 1 −4

B =

0 −2 6

12 2 0

−1 −1 3

C =

1 2 0 −5

−4 −2 1 0

3 2 −1 3

5 4 −1 −5

D =

−1 2 3 0

12 −5 0 3

−6 0 0 1

(a) Calcular A.B, A+ B, D.C .

(b) Extraer la segunda fila de A, la tercera columna de C y el elemento (3,3) de D.

(c) Calcular Det(A), Det(B) y Det(C). Para las matrices cuyo determinante sea no nulo, calcular

su inversa. Calcular sus valores propios.

(d) Calcular el rango de las matrices A, B, C , D, D.C y A+ B.

(e) Usar la orden Table para generar una matriz del orden 3× 3, de forma que el elemento (i, j)sea i ∗ j. Calcula el determinante, su inversa si la tiene, y su rango. ¿Cuáles son sus valores

propios?.

Page 80: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

CAPÍTULO 4

Resolución de ecuaciones

4.1. Ecuaciones “sencillas”

Mathematica puede resolver los tipos más comunes de ecuaciones y sistemas de ecuaciones alge-

braicas, tanto de forma exacta (si se puede) como aproximada. Resolvamos el sistema de ecuaciones

{x2 +y2 = 1

(x − 2)2 + (y − 1)2 = 4

Para ello usamos la sentencia Solve

In[1]:=

Solve[{x2 + y2==1, (x-2)2

+ (y-1)2==4},{x,y}]Out[1]={

{x− > 0,y− > 1}, {x− > 4

5,y− > −3

5}}

Observa que en el comando Solve tenemos que decirle a Mathematica las variables respecto de

las cuales queremos resolver el sistema. La sintaxis es

Solve[{ecuación1, ecuación2,...},{variable1, variable2,...}]

Para Mathematica una ecuación está formada por dos expresiones igualadas con el signo “==”.

Page 81: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

4.1 Ecuaciones “sencillas” 31

A veces, Mathematica no puede resolver de forma exacta una ecuación

In[2]:=

Solve[x6+x+1==0,x]

Out[2]=

{{x → Root[1 + #1 + #16&, 1]},

{ x → Root[1 + #1 + #16&, 2]},

{ x → Root[1 + #1 + #16&, 3]},

{ x → Root[1 + #1 + #16&, 4]},

{ x → Root[1 + #1 + #16&, 5]},

{ x → Root[1 + #1 + #16&, 6]}}

Este error aparece porque estamos usando un polinomio de grado alto y es posible que la ecuación

no pueda resolverse con operaciones elementales. En este caso usamos la orden NSolve (tiene la

misma sintaxis que Solve) para una resolución numérica

In[3]:=

NSolve[x6+x+1==0,x]

y Mathematica da 6 soluciones aproximadas (en este caso complejas) de la ecuación anterior. Des-

pués de la variable podemos añadir el número de cifras significativas que queremos que tengan las

soluciones

In[4]:=

NSolve[x6+x+1==0,x,50]

Además de ecuaciones polinómicas, Solve puede resolver ecuaciones en las que aparecen otro

tipo de funciones. Por ejemplo,

In[5]:=

Solve[ArcCos[x]-ArcTan[x]==0,x]

Out[5]=x− >

√−12+√5

2

En estos casos lo más frecuente es que no se pueda resolver el sistema o que no se puedan calcular

todas las soluciones. Si ocurre esto Mathematica da un mensaje de advertencia avisando de que

puede haber más soluciones:

In[6]:=

Solve[Sin[x] Cos[x]==0,x]

Solve::ifun: Inverse functions are being used by

Solve, so some solutions may not be found.

Out[6]=

{{x− > 0}, {x− > −π2}, {x− > π

2}}

Page 82: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

32 Resolución de ecuaciones

4.2. Sistemas de ecuaciones lineales

Vamos a aplicar lo que hemos visto a la resolución de sistemas lineales de la forma

A.x = b,

donde A es una matriz de orden m×n y x y b son vectores de órdenes n y m respectivamente.

El caso más fácil es que la matriz A sea cuadrada e inversible, entonces la solución del sistema

es tan sencilla como multiplicar (matricialmente) la inversa de A por b.

Cuando resolvemos sistema de ecuaciones con Mathematica , la soluciones nos aparecen como

listas de valores, es decir como vectores. El problema que nos surge es que no podemos trabajar

directamente con estos resultados. La solución para este problema resulta sencilla, podemos definir

un vector cuyas componentes sean las soluciones de nuestra ecuación y podemos utilizar sus com-

ponentes como hemos visto anteriormente. Para esto llamamos “S” al vector solución y lo definimos

cuando ponemos S igual a la inversa de A por b (cuando es posible). Veamos un ejemplo. Como en

este caso la matriz es cuadrada y tiene determinante distinto de cero, sólo tenemos que calcular su

inversa:

In[7]:=

A={{1,3,5},{9,7,5},{2,4,5}}

b={4,7,3}

Det[A]Out[7]=

{{1,3,5},{9,7,5},{2,4,5}}

{4,7,3}

20

In[8]:=

S=Inverse[A].b

Out[8]=

{74,-

114 ,

2110}

De este modo tenemos definido el vector de soluciones del sistema como S. Si queremos conocer la

solución de la segunda variable solo tenemos que buscar la segunda componente de S:

In[9]:=

S[[2]]

Out[9]=

-114

Otra posibilidad para resolver el sistema es usar la orden

LinearSolve[matriz A,vector b].

¿Qué pasa si la solución no es única?. Puedes comprobar con ejemplos sencillos que la orden

LinearSolve da como resultado un vector aunque el sistema tenga infinitas soluciones:

Page 83: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

4.2 Sistemas de ecuaciones lineales 33

In[10]:=

LinearSolve[{{1,1}},{1}]

Out[10]=

{1,0}

en este ejemplo, (1,0) es solución del sistema x+y = 1, pero hay más soluciones, como por ejemplo

(0,1). La forma de obtener las demás soluciones es calcular el núcleo de la matriz de coeficientes

mediante la orden NullSpace, que da una base de dicho núcleo. De esta forma, si sabemos una

solución particular del sistema A.x = b, x0 (obtenida mediante LinearSolve) y una base del núcleo

de A, x1, x2, . . ., todas las soluciones del sistema serán de la forma x0 + λ1x1 + λ2x2 + · · · , donde

λ1, λ2, . . . son parámetros. En nuestro ejemplo anterior (x +y = 1) habíamos obtenido

In[11]:=

LinearSolve[{{1,1}},{1}]

Out[11]=

{1,0};

el núcleo de la matriz (1 1) tiene base

In[12]:=

NullSpace[{{1,1}}]

Out[12]=

{{-1,1}};

con lo que todas las soluciones del sistema serán de la forma (1,0)+ λ(−1,1), con λ un parámetro

real.

Otra forma de resolver sistemas es usar la orden Solve que ya conocemos. Un ejemplo nos

ayudará a entender la mecánica:

In[13]:=

A={{1,1,1},{2,2,2},{1,0,1}};

v={x,y,z};

b={0,0,1};

Solve[A.v==b,{x,y,z}]Out[13]=

{{y->-1, x->1-z}}

En este caso, como la matriz A tiene rango dos, las soluciones nos vienen dadas de forma implícita

mediante dos ecuaciones: {y = −1, x = 1 − z}; por tanto, el espacio afín de soluciones tendrá

dimensión 1.

Page 84: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

34 Resolución de ecuaciones

Ejercicio. Usando las matrices

A =

1 −2 0

2 5 3

−3 1 −4

B =

0 −2 6

12 2 0

−1 −1 3

C =

1 2 0 −5

−4 −2 1 0

3 2 −1 3

5 4 −1 −5

D =

−1 2 3 0

12 −5 0 3

−6 0 0 1

resolver los siguientes sistemas de ecuaciones lineales: A.x = (1,1,0)t, B.x = (2,0,0)t, C.x =(−1,2,0,0)t y C.x = (1,−1,0,0)t.

4.3. Resolución de sistemas de ecuaciones

Veamos todos los comandos con algunos ejemplos:

• Comandos Solve y NSolve: Sirven para resolver sistemas de ecuaciones polinómicas. El prime-

ro sólo resuelve sistemas de grado bajo pero con soluciones exactas, expresadas mediante radicales.

El segundo da soluciones aproximadas pero sirve para cualquier grado.

• Comando Reduce: simplifica sistemas de ecuaciones dependientes de parámetros, haciendo

una discusión de casos si es necesario. Su sintaxis es

Reduce[{ecuación1,ecuación2,…},{var1,var2,…}]

Al usar este comando hay que tener en cuenta que todo lo que no se le introduce como variable es

considerado parámetro. Además, el resultado obtenido al usar Reduce difiere bastante del obtenido

al usar Solve o NSolve, pues este comando no devuelve valores numéricos, sino ecuaciones más

simples que habrá que resolver; dichas ecuaciones vendrán expresadas usando “operadores lógicos”:

&& es la conjunción “y”, || es la disyunción “o”. Un ejemplo:

In[14]:=

Reduce[{x +a y == a,

b y + b x == 0},{x,y}]Out[14]=

x == a(1− y) && b == 0 ||−1+ a ≠ 0 && x == −a/(−1+ a)&& y == a/(−1+ a)

Mathematica da dos soluciones: la primera x = a(1−y) con b = 0; la segunda: x = −aa− 1

,y = aa− 1

que sólo vale si a ≠ 1 y para cualquier b.

Ejercicio 1. Discutir en función de los parámetros a y b, los siguientes sistemas de ecuaciones:x + az = 0

x + 2y = bx −y + az = 0

x + az = 1

x + 2y = −1

x −y + az = 3

ax2 + by = 5

x − by = 1

Page 85: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

4.4 Otros métodos 35

x − z = 1

x + 2y = 1

x + az = b

x + az = 0

x + 2y = bx −y + az = 0

x + 2z = 0

7x − 2y = 0

6x − 2y + az = 0

4.4. Otros métodos

Hemos visto como resolver ecuaciones y sistemas de ecuaciones con Mathematica mediante la

orden Solve. El problema de usar la orden Solve, es que solo nos permite resolver ecuaciones

y sistemas de ecuaciones para los que es posible aplicar un método algebraico sencillo. En otras

palabras, la orden Solve está limitada a ecuaciones y sistemas de ecuaciones que se puedan resolver

mediante operaciones elementales.

Recordemos el siguiente ejemplo que ya nos habíamos encontrado:

In[15]:=

Solve[x6+x+1==0,x]

Out[15]=

{{x → Root[1 + #1 + #16&, 1]},

{ x → Root[1 + #1 + #16&, 2]},

{ x → Root[1 + #1 + #16&, 3]},

{ x → Root[1 + #1 + #16&, 4]},

{ x → Root[1 + #1 + #16&, 5]},

{ x → Root[1 + #1 + #16&, 6]}}

Ahora es un buen momento para plantearle a Mathematica algunas ecuaciones, por ejemplo polino-

miales de grado alto, para ver las limitaciones de la orden Solve.

In[16]:=

Solve[x6+x3 + 1 == 0, x ]

In[17]:=

Solve[x6+ x5 + 1 == 0, x]

Prueba con otras ecuaciones de grado alto la orden Solve.

En estas condiciones, nos damos cuenta de la necesidad de encontrar o aproximar soluciones

para ecuaciones del tipo f(x) = 0, donde, en principio, podemos considerar como f cualquier

función real de una variable. El objetivo de esta práctica es aprender a programar algoritmos con

Mathematica para aproximar la solución de estas ecuaciones.

Lo primero que tenemos que tener en cuenta es que no existe ningún método general para

resolver todo este tipo de ecuaciones en un número finito de pasos.

Lo que sí tendremos es condiciones para poder asegurar, bajo ciertas hipótesis sobre la función f ,

que un determinado valor es una aproximación de la solución de la ecuación con un error prefijado.

El principal resultado para asegurar la existencia de solución para la ecuación f(x) = 0 en un

intervalo [a, b], es el Teorema de Bolzano. Dicho teorema asegura que si f es continua en [a, b] y

cambia de signo en el intervalo, entonces existe al menos una solución de la ecuación en el intervalo

[a, b]. Los dos métodos que vamos a usar se basan en este resultado.

Page 86: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

36 Resolución de ecuaciones

Ambos métodos nos proporcionan un algoritmo para calcular una sucesión de aproximaciones,

y condiciones sobre la función f para poder asegurar que la sucesión que obtenemos converge a la

solución del problema. Una vez asegurada esta convergencia, bastará tomar alguno de los términos

de la sucesión que se aproxime a la sucesión con la exactitud que deseemos.

4.4.1. Breves conceptos de programación

Antes de introducirnos en el método teórico de resolución, vamos a presentar algunas sentencias

sencillas de programación que necesitaremos más adelante.

La primera de las órdenes que vamos a ver es el comando For, usada para realizar bucles. Un

“bucle” es un proceso repetitivo que se realiza un cierto número de veces. Un ejemplo de bucle

puede ser el siguiente: supongamos que queremos obtener los múltiplos de siete comprendidos

entre 7 y 70; para ello, multiplicamos 7 por cada uno de los números naturales comprendidos entre

1 y 10, es decir, repetimos 10 veces la misma operación: multiplicar por 7.

La sintaxis de la orden es la siguiente,

For[expresión inicial,condición,incremento,expresión]

• expresión inicial nos sitúa en las condiciones de comienzo del bucle.

• condición dirá a Mathematica el momento de detener el proceso.

• incremento expresará la forma de aumentar la condición inicial.

• expresión dirá a Mathematica lo que tiene que realizar en cada paso; la expresión puede estar

compuesta de varias sentencias separadas mediante punto y coma.

Para terminar de comprender bien el funcionamiento de esta orden puedes teclear y evaluar los

siguientes ejemplos:

En primer lugar, intentemos escribir los múltiplos de 7 comprendidos entre 7 y 70:

In[18]:=

For[i=1,i<=10,i=i+1,Print[7*i]]7

14

21

28

35

42

49

56

63

70

El segundo ejemplo consiste en hacer a Mathematica sumar de cinco en cinco, comenzando en

5 y terminando en 25.

Page 87: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

4.4 Otros métodos 37

In[19]:=

For[i=5,i<=25,i=i+5,Print[i]]5

10

15

20

25

El tercero genera el seno de 1, el seno de 11 y el seno de 21.

In[20]:=

For[i=1,i<=30,i=i+10,Print[Sin[i]]]Sin[1]

Sin[11]

Sin[21]

Ejercicio Usa el comando For en los siguientes ejemplos:

• Sumar los números naturales entre 400 y 450.

• Sumar los cuadrados de los primeros 10 naturales.

La segunda sentencia es la orden condicional If. Esta sentencia comprueba si se verifica una

condición, después, si la condición es verdadera Mathematica ejecutará una expresión1, y si es falsa

ejecutará otra expresión2. Su sintaxis es la siguiente,

If[condición, expresión1, expresión2]

La expresiones 1 y 2 pueden estar formadas por varias órdenes separadas por punto y coma.

Para familiarizarnos con esta orden vamos a teclear y ejecutar el siguiente ejemplo,

In[21]:=

a=5;

If[a<=0, Print["No existe el logaritmo

neperiano de ", a] , Print["El

logaritmo neperiano de ", a,"vale ",

N[Log[a]]]]

El logaritmo neperiano de 5 vale 1.60944

Ahora puedes probar a cambiar el valor de a para ver como la sentencia If va cambiando sus

resultados.

La última sentencia de programación que vamos a ver es la orden Break[ ] cuya única finalidad

es la de interrumpir un bucle en el momento que se ejecuta y no terminar todos los pasos que faltan

hasta la condición final del bucle. En el siguiente ejemplo se puede comprender rápidamente el uso

de esta orden.

Page 88: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

38 Resolución de ecuaciones

In[22]:=

For[i=1,i<=30,i=i+1,

If[N[Log[i]]<=2,Print[Log[i]],

Print["El logaritmo de ", i, "es mayor

que 2"]; Break[] ]]0

Log[2]

Log[3]

Log[4]

Log[5]

Log[6]

Log[7]

El logaritmo de 8 es mayor que 2

4.4.2. Método de Bisección

En este método sólo es necesario que la función f sea continua en el intervalo [a, b] y verifique

f(a)f(b) < 0. En estas condiciones, el Teorema de Bolzano nos asegura la existencia de una solución

de la ecuación en [a, b]. El siguiente paso consiste en tomar como nueva aproximación, c = a+b2

(el punto medio del segmento [a, b]). Si f(c) = 0, hemos encontrado una solución de la ecuación

y por tanto hemos terminado. Si f(c) ≠ 0, consideramos como nuevo intervalo, o bien [a, c] (si

f(a)f(c) < 0, o bien [c, b] si es que f(c)f (b) < 0 y repetimos la estrategia en el nuevo intervalo.

En este método podemos conocer el error que cometemos en cada una de las aproximaciones. Si

nos damos cuenta, partimos de un intervalo de longitud (b-a) y lo partimos por la mitad quedándonos

con el subintervalo en el que podemos asegurar la existencia de una raíz si ésta no era el punto

medio de [a, b]. El nuevo subintervalo tiene longitud b−a2 y contiene a la solución y a la primera

aproximación. En consecuencia, el error cometido es menor o igual que b−a2 . De la misma forma, el

error cometido en el paso n-ésimo es menor o igual que b−a2n .

A partir de aquí, podemos deducir el número de iteraciones necesarias para obtener una aproxi-

mación con un error o exactitud prefijados. Si notamos por “Ex” a la exactitud prefijada, entonces

para conseguir dicha precisión, el número “n” de iteraciones necesarias deberá satisfacer

b − a2n

< Ex

así,

n = E[Log2

(b − aEx

)]+ 1,

donde E[·] denota la “parte entera” de un número (esto es, el mayor de los enteros que son menores

que el número. Para obtener la “parte entera” de un número que está expresado en notación decimal,

Mathematica tiene el comando Floor.

Para definir un algoritmo de cálculo de la sucesión de aproximaciones de este método mediante

Mathematica , vamos a resolver como ejemplo la ecuación x6 + x − 5 = 0 en el intervalo [0,2].Definiremos en primer lugar la función, el intervalo y la exactitud. Seguidamente calcularemos el

número “P” de iteraciones (o pasos) necesarias, para a continuación llevar a cabo el cálculo de dichas

aproximaciones, que se irán visualizando a medida que se van haciendo los sucesivos cálculos.

Page 89: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

4.4 Otros métodos 39

In[23]:=

Clear["Global`*"]

f[x_]=x6+x-5;

a=0;

b=2;

Ex=10(-6);P=Floor[N[Log[2,(b-a)/Ex]]]+1;

For[i=1,i<=P,i=i+1,

c=(a+b)/2;

If[f[c]==0,

Print["Sol. exacta: ",N[c,10],

"hallada en ",i,"pasos."

];

Break[]

];

If[f[c]f[a]<0,b=c,a=c];Print[i," – aprox: ",N[c,10],

"(error <",N[b-a],")"

]

]

Este comando da lugar a la siguiente respuesta por parte del Mathematica :

1 - aprox: 1. (error <1.)

2 - aprox: 1.5 (error <0.5)

3 - aprox: 1.25 (error <0.25)

4 - aprox: 1.125 (error <0.125)

5 - aprox: 1.1875 (error <0.0625)

6 - aprox: 1.21875 (error <0.03125)

7 - aprox: 1.234375 (error <0.015625)

8 - aprox: 1.2421875 (error <0.0078125)

9 - aprox: 1.24609375 (error <0.00390625)

10 - aprox: 1.248046875 (error <0.00195312)

11 - aprox: 1.247070313 (error <0.000976562)

12 - aprox: 1.246582031 (error <0.000488281)

13 - aprox: 1.246826172 (error <0.000244141)

14 - aprox: 1.246704102 (error <0.00012207)

15 - aprox: 1.246643066 (error <0.0000610352)

16 - aprox: 1.246612549 (error <0.0000305176)

17 - aprox: 1.246627808 (error <0.0000152588)

18 - aprox: 1.246635437 (error <7.62939 10−6)

19 - aprox: 1.246631622 (error <3.8147 10−6)

20 - aprox: 1.246629715 (error <1.90735 10−6)

21 - aprox: 1.246628761 (error <9.53674 10−7)

A continuación, prueba a cambiar la función, los extremos del intervalo (en los cuales dicha

función cambia de signo), así como la exactitud exigida. Intenta también buscar un caso simple en

el que se encuentre la solución exacta en unos pocos pasos. Por último, intenta usar el algoritmo

anterior para calcular 3√

5 con una exactitud de 10−10.

Page 90: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

40 Resolución de ecuaciones

Graba ese algoritmo en disco... más tarde compararemos su efectividad con la del siguiente

método.

4.4.3. Método de Newton-Raphson

El método para la construcción del algoritmo que vamos a estudiar ahora es conocido con el

nombre de “método de Newton-Raphson” debido a sus autores. Este método nos proporciona un

algoritmo para obtener una sucesión de aproximaciones. Para asegurar la convergencia de la suce-

sión (hacia la solución de la ecuación), bajo ciertas condiciones, usaremos el Teorema de Newton-

Raphson, cuyo enunciado daremos más adelante.

La forma de construir los distintos términos de la sucesión

1 2 3 4

-60

-40

-20

20

40

60

de aproximaciones es bastante sencilla y responde a una idea

muy intuitiva. Primero suponemos que f es derivable al menos

dos veces, con primera derivada no nula en el intervalo donde

trabajamos. Notaremos por f ′ y f ′′ a la derivadas primera y se-

gunda de f respectivamente. Una vez fijado un valor inicial x1,

el término x2 se obtiene como el punto de corte de la recta tan-

gente a f en x1 con el eje OX. De la misma forma, obtenemos

xn+1 como el punto de corte de la recta tangente a f en el punto xn con el eje OX.

De lo dicho hasta aquí se deduce:

xn+1 = xn −f(xn)f ′(xn)

.

Para comprender el algoritmo observa el gráfico donde se ve cómo se generan los valores de las

aproximaciones.

El mencionado Teorema de Newton-Raphson, es el siguiente:

Teorema (de Newton-Raphson). Tomemos una función f que admite derivada segunda en el inter-

valo [a, b] y verifica:

1. f(a)f(b) < 0,

2. f ′(x) ≠ 0, para todo x ∈ [a, b],

3. f ′′(x) no cambia de signo en [a, b].

Entonces, tomando como primera aproximación el extremo del intervalo [a, b] donde f y f ′′ tienen

el mismo signo, la sucesión de valores xn del método de Newton-Raphson es convergente hacia la

única solución de la ecuación f(x) = 0 en [a, b].Una vez que tenemos asegurada la convergencia de la sucesión hacia la solución de la ecuación,

deberíamos decidir la precisión. Sin embargo, veremos que el método es tan rápido en su conver-

gencia que por defecto haremos siempre 10 iteraciones. Otra posibilidad sería detener el cálculo de

cuando el valor absoluto de la diferencia entre xn y xn+1 sea menor que la precisión buscada (lo

cual no implica necesariamente que el error cometido sea menor que la precisión).

Utilizaremos ahora Mathematica para generar la sucesión de aproximaciones. Resolvamos de

nuevo el ejemplo de x3 − 5 = 0 en el intervalo [1,3].Podemos comprobar, dibujando las gráficas de f(x) = x3 − 5, f ′(x) y f ′′(x) en el intervalo

[1,3], que estamos en las condiciones bajo las cuales el Teorema de Newton-Raphson nos asegura

Page 91: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

4.4 Otros métodos 41

convergencia. Las gráficas se pueden obtener de la forma que aparece en la página siguiente (ojo,

para escribir la “prima” en f ′[x], debemos usar la tecla que está al lado del 0 en el teclado).

In[24]:=

Clear["Global`*"]

f[x_]=x3-5;

Plot[f[x],{x,1, 3}];

Plot[f’[x],{x,1, 3}];

Plot[f”[x],{x,1, 3}]

1.5 2 2.5 3

5

10

15

20

Out[24]= - Graphics -

1.5 2 2.5 3

5

10

15

20

25

Out[25]= - Graphics -

1.5 2 2.5 3

8

10

12

14

16

18

Out[26]= - Graphics -

Page 92: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

42 Resolución de ecuaciones

A continuación, generaremos los términos de la sucesión de aproximaciones mediante el si-

guiente algoritmo. Comenzaremos por definir la función f, y el valor de la primera aproximación.

Inmediatamente después definimos el algoritmo del método de Newton-Raphson, e iremos visuali-

zando las sucesivas aproximaciones. Como dijimos, pondremos un límite de 10 iteraciones, aunque

usando mayor precisión decimal puedes probar con un número mayor de iteraciones.

In[27]:=

Clear["Global`*"]

f[x_]=x3-5;

y=3;

For[i=1,i<=10,i=i+1,

y1=N[y-f[y]/f’[y],20];

Print[i, aprox: ",y1];

y=y1

]

Observarás al ejecutar este grupo de comandos que ya en la sexta iteración se han “estabilizado”

veinte cifras decimales de la solución. Prueba a continuación a cambiar a un mayor número de de-

cimales en las aproximaciones. Si es necesario, aumenta también el número de iteraciones. Observa

qué rápidamente se “estabilizan” los decimales de las iteraciones. Sí, como puedes ver, el método

de Newton-Raphson es muy rápido.

4.5. El comando FindRoot

El método que hemos visto en la sección anterior se puede usar directamente con la orden

FindRoot.

FindRoot[función de x,{x,aproximación inicial}]

La aproximación inicial debería ser un punto que este “más o menos” cerca del cero de la función que

queremos buscar. En cualquier caso hay que tener en cuenta que aún escogiendo puntos iniciales

cercanos el resultado puede ser completamente distinto.

Por ejemplo,

In[28]:=

FindRoot[x3-5,{x,3}]

Out[28]=

{x->1.70998}

El comando FindRoot también se puede usar con sistemas de ecuaciones. Sólo hay que escribir

las ecuaciones agrupadas entre llaves y dar un punto inicial para cada variable:

FindRoot[{eq1,eq2,…},{x,x0},{y,y0},…]

Page 93: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

4.5 El comando FindRoot 43

Ejercicios 1.

1. Considérese la ecuación

e(x2+x+1) − ex3 − 2 = 0.

Calcular programando los métodos de bisección y de Newton-Raphson, la solución de dicha

ecuación en el intervalo [−0,3,1] con exactitud 10−10. Encontrar la solución mediante la orden

FindRoot y comparar los resultados.

2. Dada la ecuación

tan(x) = 1x

buscar la solución que posee en el intervalo [0,π2

], usando los métodos estudiados.

Ejercicio 2. Encontrar una solución del siguiente sistema de ecuaciones “cerca” de (0,0):senx cosy = 14

xy = 1

Page 94: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

CAPÍTULO 5

Extremos de funciones de una variable

5.1. Continuidad y límites

Básicamente todas las funciones que han aparecido hasta ahora eran continuas. En el caso de

que no lo fueran Mathematica tampoco parece haber tenido demasiados problemas. Cuando hemos

dibujado la gráfica de la función tangente, Mathematica ha dibujado una asíntota vertical en los

puntos donde el coseno valía cero.

En el caso de que queramos estudiar la continuidad de una función en un punto a, tenemos que

calcular lımx→a

f(x). Mathematica puede estudiar límites (también laterales). La orden es la siguiente:

Limit[expresión,variable->a]

Limit[expresión,variable->a,Direction->1]

Limit[expresión,variable->a,Direction->-1]

La primera calcula el límite de la expresión cuando la variable tiende a a. Las siguientes calculan el

límite por la izquierda y la derecha respectivamente. Por ejemplo,

In[1]:=

Limit[n

n+ 1,n->+∞]

Out[1]=

1

In[2]:=

Limit[Tan[x],x->Pi/2,Direction->1]

Out[2]=

Page 95: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

5.2 Máximos y mínimos relativos 45

Cuando la función oscila entre dos valores Mathematica intenta dar el intervalo aunque no exista el

límite.

In[3]:=

Limit[Sin[1/x],x->0]

Out[3]=

Interval[{-1,1}]

5.2. Máximos y mínimos relativos

Esencialmente, lo que haremos para localizar los extremos relativos de una función f será en-

contrar soluciones de la ecuación f ′(x) = 0. Para solucionar dicha ecuación, podemos usar (cuando

sea posible por la simplicidad de la ecuación) comandos directos como Solve ó NSolve, o bien

usaremos el comando FindRoot cuando las soluciones no se puedan obtener directamente.

Comencemos buscando los extremos relativos de la función polinómica f(x) = x5+x4−11x3−9x2 + 18x + 10 en el intervalo [−4,4]. Para ello, definiremos convenientemente la función f , y

dibujaremos su gráfica entre −4 y 4.

In[4]:=

Clear["Global`*"]

f[x_]= x5+x4-11x3-9x2+18x+10;

Plot[f[x],{x,-4,4}]

-4 -2 2 4

-100

-50

50

100

Out[4]= - Graphics -

A simple vista observaremos que hay:

un máximo relativo entre −3 y −2,

un mínimo relativo entre −2 y −1,

un máximo relativo entre 0 y 1,

un mínimo relativo entre 2 y 3.

En cualquier caso, dada la simplicidad de esta función (polinómica de grado bajo), es posible calcular

directamente los ceros de la derivada con el comando

Page 96: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

46 Extremos de funciones de una variable

In[5]:=

NSolve[f’[x]==0,x]

Como vemos, aparecen cuatro soluciones que se corresponden con los extremos que habíamos

localizado a simple vista.

Sin embargo, no todas las funciones permiten calcular de un modo simple las soluciones de la

ecuación f ′(x) = 0. Por ejemplo, consideremos ahora la función f(x) = sen(x)+ ex en el intervalo

[−7,0]. Pintémosla igual que antes, sustituyendo la antigua función por la nueva. De nuevo, a simple

vista se observa que hay:

un máximo relativo cerca de −5,

un mínimo relativo cerca de −2

Sin embargo, ahora no funciona satisfactoriamente el comando NSolve (inténtalo). Optaremos por

aplicar el método de Newton-Raphson (mediante el comando FindRoot) para encontrar las raíces

de la derivada de f . Recordemos que en el comando FindRoot es necesario introducir una “primera

aproximación” de la solución, que servirá para iniciar el proceso iterativo. En este caso concreto,

dada la situación aproximada de los extremos, probaremos a iniciar el método desde −5 y también

desde −2. Concretamente, escribiremos el comando

In[6]:=

FindRoot[f’[x],{x,-5}]

FindRoot[f’[x],{x,-2}]

El programa nos da entonces una buena aproximación de los puntos donde la función alcanza

los extremos observados.

A continuación veremos un caso en el que la gráfica diseñada por el programa nos puede llevar

a engaño. Descubriremos el error gracias al “test de la segunda derivada”. Sea f(x) = x2 − 10x −40+ 1

10x2 − 100x + 251, y pintémosla en el intervalo [−15,15].

Aparentemente, hay un mínimo cerca de 5. Si buscamos raíces de la derivada ejecutando el

comando FindRoot con dato inicial 5, obtenemos que precisamente para x = 5 la derivada se

anula (se podía haber comprobado antes pidiendo al Mathematica el valor de f ′(5)). A la vista de la

gráfica, en x = 5 parece haber un mínimo de la función f . Sin embargo, pidámosle al Mathematica

que calcule el valor de la segunda derivada de f en 5. Obtendremos que f ′′(5) = −18 < 0. La

segunda derivada es negativa y por tanto en x = 5 tiene que haber un máximo.

Sería conveniente ver “más de cerca” lo que ocurre cerca de 5. Prueba a pintar la función en el

intervalo [4,6]. Ahora parece haber un mínimo cerca de 4,5 y otro cerca de 5,5, y efectivamente, un

máximo en 5... ¿cómo podemos asegurar que cerca de los extremos que ahora vemos no vuelven a

ocurrir nuevas “oscilaciones ocultas” como la que antes no veíamos?...

Page 97: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

CAPÍTULO 6

Fórmula de Taylor

Seguro que alguna vez te has preguntado cómo pueden una calculadora o un ordenador usar las

funciones seno, coseno, exponencial, logaritmo... que no tienen una definición fácil, y que se basan

en números “esencialmente” irracionales como π o e.En esta práctica trataremos de entender cómo se pueden construir funciones conociendo única-

mente las funciones suma (resta), producto (división) y potenciación. Necesitaremos además com-

prender el concepto de límite y la derivación de funciones. Se trata de “sustituir” funciones com-

plicadas por otras mas sencillas de calcular (que en este caso serán polinomios), controlando la

“pérdida” que se produce.

El primer ejemplo puede ser “sustituir” una función por su recta tangente (si recuerdas, esto

nos sirvió para encontrar ceros de funciones mediante el método de Newton-Raphson): dada una

función f derivable en un punto a, la recta y = f(a)+ f ′(a)(x − a) pasa por el punto (a, f (a))y tiene la misma pendiente que la función f . En cierto sentido, lo que hemos hecho es encontrar

una función más sencilla (una recta, o sea, un polinomio de grado uno) que se parece a la función

de partida (coinciden el valor de la función y el de la derivada). ¿Hasta que punto puedo “cambiar”

una función por su recta tangente? Si la función oscila demasiado, la aproximación no será buena,

como por ejemplo en la función coseno

En el gráfico podemos ver que en cuanto nos alejamos un

-3 -2 -1 1 2 3

-1

-0.5

0.5

1

poco del punto de tangencia (en este caso el 0), la función co-

seno y su tangente no se parecen nada. La forma de mejorar la

aproximación será aumentar el grado del polinomio que usa-

mos, y el problema es, fijado un grado, qué polinomio de grado

menor o igual al fijado es el que más se parece a la función. El

criterio con el que elegiremos el polinomio será hacer coincidir

las sucesivas derivadas. Por ejemplo, si buscamos un polinomio

P de grado dos que aproxime a una función dos veces deriva-

ble, f , vamos a exigir que P(a) = f(a), P ′(a) = f ′(a) y P ′′(a) = f ′′(a). Con estas tres condiciones

estamos en disposición de calcular los coeficientes de A(x − a)2 + B(x − a) + C . Si lo hacemos,

Page 98: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

48 Fórmula de Taylor

veremos que dicho polinomio “aproximante” de grado 2 es el siguiente (deriva el polinomio P y

verás como sus derivadas hasta orden 2 coinciden con las de la función f )

P(x) = f(a)+ f ′(a)(x − a)+ f′′(a)2!

(x − a)2

Veamos qué pasa con una función concreta. Consideremos la función f(x) = cos(x) y vamos a

calcular el polinomio “aproximante” en 0. En este caso f(0) = 1, f ′(0) = 0, f ′′(0) = −1. Por tanto

el polinomio “de aproximación” de grado 2 es el siguiente:

P2(x) = f(0)+ f ′(0) x +f ′′(0)

2!x2

= 1− 12x2

Si dibujamos ahora las funciones f , P1 y P2 podremos comprobar qué es lo que ocurre:

In[1]:=

Clear["GlobalÈ*"]

f[x_]=Cos[x];

Plot[{f[x],1-(x2)/2},{x,-4,4},

PlotStyle->{RGBColor[1,0,0],RGBColor[0,0,1]}]

-4 -2 2 4

-4

-3

-2

-1

1

Out[1]= - Graphics -

El polinomio de orden 2 se parece un poco más a la función coseno que la recta tangente, pero

de todas formas, si aumentamos el dominio (prueba por ejemplo x ∈ [−10,10]) se puede ver que

el “parecido” se pierde al alejarnos del origen. El problema es que estamos calculando polinomios

de grado bajo.

Todo lo que hemos hecho hasta ahora se basa en un resultado teórico ya conocido: si I es un

intervalo, a,x ∈ I y f : I → R es una función n-veces derivable, se define el polinomio de Taylor de

orden n en el punto a como

Pn(x) = f(a)+ f ′(a) (x − a)+f ′′(a)

2!(x − a)2 + · · ·

· · · + f(n)(a)n!

(x − a)n

Teorema (Fórmula de Taylor). Si f : I → R es una función (n+ 1)-veces derivable, entonces existe

c entre a y x tal que

f(x)− Pn(x) =f (n+1)(c)(n+ 1)!

(x − a)n+1.

Page 99: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

49

El teorema anterior nos permite incluso acotar el error que estamos cometiendo: basta acotar el

llamado resto de Taylor,f (n+1)(c)(n+ 1)!

, y para ello, acotaremos la derivada de orden n+1 en el intervalo

considerado. Volvamos al ejemplo anterior: Si trabajamos en el intervalo [−π,π] y queremos usar

P2 en lugar de la función coseno, sabemos que el punto c que nos da el error también está en ese

intervalo. Vamos a calcular el valor máximo que puede alcanzar:

| cos(x)− P2(x)| = |f ′′′(c)

3!x3|

=∣∣∣∣sen(c)

3!x3∣∣∣∣

≤ 16π3

La última acotación se basa en que el valor máximo que alcanza la tercera derivada, sen(x), es 1, y

que x en valor absoluto vale a lo sumo π .

Mathematica tiene una orden que permite calcular directamente el polinomio de Taylor centrado

en un punto a. Se trata del comando Series, cuya sintaxis es

Series[función,{x,a,grado}]

Volviendo al ejemplo anterior, si pruebas

In[2]:=

Series[Cos[x],{x,0,2}]

Out[2]=

1− x2

2+ O[x]3

verás como, además del desarrollo del polinomio, aparece al final el orden de error (O[x]3); re-

presenta que los términos que faltan son todos de grado mayor o igual que tres. Si quieres usar

directamente el resultado (sin que aparezca el orden del error) puedes utilizar el comando

Normal[expresión]

Este comando simplemente elimina el orden de error de la expresión que obtenemos con el

comando Series, quedando sólo el polinomio de Taylor.

En nuestro ejemplo, para comparar la función coseno y el correspondiente polinomio de Taylor

de grado 4 en cero haremos lo siguiente:

Page 100: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

50 Fórmula de Taylor

In[3]:=

Clear[“GlobalÈ*”];

f[x_]=Cos[x];

g[x_]=Normal[Series[f[x],{x,0,4}]];

Plot[{f[x],g[x]},{x,-Pi,Pi},

PlotStyle->{RGBColor[1,0,0],RGBColor[0,0,1]}]

-3 -2 -1 1 2 3

-1

-0.5

0.5

1

Out[3]= - Graphics -

Ya habíamos visto la orden Table. Con ella podemos calcular de una vez el desarrollo de Taylor

de varios órdenes y comprobar como se va pareciendo cada vez más a la función. Si escribes

In[4]:=

Table[Series[Cos[x],{x,0,n}],{n,1,10}]

el resultado son todos los desarrollos de la función coseno centrados en 0 y de orden 1,2,…,10. Si

queremos dibujarlos tenemos que quitar los errores y usar la orden Plot de la lista que acabamos

de hacer. En lo que sigue a será el punto donde centramos el desarrollo de Taylor, [b, c] el intervalo

donde queremos representarlo, la variable orden será el grado hasta el que queremos llegar y f la

función que vamos a desarrollar:

In[5]:=

Clear[“GlobalÈ*”];

f[x_]=Cos[x];

a=0;

b=-2Pi;

c=2Pi;

orden=10;

Plot[Evaluate[

Table[Normal[Series[f[x],{x,a,n}]],

{n,0,orden}]],{x,b,c}]

Plot[f[x],{x,b,c},PlotStyle->RGBColor[1,0,0]]

Show[ %, % %]

La orden Evaluate[Table...] que hemos escrito calcula los desarrollos antes de que hagamos el

dibujo. Prueba a cambiar la función, el punto donde desarrollamos, el intervalo donde se represen-

ta...

Page 101: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

51

Hasta aquí hemos visto como comparar la gráfica de una función con la de su polinomio de

Taylor. La orden Animate permite dibujar la gráfica de una función en función de un parámetro

para después poder reproducirlo como una secuencia de fotogramas (una “película”). Un ejemplo

sencillo de como funciona sería el siguiente:

In[6]:=

Animate[Plot[Sin[x*t],{x,0,2

Pi}],{t,1,10}]

In[7]:=

Clear[“GlobalÈ*”];

f[x_]=Cos[x]+Sin[x];

a=0;

b=-2Pi;

c=2Pi;

orden=30;

Animate[Plot[Evaluate[

{f[x],Normal[Series[f[x],{x,a,n}]]},

{x,b,c},

PlotStyle->{RGBColor[1,0,0],

RGBColor[0,0,1]},PlotRange->{-3,3}]],

{n,1,orden,1}]

Cuando se ejecuta la orden anterior, Mathematica dibuja la función y los polinomios de Taylor

de orden 1 hasta 30. Prueba a pinchar dos veces en la última gráfica que ha aparecido.

Ejercicio 1. Aproxima la función exponencial (f(x) = ex) mediante su polinomio de Taylor de grado

4 centrado en 0 en el intervalo [−20,20]. Prueba a aumentar el grado y a usar intervalos cada vez

más grandes.

Ejercicio 2. Acota el error que estás cometiendo al aproximar√e = e 1

2 por el valor obtenido usando

el polinomio de Taylor de orden 4 centrado en cero.

Ejercicio 3. Lo mismo que los dos ejercicios anteriores para la función logaritmo neperiano (cen-

trando en a = 1) y para ln(2).

Page 102: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

CAPÍTULO 7

Integración

7.1. Integrales definidas e indefinidas

En esta práctica aprenderemos a calcular integrales con el programa Mathematica , tanto inte-

grales indefinidas (es decir, primitivas) como integrales definidas. El objetivo es poder calcular áreas

entre curvas, áreas y volúmenes de sólidos de revolución, longitudes de curvas... sin que el cálculo

de primitivas sea el principal escollo.

Básicamente hay dos comandos para integrar funciones en Mathematica : Integrate

y NIntegrate. Como siempre también puedes usar la paleta para escribir las integrales.

La primera de las órdenes mencionadas calcula primitivas o integrales definidas en un

intervalo [a, b]:

Integrate[función,variable]

Integrate[función,{variable,a,b}]

Por ejemplo,

In[1]:=

Integrate[Cos[x],x]

Out[1]=

Sin[x]

In[2]:=∫Cos[x]dx

Out[2]=

Sin[x]

Page 103: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

7.1 Integrales definidas e indefinidas 53

Mathematica puede obtener prácticamente cualquier primitiva calculable por métodos elemen-

tales (integración por partes, integración de funciones racionales, trigonométricas, cambio de varia-

ble...). Por otro lado, sabemos que toda función continua admite primitiva, pero esta primitiva no

siempre puede calcularse (en el sentido de tener una expresión de la primitiva en términos de funcio-

nes “elementales”). Por eso, al integrar algunas funciones en el resultado que obtenemos aparecen

funciones que no conocemos:

In[3]:=∫Sin[x]

xdx

Out[3]=

SinIntegral[x]

En este caso, aunque no conozcamos la función que nos aparece, podemos obtener su valor en un

punto:

In[4]:=

N[SinIntegral[2],7]

Out[4]=

1.605413

Para obtener un valor numérico del resultado se puede usar el comando N:

N[Integrate[función,{x,a,b}]]

Puede pasar que Mathematica no sepa calcular la primitiva de una función:

In[5]:=∫Exp[x3 + x]dx

Out[5]=∫Ex

3+xdx

En este caso siempre podemos intentar aproximar el valor de la integral. Esto es precisamente lo

que hace el comando NIntegrate

NIntegrate[función,{variable,a,b}]

En el ejemplo anterior,

In[6]:=

NIntegrate[Exp[x3+x],{x,0,2}]

Out[6]=

1846.36

Page 104: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

54 Integración

Observa en este ejemplo que no es lo mismo usar el comando NIntegrate[...] que N[Integrate[...]].

En el segundo caso Mathematica tiene que saber calcular una primitiva para después calcular cuan-

to vale, mientras que el primer comando intenta aproximar el valor de la integral sin calcular una

primitiva.

Curiosamente, con funciones a las que podemos calcular fácilmente una primitiva, el comando

NIntegrate no siempre funciona bien; tecleando

In[7]:=

NIntegrate[Cos[x],{x,0,Pi}]

te darás cuenta que Mathematica “protesta”. El programa intenta calcular una aproximación con

métodos numéricos; estos métodos pueden tener problemas cuando la función oscila mucho. En

estos casos pueden aparecer respuestas erróneas.

Ejercicios. Calcular:

1. área limitada por las curvas y = x2 e y2 = 8x

2. área limitada por y = xe−x2

, el eje OX, la ordenada en el punto x = 0 y la ordenada en el

máximo.

3. área de la figura limitada por la curva y = x3 − x2 y el eje OX.

4. área comprendida entre la curva y = tg(x), el eje OX y la recta x = π/3.

5. área del recinto limitado por las rectas x = 0, x = 1, y = 0 y la gráfica de la función f : R→ R

definida por

f(x) = 1(1+ x2)2

.

7.2. Longitudes, áreas y volúmenes

Algunas de las aplicaciones de la integral que se han visto en las clases teóricas son calcular

longitudes de curvas, y volúmenes y superficies de cuerpos de revolución.

• Volúmenes de sólidos de revolución:

Sea f : [a, b] → R una función continua; el volumen del sólido generado al girar el área bajo la

curva y = f(x) respecto del eje OX es

V = π∫ baf(x)2 dx

y el volumen del sólido generado al girar dicha área respecto al eje OY es

V = 2π∫ baxf(x)dx.

• Longitudes de curvas:

Sea f una función de clase 1 en el intervalo [a, b]. La longitud del arco de la curva y = f(x)entre x = a y x = b es

l =∫ ba

√1+ [f ′(x)]2 dx.

Page 105: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

7.3 Integrales impropias. 55

• áreas de sólidos de revolución:

Sea f : [a, b] → R una función de clase 1; el área de la superficie generada haciendo girar

alrededor del eje OX el arco de curva y = f(x) en [a, b] es igual a

S = 2π∫ baf(x)

√1+ [f ′(x)]2 dx.

Ejercicio 1. Calcular el volumen del sólido generado al rotar respecto al eje OX las siguiente curvas:

1. y = sec(x), x ∈ [0, π3 ]

2. y =√

cos(x), x ∈ [0, π2 ]

3. y = 9− x2

4. y = ex, x ∈ [0, ln 3]

Ejercicio 2. Calcular el volumen del sólido generado al rotar respecto al eje OY las siguiente curvas:

1. y = 1/x, x ∈ [1,3]

2. y = 11+ x2

, x ∈ [0,1]

3. y = ex2 , x ∈ [1,√

3]

Ejercicio 3. Calcular la longitud de las siguientes curvas:

1. y = 13(x

2 + 2)3/2, x ∈ [0,1]

2. y = 12(e

x + e−x), x ∈ [0,3]

Ejercicio 4.

1. Calcular la superficie de una esfera de radio R.

2. Calcular la superficie de la figura que se obtiene al girar la función y = tg(x), x ∈ [0, π/4]alrededor del eje OX.

7.3. Integrales impropias.

Como recordarás de las clases teóricas, la integral que en principio se define para funciones

continuas en intervalos cerrados y acotados, puede extenderse a funciones continuas definidas en

intervalos de longitud infinita, y a funciones que no están acotadas en un intervalo de longitud

finita. Es lo que se conoce como Integración impropia. Con el programa Mathematica , el trabajar

con integrales impropias no supone ningún problema, ya que las trata exactamente igual que las

integrales de funciones continuas en intervalos cerrados y acotados.

Con la misma orden Integrate se pueden calcular integrales impropias. Simplemente prueba

con una función como f(x) = 1√1− x2

en el intervalo [−1,1] o con la función g(x) = e−x2

en

[0,+∞[ (en Mathematica para escribir infinito usamos +Infinity o -Infinity, o la paleta). En este

segundo caso, escribiríamos

Page 106: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

56 Integración

In[8]:=∫ +∞0

Exp[−x2]dxOut[8]=√

π2

Intenta calcular las integrales anteriores en el intervalo dado y después intenta calcular una

primitiva de esas funciones. Como verás, la primitiva de la primera función ya la conocías, en cambio

en la primitiva de la segunda aparece una función que, supongo, no conocías.

También podemos usar las fórmulas para calcular longitudes, áreas y volúmenes con integrales

impropias.

Ejercicio. Calcular:

1. La integral de f(x) = 1x2

con x ∈ [1,+∞].

2. El volumen y la superficie lateral del sólido obtenido al girar la gráfica de la anterior función

respecto del eje OX.

3. Ídem a los dos anteriores con g(x) = 1x

con x ∈ [1,+∞].

Page 107: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

CAPÍTULO 8

Gráficos en 3D

8.1. El comando Plot3D

En el segundo capítulo pudimos comprobar que Mathematica es una herramienta muy potente

para “dibujar” gráficas de funciones de una variable. Ahora aprenderemos a representar gráfica-

mente funciones reales de dos variables. La principal aplicación de la representación gráfica de una

función de dos variables será dar una idea aproximada de la variación de dicha función, lo que será

especialmente útil para buscar extremos.

Al igual que para funciones de una variable, suele ser cómodo asignarle un nombre (normalmente

f , g, h…). Para definir la función sen(xy) haremos lo siguiente:

In[1]:=

f[x_,y_]=Sin[x*y]

Out[1]=

Sin[x y]

y usaremos f de igual forma a como lo hacíamos con funciones de una variable.

El comando que sirve para representar gráficas de funciones de dos variables es

Plot3D[función de x,y, {x,xmin,xmax},{y,ymin,ymax}]

Veamos un ejemplo:

Page 108: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

58 Gráficos en 3D

In[2]:=

Plot3D[f[x,y],

{x,-Pi,Pi},{y,-Pi,Pi}]

-2

0

2

-2

0

2

-1

-0.5

0

0.5

1

-2

0

2

Out[2]= - SurfaceGraphics -

8.1.1. Opciones del comando Plot3D

Mesh->True/False

Se dibuja (True) o no (False) la retícula o malla sobre la que se construye la gráfica. En el ejemplo

anterior:

In[3]:=

Plot3D[f[x,y],{x,-Pi,Pi},

{y,-Pi,Pi},Mesh->False]

Shading->True/False

Se colorea (True) o no (False) la malla anterior. Si unimos las opciones Mesh->False y Shading->False,

no aparecerá gráfico alguno. Un ejemplo:

In[4]:=

Plot3D[f[x,y],{x,-Pi,Pi},

{y,-Pi,Pi},Shading->False]

PlotPoints->número de puntos

Representa el número de puntos que usará Mathematica para dibujar la gráfica. Un núme-

ro muy alto producirá un gráfico más “suave”, pero aumentará considerablemente el tiempo

empleado por Mathematica para realizarlo.

ViewPoint

Establece el punto de vista desde el que se dibujará la gráfica. La forma de usar esta opción será

“pegarlo” desde una ventana que automatiza el proceso. A dicha ventana se accede a través

del menú Input, submenú 3D ViewPoint Selector.

Page 109: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

8.2 Gráficos de contorno. Curvas de nivel. 59

Ejercicio. Prueba las opciones anteriores con las siguientes funciones de dos variables:

1. f(x,y) = (x2 +y4)e1−x2−y2con x,y ∈ [−2,2].

2. g(x,y) = sen(x − 2xy) con x ∈ [0, π], y ∈ [−π,π].

3. h(x,y) = xyx2 +y2

con x,y ∈ [−1,1].

8.2. Gráficos de contorno. Curvas de nivel.

Una forma cómoda de ver la gráfica de una función es mediante curvas de nivel. Se trata de

representar en el plano una figura tridimensional como es la gráfica de una función de dos varia-

bles, permitiendo ver las zonas de crecimiento y decrecimiento de dicha función. El comando que

representa funciones de dos variables mediante curvas de nivel es

ContourPlot[función de x,y,{x,xmin,xmax},{y,ymin,ymax}]

Por ejemplo,

In[5]:=

ContourPlot[(3 x2+ y2)

Exp[1-x2-y2],

{x,-2,2},{y,-2,2}]

-2 -1 0 1 2

-2

-1

0

1

2

Out[5]= - ContourGraphics -

Entre otras, las opciones del comando ContourPlot son:

ContourShading->False

Dibuja sólo las curvas de nivel y no utiliza la escala de grises. Ejemplo:

In[6]:=

ContourPlot[(3 x2+ y2)Exp[1-x2-y2],

{x,-2,2},{y,-2,2},ContourShading->False]

Page 110: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

60 Gráficos en 3D

PlotPoints->número de puntos

Representa el número de puntos que usará Mathematica para dibujar la gráfica. Al igual que

en Plot3D, un número muy alto producirá un gráfico más “suave”, pero aumentará conside-

rablemente el tiempo empleado por Mathematica para realizarlo.

Ejercicio 1. Representa los gráficos de contorno de las funciones del ejercicio anterior, comparando

la información que obtienes de una y otra forma.

Ejercicio 2. Consideremos la función f : [−2,2]×[−2,2]→ R dada por f(x,y) = (x2+y4)e1−x2−y2.

Utiliza los comandos anteriores para obtener información sobre la ubicación de sus posibles extre-

mos relativos.

8.3. Gráficos paramétricos. Curvas y superficies.

Ya aprendimos a representar gráficamente curvas planas expresadas en forma paramétrica. Aho-

ra veremos como representar curvas alabeadas (esto es, curvas en el espacio) y superficies paramé-

tricas. El comando de Mathematica para ello es ParametricPlot3D.

Cuando tenemos las ecuaciones paramétricas de una curva en el espacio

x = x(t), y = y(t), z = z(t) con t ∈ [a, b]

usamos la orden

ParametricPlot3D[{x(t),y(t), z(t)},{t,a,b}]

Por ejemplo, para dibujar una hélice:

In[7]:=

ParametricPlot3D[{Sin[t],Cos[t],t/3},{t,0,5Pi}]

-1 -0.50 0.5

1

-1-0.5

00.5

1

0

2

4

-1-0.5

00.5

1

Out[7]= - Graphics3D -

Page 111: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

8.3 Gráficos paramétricos. Curvas y superficies. 61

Si lo que tenemos son las ecuaciones paramétricas de una superficie

x = x(u,v), y = y(u,v), z = z(u,v) con u ∈ [a, b] y v ∈ [c, d]

se usa

ParametricPlot3D[{x(u,v),y(u,v), z(u,v)},{u,a,b},{v,c,d}]

Dibujemos una esfera:

In[8]:=

ParametricPlot3D[{Cos[u]Cos[v],

Sin[u]Cos[v],Sin[v]},

{u,0,2 Pi},{v,-Pi/2,Pi/2}]

-1

-0.5

0

0.5

1

-1

-0.5

0

0.5

1

-1

-0.5

0

0.5

1

-1

-0.5

0

0.5

1

-1

-0.5

0

0.5

1

Out[8]= - Graphics3D -

8.3.1. Superficies de revolución

En el caso particular en que la superficie que queremos representar se obtiene girando una curva

respecto a un eje se puede usar el paquete SurfaceOfRevolution. Para cargarlo se escribe

In[9]:=

<<Graphics`SurfaceOfRevolution`

y desde este momento está disponible la orden

SurfaceOfRevolution[f(x),{x,a,b}]

SurfaceOfRevolution[{f(t),g(t)},{t,a,b}]

SurfaceOfRevolution[{f(t),g(t),h(t)},{t,a,b}]

La primera orden dibuja la superficie de revolución obtenida al girar la curva f en el plano XZentre a y b. La segunda y la tercera funcionan análogamente pero estamos dando una curva en el

plano XZ (segundo caso) o en el espacio (último caso). En cualquier caso el giro se hace respecto al

eje Z . Si se quiere girar respecto a la recta que une el origen con el punto {x1,x2,x3} se puede utilizar

la siguiente opción:

Page 112: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

62 Gráficos en 3D

SurfaceOfRevolution[f(t),{t,a,b},

RevolutionAxis->{x1,x2,x3}]

Veamos algunos ejemplos. Un cono se consigue fácilmente girando una recta:

In[10]:=

SurfaceOfRevolution[2 x,{x,-2,2}]

-2-1

01

2

-2-1

01

2

-4

-2

0

2

4-2

-10

12

Out[10]= - Graphics3D -

Si quisiéramos girar respecto a la bisectriz del primer octante, o sea, alrededor de la recta que pasa

por el vector (1,1,1):

In[11]:=

SurfaceOfRevolution[2x,{x,-2,2},

RevolutionAxis->{1,1,1}]

-4-2

0

2

4

-4

-2

0

2

4

-4

-2

0

2

4

-4-2

0

2

4

-4

-2

0

2

4

Out[11]= - Graphics3D -

Page 113: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

8.3 Gráficos paramétricos. Curvas y superficies. 63

Dibujar una esfera o un elipsoide es ahora simplemente cuestión de girar media circunferencia

o media elipse:

In[12]:=

SurfaceOfRevolution[{Cos[x],Sin[x]},{x,-Pi,Pi},

AspectRatio->1]

-1

-0.5

0

0.5

1

-1

-0.5

0

0.5

1

-1

-0.5

0

0.5

1

-1

-0.5

0

0.5

1

-1

-0.5

0

0.5

1

Out[12]= - Graphics3D -

In[13]:=

SurfaceOfRevolution[{5Cos[x],3Sin[x]},

{x,-Pi,Pi},AspectRatio->1]

-5

-2.5

0

2.5

5-5

-2.5

0

2.5

5

-2

0

2

-5

-2.5

0

2.5

5

Out[13]= - Graphics3D -

Por último comentar que, como habrás visto en el último ejemplo, las mayoría de las opciones del

comando Plot3D siguen siendo válidas.

Ejercicio 1. Representar las siguientes curvas y superficies:

1. x(t) = sen(t)

y(t) = sen(2t)

z(t) = t/5con t ∈ [0,5π].

Page 114: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

64 Gráficos en 3D

2. x(u,v) = cos(u)(3+ cos(v))

y(u,v) = sen(u)(3+ cos(v))

z(u,v) = sen(v)

con u,v ∈ [0,2π].

3. x(u,v) = senu

y(u,v) = senv

z(u,v) = vcon u ∈ [−π,π] y v ∈ [0,5].

Ejercicio 2. ¿Cómo se puede dibujar un cilindro? ¿Y un cono truncado?.

Ejercicio 3. A la figura siguiente, obtenida al girar una circunferencia, se la llama toro. Intenta

dibujarla.

-2

0

2

-2

0

2

-1-0.5

00.51

-2

0

2

Page 115: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

CAPÍTULO 9

Extremos relativos y condicionados

En esta práctica veremos cómo calcular extremos relativos y condicionados de funciones de

varias variables. Se trata de usar el programa Mathematica como apoyo para realizar los cálculos

necesarios en los métodos de optimización vistos en las clases teóricas.

9.1. Derivadas parciales

El primer objetivo será aprender a calcular derivadas parciales, gradientes, hessianos...

de funciones de varias variables, y aplicar todo ello al cálculo de extremos relativos y

condicionados.

Ya conocemos de prácticas anteriores la forma de calcular derivadas de funciones de

una variable: mediante el comando D[f[x],x,n] obtenemos la derivada n-ésima de la

función f . Para funciones escalares de varias variables (esto es, funciones que “salen” de

Rn y “llegan” a R), el comando

D[f[x,y,…],{x,n1},{y,n2},…]

nos devuelve la derivada parcial de f respecto de x n1-veces, respecto de y n2-veces…pudiendo

omitirse el número de veces si éste es 1. También puede usarse la paleta. En la figura tie-

nes los símbolos que nos permiten escribir derivadas de cualquier orden y derivadas de

segundo orden.

Calculemos como ejemplo∂3f∂x2∂y

y∂2f∂x∂y

, donde f(x,y) = senx cosy2:

Page 116: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

66 Extremos relativos y condicionados

In[1]:=

f[x_,y_]=Sin[x] Cos[y2];

∂x,x,yf[x,y]∂x,yf[x,y]

Out[1]=

2 y Sin[x]Sin[y2]

-2 y Cos[x] Sin[y2]

Evidentemente esta no es la forma más cómoda de calcular una derivada parcial de orden 15. Para

eso es mejor utilizar D[f[x,y],{x,8},{y,7}].

Por ejemplo para calcular el gradiente de una función de varias variables basta construir el vector

formado por las derivadas parciales primeras de la función respecto de todas las variables:

In[2]:=

J[x_,y_]={∂xf[x,y],∂yf[x,y]}Out[2]=

{Cos[x]Cos[y2], -2 y Sin[x] Sin[y2]}

Usando la paleta, el hessiano se calcula de forma análoga:

In[3]:=(∂x,xf[x,y] ∂x,yf[x,y]∂y,xf[x,y] ∂y,yf[x,y]

)

Recuerda que las derivadas cruzadas de segundo orden coinciden para funciones “suficientemente

buenas”.

9.2. Representación gráfica

Ya que sabemos cómo se calculan las derivadas parciales de una función, vamos a intentar re-

presentar gráficamente el plano tangente y cómo se obtiene a partir de las derivadas parciales.

Comencemos, por ejemplo, con la función

In[4]:=

f[x_,y_]=1-(x2+y2)

y vamos a calcular en el punto (1,1) sus derivadas parciales. La definición de derivada parcial

respecto a la primera variable era

∂f∂x(1,1) = lım

h→0

f(1+ h,1)− f(1)h

Lo que hacemos es trabajar únicamente con la función definida sobre la recta que pasa por (1,1) y

es esa función (de una variable) la que derivamos. La segunda derivada parcial tiene una definición

análoga. Dibujemos la gráfica de la función y la imagen de cada una de esas dos rectas:

Page 117: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

9.2 Representación gráfica 67

In[5]:=

Plot3D[f[x,y],{x,-2,2},{y,-2,2},Mesh->False]

ParametricPlot3D[{1,t,f[1,t]},{t,-2,2}]

ParametricPlot3D[{t,1,f[t,1]},{t,-2,2}]

Show[ % % %, % %, %]

-2

-1

0

1

2-2

-1

0

1

2

-6

-4

-2

0

-2

-1

0

1

2

Out[5]= - Graphics3D -

0

0.5

1

1.5

2

-2

-1

0

1

2

-4

-3

-2

-1

0

0

0.5

1

1.5

2

-2

-1

0

1

2

Out[6]= - Graphics3D -

-2

-1

0

1

20

0.5

1

1.5

2

-4

-3

-2

-1

0

0

0.5

1

1.5

2

-4

-3

-2

-1

0

Out[7]= - Graphics3D -

Out[8]= - Graphics3D -

Page 118: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

68 Extremos relativos y condicionados

Los vectores tangentes a las dos curvas que hemos dibujado son los dos vectores que generan

el plano tangente. Por tanto su ecuación será

z = f(1,1)+ ∂f∂x(1,1)(x − 1)+ ∂f

∂y(1,1)(y − 1)

Para acabar nos falta dibujar el plano tangente y unirlo con la gráfica anterior:

In[9]:=

parcial1[x_,y_]=∂xf[x,y]parcial2[x_,y_]=∂yf[x,y]ParametricPlot3D[{x,y,f[1,1]+

parcial1[1,1](x-1)+

parcial2[1,1](y-1)},

{x,0,2},{y,0,2},PlotPoints->3]

Show[ % % % %, %]

Out[9]= -2x

Out[10]= -2y

0 0.5 1 1.5 2

00.5

11.5

2

-4

-2

0

2

00.5

11.5

2

Out[11]= - Graphics3D -

-2

-1

0

1

2 -2

-1

0

1

2

-5

-2.5

0

2.5

-2

-1

0

1

2

Out[12]= - Graphics3D -

Ejercicio. ¿Cómo se podría hacer esto con derivadas direccionales en lugar de derivadas parciales?

Page 119: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

9.2 Representación gráfica 69

9.2.1. “Campos” de vectores

Sabíamos que el gradiente de una función en cada punto era el vector formado por las derivadas

parciales e indicaba la dirección de máxima pendiente. Recordemos que el comando ContourPlot

dibujaba las curvas de nivel de la gráfica de una función, por tanto el gradiente debería ser perpen-

dicular a estas. Para verlo necesitamos algunos comandos que podemos usar cargando el paquete

PlotField:

In[13]:=

<<Graphics`PlotField`

In[14]:=

f[x_,y_]=2(x+y)Cos[x]

Out[14]=

2(x+y)Cos[x]

In[15]:=

Plot3D[f[x,y],{x,-2,2},{y,-2,2}]

-2

-1

0

1

2-2

-1

0

1

2

-4

-2

0

2

4

-2

-1

0

1

2

Out[15]= - Graphics -

Dibujemos ahora las curvas de nivel. La opción ColorFunction->Hue utiliza colores para diferenciar

las distintas alturas en lugar de la escala de grises que habíamos visto.

In[16]:=

ContourPlot[f[x,y],{x,-2,2},{y,-2,2},

ColorFunction->Hue]

-2 -1 0 1 2-2

-1

0

1

2

Out[16]= - Graphics -

Page 120: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

70 Extremos relativos y condicionados

La orden PlotGradientField dibuja los vectores (∂f∂x,∂f∂y). Las dos opciones que aparecen

(ScaleFunction y ScaleFactor) no son necesarias.

In[17]:=

PlotGradientField[f[x,y],{x,-2,2},{y,-2,2},

ScaleFunction->(.1#&),

ScaleFactor->None]

Out[17]= - Graphics -

También existe la orden PlotHamiltonianField que dibuja los vectores (− ∂f∂y,∂f∂x). Estos son

perpendiculares al gradiente y por tanto nos indican las curvas de nivel.

In[18]:=

PlotHamiltonianField[f[x,y],{x,-2,2},{y,-2,2},

ScaleFunction->(.1#&),

ScaleFactor->None]

Out[18]= - Graphics -

Page 121: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

9.3 Extremos relativos. 71

In[19]:=

Show[ %16, %17]

-2 -1 0 1 2

-2

-1

0

1

2

Out[19]= - Graphics -

Ejercicio 1. Calcular las derivadas parciales de:

1. f(x,y, z) = xy+z,∀x ∈ R+, y, z ∈ R

2. f(x,y, z) = (x +y)z,∀x,y ∈ R+, z ∈ R

3. f(x,y) = sen(xseny),∀x,y ∈ R

Ejercicio 2. Sea f : R2 \ {(0,0)} -→ R dada por f(x,y) = log(x2 +y2) para todo (x,y) ≠ (0,0). Se

pide:

(i) Calcúlese el gradiente de f en todo punto así como la matriz hessiana.

(ii) Compruébese que

∂2f∂x2

(x,y)+ ∂2f∂y2

(x,y) = 0 ∀(x,y) ∈ R2 − {(0,0)}.

Ejercicio 3. Sea f : R2 → R una función diferenciable con continuidad. Si v = f(x,y) donde

x = ρ cosθ, y = ρsenθ, comprobar que

∂2f∂x2

+ ∂2f∂y2

= ∂2v∂ρ2

+ 1ρ2

∂2v∂θ2

+ 1ρ∂v∂ρ

9.3. Extremos relativos.

El método para encontrar extremos relativos de funciones de varias variables consiste en buscar

primero los puntos críticos, es decir, puntos donde se anula el gradiente, y después estudiar la

matriz hessiana en esos puntos. Los resultados que conocemos nos aseguran que todos los puntos

extremos de una función están entre los puntos críticos, con lo que una vez calculados éstos nos

dedicaremos a estudiar la matriz hessiana en ellos, viendo si es definida, indefinida, semidefinida...

Para ello podemos usar el criterio de los valores propios: si todos son del mismo signo, la matriz es

definida y hay extremo; si aparecen valores propios de distinto signo es indefinida y hay punto de

silla; en otro caso, la matriz es semidefinida y el criterio no decide.

Page 122: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

72 Extremos relativos y condicionados

Ejemplo 1: Calculemos los extremos relativos de la función

f(x,y) = x3 + 3xy2 − 15x − 12y.

Primero definimos la función, su gradiente y su hessiano:

In[20]:=

f[x_,y_]=x3 + 3 x y2 -15 x -12 y

z=f[x,y]

In[21]:=

J[x_,y_]={∂xz, ∂yz}

H[x_,y_]=

(∂x,xz ∂x,yz∂y,xz ∂y,yz

)

Para calcular los puntos críticos podemos usar el comando Solve, ya que el gradiente está for-

mado por polinomios de grado bajo; guardaremos el resultado que nos de Solve en una variable,

pcrit, que mas tarde usaremos:

In[22]:=

pcrit=Solve[J[x,y]==0,{x,y}]

Out[22]=

{{x ->-2, y ->-1},{x ->-1, y ->-2},

{x ->1, y ->2},{x ->2, y ->1}}

Hemos obtenido así 4 puntos críticos entre los que estarán los extremos. Calculemos ahora los

valores propios de la matriz hessiana en los cuatro puntos críticos obtenidos (observa la utilización

del comando /. que ahora comentaremos)

In[23]:=

Eigenvalues[H[x,y]] /. pcrit

Out[23]=

{{-6, -18}, {6,-18}, {-6, 18}, {6, 18}}

El comando /. sirve para asignar valores; en el caso anterior, asignamos la lista de valores que hay

en pcrit (que son los puntos críticos de f ) al comando Eigenvalues[H[x,y]], que calcula los

valores propios de la matriz hessiana en un punto (x,y). De esta forma, lo que hemos obtenido es

una lista formada por cuatro parejas de valores propios de H[x,y] correspondientes a los cuatro

puntos críticos. Así, la matriz hessiana en el primer punto crítico, (−2,−1), tiene sus dos valores

propios negativos, con lo que es definida negativa y por tanto hay máximo; los puntos críticos 2.o

y 3.o, (−1,−2) y (1,2), son puntos de silla, ya que sobre ellos la matriz hessiana es indefinida; por

último, el 4.o es un punto de mínimo. Si queremos saber lo que vale la función f sobre sus puntos

críticos, basta teclear

Page 123: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

9.3 Extremos relativos. 73

In[24]:=

f[x,y]/.pcrit

Out[24]=

{28, 26, -26, -28}

que nos da una lista con los valores de f en los puntos críticos, o bien escribir directamente

f[-2,-1], f[-1,-2], etc…

Podemos resumir diciendo que la función f tiene máximo valor relativo 28 en el punto (−2,−1),mínimo valor relativo -28 en (2,1), y dos puntos de silla en (−1,−2) y (1,2).

Ejemplo 2: Extremos relativos de

f(x,y) = (x2 + 3y2) e1−x2−y2.

Comenzamos definiendo f , y calculando el gradiente y la matriz hessiana:

In[25]:=

Clear[“GlobalÈ*”]

f[x_,y_]=(x2+ 3 y2) Exp[1-x2-y2];

z=f[x,y]

In[26]:=

J[x_,y_]={∂xz, ∂yz}

H[x_,y_]=

(∂x,xz ∂x,yz∂y,xz ∂y,yz

)

Si intentamos calcular los puntos críticos resolviendo el sistema J[x,y] == 0 con la orden

NSolve, Mathematica informa que no puede resolverlo, pues aparecen exponenciales, y NSolve

(igual que Solve o Reduce) sólo sirven para polinomios y funciones sencillas. En este punto, tenemos

dos posibilidades. La primera, trazar la gráfica de f (como superficie o con curvas de nivel) para

tener una idea de dónde están los extremos, y usar el comando FindRoot con las aproximaciones

iniciales que nos da la gráfica.

Page 124: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

74 Extremos relativos y condicionados

In[27]:=

Plot3D[f[x,y],{x,-2,2},{y,-2,2}]

-2

-1

0

1

2-2

-1

0

1

2

0

1

2

-2

-1

0

1

2

Out[27]= - SurfaceGraphics -

In[28]:=

ContourPlot[f[x,y],{x,-2,2},{y,-2,2}]

-2 -1 0 1 2-2

-1

0

1

2

Out[28]= - ContourGraphics -

A la vista de las gráficas podemos calcular aproximaciones a los extremos y calcularlos con

FindRoot, pero ¿qué nos asegura que no hay más extremos que no entran en el rango de la función,

o que no vemos por la imprecisión de los gráficos?.

La segunda posibilidad es realizar operaciones algebraicas en el sistema de ecuaciones J[x,y]==0,

para convertirlo en un sistema polinómico. Esto no siempre puede hacerse, pero en este caso sí:

basta multiplicar el sistema por e−(1−x2−y2) (que no se anula), y resolver el nuevo sistema que es

polinómico:

In[29]:=

G[x_,y_]=Simplify[J[x,y]*Exp[x2+y2-1]]

Out[29]=

{2x(1-x2-3y2),2y(3-x2-3y2 )}

Las soluciones de G[x,y]==0 serán los puntos críticos de f , que almacenaremos en la variable pcrit :

In[30]:=

pcrit=Solve[G[x,y]==0,{x,y}]

Out[30]=

{{x ->-1, y ->0}, {x ->0, y ->0}, {x

->1, y ->0}, {y ->-1, x ->0}, {y ->1, x

->0}}

Page 125: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

9.4 Extremos condicionados. 75

Estudiemos el hessiano en los cinco puntos:

In[31]:=

Eigenvalues[H[x,y]]/.pcrit

Out[31]=

{{-4, 4}, {2 E, 6 E},{-4, 4}, {-12,

-4}, {-12, -4}}

Tenemos dos puntos de máximo: (0,−1) y (0,1); un punto de mínimo: (0,0); y dos puntos de silla:

(−1,0) y (1,0). La función f vale sobre sus puntos críticos

In[32]:=

f[x,y]/.pcrit

Out[32]=

{1, 0, 1, 3, 3}

con lo que, vale 3 en los dos máximos y 0 en el mínimo.

Ejercicio. Calcular los extremos relativos de las siguientes funciones.

1. f(x,y) = x2 +y2 − 2x + 4y + 20.

2. f(x,y) = x3 + x2y +y2 + 2y + 5.

3. f(x,y) = (x2 +y2) ex2−y2

.

4. f(x,y, z) = x2 +y2 + z2 − 2x.

5. f(x,y) = x3y3 −y4 − x4 + xy .

9.4. Extremos condicionados.

Usaremos el método de los multiplicadores de Lagrange para calcular extremos condicionados.

Se trata de optimizar una función de varias variables en el conjunto de puntos que verifiquen una

cierta ecuación o ecuaciones.

Dada una función suficientemente diferenciable, y una curva o superficie en forma implícita,

el método consiste en encontrar los puntos de dicha curva o superficie que verifican un sistema

auxiliar, llamado “sistema de Lagrange”, que dará el equivalente a los puntos críticos; después habrá

una condición sobre el hessiano equivalente a la condición para extremos relativos. Hay que notar

que no todas las condiciones son válidas, sino que se ha de imponer una hipótesis técnica, pero en

la práctica supondremos hecha la comprobación.

Ejemplo 1: Calculemos los extremos de la función

f(x,y) = x2 −y2

Page 126: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

76 Extremos relativos y condicionados

condicionados a la ecuación

g(x,y) = x2 +y2 − 1 = 0.

Comenzamos definiendo la función f , la condición, y la función auxiliar de Lagrange

In[33]:=

f[x_,y_]=x2-y2;

g[x_,y_]=x2 + y2-1;

F[x_,y_,lambda_]=f[x,y]-lambda*g[x,y]

z=F[x,y,lambda]

Definimos gradiente y hessiano de la función de Lagrange

In[34]:=

J[x_,y_,lambda_]={∂xz, ∂yz};

H[x_,y_]=

(∂x,xz ∂x,yz∂y,xz ∂y,yz

);

y resolvemos el sistema de Lagrange, esto es, J[x,y,lambda]==0 y g[x,y]==0. Como estamos con

ecuaciones polinómicas, usaremos Solve:

In[35]:=

pcrit=Solve[{J[x,y,lambda]==0,

g[x,y]==0},{x,y,lambda}]Out[35]=

{{lambda ->-1, y ->-1, x ->0}, {lambda

->-1, y ->1, x ->0}, {lambda ->1, x

->-1, y ->0}, {lambda ->1, x ->1, y

->0}}

Obtenemos 4 puntos críticos, y para ver si son o no extremos, estudiamos la matriz hessiana auxiliar

H[x,y,lambda] restringida al espacio tangente a la curva en los puntos críticos. Desafortunadamen-

te, no podemos aplicar de una vez la asignación de valores, sino que deberemos ir punto a punto

In[36]:=

G[x_,y_]={{∂xg[x,y],∂yg[x,y]}};

In[37]:=

nucleo=NullSpace[G[x,y]/. pcrit[[1]]]

Out[37]=

{{1,0}}

(observa que pcrit[[1]] nos da el primer punto crítico)

Page 127: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

9.4 Extremos condicionados. 77

In[38]:=

nucleo.(H[x,y,lambda]/.pcrit[[1]]).

Transpose[nucleo]Out[38]=

{{4}}

luego el primer punto es un mínimo condicionado;

In[39]:=

nucleo=NullSpace[G[x,y]/. pcrit[[2]]]

Out[39]=

{{1,0}}

In[40]:=

nucleo.(H[x,y,lambda]/.pcrit[[2]]).

Transpose[nucleo]Out[40]=

{{4}}

el segundo punto también es mínimo;

In[41]:=

nucleo=NullSpace[G[x,y]/. pcrit[[3]]]

In[42]:=

nucleo.(H[x,y,lambda]/.pcrit[[3]]).

Transpose[nucleo]Out[42]=

{{-4}}

el tercer punto es un máximo;

Page 128: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

78 Extremos relativos y condicionados

In[43]:=

nucleo=NullSpace[G[x,y]/. pcrit[[4]]]

Out[43]=

{{0,1}}

In[44]:=

nucleo.(H[x,y,lambda]/.pcrit[[4]]).

Transpose[nucleo]Out[44]=

{{-4}}

otro máximo.

El valor de la función en los extremos:

In[45]:=

f[x,y]/.pcrit

Out[45]=

{-1, -1, 1, 1}

esto es, vale 1 en los máximos y -1 en los mínimos.

Ejemplo 2: Calcular los extremos relativos de

f(x,y, z) = x2 +y2 + z2

condicionados a la superficie

g(x,y, z) = 2x + 2y − z + 3 = 0.

Comenzamos con las definiciones:

In[46]:=

f[x_,y_,z_]=x2+ y2+z2;

g[x_,y_,z_]=2x+2y-z+3;

F[x_,y_,z_,lambda_]=f[x,y,z]-lambda*g[x,y,z];

k1=F[x,y,z,lambda];

J[x_,y_,z_,lambda_]={∂xk1,∂yk1,∂zk1};H[x_,y_,z_,lambda_]={{∂x,xk1,∂x,yk1,∂x,zk1},{∂y,xk1,∂y,yk1,∂y,zk1},{∂z,xk1,∂z,yk1,∂z,zk1}};

Resolvemos el sistema de Lagrange

Page 129: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

9.4 Extremos condicionados. 79

In[47]:=

pcrit=Solve[{J[x,y,z,lambda]==0,

g[x,y,z]==0},{x,y,z,lambda}]Out[47]=

{{x ->-(2/3), y ->-(2/3), z ->(1/3),

lambda ->-(2/3)}}

y estudiemos el hessiano de la función auxiliar en el espacio tangente a la superficie. Primero cal-

culamos una base de dicho tangente con el comando NullSpace:

In[48]:=

k2=g[x,y,z];

G[x_,y_,z_]={{∂xk2,∂yk2,∂zk2}};nucleo=NullSpace[G[x,y,z]/.

pcrit[[1]]]Out[48]=

{{1, 0,2}, {-1, 1, 0}}

Ahora calculamos la matriz hessiana restringida al tangente

In[49]:=

M=nucleo.

(H[x,y,z,lambda]/.pcrit[[1]]).

Transpose[nucleo]Out[49]=

{{10, -2}, {-2, 4}}

y estudiamos si es definida mediante sus valores propios

In[50]:=

N[Eigenvalues[M]]

Out[50]=

{3.39445, 10.6056}

Como ambos son positivos, el único punto crítico calculado es un mínimo condicionado, con valor

In[51]:=

f[x,y,z]/.pcrit

Out[51]=

{1}

Ejercicio 1: Calcular los extremos condicionados en los siguientes casos:

Page 130: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

80 Extremos relativos y condicionados

1. f(x,y) = x2 − xy +y2 condicionados a x2 +y2 − 4 = 0.

2. f(x,y) = x3 + xy2 condicionados a xy = 1.

3. f(x,y, z) = xyz condicionados a x2 +y2 + z2 = 1.

Ejercicio 2:

1. Hallar la mínima distancia de (0,0) a x2 −y2 = 1.

2. Entre todos los ortoedros de volumen 1, determinar el que tiene superficie lateral mínima.

3. Calcular las dimensiones de un ortoedro de superficie lateral 2, para que su volumen sea

máximo

4. Se quiere construir un canal cuya sección sea un trapecio isósceles de área dada S. Calcular la

profundidad del canal y el ángulo que deben formar las paredes con la horizontal para que la

superficie mojada sea mínima. (Sol: se trata de la mitad de un hexágono regular)

Page 131: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

CAPÍTULO 10

Integrales múltiples

Ya conocemos el comando Integrate para realizar integrales de funciones de una variable y,

como podrás imaginar por lo visto hasta ahora, pasar a varias variables sólo será cuestión de poner

algunas variables más y alguna coma. En general, la principal diferencia entre una y varias variables

no es tanto la función a integrar como el recinto de integración (por ejemplo, no hay una manera

directa de decirle a Mathematica que queremos integrar en un círculo). Veremos en esta práctica

como se pueden escribir los recintos de integración en Mathematica , aprovechando para ello las

capacidades gráficas del programa.

Expondremos sólo el caso de dos variables; para integrales triples los comandos serán totalmente

análogos.

Básicamente sólo sabemos calcular la integral de una función f(x,y) en recintos de uno de los

siguientes tipos:

A = {(x,y) ∈ R2 : a ≤ x ≤ b, g1(x) ≤ y ≤ g2(x)} (10.1)

o

B = {(x,y) ∈ R2 : a ≤ y ≤ b, h1(y) ≤ x ≤ h2(y)} (10.2)

Las correspondientes integrales serían, vía el teorema de Fubini,

∫Af(x,y) d(x,y) =

∫ ba

(∫ g2(x)

g1(x)f(x,y) dy

)dx

y ∫Bf(x,y) d(x,y) =

∫ ba

(∫ h2(x)

h1(x)f(x,y) dx

)dy

La orden para calcular el valor de una integral doble es Integrate o, en caso de que sólo nos

interese una aproximación numérica, NIntegrate. Dado que el comando Integrate intenta calcu-

lar una primitiva y después evaluar en los extremos de integración, es más lento que el comando

NIntegrate. La orden completa es

Page 132: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

82 Integrales múltiples

Integrate[función,{x,a,b},{y,c,d}]

y lo mismo para NIntegrate.

El caso más fácil se presenta cuando integramos en rectángulos. En este caso las funciones gi o

hi son constantes. Por ejemplo, si queremos calcular la integral de f(x,y) = x2+y2 en [0,2]×[1,5]tendríamos que hacer lo siguiente:

In[1]:=

Integrate[x2 + y2,{x,0,2},{y,1,5}]

Out[1]=2803

Pasemos a integrales un poco más complicadas. Supongamos que queremos integrar la función

f(x,y) = x en el conjunto

A = {(x,y) ∈ R2 : x2 +y2 ≤ 1, x ≥ 0, y ≥ 0}.

El primer paso es intentar averiguar cómo es el conjunto, para lo que nos haría falta dibujarx2+y2 =1. Para ello, necesitamos un paquete de Mathematica para dibujar curvas que vienen dadas por una

ecuación (llamada “ecuación implícita”). La orden para cargar este paquete extra es:

In[2]:=

<<Graphics`ImplicitPlot`

(observa que no produce ninguna salida). Ahora ya podemos pedir que nos pinte x2 +y2 = 1 para

x ∈ [0,1]. La orden es

ImplicitPlot[ecuación,{x,a,b}]

donde a y b representan el rango de variación de la variable x, rango que normalmente tendremos

que calcular “a ojo”. En nuestro caso

In[3]:=

ImplicitPlot[x2+y2==1,{x,0,1}]

0.2 0.4 0.6 0.8 1

-1

-0.5

0.5

1

Out[3]= - Graphics -

Page 133: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

83

Cómo se puede ver, Mathematica dibuja la circunferencia para “y” positivo y negativo, en cambio

sólo nos interesa la parte del primer cuadrante. Para representar esta parte podemos restringir el

rango de la imagen con la opción PlotRange (la orden ImplicitPlot tiene básicamente las mismas

opciones que la orden Plot).

In[4]:=

ImplicitPlot[x2+y2==1,{x,0,1},

PlotRange->{0,1}]

0.2 0.4 0.6 0.8 1

0.2

0.4

0.6

0.8

1

Out[4]= - Graphics -

Después de ver el conjunto A donde estamos integrando, es claro cómo podemos poner una

variable en función de la otra. Por ejemplo, si ponemos y en función de x, para un valor concreto

de x entre 0 y 1, y varía entre 0 y√

1− x2. Podemos calcular ahora el valor de la integral:

In[5]:=

Integrate[x,{x,0,1},{y,0,Sqrt[1-x2]}]

Out[5]=13

Como se puede observar el orden para evaluar la integral es de derecha a izquierda, así que si ydepende de x, el rango de x va primero.

Observarás que no hemos cambiado a coordenadas polares. Para integrales en varias variables,

interesa cambiar de variable cuando el dominio o la función son complicados. En el primer caso,

si no podemos escribir el dominio de una las formas (1) o (2) tendremos que cambiar de variable

nosotros (Mathematica no lo hace automáticamente). El caso de funciones complicadas no nos debe

preocupar, pues Mathematica se encarga de resolver la integral en la inmensa mayoría de los casos, y

si no se puede resolver directamente, siempre queda la posibilidad de aproximar el valor de integral.

Veamos un par de ejemplos:

Ejemplo 1. Calcular la integral de la función f(x,y) = ex/y , en el conjunto A = {(x,y) ∈ R2 : 0 ≤y3 ≤ x ≤ y2}.

Estamos en el caso (2). Tenemos la variable x en función de y . Vamos primero a ver los puntos

de corte de las ecuaciones y3 = x, y2 = x y luego las dibujaremos para hacernos una idea de cuál

es el dominio de integración:

Page 134: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

84 Integrales múltiples

In[6]:=

Needs["Graphics‘ImplicitPlot‘"]

In[7]:=

Solve[y3 == y2,y]

Out[7]=

{{y->0},{y->0},{y->1}}

In[8]:=

graf1=ImplicitPlot[y3==x,{x,0,1},

PlotStyle->RGBColor[1,0,0]]

0.2 0.4 0.6 0.8 1

0.2

0.4

0.6

0.8

1

In[9]:=

graf2=ImplicitPlot[y2==x,{x,0,1},

PlotStyle->RGBColor[0,1,0]]

0.2 0.4 0.6 0.8 1

-1

-0.5

0.5

1

In[10]:=

Show[graf1,graf2]

0.2 0.4 0.6 0.8 1

-1

-0.5

0.5

1

Page 135: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

85

De lo hecho se deduce que la integral que queremos calcular es

In[11]:=

Integrate[Exp[x/y],{y,0,1},{x,y3, y2}]

Out[11]=32− E

2

Ejemplo 2. Calcular la integral de la función

f(x,y) = x2 +y2

en el conjunto

A = {(x,y) ∈ R2 : (x2 +y2)2 ≤ 4(x2 −y2), x ≥ 0}.

En este caso la función es relativamente sencilla pero el dominio no lo es tanto. No hay una

manera fácil de hacer la integral directamente, así que es mejor cambiar a coordenadas polares y

luego plantear la integral. Dibujemos el recinto:

In[12]:=

ImplicitPlot[(x2+y2)2==4(x2-y2),{x,0,3}]

0.5 1 1.5 2

-0.6

-0.4

-0.2

0.2

0.4

0.6

Las condiciones del dominio escritas en coordenadas polares son:

ρ4 ≤ 4ρ2(cos2(θ)− sen2(θ)), ρ cosθ ≥ 0

Después de operar, nos quedaría

ρ ≤ 2√

cos2(θ)− sen2(θ) y θ ∈ [−π/4, π/4]

Ahora ya estamos en una de los casos conocidos y podemos plantear la integral, sin olvidar el

cambio a coordenadas polares de la función y la “derivada” del cambio (en este caso ρ):

In[13]:=

Integrate[ρ ∗ ρ2,{t, -Pi/4, Pi/4},

{ρ,0,2 Sqrt[Cos[t]2 -Sin[t]2]}]Out[13]=

π

Page 136: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

86 Integrales múltiples

Ejercicio 1. Calcular la integral de las siguientes funciones en los recintos determinados por las

siguientes ecuaciones:

1. f(x,y) =√

4x2 −y2, x = 1, y = 0, y = x

2. f(x,y) = xe−x2/y , x = 0, y = 1, y = x2

3. f(x,y) = y, y > 0, x2 +y2 = a2, y2 = 2ax,x = 0

Ejercicio 2. Calcular el volumen del conjunto A en cada uno de los siguientes casos:

1. A ={(x,y, z) ∈ R3 : x2 +y2 ≤ z ≤

√x2 +y2

}2. A =

{(x,y, z) ∈ R3 : x2

a2 + y2

b2 ≤ 1, 0 ≤ z ≤√x2

a2 + y2

b2

}3. A =

{(x,y, z) ∈ R3 : 0 ≤ z ≤ x2 +y2, x +y ≤ 1, x,y ≥ 0

}4. A =

{(x,y, z) ∈ R3 : 0 ≤ z ≤

√x2 +y2, x2 +y2 ≤ 2y

}5. A =

{(x,y, z) ∈ R3 : 0 ≤ z ≤ 4−y2, 0 ≤ x ≤ 6

}6. A =

{(x,y, z) ∈ R3 :

√x ≤ y ≤ 2

√x, 0 ≤ z ≤ 9− x

}7. A =

{(x,y, z) ∈ R3 : x2 +y2 ≤ z2, x2 +y2 + z2 ≤ 2z

}Ejercicio 3. Calcular el volumen limitado superiormente por el cono 4x2 + 4y2 − z2 = 0, infe-

riormente por el plano z = 0 y lateralmente por el cilindro x2 + (y − 2)2 = 4.

Ejercicio 4. Calcular el volumen de los sólidos siguientes:

1. Intersección de los cilindros x2 +y2 = r 2, y2 + z2 = r 2.

2. El limitado por el plano z = 0, el cilindro x2 +y2 = 2ax (a > 0) y el cono x2 +y2 = z2.

Page 137: EL PROGRAMA MATHEMATICA COMO …exordio.qfb.umich.mx/archivos PDF de trabajo UMSNH/Libros...permiten el manejo de “paletas” de símbolos que facilitan el uso de los comandos e

 

BIBLIOGRAFÍA

 

• Matemáticas y Mathematica. - Inmaculada Serrano Gómez.

- Mª Joaquina Berral Yerón.

Universidad de Córdoba, 2003. ISBN 84-7801-700-3

• Manual de Mathematica 5.1. Robert Ipanaqué Chero.

• Manual de Mathematica 5.2.

Recursos web

• http://www.wolfram.com/

• www.wikipedia.com

• www.monografias.com

• http://library.wolfram.com/

• http://www.mat.ufmg.br/~aneves/index.html

• http://math.buffalostate.edu/~sanders/CalculusLabs/