Está en la página 1de 137

EL PROGRAMA MATHEMATICA

COMO HERRAMIENTA EN LA
RESOLUCIN DE PROBLEMAS Y
EJERCICIOS DE MATEMTICAS.

CristinaCarmonaBarranco
MATHEMATICAENLASMATEMTICAS







A mi familia que me apoya a
emprender este reto personal
y profesional.

A mis profesores de la Universidad
de Crdoba que me dieron el saber
necesario para abordarlo.






RESUMEN







Este libro da una introduccin a Mathematica, concentrndose en usar Mathematica como
sistema interactivo para resolver problemas. Cuando lo haya ledo, debe tener suficiente
conocimiento de Mathematica para abordar muchas clases de problemas prcticos.

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 ms utilizados de este software.

La segunda parte, se trata de aplicaciones de las operaciones y conceptos matemticos ms
usuales y su resolucin con el programa mathematica. Adems, se plantean ejercicios para
resolver con Mathematica muy similares a los incluidos en esta segunda parte.




















ndice Parte 1






Introduccin
5
Descripcin general del programa matemtica
7
1.1. Sintaxis general de las rdenes . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2. Informacin o ayuda . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3. La orden print . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11



2. Primeros pasos matemticos en mathematica 14
1.1. Operaciones aritmticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2. Funciones matemticas bsicas . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3. Clculo simblico con mathematica. . . . . . . . . . . . . . . . . . . . . . . . . 17

3. Clculos numricos 21
3.1. Aritmtica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2. Resultados exactos y aproximados . . . . . . . . . . . . . . . . . . . . . . . . . .22
3.3. Algunas funciones matemticas . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.4. Clculos con precisin algebraica. . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.5. Notaciones matemticas en cuadernos. . . . . . . . . . . . . . . . . . . . . . . . 25

4. Clculos 26
4.1. Uso de resultados previos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

4.2. Definicin de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.3. Definicin 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

5.4. Interrupcin de clculos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

6. Clculos algebraicos 38

6.1. Clculo simblico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

6.2. Valores para smbolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.3. Las limitaciones de Mathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . 39



7. Matemticas simblicas 42

7.1. Operaciones bsicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

7.2. Diferenciacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
7.3. Integracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

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

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









PARTE 1






MANUAL TERICO SOBRE ASPECTOS MATEMTICOS DEL PROGRAMA
MATHEMATICA




5


CAPTULO 0






INTRODUCCIN




Mathematica fue el primer programa de clculo simblico 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 Tcnica y tambin ha tenido una buena acogida entre
los estudiantes de carreras en las que las Matemticas son bsicas para su formacin.

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, podrs
consultar la bibliografa que te facilitamos.

No es fcil definir Mathematica, aunque de forma muy simplificada se puede decir que es
un programa para la computacin y visualizacin numrica, simblica y grfica y que ofrece
una herramienta interactiva de clculo y un lenguaje de programacin potente

Una calculadora de tipo numrico. La diferencia con una calculadora es que tiene
implementadas aproximadamente unas 750 funciones y adems trabaja con la precisin que
se desee (incluyendo precisin infinita).

Un paquete de subrutinas para clculo matemtico. Se pueden hacer operaciones que
requieran el uso de funciones o de procedimientos especiales como la integracin numrica,
la optimizacin de funciones, programacin lineal, etc. que se pueden utilizar directamente.

Una calculadora simblica. Con la posibilidad de trabajar con expresiones simblicas.
Podrs definir una funcin que quedar almacenada tal como es, y no en forma de algoritmo
que pueda dar aproximaciones a la funcin. Se pueden sustituir valores de la variable como
expresiones, parmetros, etc. y el sistema entiende y opera en forma simblica (exacta).

Una potente herramienta de clculo simblico. Podrs derivar e integrar funciones,
resolver ecuaciones diferenciales, calcular lmites, manipular series de potencias, utilizar
transformadas integrales, ...

Un paquete grfico. Permite dibujar en dos o tres dimensiones, elegir perspectivas,
sistemas de representacin, sistemas de coordenadas, animar las grficas, ...

Un lenguaje de programacin, se puede realizar programacin a tres niveles:

Programacin de tipo procedural (uso de bloques, iteraciones y ciclos,
recursiones, etc.).

Programacin funcional (con la posibilidad de definir funciones, operadores
funcionales, etc.).

Programacin basada en reglas (suministrando reglas que indican como operar o
transformar expresiones simblicas, funciones, etc.).

Un sistema para crear documentos interactivos, con posibilidad de incluir texto,
grficos, sonidos, animaciones, etc.

Introduccin 6



Un sistema de apoyo a otros programas. Podrs comunicar con Mathematica desde
otros programas y pedirles tareas que realizar y despus enviar los resultados.

El programa Mathematica constituye una herramienta muy potente para la realizacin de
todo tipo de clculos matemticos: operaciones aritmticas, clculo simblico, grficos,
Las ltimas versiones del programa incorporan un editor de texto (bastante aceptable) y
permiten el manejo de paletas de smbolos que facilitan el uso de los comandos e
instrucciones del programa y la utilizacin de la simbologa habitual en las frmulas y
operaciones matemticas.

El programa Mathematica est estructurado en 2 partes:

1.- El Front End: es la interface que permite la comunicacin con el usuario. Presenta las
entradas y salidas y permite crear y editar ficheros que contienen texto, clculos, grficas,
etc. Estos ficheros tienen la extensin .nb y se denominan Notebooks (Cuadernos de notas).
La informacin que contienen estos ficheros se estructura mediante un sistema de celdas de
diferentes tipos (ttulo, subttulo, seccin, texto, input, output, .) .

2.- El Kernel (ncleo): constituye la estructura interna del programa y es el que se encarga de
la realizacin de los clculos y operaciones matemticas que solicita el usuario.










AspectoquepresentaelprogramaMathematica
1.Descripcin general del programa Mathematica 7


CAPTULO 1






DESCRIPCIN 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,
grficos, 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 extensin, ya que Mathematica le asigna por defecto la extensin nb.

2.- Los Packages o Programas ejecutables en entorno Mathematica Aplicaciones:
Ingenieria, Fsica, Qumica, Matemticas, Ciencias de la Computacin, Negocios y Finanzas,
Ciencias de la Salud, ....

Los Notebooks estn compuestos de unidades denominadas celdas y que se distinguen
fcilmente 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 evaluacin y clculos hechos
por el ncleo 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 sesin. La numeracin se sigue efectuando aunque se cambie de fichero o notebook.
El kernel o ncleo 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 funcin o variable definida
previamente; pero tambin puede ser un inconveniente, porque sin darnos cuenta podemos
estar empleando una funcin o variable que creemos que es nueva, y que ya tiene un valor o
definicin no compatible con el nuevo uso que se quiere dar.

Para limpiar cualquier definicin anterior de una funcin o asignacin de variables
podemos usar las sentencias:

Clear [nombrefuncin,, nombre variable,]

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 dems objetos utilizados hasta ese
1.Descripcin 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 sesin 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 sesin, 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 ratn al final del Notebook o entre dos celdas que ya existan hasta que el cursor
aparezca de forma horizontal. Entonces se pulsa el botn del ratn para hacer aparecer una
barra de insercin 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 expresin en una celda de entrada, para que la reconozca el
ncleo y se pueda evaluar, es necesario que el usuario se lo indique expresamente: mientras
que el cursor permanece junto a la expresin o si hemos sealado con el ratn el corchete
correspondiente, pulsaremos las teclas Mayscula + Intro. Tambin se evaluar una celda si
en el men vamos a Kernel y Evaluate donde encontramos diversas opciones de evaluacin:
celda, notebook, ...

La primera vez que se evala una expresin tardar un poco ms de lo habitual, debido
a que se estar inicializando el programa y es necesario cargar informacin.

Adems de estas celdas, Mathematica dispone de otros tipos que permiten mejorar la
presentacin y estructura de los Notebooks en forma de secciones y subsecciones, con sus
correspondientes ttulos.

Se cargar un Notebook concreto mediante la opcin Abrir (Open) del men Fichero
(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 mens de gran utilidad que aparecen en la parte superior de la pantalla:

9


Edit, donde estn los comandos habituales que nos permiten acciones como Cortar
(Cut), Copiar (Copy) o Pegar (Paste) ....

Aqu encontramos las Palettes, tiles para escribir expresiones matemticas y realizar
clculos simblicos.

Abre estas paletas y observa las posibilidades que nos ofrecen para escribir y realizar
operaciones matemticas.

Find para los comandos de bsqueda y sustitucin habituales de muchos editores de
texto: Find (Buscar), Replace (Reemplazar) o Replace All (efecta 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 algn clculo o anular alguna evaluacin (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 expresin.

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



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

Es conveniente usar slo minsculas para definir nuestras propias variables y
funciones (as se podrn diferenciar con facilidad de las anteriores).

Mathematica interpreta un espacio en blanco como la operacin de multiplicar. Por esto,
no se deben dejar espacios en blanco dentro del nombre de una funcin o variable. Este
criterio lo sigue Mathematica en sus propias funciones y rdenes, como se observa en los
ejemplos:

FindRoot (Encontrar Raz). ParametricPlot (Dibujar en Paramtricas)...

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 excepcin a esta
regla, cuando multiplicamos un nmero por una variable. Por ejemplo, 3*x se puede escribir
1.1. Sintaxis general de las rdenes 10


como 3x. Sin embargo, no obtendremos la misma interpretacin al escribir x3. Por esta razn,
no podremos dar un nombre a una variable o constante que empiece por un nmero, sino
que siempre debe de empezar con una letra, aunque despus contenga nmeros. Los
nombres a, aa, a1, a2, a11, etc son vlidos para variables; no lo son 1a, 2a, 11a, 1a1, etc.


Uso de corchetes, parntesis y llaves.

Los corchetes, [ ], delimitan los argumentos de todas las funciones y rdenes en
Mathematica, y tambin aquellas que defina el usuario.

Cuando hay dos o ms argumentos se separan por comas.

Ejemplo 2:

f[x_], para definir funciones. Sin[1.2]

Las llaves, { }, se usan para la definicin de listas de elementos, que pueden ser de
cualquier tipo y se separan por comas. Tambin se pueden interpretar como vectores o
matrices (que sern listas de listas).

Las llaves son imprescindibles para construir iteradores dentro de estructuras de tipo
repetitivo y para especificar los lmites de actuacin de los operadores matemticos (en
integrales, dominio en el que hay que dibujar las grficas, etc.).

Tambin 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 parntesis, ( ), se utilizan para indicar la prioridad de las operaciones de tipo
aritmtico.

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



11


1.2. INFORMACIN O AYUDA.

Ante una duda, es conveniente consultar el manual de rdenes de Mathematica o algn
libro con explicaciones y ejemplos.

La versin 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 ratn iremos a la opcin Help y al abrirse este men se buscar la opcin
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 funcin 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 nmeros de Pisot o el clculo del nmero p de
forma aproximada usando diferentes tcnicas de aproximacin.

Master Index: facilita un listado alfabtico 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, . ]
1.2. Informacin o ayuda 12


13



2. Primeros pasos matemticos en mathematica 14

CAPTULO 2




PRIMEROS PASOS MATEMTICOS EN MATHEMATICA



2.1. OPERACIONES ARITMTICAS.

Mathematica puede efectuar operaciones aritmticas, manipular nmeros 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 aritmticos son los usuales:

+ suma

- diferencia

* o espacio producto

/ divisin

^ 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 debers realizar los ejercicios y
vers los resultados en la pantalla del ordenador.

In[ 1000!
In[] 111111111^2
In[] 9345*456 345689^6 + 367/4890 *(2346-89)
15


In[ 2/4 + 24/144
In[ 2 + 2/5

Puedes usar muchas constantes usuales en Matemticas siempre que las escribas en
forma correcta:

Pi (razn entre la longitud de la circunferencia y su dimetro);
E (nmero base de los logaritmos Neperianos);
I (representa el nmero imaginario
1 )
Infinity: infinito, etc. ...

Nota: procura no usar estos nombres para variables.

Un nmero decimal lo interpreta como una aproximacin. Si hay un nmero con
decimales trata toda la expresin como una aproximacin. No aproximar los nmeros
irracionales.

Una fraccin la trata de forma exacta y slo la aproxima cuando en la expresin exista
otro nmero decimal.

Ejemplo 2:

In[ 1/2 + 3.5
0.5 + Pi
1/15+1/35+1/63

Si se trabaja con nmeros irracionales representa los resultados de forma exacta.

Ejemplo 3:

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

Si queremos una aproximacin de un nmero real lo indicaremos con la orden

N [nmero, precisin

donde en precisin indicamos el nmero de cifras significativas que queremos considerar. Si
omitimos este argumento, que es opcional, el programa nos dar el resultado con un nmero
de cifras determinado (habitualmente muestra seis cifras significativas), aunque por defecto
trabaja con dieciseis decimales de precisin.

La funcin Precisin da el nmero cifras significativas de un resultado concreto.

Ejemplo 4:

In[ N [ (1 5) /2


2.1. Operaciones aritmticas. 16


Precisin [%

Nota: El smbolo % hace referencia a la ltima salida obtenida por Mathematica. Si
usamos %% se har referencia a dos salidas anteriores.

Con la funcin N se puede conseguir ms precisin aunque al aumentar la precisin
tambin aumenta el tiempo que tarda en hacer clculos.

Ejemplo 5:

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

3

N [ 3
3


Si en una expresin con nmeros incluimos un punto decimal la salida ser un nmero
real, dado mediante su representacin decimal aproximada (con un nmero de dgitos
decimales por defecto salvo que el usuario pida una precisin determinada).

Ejemplo 6:


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

Hay que tener cuidado cuando se trabaja con nmeros decimales ya que se harn las
operaciones con la precisin 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 haba fijado la precisin, si
trabajamos con 10
-7
el resultado sera exacto.
17


2.2. FUNCIONES MATEMTICAS BSICAS.

El programa Mathematica tiene definidas las funciones matemticas
elementales y otras muchas que se usan con frecuencia en la resolucin de
problemas de todo tipo. La notacin responde a la abreviatura del nombre ingls
de las funciones. Las ms usuales son:



Existen otras muchas funciones que se utilizan en campos especficos. Por
ejemplo, dispone de una serie de paquetes de funciones muy diversas, que se
guardan en subdirectorios del directorio Packages. Ms adelante se ver la forma
de acceder a estos paquetes (en tema 5).

Hay varias funciones incorporadas para trabajar con nmeros complejos:


Re (devuelve la parte real del complejo),

Im (devuelve la parte imaginaria del complejo),
Conjugate (devuelve el conjugado del complejo),
Abs (devuelve el mdulo del complejo).


2.3. CLCULO SIMBLICO CON MATHEMATICA.


Mathematica maneja perfectamente el clculo matemtico simblico.

2.3. Clculo simblico con mathematica 18

Manipula con facilidad y rapidez las frmulas y expresiones algebraicas y
realiza la mayora de las operaciones: desarrollar, factorizar y simplificar
polinomios o expresiones racionales; encontrar soluciones de ecuaciones y
sistemas de ecuaciones, evaluar derivadas e integrales simblicamente, encontrar
soluciones de ecuaciones diferenciales, manipular series de potencias, lmites y
muchas otras facetas de las Matemticas Aplicadas.

Las funciones ms 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, encontrars la
que corresponden a estas funciones. sala para hacer los ejercicios siguientes:


Para obtener la simplificacin en fracciones simples tenemos el comando
Apart. Para saber algo ms sobre este u otros comandos puedes ir a la ayuda o
bien teclear:

?Apart

y podrs leer una explicacin sobre el comando.


INTERFASE DE CUADERNO

utilice un icono o el
men de
formas grficas 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 interacta con Mathematica creando
documentos interactivos.

Si usa su computadora va una interfase puramente grfica haremos como de
costumbre doble en el icono de inicio de Mathematica. En cambio, si la usa va 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 simultneo) <Shift>+<Enter>
para que Mathematica procese su entrada. <Shift>+<Enter> indica a Mathematica
que usted ha finalizado su entrada. Si su teclado posee teclado numrico puede
usar la tecla <Enter> del mismo en lugar de <Shift>+<Enter>.

Despus de ejecutar una entrada en Mathematica desde un cuaderno,
Mathematica etiquetar su entrada con In[n ]:=. Tambin etiqueta la
correspondiente salida

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 dilogos con Mathematica se mostrarn de la
siguiente manera:

Con una interfase de cuaderno, usted slo digita 1+1. Mathematica aade 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 ncleo de Mathematica que realiza realmente los clculos puede
funcionar en la misma computadora que el front end, o en otra computadora
conectada va alguna clase de red o de lnea. En la mayora de los casos, el ncleo
incluso no se inicializa hasta que el usuario hace realmente un clculo 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 interacta 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, tambin
2.3. Clculo simblico con mathematica 20


es posible inicializar Mathematica con una interfase basada en texto haciendo
doble clic en el icono del ncleo 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, terminndola con <Enter>.

Mathematica procesa la entrada, y genera un resultado, el mismo que
etiquetar con Out[1]=.

A lo largo de este libro los dilogos con Mathematica se mostrarn de la
siguiente manera:

La computadora imprime In[1]:=. Usted slo digita 1+1. La lnea que empieza
con Out[1]= es el resultado de Mathematica.

1 + 1

2

Observe que usted no digita explcitamente el prompt In[1]:=; slo digita el
texto que sigue despus de este aviso.

Observe tambin que la mayor parte de los dilogos dados en el libro
muestran salidas en la forma que usted obtendra con una interfase de cuaderno
de Mathematica; la salida con una interfase basada en texto luce similar, pero
carece de caractersticas tales como caracteres especiales y cambio de tamao de
fuente.

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


21

CAPTULO 3




CLCULOS NUMRICOS


3.1. ARITMTICA

Usted puede hacer aritmtica con Mathematica tal y como lo hara con una
calculadora.

Aqu tenemos la suma de dos nmeros.

5.6 + 3.7

9.3

Con * indicamos el producto de dos nmeros.

5.6 * 3.7

20.72

Usted puede digitar operaciones aritmticas haciendo uso de los parntesis.

(2 + 3) ^ 3 4 (6 + 7)

73

Los espacios no son necesarios, aunque a menudo hacen su entrada ms fcil
de leer.
(2+3)^34(6+7)

73


Las operaciones aritmticas en Mathematica se agrupan de acuerdo con las
convenciones estndares de la matemtica. 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
explcitamente usando parntesis.

Este resultado se da en notacin cientfica.

3.7 ^ 36

2.85274x1020

Usted puede incorporar nmeros en notacin cientfica de esta forma.

4.6 10^45

4.6x1045


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 electrnica hace todos sus clculos con una precisin
determinada, digamos de diez dgitos decimales. Con Mathematica, en cambio,
usted puede obtener resultados exactos.

Mathematica da un resultado exacto para 2300 , a pesar que ste tiene 91
dgitos decimales.

2^300

203703597633448608626844568840937816105146839366593
6250636140449354381299763336706183397376

Usted puede pedir a Mathematica que devuelva un resultado aproximado, tal
como lo dara una calculadora, para ello debe finalizar su entrada con //N.

Esto da un resultado numrico aproximado.


2^300//N

2.037041090

Mathematica puede dar resultados en trminos de nmeros racionales.

1/3 + 2/7

13

21

//N siempre da un resultado numrico aproximado.

1/3 + 2/7//N

0.619048

exp //N da un valor numrico aproximado para exp


23


Obteniendo aproximaciones numricas.

Cuando usted digita un entero como 7, Mathematica asume que es exacto. Si
usted digita un nmero como 4.5, con un punto decimal explcito, Mathematica
asume que desea efectuar clculo numricos aproximados.

Cuando usted digita un nmero con un punto decimal explcito, Mathematica
produce un resultado numrico aproximado.

26.7/78

0.342308

Aqu otra vez, la presencia del punto decimal hace que Mathematica d un
resultado numrico aproximado.
26./78

0.333333


Cuando cualquier nmero en una expresin aritmtica es digitado con un
punto decimal explcito, usted obtiene un resultado numrico aproximado para
toda la expresin.

5. + 9 / 78 - 5/8

4.49038

3.3. ALGUNAS FUNCIONES MATEMTICAS

Mathematica incluye una gran coleccin de funciones matemticas. A
continuacin mencionamos las ms comunes.





















3.4. Algunas funciones matemticas 24

Los argumentos de todas las funciones en Mathematica se colocan entre
corchetes.

Los nombres de las funciones incorporadas en Mathematica empiezan con
letra mayscula.

Dos puntos importantes acerca de funciones en Mathematica.

Es importante recordar que todos los argumentos de funciones se colocan
entre corchetes, no entre parntesis. Los parntesis en

Mathematica se usan solamente para indicar agrupacin de trminos, y jams
para encerrar argumentos de funciones.

Esto da loge (15.7) . Note la letra mayscula para Log, y los corchetes para el
argumento.

Note que todos los nombres de las constantes incorporadas en Mathematica
empiezan con mayscula.

Este es el valor numrico de 2 .

Pi^2//N

9.8696

Esto devuelve un resultado exacto para sen(/2).Note que los argumentos de
las funcin trigonomtricas siempre se dan en radianes.

Sin[Pi/2]

1

Esto devuelve el valor numrico 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
notacin estndar de Mathematica la b es opcional.


Log[3,81]

4


25

3.4. CLCULOS CON PRECISIN ARBITRARIA

Cuando usted utiliza //N para obtener un resultado numrico, Mathematica
hace que lo que hara una calculadora estndar: devuelve el resultado con un
nmero fijo de cifras significativas. No obstante, usted puede indicarle a
Mathematica las cifras significativas con las que desea operar. Esto permite
obtener resultados numricos en Mathematica con cualquier grado de precisin.

exp //N o N[exp] valor numrico aproximado para exp N[exp, n] valor
numrico de exp calculado con n dgitos de precisin


Esto devuelve el valor numrico de con un nmero fijo de cifras
significativas. Digitar N[Pi] es equivalente a Pi//N.

N[Pi]

3.14159

Esto devuelve con 50 dgitos.

N[Pi, 50]

3.1415926535897932384626433832795028841971693993751

Al realizar cualquier tipo de clculo numrico puede introducir pequeos
errores de redondeo en sus resultados. Cuando se aumenta la precisin numrica
estos errores se hacen ms pequeos. Asegurarse que usted obtiene la misma
respuesta al aumentar la precisin numrica es a menudo una buena forma de
verificar los resultados.

La cantidad e 163 esta bastante prxima a ser entera. Para verificar que el
resultado no es, de hecho, un entero, usted tiene que usar la precisin numrica
suficiente.


N[Exp[Pi Sqrt[163]], 40]

2.6253741264076874399999999999925007259721017

3.5. NOTACIONES MATEMTICAS EN CUADERNOS

Si usa una interfase basado en texto con Mathematica, entonces las entradas
que usted vaya a hacer consistirn 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 estndares usando el
submen

Pelettes del men File.

Haciendo clic en el botn de esta paleta ingresar pi en su cuaderno.







Haciendo clic en el primer botn 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>.



4. Clculos 26


CAPTULO 4




CLCULOS


4.1. USO DE RESULTADOS PREVIOS

Al realizar clculos, 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 lneas
sucesivas de entradas y salidas aparecern siempre en orden, como se muestra en
este tem. Sin embargo, si utiliza una interfase de cuaderno, entonces varias lneas
sucesivas de entradas y salidas no necesariamente aparecen en orden. Usted
puede por ejemplo volver atrs e insertar el clculo 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 posicin en el cuaderno. Con una interfase de
cuaderno, la nica manera de saber cundo 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 relacin con el orden
en el cual los resultados fueron generados.


4.2. DEFINICIN DE VARIABLES

Cuando usted efecta clculos extensos, muchas veces es conveniente dar
nombre a los resultados intermedios. De la misma manera que en las matemticas
tradicionales o en otros lenguajes de programacin, 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


27


Esto asigna un nuevo valor para x.

x = 11 + 5

16


pi es inicializada con el valor numrico de con 20 dgitos 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 explcitamente. El valor, claro
est, desaparecer si usted inicia una nueva sesin con Mathematica.

Olvidarse de las definiciones hechas es la causa ms comn 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 explcitamente 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 lmite
par longitud de sus nombres. Un inconveniente, sin embargo, es que los nombres
de las variables nunca pueden empezar con nmeros. Por ejemplo, x3 puede ser
una variable, pero 2x significa 2*x.


Mathematica usa letras minsculas y maysculas. Hay una convencin para
los objetos incorporados en Mathematica, los nombres de todos ellos empiezan
con letra mayscula. Para evitar alguna confusin, usted siempre debe escoger
nombres que empiecen con letra minscula.

4.3. CONSTRUCCIN DE LISTAS

Al realizar clculos, 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 despus las listas son muy importantes en

Mathematica.

4.3. Construccin de listas 28


Una lista como {4,7,6} es una coleccin de tres objetos. Pero en muchos casos
usted puede tratar esta lista como un solo objeto. Usted puede, por ejemplo, hacer
aritmtica con esta lista o asignarla a una variable.


Aqu hay una lista de tres nmeros.

{4, 7, 6}

{4, 7, 6}


Esto eleva al cubo cada nmero 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 funcin matemtica 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. Manipulacin de los elementos de una lista

Muchas de las ms potentes operaciones de manipulacin 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.


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}











4. 5. Secuencia de operaciones 30


4.4. SECUENCIA DE OPERACIONES


Al realizar clculos con Mathematica, usted usualmente lo hace mediante una
secuencia de pasos. Si usted desea puede realizar cada paso en una lnea separada.
A veces, sin embargo, es conveniente ingresar varios pasos en una misma lnea.
Usted puede hacer esto simplemente separando cada una de las partes ingresadas
con punto y coma.

Esto realiza tres operaciones en una misma lnea. El resultado corresponde a
la ltima operacin.

x = 3; y = 7; z = y - 2

5


31

CAPTULO 5




USO DEL SISTEMA MATHEMATICA




Un aspecto importante de Mathematica es que no solamente puede
interactuar con usuarios humanos sino que tambin puede hacerlo con otros
programas. Esto se logra principalmente a travs del MathLink, el cual es un
protocolo estandarizado para la comunicacin bidireccional entre programas
externos y el ncleo de Mathematica.

Un fragmento de cdigo C que se comunica va 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 comn tener los captulos,
secciones etc., representados cada uno en grupos de celdas. La extensin de estos
grupos de celdas es indicada por el corchete que aparece a la derecha.

La agrupacin de celdas en un cuaderno se indica con los corchetes anidados
que aparecen en el lado derecho.












5. 1. Cuadernos como documentos 32


Un grupo de celdas puede estar abierto o cerrado. Cuando est abierto usted
puede ver todas sus celdas explcitamente. Pero cuando est cerrado, usted slo
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 slo 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 ncleo de Mathematica est tpicamente el estilo
de Input (entrada), mientras que el que se entiende para ser ledo como puramente
de texto est tpicamente en estilo Text (texto).

La interfase de Mathematica provee mens y mtodos abreviados de teclas
para crear celdas con diferentes estilos, y para cambiar estilos en las celdas
existentes.

33


Esto muestra celdas en diferentes estilos. Los estilos no slo definen el
formato del contenido de las celdas, sino que tambin su ubicacin y espaciado.
















Poniendo una celda en un estilo en particular, usted especifica una coleccin
entera de propiedades para celda, incluyendo por ejemplo el tamao 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 especfico 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, realizacin de
animaciones y reproduccin de sonidos utilizan solamente una parte pequea del
front end de Mathematica, y estas operaciones tranquilamente se pueden realizar
con un programa fcilmente disponible conocido como MathReader.

Para poder crear y corregir los cuadernos, usted necesita ms que el front end
de Mathematica. Y finalmente, para poder actualizar los clculos dentro de un
cuaderno de Mathematica, necesita un sistema completo de Mathematica, que
contenga el front end y el ncleo.


Programas requeridos para diversas clases de operaciones en los cuadernos.


5. 2. Elementos activos en cuadernos 34



5.2. ELEMENTOS ACTIVOS EN CUADERNOS

Una de las caractersticas ms potentes de los cuadernos de Mathematica es
que sus acciones pueden ser programadas. As, por ejemplo, usted puede
establecer un botn en un cuaderno de Mathematica que permita realizar varias
operaciones siempre que usted haga clic sobre l.

He aqu un cuaderno que contiene un botn.




Haciendo clic en el botn 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 comn 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 algn 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 ms simples, los botones en las paletas sirven como teclas
adicionales a su teclado. As, cuando usted presiona un botn, el carcter o el
objeto mostrado en aquel botn es insertado en su cuaderno tal como si usted lo
hubiera escrito a mquina.

Aqu est una paleta de letras griegas con botones que actan como teclas
adicionales a su teclado.








35


A menudo, sin embargo, un botn puede contener un placeholder indicado
por . Esto significa que cuando usted presiona el botn, lo que se selecciona
actualmente en su cuaderno ser insertado en la posicin del placeholder.

Estos botones contienen placeholders indicados por .





Este es un cuaderno con una expresin seleccionada.




Al presionar el botn superior izquierdo de la ltima paleta la expresin
seleccionada queda envuelta en una raz cuadrada.




A veces los botones que contienen placeholders sern programados
simplemente para insertar una cierta expresin en su cuaderno. Pero ms a
menudo, sern programados para evaluar el resultado, envindolo como una
entrada al ncleo de Mathematica.

Estos botones se inicializan para realizar operaciones.





He aqu un cuaderno con una expresin seleccionada.





Al presionar el botn superior en la ltima paleta la expresin seleccionada es
simplificada.




Hay algunas situaciones en las cuales es conveniente tener varios placeholders
en un solo botn. Su actual seleccin se inserta en la posicin del primer
placeholder, indicada por . Los placeholder adicionales se indican por , y usted
puede trasladarse a travs de los placeholders sucesivos usando la tecla <Tab>.

He aqu una paleta que contiene botones con varios placeholders.




5. 2. Elementos activos en cuadernos 36

He aqu una expresin en un cuaderno.





Presionando el botn superior izquierdo en la ltima paleta insertamos la
expresin 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 caractersticas ms importantes de Mathematica es que es un
sistema extensible. Hay una cierta cantidad de funciones incorporadas en
Mathematica. Pero usando el lenguaje de programacin de Mathematica, siempre
es posible aadir ms funciones.

Para muchos tipos de clculos, lo incorporado en la versin estndar 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 podra encontrar un package (paquete) de Mathematica
que contiene las funciones que usted necesita. Los paquetes de Mathematica son
archivos escritos en el lenguaje de programacin 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 funcin 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

5. 3. Paquetes en Mathematica 37


debe olvidar es que usted no debe referirse a una funcin que leer desde un
paquete antes de leerla realmente en el paquete. Si usted hace esto por
equivocacin, deber ejecutar el comando Remove[name] para librarse de la
definicin de la funcin que usted hizo antes de leer el paquete. Si usted no usa
Remove, Mathematica usar su versin de la funcin, 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 nmero determinado de las funciones descritas en este libro se
ejecutan como paquetes de Mathematica. Sin embargo, en la mayora de los
sistemas de Mathematica, se han cargado los paquetes necesarios, de modo que
las funciones que ellos definen estn siempre presentes.

Usted puede utilizar el Help Browser para obtener informacin sobre los
paquetes estndares de Mathematica. Para ello seleccione la tarjeta Add-ons &
Links del mismo.


5.4. INTERRUPCIN DE CLCULOS

Probablemente habr veces en que desee detener Mathematica en medio de un
clculo. Tal vez usted se da cuenta que pidi a Mathematica hacer un clculo
incorrecto. O quizs el clculo tarda demasiado, y usted quiere saber que es lo que
pasa.

La forma en que usted interrumpe un clculo 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 clculos en Mathematica.

En algunos sistemas informticos, puede tomar a Mathematica un cierto
tiempo para responder a su interrupcin. Cuando Mathematica responde, le dar
un men de cosas posibles para hacer.


38

CAPTULO 6




CLCULOS ALGEBRAICOS


6.1. CLCULO SIMBLICO

Una de las caractersticas importantes de Mathematica es que puede hacer
clculos simblicos y numricos. Esto significa que puede manejar frmulas
algebraicas as como nmeros.

He aqu un tpico clculo numrico.

4 + 36 - 1

39

Este es un clculo simblico.

7 x 3 x + 6

6 + 4x

Clculo numrico 4 + 36 - 1 39
Clculo simblico 7x - 3x + 6 6 + 4x

Usted puede digitar cualquier expresin algebraica en Mathematica.

-1 + 2 x + x^3

-1 + 2x + x3

Mathematica realiza automticamente simplificaciones algebraicas bsicas.
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 multiplicacin. Tenga cuidado de no
olvidarse del espacio en x y . Si usted digita xy sin espacio, Mathematica
interpretar esto como solo smbolo, con el nombre xy, no como un producto de
dos smbolos x y y.

Mathematica reordena y combina trminos usando las reglas estndares del
lgebra.
x y + 2 x^2 y + y^2 x^2 - 2 y x

-xy + 2x2y + x2y2

He aqu otra expresin algebraica.

(x + 2 y + 1)(x - 2)^2

(-2 + x)2(1 + x + 2y)

6. Clculos algebraicos 39


La funcin Expand ampla 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 SMBOLOS

Cuando Mathematica transforma una expresin por ejemplo x + x en 2x, est
tratando la variable x en forma puramente simblica o formal. En tales casos, x es
un smbolo que puede representar cualquier expresin.

A menudo, sin embargo, usted necesita sustituir un smbolo como x por un
valor determinado. Algunas veces este valor ser un nmero; aunque
frecuentemente ser una expresin.

Para sustituir el smbolo x, que aparece en la expresin 1 + 2 x, con un valor
determinado; puede crear una regla de la transformacin en Mathematica, y
despus aplicar esta regla a la expresin. Para sustituir x por el valor 3, usted
creara la regla de transformacin 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 transformacin a una expresin 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 transformacin x->3 en la expresin 1 + 2 x .

1 + 2x /. x -> 3

7


6.3. LAS LIMITACIONES DE MATHEMATICA

En slo un comando de Mathematica, usted puede especificar fcilmente un
clculo que sea demasiado complicado de hacer para cualquier ordenador. Por
ejemplo, usted podra pedir Expand[(1+x)^(10^100)]. El resultado de este clculo
tendra ms trminos que el nmero total de partculas en el universo.

Usted no tendra ningn 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 harn
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
40


que su computadora tiene, sino a menudo tambin de detalles tales como qu
otros trabajos esta realizando su computadora cuando usted intenta hacer su
clculo.

Si su ordenador realmente se queda sin memoria en medio de un clculo, la
mayor parte de versiones de Mathematica no tienen ninguna otra opcin, ms que
pararse inmediatamente. Por consiguiente, es importante planificar sus clculos de
modo que ellos nunca necesiten ms memoria de la que su ordenador tiene.

Incluso si el resultado de un clculo algebraico es absolutamente simple, las
expresiones intermedias que usted genera en el curso del clculo pueden ser muy
complicadas. Esto significa que incluso si el resultado final es pequeo, las partes
intermedias de un clculo pueden ser demasiado grandes de manejar para su
ordenador. Si esto sucede, puede particionar su clculo, 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 clculo 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 ms comn en los clculos con
Mathematica. El tiempo tambin, sin embargo, puede ser un factor restrictivo.
Usted por lo general esta preparado para esperar un segundo, o an un minuto,
para obtener el resultado de un clculo. Pero no lo esta para esperar una hora o un
da, y casi nunca ser capaz de esperar un ao.

El cdigo 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
cuestin tpica es que el tiempo requerido por el algoritmo puede aumentar casi
exponencialmente con el tamao de la entrada. Un caso clsico es la factorizacin
de nmeros enterosdonde los mejores algoritmos conocidos requieren tiempos
que crecen casi de manera exponencial con el nmero de dgitos. En la prctica,
usted encontrar que FactorInteger[k] dar un resultado casi inmediato cundo k
tiene menos de aproximadamente 40 dgitos. Pero si k tiene 60 dgitos,
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 clculos
particulares cada vez ms rpidos. Pero las ideas de la teora de cmputo sugieren
que muchos cmputos siempre requerirn una cantidad irreducible de trabajo
computacionalde modo que ningn algoritmo ms rpido sea encontrado alguna
vez para ellos.

Hacer aritmtica con los nmeros que contienen algunos cientos millones de
dgitos.
Generar un milln de dgitos de nmeros como y e .

Expandir un polinomio que da un milln de trminos.

Factorizar un polinomio en cuatro variables con unos cien mil trminos.
Reducir un sistema de desigualdades cuadrticas para unos miles de componentes
independientes.
Encontrar las races enteras de un polinomio con grado un milln. Aplicacin
de una regla recurrente un milln de veces.
6. Las limitaciones de Mathematica 41


Clculo de todos los primos hasta diez millones.

Encontrar la inversa numrica de una matriz de 1000x1000.

Solucin de un sistema lineal de un milln de variables con cien mil
coeficientes no ceros.

Encontrar el determinante de una matriz entera de 250x250. Encontrar el
determinante de una matriz simblica de 20x20.
Encontrar las races numricas de un polinomio de grado 200.

Solucin de un problema de programacin lineal con cien mil variables.
Encontrar la trasformada de Fourier de una lista con cien millones de elementos.
Representacin de milln de grficos primitivos. Clasificar una lista de diez
millones de elementos.
Buscar una cadena que tiene diez millones de caracteres. Importacin de unos
diez megabytes de datos numricos.
Formatear unas cien de pginas con salida TraditionalForm.

Algunas operaciones que tpicamente toman algunos segundos en una PC
2004.



42


CAPTULO 7




MATEMTICAS SIMBLICAS


7.1. Operaciones bsicas

La capacidad de Mathematica de tratar con expresiones simblicas, as como
nmeros, le permite usarlo para muchas clases de matemticas.

El clculo es un ejemplo. Con Mathematica, usted puede diferenciar una
expresin simblicamente, y conseguir una frmula para el resultado.

Esto encuentra la derivada de xn .

D[ x^n, x ]

He aqu un ejemplo ligeramente ms complicado.

D[x^2 Log[x + a], x]


Obtener frmulas como resultado de cmputos es generalmente deseable
cuando es posible. Hay sin embargo muchas circunstancias donde es
matemticamente imposible conseguir una frmula explcita como resultado de un
cmputo. Esto sucede, por ejemplo, cuando intenta solucionar una ecuacin para
la cual no hay solucin de forma cerrada. En tales casos, debe recurrir a mtodos
y aproximaciones numricas.


7.2. DIFERENCIACIN

He aqu la derivada xn con respecto a x .

D[ x^n, x ]


Mathematica conoce las derivadas de todas las funciones matemticas
estndar.
D[ ArcTan[x], x ]



La tercera derivada con respecto a x .

D[ x^n, {x, 3} ]


La funcin D[x^n,x] realmente da la derivada parcial, en la cual se asume que
n no depende x. Mathematica tiene otra funcin, llamada Dt, que encuentra
7.2. Diferenciacin 43

derivadas totales, en la cual todas las derivadas se asumen relacionadas. En
notacin matemtica, 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 simblicamente, usted tambin puede tratar
funciones simblicamente en Mathematica. As, por ejemplo, puede encontrar
frmulas para las derivadas de f[x], sin especificar una forma explcita para la
funcin f.

Mathematica no sabe como diferenciar f, as que le devuelve un resultado
simblico en trminos de f'.
D[ f[x], x ]

Mathematica utiliza la regla de cadena para simplificar derivadas.

D[ 2 x f[x^2], x ]


7.3. INTEGRACIN

He aqu la integral xn dx en Mathematica.

Integrate[x^n, x]



Mathematica sabe resolver casi cualquier integral que puede ser expresada en
trminos de funciones matemticas estndares. Pero debe comprender que aun
cuando un integrando pueda contener slo funciones simples, su integral puede
implicar funciones mucho ms complicadaso no puede ser expresable en
absoluto en trminos de funciones matemticas estndares.

He aqu una integral simple.

Integrate[Log[1 - x^2], x ]


Esta integral puede ser expresada slo en trminos de una funcin de
dilogartmica.

Integrate[Log[1 - x^2]/x, x]



Esta integral involucra Erf.

Integrate[Exp[1 - x^2], x]




44

Y esta otra involucra una funcin de Fresnel.

Integrate[Sin[x^2], x]





Esta integral incluso requiere una funcin hipergeomtrica.

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 notacin de iteradores que Mathematica utiliza.
Usted ver esta notacin otra vez cuando discutamos la generacin de tablas y
listas usando Table y cuando describamos los lazos Do .






7.4. Sumas y Productos 45



{imax}
iterador imax sin incrementar
variable alguna
{i,imax} i vara de 1 a imax en pasos de 1
{i,imin,imax}
i vara de imin a imax en pasos de
1
{i,imin,imax,di}
i vara de imin a imax en pasos de
di
{i,imin,imax}, i vara de imin a imax, y para cada valor, j vara
{j,jmin,jmax},... de jmin a jmax, etc.

Notacin de iteradores en Mathematica.


7.5. ECUACIONES

Esta seccin habla de ecuaciones, que prueban una igualdad. La ecuacin x ==
y , prueba si x es igual a y.

Esto prueba si 2 + 2 y 4 son iguales. El resultado es el smbolo True.

2 + 2 == 4

True

Es muy importante que usted no confunda x = y con x == y . Mientras que x =
y es una declaracin imperativa que en realidad origina una asignacin, x == y
simplemente prueba si x y y son iguales, y no causa ninguna accin explcita.

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.


46


x == 6

False


Esto remueve el valor asignado a x.

x = .

7.5. OPERADORES RELACIONALES Y LGICOS




Esto prueba si 10 es menor que 7. El resultado es False.

10 < 7

False

No todos estos nmeros son desiguales, por esta razn se obtiene False.

3 != 2 != 3

False

Puede mezclar < y <=.

3 < 5 <= 6

True

Ya que las cantidades involucradas son numricas, Mathematica puede
determinar que esto es verdadero.
Pi^E < E^Pi

True

Usted debe recordar que las operaciones lgicas ==, && y || tienen todas doble
caracter en Mathematica. Si ha usado un lenguaje de programacin como C, estar
7.5. Ecuaciones 47



familiarizado con esta notacin.

Mathematica no sabe si esto es verdadero o falso.

p && q p && q

Mathematica deja esta expresin inalterada.

(p || q) && !(r || s)

(p || q) &&! (r || s)

Puede usar LogicalExpand para expandir los trminos.

LogicalExpand[ % ]
(p && !r && !s) || (q && !r && !s)

PARTE 2






EJERCICIOS Y PROBLEMAS DE MATEMTICAS CON MATHEMATICA















ndice Parte 2






1. Primeros pasos 4
1.1. Clculo simblico con Mathematica . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.1.1. Polinomios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.1.2. Expresiones trigonomtricas . . . . . . . . . . . . . . . . . . . . . . . . . 15

2. Cmo dibujar con Mathematica 17
2.1. La orden Plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.1.1. Opciones de Plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2. Grficos en coordenadas paramtricas . . . . . . . . . . . . . . . . . . . . . . . .20
2.2.1. Algunas curvas planas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3. El comando Show . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.4. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3. Vectores y matrices 24

4. Resolucin de ecuaciones 30
4.1. Ecuaciones sencillas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

4.2. Sistemas de ecuaciones lineales . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.3. Resolucin de sistemas de ecuaciones . . . . . . . . . . . . . . . . . . . . . . . 34
4.4. Otros mtodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

4.4.1. Breves conceptos de programacin . . . . . . . . . . . . . . . . . . . . . 36
4.4.2. Mtodo de Biseccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.4.3. Mtodo de Newton-Raphson . . . . . . . . . . . . . . . . . . . . . . . . 40
4.5. El comando FindRoot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

5. Extremos de funciones de una variable 44
5.1. Continuidad y lmites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

5.2. Mximos y mnimos relativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

6. Frmula de Taylor 47


7. Integracin 52
7.1. Integrales definidas e indefinidas . . . . . . . . . . . . . . . . . . . . . . .52
7.2. Longitudes, reas y volmenes . . . . . . . . . . . . . . . . . . . . . . . .54
7.3. Integrales impropias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

8. Grficos en 3D 57
8.1. El comando Plot3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
8.1.1. Opciones del comando Plot3D . . . . . . . . . . . . . . . . . . . . . 58
8.2. Grficos de contorno. Curvas de nivel. . . . . . . . . . . . . . . . . . . . 59
8.3. Grficos paramtricos. Curvas y superficies. . . . . . . . . . . . . . . . . .60
8.3.1. Superficies de revolucin . . . . . . . . . . . . . . . . . . . . . . . 61

9. Extremos relativos y condicionados 65
9.1. Derivadas parciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65
9.2. Representacin grfica . . . . . . . . . . . . . . . . . . . . . . . . . . . .66
9.2.1. Campos de vectores . . . . . . . . . . . . . . . . . . . . . . . . . 69
9.3. Extremos relativos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
9.4. Extremos condicionados. . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

10.Integrales mltiples 81







CAPTULO 1
Primeros pasos
Comenzaremos a familiarizarnos con el Mathematica haciendo, al principio, cosas muy simples
que nos ayudarn a conocer los principales comandos y cmo se deben usar.
Para efectuar clculos numricos, el programa Mathema-
tica funciona como una simple calculadora, con la salvedad
de que con el Mathematica puedes obtener una precisin
que no tienen las calculadoras normales.
Una vez que hemos empezado el programa nos encon-
tramos delante de una pantalla ms o menos como la de
la gura. Arriba tienes la barra de Men, debajo tienes una
ventana vaca que es donde trabajaremos, y a la derecha te-
nemos una paleta con operaciones que ya iremos comen-
tando con ms detalle.
Una vez iniciada la ejecucin del programa, pulsa con el
botn izquierdo del ratn en la ventana principal y escribe: 3+2, y luego pulsa o Enter en
el teclado numrico. Observars que en la pantalla aparece lo siguiente:
In[1]:=
3+2
Out[1]=
5
No intentes escribir los smbolos 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 dgito de control no
coincide con el que aparezca en este texto.
A continuacin, con el ratn puedes pulsar sobre los nmeros que habas escrito, y cambiarlos,
o aadir nuevos sumandos, etc... y recuerda que siempre que quieras obtener el resultado, debers
5
pulsar . Tambin podrs escribir los siguientes comandos debajo del resultado anterior,
con lo que quedar constancia escrita de las operaciones que vas haciendo. Observars que en las
sucesivas operaciones el ordenador responde ms rpido que en la primera, ya que al efectuar la
primera operacin, el programa debi leer del disco las reglas de clculo (esto es, el kernel del
programa), y dichas reglas permanecen en su memoria a partir de ese momento.
Para multiplicar nmeros no es necesario escribir el smbolo de la multiplicacin (opcionalmente
*), y basta con poner un espacio entre los factores.
In[2]:=
3 2
Out[2]=
6
Para efectuar potencias, puedes escribir
In[3]:=
385
Out[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 botn 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 obtendrs el resultado,
algo as:
In[4]:=
2
3
Out[4]=
8
Puedes hacer operaciones con fracciones, y obtener la fraccin resultante...
In[5]:=
2+3/13
Out[5]=
29
13
6 Primeros pasos
(Por qu el resultado no ha sido
5
13
?) Si lo preeres, puedes aproximar el resultado mediante
unos cuantos dgitos de su expresin decimal:
In[6]:=
N[2+3/13]
Out[6]=
2.23077
... y si quieres que el Mathematica calcule 40 dgitos (incluyendo la parte entera)...
In[7]:=
N[2+3/13,40]
Out[7]=
2.2307692307692307692307692307692307692308
por qu el ltimo dgito del comando anterior fue un 7 y no un 6? y por qu ahora el ltimo
dgito ha sido un 8 y no un 7?
Si quieres, puedes poner dos mil decimales. Haz la prueba.
Sigamos probando... para obtener la raz de un nmero se usa el comando Sqrt o utilizar la
paleta (observa que la S es mayscula, y el nmero debe ir entre corchetes):
In[8]:=
Sqrt[5]
Out[8]=

5
... pues vale... y encima es hasta verdad... pero si quieres la expresin decimal con quince dgitos,
In[9]:=
N[Sqrt[5],15]
Out[9]=
2.23606797749979
Tambin puedes hacer la raz cuadrada de un nmero, elevando dicho nmero al exponente
1
2
In[10]:=
5(1/2)
Out[10]=

5
7
Podras ahora obtener una aproximacin decimal de
7

86 con doscientas cifras decimales?.


Intntalo.
Adems de saber calcular las races, Mathematica tambin conoce las reglas de clculo para
operar con ellas:
In[11]:=
Sqrt[2] Sqrt[3]
Out[11]=

6
...o bien...
In[12]:=
Sqrt[5(1/3)]
Out[12]=
5
1/6
Como ya habrs notado, en la paleta tienes botones que permiten escribir fracciones, races de
cualquier orden y algunas de las constantes ms usuales como el nmero e o .
Se supone que conocemos aproximadamente el valor del nmero , y tambin Mathematica lo
conoce...
In[13]:=
Pi
Out[13]=

...ya... parece ms interesante as:


In[14]:=
N[Pi]
Out[14]=
3.14159
Es probable que alguno de nosotros conozca ms dgitos, pero Mathematica es capaz de decirnos
los primeros cinco mil dgitos de . Prueba.
Ahora vamos a trabajar con variables. Prueba el siguiente comando (ten en cuenta que para
cambiar de lnea dentro de un comando es necesario pulsar slo , y nalmente para
ejecutar todo el comando)
8 Primeros pasos
In[15]:=
a=20;
b=4;
a/b
Out[15]=
5
Observa que las lneas 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 lnea 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 operacin 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 operacin nmero 15,
In[17]:=
%15
Out[17]=
5
adems podemos usar esa informacin como cualquier otro dato
In[18]:=
%152
Out[18]=
25
Para obtener el resultado inmediatamente anterior usamos % sin ningn nmero,
In[19]:=
%
Out[19]=
25
9
% % para el penltimo, etc...
Adems de las operaciones elementales que hemos visto, Mathematica tiene denidas la mayor
parte de las funciones elementales. Los nombres de estas funciones suelen ser su abreviatura en
ingls, que algunas veces diere bastante de su nombre castellano. En general, cualquier comando
de Mathematica se escribe con la primera letra en mayscula. Por ejemplo
In[20]:=
Sqrt[4]
Out[20]=
2
Algunos ejemplos de funciones con Mathematica son:
Funcin exponencial: Exp[x]
In[21]:=
Exp[2]
Out[21]=
E
2
(para Mathematica el nmero e se escribe E) y si queremos su expresin decimal
In[22]:=
N[Exp[2]]
Out[22]=
7.38906
Otra forma de calcular la funcin exponencial aplicada a x es elevando E a x. Podras calcular
as e
5
? y su primera cifra decimal? Haz lo mismo usando la funcin Exp y comprueba que da el
mismo resultado.
Funcin logaritmo neperiano: Log[x]
In[23]:=
Log[20]
Out[23]=
Log[20]
...ya empezamos... Bueno, si lo que nos interesa es su expresin decimal
In[24]:=
N[Log[20]]
Out[24]=
2.99573
10 Primeros pasos
En Mathematica , si no decimos lo contrario, los logaritmos sern 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
Cunto valdr el logaritmo en base 2 de 64? Comprubalo. Cunto debe valer Log[Exp[7]]? Y
Exp[Log[7]]? Pide a Mathematica que los calcule.
Funciones trigonomtricas: Sin[x], Cos[x], Tan[x] (seno, coseno, tangente)
In[26]:=
Sin[Pi/4]
Out[26]=
1

2
Tambin podemos usar las funciones trigonomtricas 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 mayscula; escrbelo as, si no, Mathematica no lo entender.
In[27]:=
ArcTan[1]
Out[27]=

4
Prueba a componer dos o ms de todas estas funciones y a hacer clculos con ellas.
1.1. Clculo simblico con Mathematica
Hasta ahora slo hemos usado el Mathematica como una calculadora muy potente, pero prctica-
mente todo lo que hemos aprendido puede hacerse sin dicultad 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 clculo sim-
blico, es decir, el trabajar con expresiones algebraicas (expresiones donde intervienen variables,
constantes... y no tienen porqu tener un valor numrico concreto) en vez de con nmeros. Por
ejemplo, el programa sabe que la funcin Log es inversa de Exp, con lo que si ponemos
1.1 Clculo simblico 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 simblicamente con
ella. Ms ejemplos
In[2]:=
Exp[x]Exp[y]
Out[2]=
E
x+y
In[3]:=
a+2a+5b
Out[3]=
3 a + 5 b
Para Mathematica cualquier letra o combinacin de letras puede ser una variable o una constante.
Hay excepciones como la letra E, que siempre indica el nmero 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. Cmo podemos hacer que Mathematica diferencie entre constantes (valor
jo) 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]:=
a
2
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
12 Primeros pasos
In[6]:=
Clear[a]
(observa que esta entrada no produce ninguna salida)
In[7]:=
a
2
Out[7]=
a
2
ahora, a es una variable, esto es, no tiene un valor concreto y Mathematica debe tratarla simblica-
mente. Si queremos que todas las constantes que hayamos denido 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 trigonomtricas, ecuaciones...
1.1.1. Polinomios
Si introducimos el siguiente polinomio
In[8]:=
x
2
+ 2 x + 1
Out[8]=
1 + 2 x + x
2
Mathematica no intenta simplicarlo. 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 + x
2
- (1 + x)
2
1.1 Clculo simblico con Mathematica 13
Mathematica no se da cuenta de que la expresin vale cero. Esto es porque no factoriza ni desa-
rrolla automticamente, sino que debemos decirle que lo haga. Cmo lo hacemos? Con las rdenes
Expand[expresin] (desarrollar), Simplify[expresin] (simplicar) y Factor[expresin] (fac-
torizar):
In[11]:=
Expand[(x-2)(x-1)x(x+1)(x+2)]
Out[11]=
4 x - 5 x
3
+ x
5
tambin con varias variables
In[12]:=
Expand[(2y-x)(-3x+y)(x+y)]
Out[12]=
3 x
3
- 4 x
2
y - 5 x y
2
+ 2 y
3
In[13]:=
Factor[ %]
Out[13]=
(x - 2 y) (3 x - y) (x + y)
In[14]:=
Expand[1+2x+x
2
- (1+x)
2
]
Out[14]=
0
In[15]:=
Factor[1+2x+x
2
- (1+x)
2
]
Out[15]=
0
La orden Simplify sirve para simplicar una expresin, factorizando o no, segn convenga:
14 Primeros pasos
In[16]:=
Simplify[1+x
3
]
Out[16]=
1 + x
3
In[17]:=
Simplify[x
2
+2x+1+(1+x)
2
]
Out[17]=
2(1 + x)
2
Hay veces que la expresin es demasiado complicada y Simplify no da ningn resultado
prctico. En este caso se puede intentar usar la orden FullSimplify, pero hay que tener en cuenta
que el tiempo para realizar los clculos 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]=
1
2
(3 +

13)
El comando Short sirve para ver mejor polinomios muy grandes, mostrando slo algunos de los
trminos de mayor y menor grado
In[20]:=
Expand[(x+1)
5
]
Out[20]=
1 + 5 x + 10 x
2
+ 10 x
3
+ 5 x
4
+ x
5
In[21]:=
Short[ %]
Out[21]=
1 + 5 x + 3 + x
5
1.1 Clculo simblico con Mathematica 15
1.1.2. Expresiones trigonomtricas
Mathematica conoce las identidades trigonomtricas y puede usarlas para simplicar 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+t
2
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
16 Primeros pasos
TrigExpand tambin trabaja con funciones hiperblicas:
In[26]:=
TrigExpand[Sinh[2 x]
3
]
Out[26]=

3
2
Cosh[x] Sinh[x] +
3
2
Cosh[x]
5
Sinh[x] +
5 Cosh[x]
3
Sinh[x]
3
+
3
2
Cosh[x] Sinh[x]
5
CAPTULO 2
Cmo dibujar con Mathematica
2.1. La orden Plot
Una de las grandes virtudes de Mathematica es lo fcil y completo que es su tratamiento de
los grcos 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. Tambin se pueden representar funciones
en coordenadas paramtricas e incluso se pueden realizar animaciones.
Un primer paso antes de empezar a representar grcamente una funcin es tener una manera
cmoda de denirla. Siguiendo la costumbre usaremos las letras f, g, . . . para nombrarlas. Para
denir la funcin 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 despus de la variable x aparece _. No hay
que olvidar este guin despus de cada variable cuando estemos deniendo una funcin.
Una vez denida la funcin podemos evaluarla en un punto o representarla grcamente.
Por ejemplo,
In[2]:=
f[1]
Out[2]=
Sin[1]
18 Cmo dibujar con Mathematica
o si queremos su valor numrico
In[3]:=
N[f[1]]
Out[3]=
0.841471
Tambin 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 funcin que hayamos denido no se usa el _.
Pueden surgir problemas al denir una funcin si la variable que usamos tiene asignado un
valor concreto, con lo que la funcin sera constante; en este caso, resolvemos el problema con la
sentencia Clear que vimos en la practica pasada. Por ejemplo, si queremos denir f(x) = ln(x),
podemos poner
In[5]:=
Clear[x,f];
f[x_]=Log[x]
y la funcin queda bien denida aunque antes hubisemos asignado un valor a x.
Por ltimo, tambin se pueden denir funciones a trozos. Por ejemplo:
f[t_]:= t /; t>0 && t<2
f[t_]:= -t+4 /; t<=0 || t>=2
(no produce ninguna salida) dene la funcin
f(t) =
_

_
t si 0 < t < 2
t +4 si t 0 t 2
Como has visto, hace falta escribir := para denir una funcin a trozos. El smbolo /; hace las veces
de si (condicional); los smbolos || y && son respectivamente o e y (suma y producto lgicos).
Para representar grcamente una funcin de una variable, el comando que se utiliza es
Plot[funcin,{x,x
min
, x
max
},opciones]
Mathematica decide automticamente cual es la escala ms apropiada para que la grca se vea
lo mejor posible. Si la funcin que pretendemos representar tiene alguna discontinuidad o no est
denida en algn punto, Mathematica intentar dibujarla poniendo de maniesto este hecho. Por
ejemplo, intenta dibujar la funcin tangente entre 0 y 4:
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 funcin a representar dentro del comando Plot. El inconveniente que tiene hacerlo as es que
cada vez que queramos trabajar con esa funcin tenemos que volver a escribirla, siendo ms con-
veniente ponerle nombre (p.e. f[x_]=Tan[x], y usar despus el nombre (Plot[f[x],{x,0,4Pi}]).
2.1.1. Opciones de Plot
Cuando presentamos el comando Plot dijimos que podamos poner opciones; veamos cules
son algunas de ellas:
AspectRatio>nmero
Determina la proporcin entre los ejes de abscisas y ordenadas. Si especicamos el valor 1 los
dos ejes tendrn el mismo tamao.
In[7]:=
Plot[Tan[x],{x,0,4Pi},AspectRatio->2]
PlotRange>{nmero1,nmero2}
Slo se presentan los valores de f(x) comprendidos entre nmero1 y nmero2. Si no se especi-
ca esta opcin aparecen todos los valores posibles de f(x), en funcin del rango de variacin
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[nmero1,nmero2,nmero3]
Permite escoger un color en funcin de la cantidad de rojo (nmero1), verde (nmero2) y azul
(nmero3), donde los nmeros pueden tomar cualquier valor entre 0 y 1.
20 Cmo dibujar con Mathematica
In[9]:=
Plot[Tan[x],{x,0,4Pi},
PlotStyle->{RGBColor[1,0,0]}]
Veamos algunos ejemplos de cmo utilizar estas opciones. Prueba las siguientes rdenes, com-
para los resultados e intenta variar algunos de los parmetros a ver que pasa.
Clear[x,f];
f[x_]=Exp[x] ArcTan[x];
Plot[f[x],{x,0,5},
PlotRange->{-1,30}];
Tambin se pueden dibujar varias grcas 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 g


para 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 funcin es par y cul 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. Grcos en coordenadas paramtricas
Como ya recordars, al menos para rectas, podemos representar una curva del plano en coor-
denadas paramtricas, 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:
2.2 Grcos en coordenadas paramtricas 21
ParametricPlot[{t,t2},{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 crculo de radio r rodando dentro de otro crculo
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 parametrizacin de (x
2
+ y
2
)
2
= (x
2
y
2
), tambin llamada
hiprbola 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 parametrizacin de x
2
y +a
2
y b
2
x = 0
ParametricPlot[{t,(b
2
t)/(a
2
+ t
2
)},{t,-10,10}]
Hiprbola la representacin en coordenadas cartesianas de una hiprbola con vrtice (1, 0) y foco
(a, 0) (excentricidad a) es x
2
y
2
/(a
2
1) = 1. Una hiprbola rectangular tiene excentricidad

2 y su ecuacin es xy = 1.
22 Cmo dibujar con Mathematica
ParametricPlot[{-Sec[t],Sqrt[a
2
-1] Tan[t]},{t,0,2
Pi}]
Epicicloide es la curva que describe un punto jo de un crculo que rueda sin deslizamiento por el
exterior de otro crculo (n es el nmero de vueltas).
ParametricPlot[{(1+
1
n
) Cos[t]+
Cos
_
(1+
1
n
)t
1
n
_
n
,
(1+
1
n
)Sin[t]+
Sin
_
(1+
1
n
)t
1
n
_
n
} ,{t,0,2 Pi}]
2.3. El comando Show
Como recordars, el smbolo % era utilizado para referirse al resultado anterior. Cuando el re-
sultado es un grco que queremos volver a visualizar usaremos el comando Show en la forma
siguiente
Show[%1]
Si queremos volver a representar los grcos 1 y 2:
Show[%1,%2]
2.4. Ejercicios
Ejercicio 1. Dibuja la funcin logaritmo neperiano, exponencial y f(x) = x
2
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 grcas de las funciones trigonomtricas
con las respectivas funciones hiperblicas.
Ejercicio 3. Cmo cambia la grca de una funcin 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 continuacin puedes encontrar la representacin de varias funciones. Encuentra de
qu funciones provienen.
-4 -2 2 4
5
10
15
20
25
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
CAPTULO 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 las agrupadas
tambin 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,...}]
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 nmero podemos usar la simple yuxtaposicin o el signo *. Sin embargo, el
producto de matrices, cuando los rdenes lo permiten, tiene una denicin distinta. Para multiplicar
dos matrices (las por columnas) o calcular el producto escalar de dos vectores mediante Mathe-
matica , debemos usar el punto . en lugar del signo de la multiplicacin *. A modo de ejemplo
de estas deniciones puedes comprobar los siguientes clculos
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}
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 nmero
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 denir matrices de forma automtica mediante la orden Table. La
sintaxis es la siguiente
Table[Funcin de i,j, {i, lmite de i},{j,lmite de j}]
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, las, 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 la 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 la j-sima de la traspuesta de A. Mathematica
usa el comando Transpose para transponer matrices:
Transpose[matriz]
Veamos algn ejemplo. Primero buscamos el elemento (2,3) de la matriz A denida en los ejemplos
anteriores
In[13]:=
A[[2,3]]
Out[13]=
6
Seguidamente la la segunda de A
In[14]:=
A[[2]]
Out[14]=
{4,5,6}
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 las (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, cmo podemos
calcular su rango?. Mathematica no tiene una orden especca 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 algn menor no nulo.
Mediante la orden RowReduce[matriz], que convierte la matriz en otra equivalente, pero trian-
gular superior. Expresada de esta forma es fcil 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 nmero
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 slamente nos interesan los vectores propios podemos usar
Eigenvectors[matriz]. Por ejemplo,
29
In[18]:=
Eigensystem[{{2,1},{3,-1}}]
Out[18]=
{{
1
2
(1-

21),
1
2
(1+

21},
{
1
6
(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 la 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. Cules son sus valores
propios?.
CAPTULO 4
Resolucin de ecuaciones
4.1. Ecuaciones sencillas
Mathematica puede resolver los tipos ms comunes de ecuaciones y sistemas de ecuaciones alge-
braicas, tanto de forma exacta (si se puede) como aproximada. Resolvamos el sistema de ecuaciones
_
x
2
+y
2
= 1
(x 2)
2
+(y 1)
2
= 4
Para ello usamos la sentencia Solve
In[1]:=
Solve[{x
2
+ y
2
==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[{ecuacin1, ecuacin2,...},{variable1, variable2,...}]
Para Mathematica una ecuacin est formada por dos expresiones igualadas con el signo ==.
4.1 Ecuaciones sencillas 31
A veces, Mathematica no puede resolver de forma exacta una ecuacin
In[2]:=
Solve[x
6
+x+1==0,x]
Out[2]=
{{x Root[1 + #1 + #1
6
&, 1]},
{ x Root[1 + #1 + #1
6
&, 2]},
{ x Root[1 + #1 + #1
6
&, 3]},
{ x Root[1 + #1 + #1
6
&, 4]},
{ x Root[1 + #1 + #1
6
&, 5]},
{ x Root[1 + #1 + #1
6
&, 6]}}
Este error aparece porque estamos usando un polinomio de grado alto y es posible que la ecuacin
no pueda resolverse con operaciones elementales. En este caso usamos la orden NSolve (tiene la
misma sintaxis que Solve) para una resolucin numrica
In[3]:=
NSolve[x
6
+x+1==0,x]
y Mathematica da 6 soluciones aproximadas (en este caso complejas) de la ecuacin anterior. Des-
pus de la variable podemos aadir el nmero de cifras signicativas que queremos que tengan las
soluciones
In[4]:=
NSolve[x
6
+x+1==0,x,50]
Adems de ecuaciones polinmicas, 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 >

1
2
+

5
2
_
_
_
_
_
_
En estos casos lo ms 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 ms 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
}}
32 Resolucin de ecuaciones
4.2. Sistemas de ecuaciones lineales
Vamos a aplicar lo que hemos visto a la resolucin de sistemas lineales de la forma
A.x = b,
donde A es una matriz de orden mn y x y b son vectores de rdenes n y m respectivamente.
El caso ms fcil es que la matriz A sea cuadrada e inversible, entonces la solucin 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 solucin para este problema resulta sencilla, podemos denir
un vector cuyas componentes sean las soluciones de nuestra ecuacin y podemos utilizar sus com-
ponentes como hemos visto anteriormente. Para esto llamamos S al vector solucin y lo denimos
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, slo 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]=
{
7
4
,-
11
4
,
21
10
}
De este modo tenemos denido el vector de soluciones del sistema como S. Si queremos conocer la
solucin de la segunda variable solo tenemos que buscar la segunda componente de S:
In[9]:=
S[[2]]
Out[9]=
-
11
4
Otra posibilidad para resolver el sistema es usar la orden
LinearSolve[matriz A,vector b].
Qu pasa si la solucin no es nica?. Puedes comprobar con ejemplos sencillos que la orden
LinearSolve da como resultado un vector aunque el sistema tenga innitas soluciones:
4.2 Sistemas de ecuaciones lineales 33
In[10]:=
LinearSolve[{{1,1}},{1}]
Out[10]=
{1,0}
en este ejemplo, (1, 0) es solucin del sistema x+y = 1, pero hay ms soluciones, como por ejemplo
(0, 1). La forma de obtener las dems soluciones es calcular el ncleo de la matriz de coecientes
mediante la orden NullSpace, que da una base de dicho ncleo. De esta forma, si sabemos una
solucin particular del sistema A.x = b, x
0
(obtenida mediante LinearSolve) y una base del ncleo
de A, x
1
, x
2
, . . ., todas las soluciones del sistema sern de la forma x
0
+
1
x
1
+
2
x
2
+ , donde

1
,
2
, . . . son parmetros. En nuestro ejemplo anterior (x +y = 1) habamos obtenido
In[11]:=
LinearSolve[{{1,1}},{1}]
Out[11]=
{1,0};
el ncleo de la matriz (1 1) tiene base
In[12]:=
NullSpace[{{1,1}}]
Out[12]=
{{-1,1}};
con lo que todas las soluciones del sistema sern de la forma (1, 0) +(1, 1), con un parmetro
real.
Otra forma de resolver sistemas es usar la orden Solve que ya conocemos. Un ejemplo nos
ayudar a entender la mecnica:
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 implcita
mediante dos ecuaciones: {y = 1, x = 1 z}; por tanto, el espacio afn de soluciones tendr
dimensin 1.
34 Resolucin 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. Resolucin de sistemas de ecuaciones
Veamos todos los comandos con algunos ejemplos:
Comandos Solve y NSolve: Sirven para resolver sistemas de ecuaciones polinmicas. El prime-
ro slo resuelve sistemas de grado bajo pero con soluciones exactas, expresadas mediante radicales.
El segundo da soluciones aproximadas pero sirve para cualquier grado.
Comando Reduce: simplica sistemas de ecuaciones dependientes de parmetros, haciendo
una discusin de casos si es necesario. Su sintaxis es
Reduce[{ecuacin1,ecuacin2,},{var1,var2,}]
Al usar este comando hay que tener en cuenta que todo lo que no se le introduce como variable es
considerado parmetro. Adems, el resultado obtenido al usar Reduce diere bastante del obtenido
al usar Solve o NSolve, pues este comando no devuelve valores numricos, sino ecuaciones ms
simples que habr que resolver; dichas ecuaciones vendrn expresadas usando operadores lgicos:
&& es la conjuncin y, || es la disyuncin 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(1y) con b = 0; la segunda: x =
a
a 1
, y =
a
a 1
que slo vale si a 1 y para cualquier b.
Ejercicio 1. Discutir en funcin de los parmetros a y b, los siguientes sistemas de ecuaciones:
_

_
x +az = 0
x +2y = b
x y +az = 0
_

_
x +az = 1
x +2y = 1
x y +az = 3
_

_
ax
2
+by = 5
x by = 1
4.4 Otros mtodos 35
_

_
x z = 1
x +2y = 1
x +az = b
_

_
x +az = 0
x +2y = b
x y +az = 0
_

_
x +2z = 0
7x 2y = 0
6x 2y +az = 0
4.4. Otros mtodos
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 mtodo 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 habamos encontrado:
In[15]:=
Solve[x
6
+x+1==0,x]
Out[15]=
{{x Root[1 + #1 + #1
6
&, 1]},
{ x Root[1 + #1 + #1
6
&, 2]},
{ x Root[1 + #1 + #1
6
&, 3]},
{ x Root[1 + #1 + #1
6
&, 4]},
{ x Root[1 + #1 + #1
6
&, 5]},
{ x Root[1 + #1 + #1
6
&, 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[x
6
+x
3
+ 1 == 0, x ]
In[17]:=
Solve[x
6
+ x
5
+ 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
funcin real de una variable. El objetivo de esta prctica es aprender a programar algoritmos con
Mathematica para aproximar la solucin de estas ecuaciones.
Lo primero que tenemos que tener en cuenta es que no existe ningn mtodo general para
resolver todo este tipo de ecuaciones en un nmero nito de pasos.
Lo que s tendremos es condiciones para poder asegurar, bajo ciertas hiptesis sobre la funcin f,
que un determinado valor es una aproximacin de la solucin de la ecuacin con un error prejado.
El principal resultado para asegurar la existencia de solucin para la ecuacin 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 solucin de la ecuacin en el intervalo
[a, b]. Los dos mtodos que vamos a usar se basan en este resultado.
36 Resolucin de ecuaciones
Ambos mtodos nos proporcionan un algoritmo para calcular una sucesin de aproximaciones,
y condiciones sobre la funcin f para poder asegurar que la sucesin que obtenemos converge a la
solucin del problema. Una vez asegurada esta convergencia, bastar tomar alguno de los trminos
de la sucesin que se aproxime a la sucesin con la exactitud que deseemos.
4.4.1. Breves conceptos de programacin
Antes de introducirnos en el mtodo terico de resolucin, vamos a presentar algunas sentencias
sencillas de programacin que necesitaremos ms 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 nmero de veces. Un ejemplo de bucle
puede ser el siguiente: supongamos que queremos obtener los mltiplos de siete comprendidos
entre 7 y 70; para ello, multiplicamos 7 por cada uno de los nmeros naturales comprendidos entre
1 y 10, es decir, repetimos 10 veces la misma operacin: multiplicar por 7.
La sintaxis de la orden es la siguiente,
For[expresin inicial,condicin,incremento,expresin]
expresin inicial nos sita en las condiciones de comienzo del bucle.
condicin dir a Mathematica el momento de detener el proceso.
incremento expresar la forma de aumentar la condicin inicial.
expresin dir a Mathematica lo que tiene que realizar en cada paso; la expresin 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 mltiplos 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.
4.4 Otros mtodos 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 nmeros 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 verica una
condicin, despus, si la condicin es verdadera Mathematica ejecutar una expresin1, y si es falsa
ejecutar otra expresin2. Su sintaxis es la siguiente,
If[condicin, expresin1, expresin2]
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 programacin que vamos a ver es la orden Break[ ] cuya nica nalidad
es la de interrumpir un bucle en el momento que se ejecuta y no terminar todos los pasos que faltan
hasta la condicin nal del bucle. En el siguiente ejemplo se puede comprender rpidamente el uso
de esta orden.
38 Resolucin 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. Mtodo de Biseccin
En este mtodo slo es necesario que la funcin f sea continua en el intervalo [a, b] y verique
f(a)f(b) < 0. En estas condiciones, el Teorema de Bolzano nos asegura la existencia de una solucin
de la ecuacin en [a, b]. El siguiente paso consiste en tomar como nueva aproximacin, c =
a+b
2
(el punto medio del segmento [a, b]). Si f(c) = 0, hemos encontrado una solucin de la ecuacin
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 mtodo 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 quedndonos
con el subintervalo en el que podemos asegurar la existencia de una raz si sta no era el punto
medio de [a, b]. El nuevo subintervalo tiene longitud
ba
2
y contiene a la solucin y a la primera
aproximacin. En consecuencia, el error cometido es menor o igual que
ba
2
. De la misma forma, el
error cometido en el paso n-simo es menor o igual que
ba
2
n
.
A partir de aqu, podemos deducir el nmero de iteraciones necesarias para obtener una aproxi-
macin con un error o exactitud prejados. Si notamos por Ex a la exactitud prejada, entonces
para conseguir dicha precisin, el nmero n de iteraciones necesarias deber satisfacer
b a
2
n
< Ex
as,
n = E
_
Log
2
_
b a
Ex
__
+1,
donde E[] denota la parte entera de un nmero (esto es, el mayor de los enteros que son menores
que el nmero. Para obtener la parte entera de un nmero que est expresado en notacin decimal,
Mathematica tiene el comando Floor.
Para denir un algoritmo de clculo de la sucesin de aproximaciones de este mtodo mediante
Mathematica , vamos a resolver como ejemplo la ecuacin x
6
+x 5 = 0 en el intervalo [0, 2].
Deniremos en primer lugar la funcin, el intervalo y la exactitud. Seguidamente calcularemos el
nmero P de iteraciones (o pasos) necesarias, para a continuacin llevar a cabo el clculo de dichas
aproximaciones, que se irn visualizando a medida que se van haciendo los sucesivos clculos.
4.4 Otros mtodos 39
In[23]:=
Clear["Global`*"]
f[x_]=x
6
+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 continuacin, prueba a cambiar la funcin, los extremos del intervalo (en los cuales dicha
funcin cambia de signo), as como la exactitud exigida. Intenta tambin buscar un caso simple en
el que se encuentre la solucin exacta en unos pocos pasos. Por ltimo, intenta usar el algoritmo
anterior para calcular
3

5 con una exactitud de 10


10
.
40 Resolucin de ecuaciones
Graba ese algoritmo en disco... ms tarde compararemos su efectividad con la del siguiente
mtodo.
4.4.3. Mtodo de Newton-Raphson
El mtodo para la construccin del algoritmo que vamos a estudiar ahora es conocido con el
nombre de mtodo de Newton-Raphson debido a sus autores. Este mtodo nos proporciona un
algoritmo para obtener una sucesin de aproximaciones. Para asegurar la convergencia de la suce-
sin (hacia la solucin de la ecuacin), bajo ciertas condiciones, usaremos el Teorema de Newton-
Raphson, cuyo enunciado daremos ms adelante.
La forma de construir los distintos trminos de la sucesin
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 jado un valor inicial x
1
,
el trmino x
2
se obtiene como el punto de corte de la recta tan-
gente a f en x
1
con el eje OX. De la misma forma, obtenemos
x
n+1
como el punto de corte de la recta tangente a f en el punto x
n
con el eje OX.
De lo dicho hasta aqu se deduce:
x
n+1
= x
n

f(x
n
)
f

(x
n
)
.
Para comprender el algoritmo observa el grco donde se ve cmo se generan los valores de las
aproximaciones.
El mencionado Teorema de Newton-Raphson, es el siguiente:
Teorema (de Newton-Raphson). Tomemos una funcin f que admite derivada segunda en el inter-
valo [a, b] y verica:
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 aproximacin el extremo del intervalo [a, b] donde f y f

tienen
el mismo signo, la sucesin de valores x
n
del mtodo de Newton-Raphson es convergente hacia la
nica solucin de la ecuacin f(x) = 0 en [a, b].
Una vez que tenemos asegurada la convergencia de la sucesin hacia la solucin de la ecuacin,
deberamos decidir la precisin. Sin embargo, veremos que el mtodo es tan rpido en su conver-
gencia que por defecto haremos siempre 10 iteraciones. Otra posibilidad sera detener el clculo de
cuando el valor absoluto de la diferencia entre x
n
y x
n+1
sea menor que la precisin buscada (lo
cual no implica necesariamente que el error cometido sea menor que la precisin).
Utilizaremos ahora Mathematica para generar la sucesin de aproximaciones. Resolvamos de
nuevo el ejemplo de x
3
5 = 0 en el intervalo [1, 3].
Podemos comprobar, dibujando las grcas de f(x) = x
3
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
4.4 Otros mtodos 41
convergencia. Las grcas se pueden obtener de la forma que aparece en la pgina 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_]=x
3
-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 -
42 Resolucin de ecuaciones
A continuacin, generaremos los trminos de la sucesin de aproximaciones mediante el si-
guiente algoritmo. Comenzaremos por denir la funcin f, y el valor de la primera aproximacin.
Inmediatamente despus denimos el algoritmo del mtodo de Newton-Raphson, e iremos visuali-
zando las sucesivas aproximaciones. Como dijimos, pondremos un lmite de 10 iteraciones, aunque
usando mayor precisin decimal puedes probar con un nmero mayor de iteraciones.
In[27]:=
Clear["Global`*"]
f[x_]=x
3
-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
]
Observars al ejecutar este grupo de comandos que ya en la sexta iteracin se han estabilizado
veinte cifras decimales de la solucin. Prueba a continuacin a cambiar a un mayor nmero de de-
cimales en las aproximaciones. Si es necesario, aumenta tambin el nmero de iteraciones. Observa
qu rpidamente se estabilizan los decimales de las iteraciones. S, como puedes ver, el mtodo
de Newton-Raphson es muy rpido.
4.5. El comando FindRoot
El mtodo que hemos visto en la seccin anterior se puede usar directamente con la orden
FindRoot.
FindRoot[funcin de x,{x,aproximacin inicial}]
La aproximacin inicial debera ser un punto que este ms o menos cerca del cero de la funcin que
queremos buscar. En cualquier caso hay que tener en cuenta que an escogiendo puntos iniciales
cercanos el resultado puede ser completamente distinto.
Por ejemplo,
In[28]:=
FindRoot[x
3
-5,{x,3}]
Out[28]=
{x->1.70998}
El comando FindRoot tambin se puede usar con sistemas de ecuaciones. Slo hay que escribir
las ecuaciones agrupadas entre llaves y dar un punto inicial para cada variable:
FindRoot[{eq1,eq2,},{x,x
0
},{y,y
0
},]
4.5 El comando FindRoot 43
Ejercicios 1.
1. Considrese la ecuacin
e
(x
2
+x+1)
e
x
3
2 = 0.
Calcular programando los mtodos de biseccin y de Newton-Raphson, la solucin de dicha
ecuacin en el intervalo [0,3, 1] con exactitud 10
10
. Encontrar la solucin mediante la orden
FindRoot y comparar los resultados.
2. Dada la ecuacin
tan(x) =
1
x
buscar la solucin que posee en el intervalo [0,

2
], usando los mtodos estudiados.
Ejercicio 2. Encontrar una solucin del siguiente sistema de ecuaciones cerca de (0,0):
_

_
senxcos y =
1
4
xy = 1
CAPTULO 5
Extremos de funciones de una variable
5.1. Continuidad y lmites
Bsicamente 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 grca de la funcin tangente, Mathematica ha dibujado una asntota vertical en los
puntos donde el coseno vala cero.
En el caso de que queramos estudiar la continuidad de una funcin en un punto a, tenemos que
calcular lm
xa
f(x). Mathematica puede estudiar lmites (tambin laterales). La orden es la siguiente:
Limit[expresin,variable->a]
Limit[expresin,variable->a,Direction->1]
Limit[expresin,variable->a,Direction->-1]
La primera calcula el lmite de la expresin cuando la variable tiende a a. Las siguientes calculan el
lmite 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]=

5.2 Mximos y mnimos relativos 45


Cuando la funcin oscila entre dos valores Mathematica intenta dar el intervalo aunque no exista el
lmite.
In[3]:=
Limit[Sin[1/x],x->0]
Out[3]=
Interval[{-1,1}]
5.2. Mximos y mnimos relativos
Esencialmente, lo que haremos para localizar los extremos relativos de una funcin f ser en-
contrar soluciones de la ecuacin f

(x) = 0. Para solucionar dicha ecuacin, podemos usar (cuando


sea posible por la simplicidad de la ecuacin) 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 funcin polinmica f(x) = x
5
+x
4
11x
3

9x
2
+ 18x + 10 en el intervalo [4, 4]. Para ello, deniremos convenientemente la funcin f, y
dibujaremos su grca entre 4 y 4.
In[4]:=
Clear["Global`*"]
f[x_]= x
5
+x
4
-11x
3
-9x
2
+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 mximo relativo entre 3 y 2,
un mnimo relativo entre 2 y 1,
un mximo relativo entre 0 y 1,
un mnimo relativo entre 2 y 3.
En cualquier caso, dada la simplicidad de esta funcin (polinmica de grado bajo), es posible calcular
directamente los ceros de la derivada con el comando
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 habamos
localizado a simple vista.
Sin embargo, no todas las funciones permiten calcular de un modo simple las soluciones de la
ecuacin f

(x) = 0. Por ejemplo, consideremos ahora la funcin f(x) = sen(x) +e


x
en el intervalo
[7, 0]. Pintmosla igual que antes, sustituyendo la antigua funcin por la nueva. De nuevo, a simple
vista se observa que hay:
un mximo relativo cerca de 5,
un mnimo relativo cerca de 2
Sin embargo, ahora no funciona satisfactoriamente el comando NSolve (intntalo). Optaremos por
aplicar el mtodo de Newton-Raphson (mediante el comando FindRoot) para encontrar las races
de la derivada de f. Recordemos que en el comando FindRoot es necesario introducir una primera
aproximacin de la solucin, que servir para iniciar el proceso iterativo. En este caso concreto,
dada la situacin aproximada de los extremos, probaremos a iniciar el mtodo desde 5 y tambin
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 aproximacin de los puntos donde la funcin alcanza
los extremos observados.
A continuacin veremos un caso en el que la grca diseada por el programa nos puede llevar
a engao. Descubriremos el error gracias al test de la segunda derivada. Sea f(x) = x
2
10x
40 +
1
10x
2
100x +251
, y pintmosla en el intervalo [15, 15].
Aparentemente, hay un mnimo cerca de 5. Si buscamos races de la derivada ejecutando el
comando FindRoot con dato inicial 5, obtenemos que precisamente para x = 5 la derivada se
anula (se poda haber comprobado antes pidiendo al Mathematica el valor de f

(5)). A la vista de la
grca, en x = 5 parece haber un mnimo de la funcin f. Sin embargo, pidmosle 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 mximo.
Sera conveniente ver ms de cerca lo que ocurre cerca de 5. Prueba a pintar la funcin en el
intervalo [4, 6]. Ahora parece haber un mnimo cerca de 4,5 y otro cerca de 5,5, y efectivamente, un
mximo en 5... cmo podemos asegurar que cerca de los extremos que ahora vemos no vuelven a
ocurrir nuevas oscilaciones ocultas como la que antes no veamos?...
CAPTULO 6
Frmula de Taylor
Seguro que alguna vez te has preguntado cmo pueden una calculadora o un ordenador usar las
funciones seno, coseno, exponencial, logaritmo... que no tienen una denicin fcil, y que se basan
en nmeros esencialmente irracionales como o e.
En esta prctica trataremos de entender cmo se pueden construir funciones conociendo nica-
mente las funciones suma (resta), producto (divisin) y potenciacin. Necesitaremos adems com-
prender el concepto de lmite y la derivacin de funciones. Se trata de sustituir funciones com-
plicadas por otras mas sencillas de calcular (que en este caso sern polinomios), controlando la
prdida que se produce.
El primer ejemplo puede ser sustituir una funcin por su recta tangente (si recuerdas, esto
nos sirvi para encontrar ceros de funciones mediante el mtodo de Newton-Raphson): dada una
funcin 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 funcin f. En cierto sentido, lo que hemos hecho es encontrar
una funcin ms sencilla (una recta, o sea, un polinomio de grado uno) que se parece a la funcin
de partida (coinciden el valor de la funcin y el de la derivada). Hasta que punto puedo cambiar
una funcin por su recta tangente? Si la funcin oscila demasiado, la aproximacin no ser buena,
como por ejemplo en la funcin coseno
En el grco 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 funcin co-
seno y su tangente no se parecen nada. La forma de mejorar la
aproximacin ser aumentar el grado del polinomio que usa-
mos, y el problema es, jado un grado, qu polinomio de grado
menor o igual al jado es el que ms se parece a la funcin. 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 funcin 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 disposicin de calcular los coecientes de A(x a)
2
+ B(x a) + C. Si lo hacemos,
48 Frmula de Taylor
veremos que dicho polinomio aproximante de grado 2 es el siguiente (deriva el polinomio P y
vers como sus derivadas hasta orden 2 coinciden con las de la funcin f)
P(x) = f(a) +f

(a)(x a) +
f

(a)
2!
(x a)
2
Veamos qu pasa con una funcin concreta. Consideremos la funcin 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 aproximacin de grado 2 es el siguiente:
P
2
(x) = f(0) +f

(0) x +
f

(0)
2!
x
2
= 1
1
2
x
2
Si dibujamos ahora las funciones f, P
1
y P
2
podremos comprobar qu es lo que ocurre:
In[1]:=
Clear["Global

*"]
f[x_]=Cos[x];
Plot[{f[x],1-(x
2
)/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 ms a la funcin 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 terico ya conocido: si I es un
intervalo, a, x I y f : I R es una funcin n-veces derivable, se dene el polinomio de Taylor de
orden n en el punto a como
P
n
(x) = f(a) +f

(a) (x a) +
f

(a)
2!
(x a)
2
+
+
f
(n)
(a)
n!
(x a)
n
Teorema (Frmula de Taylor). Si f : I R es una funcin (n+1)-veces derivable, entonces existe
c entre a y x tal que
f(x) P
n
(x) =
f
(n+1)
(c)
(n+1)!
(x a)
n+1
.
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
P
2
en lugar de la funcin coseno, sabemos que el punto c que nos da el error tambin est en ese
intervalo. Vamos a calcular el valor mximo que puede alcanzar:
| cos(x) P
2
(x)| = |
f

(c)
3!
x
3
|
=

sen(c)
3!
x
3

1
6

3
La ltima acotacin se basa en que el valor mximo 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[funcin,{x,a,grado}]
Volviendo al ejemplo anterior, si pruebas
In[2]:=
Series[Cos[x],{x,0,2}]
Out[2]=
1
x
2
2
+O[x]
3
vers como, adems del desarrollo del polinomio, aparece al nal el orden de error (O[x]
3
); re-
presenta que los trminos 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[expresin]
Este comando simplemente elimina el orden de error de la expresin que obtenemos con el
comando Series, quedando slo el polinomio de Taylor.
En nuestro ejemplo, para comparar la funcin coseno y el correspondiente polinomio de Taylor
de grado 4 en cero haremos lo siguiente:
50 Frmula 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 habamos 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 ms a la funcin. Si escribes
In[4]:=
Table[Series[Cos[x],{x,0,n}],{n,1,10}]
el resultado son todos los desarrollos de la funcin 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
funcin 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 funcin, el punto donde desarrollamos, el intervalo donde se represen-
ta...
51
Hasta aqu hemos visto como comparar la grca de una funcin con la de su polinomio de
Taylor. La orden Animate permite dibujar la grca de una funcin en funcin de un parmetro
para despus poder reproducirlo como una secuencia de fotogramas (una pelcula). Un ejemplo
sencillo de como funciona sera 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 funcin y los polinomios de Taylor
de orden 1 hasta 30. Prueba a pinchar dos veces en la ltima grca que ha aparecido.
Ejercicio 1. Aproxima la funcin exponencial (f(x) = e
x
) 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
ms grandes.
Ejercicio 2. Acota el error que ests 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 funcin logaritmo neperiano (cen-
trando en a = 1) y para ln(2).
CAPTULO 7
Integracin
7.1. Integrales denidas e indenidas
En esta prctica aprenderemos a calcular integrales con el programa Mathematica , tanto inte-
grales indenidas (es decir, primitivas) como integrales denidas. El objetivo es poder calcular reas
entre curvas, reas y volmenes de slidos de revolucin, longitudes de curvas... sin que el clculo
de primitivas sea el principal escollo.
Bsicamente hay dos comandos para integrar funciones en Mathematica : Integrate
y NIntegrate. Como siempre tambin puedes usar la paleta para escribir las integrales.
La primera de las rdenes mencionadas calcula primitivas o integrales denidas en un
intervalo [a, b]:
Integrate[funcin,variable]
Integrate[funcin,{variable,a,b}]
Por ejemplo,
In[1]:=
Integrate[Cos[x],x]
Out[1]=
Sin[x]
In[2]:=
_
Cos[x]dx
Out[2]=
Sin[x]
7.1 Integrales denidas e indenidas 53
Mathematica puede obtener prcticamente cualquier primitiva calculable por mtodos elemen-
tales (integracin por partes, integracin de funciones racionales, trigonomtricas, cambio de varia-
ble...). Por otro lado, sabemos que toda funcin continua admite primitiva, pero esta primitiva no
siempre puede calcularse (en el sentido de tener una expresin de la primitiva en trminos de funcio-
nes elementales). Por eso, al integrar algunas funciones en el resultado que obtenemos aparecen
funciones que no conocemos:
In[3]:=
_
Sin[x]
x
dx
Out[3]=
SinIntegral[x]
En este caso, aunque no conozcamos la funcin que nos aparece, podemos obtener su valor en un
punto:
In[4]:=
N[SinIntegral[2],7]
Out[4]=
1.605413
Para obtener un valor numrico del resultado se puede usar el comando N:
N[Integrate[funcin,{x,a,b}]]
Puede pasar que Mathematica no sepa calcular la primitiva de una funcin:
In[5]:=
_
Exp[x
3
+x]dx
Out[5]=
_
E
x
3
+x
dx
En este caso siempre podemos intentar aproximar el valor de la integral. Esto es precisamente lo
que hace el comando NIntegrate
NIntegrate[funcin,{variable,a,b}]
En el ejemplo anterior,
In[6]:=
NIntegrate[Exp[x
3
+x],{x,0,2}]
Out[6]=
1846.36
54 Integracin
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 despus 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 fcilmente una primitiva, el comando
NIntegrate no siempre funciona bien; tecleando
In[7]:=
NIntegrate[Cos[x],{x,0,Pi}]
te dars cuenta que Mathematica protesta. El programa intenta calcular una aproximacin con
mtodos numricos; estos mtodos pueden tener problemas cuando la funcin oscila mucho. En
estos casos pueden aparecer respuestas errneas.
Ejercicios. Calcular:
1. rea limitada por las curvas y = x
2
e y
2
= 8x
2. rea limitada por y = xe
x
2
, el eje OX, la ordenada en el punto x = 0 y la ordenada en el
mximo.
3. rea de la gura limitada por la curva y = x
3
x
2
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 grca de la funcin f : R R
denida por
f(x) =
1
(1 +x
2
)
2
.
7.2. Longitudes, reas y volmenes
Algunas de las aplicaciones de la integral que se han visto en las clases tericas son calcular
longitudes de curvas, y volmenes y supercies de cuerpos de revolucin.
Volmenes de slidos de revolucin:
Sea f : [a, b] R una funcin continua; el volumen del slido generado al girar el rea bajo la
curva y = f(x) respecto del eje OX es
V =
_
b
a
f(x)
2
dx
y el volumen del slido generado al girar dicha rea respecto al eje OY es
V = 2
_
b
a
xf(x) dx.
Longitudes de curvas:
Sea f una funcin 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 =
_
b
a
_
1 +[f

(x)]
2
dx.
7.3 Integrales impropias. 55
reas de slidos de revolucin:
Sea f : [a, b] R una funcin de clase 1; el rea de la supercie generada haciendo girar
alrededor del eje OX el arco de curva y = f(x) en [a, b] es igual a
S = 2
_
b
a
f(x)
_
1 +[f

(x)]
2
dx.
Ejercicio 1. Calcular el volumen del slido 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 x
2
4. y = e
x
, x [0, ln3]
Ejercicio 2. Calcular el volumen del slido generado al rotar respecto al eje OY las siguiente curvas:
1. y = 1/x, x [1, 3]
2. y =
1
1 +x
2
, x [0, 1]
3. y = e
x
2
, x [1,

3]
Ejercicio 3. Calcular la longitud de las siguientes curvas:
1. y =
1
3
(x
2
+2)
3/2
, x [0, 1]
2. y =
1
2
(e
x
+e
x
), x [0, 3]
Ejercicio 4.
1. Calcular la supercie de una esfera de radio R.
2. Calcular la supercie de la gura que se obtiene al girar la funcin y = tg(x), x [0, /4]
alrededor del eje OX.
7.3. Integrales impropias.
Como recordars de las clases tericas, la integral que en principio se dene para funciones
continuas en intervalos cerrados y acotados, puede extenderse a funciones continuas denidas en
intervalos de longitud innita, y a funciones que no estn acotadas en un intervalo de longitud
nita. Es lo que se conoce como Integracin impropia. Con el programa Mathematica , el trabajar
con integrales impropias no supone ningn 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 funcin como f(x) =
1

1 x
2
en el intervalo [1, 1] o con la funcin g(x) = e
x
2
en
[0, +[ (en Mathematica para escribir innito usamos +Infinity o -Infinity, o la paleta). En este
segundo caso, escribiramos
56 Integracin
In[8]:=
_
+
0
Exp[x
2
]dx
Out[8]=

2
Intenta calcular las integrales anteriores en el intervalo dado y despus intenta calcular una
primitiva de esas funciones. Como vers, la primitiva de la primera funcin ya la conocas, en cambio
en la primitiva de la segunda aparece una funcin que, supongo, no conocas.
Tambin podemos usar las frmulas para calcular longitudes, reas y volmenes con integrales
impropias.
Ejercicio. Calcular:
1. La integral de f(x) =
1
x
2
con x [1, +].
2. El volumen y la supercie lateral del slido obtenido al girar la grca de la anterior funcin
respecto del eje OX.
3. dem a los dos anteriores con g(x) =
1
x
con x [1, +].
CAPTULO 8
Grcos en 3D
8.1. El comando Plot3D
En el segundo captulo pudimos comprobar que Mathematica es una herramienta muy potente
para dibujar grcas de funciones de una variable. Ahora aprenderemos a representar grca-
mente funciones reales de dos variables. La principal aplicacin de la representacin grca de una
funcin de dos variables ser dar una idea aproximada de la variacin de dicha funcin, lo que ser
especialmente til para buscar extremos.
Al igual que para funciones de una variable, suele ser cmodo asignarle un nombre (normalmente
f, g, h). Para denir la funcin 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 hacamos con funciones de una variable.
El comando que sirve para representar grcas de funciones de dos variables es
Plot3D[funcin de x,y, {x,x
min
,x
max
},{y,y
min
,y
max
}]
Veamos un ejemplo:
58 Grcos 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 retcula o malla sobre la que se construye la grca. 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 grco alguno. Un ejemplo:
In[4]:=
Plot3D[f[x,y],{x,-Pi,Pi},
{y,-Pi,Pi},Shading->False]
PlotPoints->nmero de puntos
Representa el nmero de puntos que usar Mathematica para dibujar la grca. Un nme-
ro muy alto producir un grco ms suave, pero aumentar considerablemente el tiempo
empleado por Mathematica para realizarlo.
ViewPoint
Establece el punto de vista desde el que se dibujar la grca. La forma de usar esta opcin ser
pegarlo desde una ventana que automatiza el proceso. A dicha ventana se accede a travs
del men Input, submen 3D ViewPoint Selector.
8.2 Grcos de contorno. Curvas de nivel. 59
Ejercicio. Prueba las opciones anteriores con las siguientes funciones de dos variables:
1. f(x, y) = (x
2
+y
4
)e
1x
2
y
2
con x, y [2, 2].
2. g(x, y) = sen(x 2xy) con x [0, ], y [, ].
3. h(x, y) =
xy
x
2
+y
2
con x, y [1, 1].
8.2. Grcos de contorno. Curvas de nivel.
Una forma cmoda de ver la grca de una funcin es mediante curvas de nivel. Se trata de
representar en el plano una gura tridimensional como es la grca de una funcin de dos varia-
bles, permitiendo ver las zonas de crecimiento y decrecimiento de dicha funcin. El comando que
representa funciones de dos variables mediante curvas de nivel es
ContourPlot[funcin de x,y,{x,x
min
,x
max
},{y,y
min
,y
max
}]
Por ejemplo,
In[5]:=
ContourPlot[(3 x
2
+ y
2
)
Exp[1-x
2
-y
2
],
{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 slo las curvas de nivel y no utiliza la escala de grises. Ejemplo:
In[6]:=
ContourPlot[(3 x
2
+ y
2
)Exp[1-x
2
-y
2
],
{x,-2,2},{y,-2,2},ContourShading->False]
60 Grcos en 3D
PlotPoints->nmero de puntos
Representa el nmero de puntos que usar Mathematica para dibujar la grca. Al igual que
en Plot3D, un nmero muy alto producir un grco ms suave, pero aumentar conside-
rablemente el tiempo empleado por Mathematica para realizarlo.
Ejercicio 1. Representa los grcos de contorno de las funciones del ejercicio anterior, comparando
la informacin que obtienes de una y otra forma.
Ejercicio 2. Consideremos la funcin f : [2, 2][2, 2] Rdada por f(x, y) = (x
2
+y
4
)e
1x
2
y
2
.
Utiliza los comandos anteriores para obtener informacin sobre la ubicacin de sus posibles extre-
mos relativos.
8.3. Grcos paramtricos. Curvas y supercies.
Ya aprendimos a representar grcamente curvas planas expresadas en forma paramtrica. Aho-
ra veremos como representar curvas alabeadas (esto es, curvas en el espacio) y supercies param-
tricas. El comando de Mathematica para ello es ParametricPlot3D.
Cuando tenemos las ecuaciones paramtricas 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 hlice:
In[7]:=
ParametricPlot3D[{Sin[t],Cos[t],t/3},{t,0,5Pi}]
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
1
0
2
4
-1
-0.5
0
0.5
1
Out[7]= - Graphics3D -
8.3 Grcos paramtricos. Curvas y supercies. 61
Si lo que tenemos son las ecuaciones paramtricas de una supercie
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. Supercies de revolucin
En el caso particular en que la supercie 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 supercie de revolucin obtenida al girar la curva f en el plano XZ
entre a y b. La segunda y la tercera funcionan anlogamente 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 {x
1
,x
2
,x
3
} se puede utilizar
la siguiente opcin:
62 Grcos en 3D
SurfaceOfRevolution[f(t),{t,a,b},
RevolutionAxis->{x
1
,x
2
,x
3
}]
Veamos algunos ejemplos. Un cono se consigue fcilmente girando una recta:
In[10]:=
SurfaceOfRevolution[2 x,{x,-2,2}]
-2
-1
0
1
2
-2
-1
0
1
2
-4
-2
0
2
4
-2
-1
0
1
2
Out[10]= - Graphics3D -
Si quisiramos 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 -
8.3 Grcos paramtricos. Curvas y supercies. 63
Dibujar una esfera o un elipsoide es ahora simplemente cuestin 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 habrs visto en el ltimo ejemplo, las mayora de las opciones del
comando Plot3D siguen siendo vlidas.
Ejercicio 1. Representar las siguientes curvas y supercies:
1. _

_
x(t) = sen(t)
y(t) = sen(2t)
z(t) = t/5
con t [0, 5].
64 Grcos 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) = v
con u [, ] y v [0, 5].
Ejercicio 2. Cmo se puede dibujar un cilindro? Y un cono truncado?.
Ejercicio 3. A la gura siguiente, obtenida al girar una circunferencia, se la llama toro. Intenta
dibujarla.
-2
0
2
-2
0
2
-1
-0.5
0
0.5
1
-2
0
2
CAPTULO 9
Extremos relativos y condicionados
En esta prctica veremos cmo calcular extremos relativos y condicionados de funciones de
varias variables. Se trata de usar el programa Mathematica como apoyo para realizar los clculos
necesarios en los mtodos de optimizacin vistos en las clases tericas.
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 clculo de extremos relativos y
condicionados.
Ya conocemos de prcticas 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
funcin f. Para funciones escalares de varias variables (esto es, funciones que salen de
R
n
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-vecespudiendo
omitirse el nmero de veces si ste es 1. Tambin puede usarse la paleta. En la gura tie-
nes los smbolos que nos permiten escribir derivadas de cualquier orden y derivadas de
segundo orden.
Calculemos como ejemplo

3
f
x
2
y
y

2
f
xy
, donde f(x, y) = senxcos y
2
:
66 Extremos relativos y condicionados
In[1]:=
f[x_,y_]=Sin[x] Cos[y
2
];

x,x,y
f[x,y]

x,y
f[x,y]
Out[1]=
2 y Sin[x]Sin[y
2
]
-2 y Cos[x] Sin[y
2
]
Evidentemente esta no es la forma ms cmoda 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 funcin de varias variables basta construir el vector
formado por las derivadas parciales primeras de la funcin respecto de todas las variables:
In[2]:=
J[x_,y_]={
x
f[x,y],
y
f[x,y]}
Out[2]=
{Cos[x]Cos[y
2
], -2 y Sin[x] Sin[y
2
]}
Usando la paleta, el hessiano se calcula de forma anloga:
In[3]:=
_

x,x
f[x,y]
x,y
f[x,y]

y,x
f[x,y]
y,y
f[x,y]
_
Recuerda que las derivadas cruzadas de segundo orden coinciden para funciones sucientemente
buenas.
9.2. Representacin grca
Ya que sabemos cmo se calculan las derivadas parciales de una funcin, vamos a intentar re-
presentar grcamente el plano tangente y cmo se obtiene a partir de las derivadas parciales.
Comencemos, por ejemplo, con la funcin
In[4]:=
f[x_,y_]=1-(x
2
+y
2
)
y vamos a calcular en el punto (1, 1) sus derivadas parciales. La denicin de derivada parcial
respecto a la primera variable era
f
x
(1, 1) = lm
h0
f(1 +h, 1) f(1)
h
Lo que hacemos es trabajar nicamente con la funcin denida sobre la recta que pasa por (1, 1) y
es esa funcin (de una variable) la que derivamos. La segunda derivada parcial tiene una denicin
anloga. Dibujemos la grca de la funcin y la imagen de cada una de esas dos rectas:
9.2 Representacin grca 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
2
0
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 -
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 ecuacin 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 grca anterior:
In[9]:=
parcial1[x_,y_]=
x
f[x,y]
parcial2[x_,y_]=
y
f[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
0
0.5
1
1.5
2
-4
-2
0
2
0
0.5
1
1.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. Cmo se podra hacer esto con derivadas direccionales en lugar de derivadas parciales?
9.2 Representacin grca 69
9.2.1. Campos de vectores
Sabamos que el gradiente de una funcin en cada punto era el vector formado por las derivadas
parciales e indicaba la direccin de mxima pendiente. Recordemos que el comando ContourPlot
dibujaba las curvas de nivel de la grca de una funcin, por tanto el gradiente debera 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 opcin ColorFunction->Hue utiliza colores para diferenciar
las distintas alturas en lugar de la escala de grises que habamos 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 -
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 -
Tambin 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 -
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) = x
y+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 : R
2
\ {(0, 0)} R dada por f(x, y) = log(x
2
+y
2
) para todo (x, y) (0, 0). Se
pide:
(i) Calclese el gradiente de f en todo punto as como la matriz hessiana.
(ii) Comprubese que

2
f
x
2
(x, y) +

2
f
y
2
(x, y) = 0 (x, y) R
2
{(0, 0)}.
Ejercicio 3. Sea f : R
2
R una funcin diferenciable con continuidad. Si v = f(x, y) donde
x = cos , y = sen, comprobar que

2
f
x
2
+

2
f
y
2
=

2
v

2
+
1

2
v

2
+
1

9.3. Extremos relativos.


El mtodo para encontrar extremos relativos de funciones de varias variables consiste en buscar
primero los puntos crticos, es decir, puntos donde se anula el gradiente, y despus estudiar la
matriz hessiana en esos puntos. Los resultados que conocemos nos aseguran que todos los puntos
extremos de una funcin estn entre los puntos crticos, con lo que una vez calculados stos nos
dedicaremos a estudiar la matriz hessiana en ellos, viendo si es denida, indenida, semidenida...
Para ello podemos usar el criterio de los valores propios: si todos son del mismo signo, la matriz es
denida y hay extremo; si aparecen valores propios de distinto signo es indenida y hay punto de
silla; en otro caso, la matriz es semidenida y el criterio no decide.
72 Extremos relativos y condicionados
Ejemplo 1: Calculemos los extremos relativos de la funcin
f(x, y) = x
3
+3xy
2
15x 12y.
Primero denimos la funcin, su gradiente y su hessiano:
In[20]:=
f[x_,y_]=x
3
+ 3 x y
2
-15 x -12 y
z=f[x,y]
In[21]:=
J[x_,y_]={
x
z,
y
z}
H[x_,y_]=
_

x,x
z
x,y
z

y,x
z
y,y
z
_
Para calcular los puntos crticos 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 crticos entre los que estarn los extremos. Calculemos ahora los
valores propios de la matriz hessiana en los cuatro puntos crticos obtenidos (observa la utilizacin
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 crticos 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 crticos. As, la matriz hessiana en el primer punto crtico, (2, 1), tiene sus dos valores
propios negativos, con lo que es denida negativa y por tanto hay mximo; los puntos crticos 2.
o
y 3.
o
, (1, 2) y (1, 2), son puntos de silla, ya que sobre ellos la matriz hessiana es indenida; por
ltimo, el 4.
o
es un punto de mnimo. Si queremos saber lo que vale la funcin f sobre sus puntos
crticos, basta teclear
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 crticos, o bien escribir directamente
f[-2,-1], f[-1,-2], etc
Podemos resumir diciendo que la funcin f tiene mximo valor relativo 28 en el punto (2, 1),
mnimo 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) = (x
2
+3y
2
) e
1x
2
y
2
.
Comenzamos deniendo f, y calculando el gradiente y la matriz hessiana:
In[25]:=
Clear[Global

*]
f[x_,y_]=(x
2
+ 3 y
2
) Exp[1-x
2
-y
2
];
z=f[x,y]
In[26]:=
J[x_,y_]={
x
z,
y
z}
H[x_,y_]=
_

x,x
z
x,y
z

y,x
z
y,y
z
_
Si intentamos calcular los puntos crticos 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) slo sirven para polinomios y funciones sencillas. En este punto, tenemos
dos posibilidades. La primera, trazar la grca de f (como supercie o con curvas de nivel) para
tener una idea de dnde estn los extremos, y usar el comando FindRoot con las aproximaciones
iniciales que nos da la grca.
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 grcas podemos calcular aproximaciones a los extremos y calcularlos con
FindRoot, pero qu nos asegura que no hay ms extremos que no entran en el rango de la funcin,
o que no vemos por la imprecisin de los grcos?.
La segunda posibilidad es realizar operaciones algebraicas en el sistema de ecuaciones J[x,y]==0,
para convertirlo en un sistema polinmico. Esto no siempre puede hacerse, pero en este caso s:
basta multiplicar el sistema por e
(1x
2
y
2
)
(que no se anula), y resolver el nuevo sistema que es
polinmico:
In[29]:=
G[x_,y_]=Simplify[J[x,y]*Exp[x
2
+y
2
-1]]
Out[29]=
{2x(1-x
2
-3y
2
),2y(3-x
2
-3y
2
)}
Las soluciones de G[x,y]==0 sern los puntos crticos 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}}
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 mximo: (0, 1) y (0, 1); un punto de mnimo: (0, 0); y dos puntos de silla:
(1, 0) y (1, 0). La funcin f vale sobre sus puntos crticos
In[32]:=
f[x,y]/.pcrit
Out[32]=
{1, 0, 1, 3, 3}
con lo que, vale 3 en los dos mximos y 0 en el mnimo.
Ejercicio. Calcular los extremos relativos de las siguientes funciones.
1. f(x, y) = x
2
+y
2
2x +4y +20.
2. f(x, y) = x
3
+x
2
y +y
2
+2y +5.
3. f(x, y) = (x
2
+y
2
) e
x
2
y
2
.
4. f(x, y, z) = x
2
+y
2
+z
2
2x.
5. f(x, y) = x
3
y
3
y
4
x
4
+xy.
9.4. Extremos condicionados.
Usaremos el mtodo de los multiplicadores de Lagrange para calcular extremos condicionados.
Se trata de optimizar una funcin de varias variables en el conjunto de puntos que veriquen una
cierta ecuacin o ecuaciones.
Dada una funcin sucientemente diferenciable, y una curva o supercie en forma implcita,
el mtodo consiste en encontrar los puntos de dicha curva o supercie que verican un sistema
auxiliar, llamado sistema de Lagrange, que dar el equivalente a los puntos crticos; despus habr
una condicin sobre el hessiano equivalente a la condicin para extremos relativos. Hay que notar
que no todas las condiciones son vlidas, sino que se ha de imponer una hiptesis tcnica, pero en
la prctica supondremos hecha la comprobacin.
Ejemplo 1: Calculemos los extremos de la funcin
f(x, y) = x
2
y
2
76 Extremos relativos y condicionados
condicionados a la ecuacin
g(x, y) = x
2
+y
2
1 = 0.
Comenzamos deniendo la funcin f, la condicin, y la funcin auxiliar de Lagrange
In[33]:=
f[x_,y_]=x
2
-y
2
;
g[x_,y_]=x
2
+ y
2
-1;
F[x_,y_,lambda_]=f[x,y]-lambda*g[x,y]
z=F[x,y,lambda]
Denimos gradiente y hessiano de la funcin de Lagrange
In[34]:=
J[x_,y_,lambda_]={
x
z,
y
z};
H[x_,y_]=
_

x,x
z
x,y
z

y,x
z
y,y
z
_
;
y resolvemos el sistema de Lagrange, esto es, J[x,y,lambda]==0 y g[x,y]==0. Como estamos con
ecuaciones polinmicas, 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 crticos, 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 crticos. Desafortunadamen-
te, no podemos aplicar de una vez la asignacin de valores, sino que deberemos ir punto a punto
In[36]:=
G[x_,y_]={{
x
g[x,y],
y
g[x,y]}};
In[37]:=
nucleo=NullSpace[G[x,y]/. pcrit[[1]]]
Out[37]=
{{1,0}}
(observa que pcrit[[1]] nos da el primer punto crtico)
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 mnimo 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 tambin es mnimo;
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 mximo;
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 mximo.
El valor de la funcin en los extremos:
In[45]:=
f[x,y]/.pcrit
Out[45]=
{-1, -1, 1, 1}
esto es, vale 1 en los mximos y -1 en los mnimos.
Ejemplo 2: Calcular los extremos relativos de
f(x, y, z) = x
2
+y
2
+z
2
condicionados a la supercie
g(x, y, z) = 2x +2y z +3 = 0.
Comenzamos con las deniciones:
In[46]:=
f[x_,y_,z_]=x
2
+ y
2
+z
2
;
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_]={
x
k1,
y
k1,
z
k1};
H[x_,y_,z_,lambda_]={{
x,x
k1,
x,y
k1,
x,z
k1},
{
y,x
k1,
y,y
k1,
y,z
k1},{
z,x
k1,
z,y
k1,
z,z
k1}};
Resolvemos el sistema de Lagrange
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 funcin auxiliar en el espacio tangente a la supercie. Primero cal-
culamos una base de dicho tangente con el comando NullSpace:
In[48]:=
k2=g[x,y,z];
G[x_,y_,z_]={{
x
k2,
y
k2,
z
k2}};
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 denida mediante sus valores propios
In[50]:=
N[Eigenvalues[M]]
Out[50]=
{3.39445, 10.6056}
Como ambos son positivos, el nico punto crtico calculado es un mnimo condicionado, con valor
In[51]:=
f[x,y,z]/.pcrit
Out[51]=
{1}
Ejercicio 1: Calcular los extremos condicionados en los siguientes casos:
80 Extremos relativos y condicionados
1. f(x, y) = x
2
xy +y
2
condicionados a x
2
+y
2
4 = 0.
2. f(x, y) = x
3
+xy
2
condicionados a xy = 1.
3. f(x, y, z) = xyz condicionados a x
2
+y
2
+z
2
= 1.
Ejercicio 2:
1. Hallar la mnima distancia de (0, 0) a x
2
y
2
= 1.
2. Entre todos los ortoedros de volumen 1, determinar el que tiene supercie lateral mnima.
3. Calcular las dimensiones de un ortoedro de supercie lateral 2, para que su volumen sea
mximo
4. Se quiere construir un canal cuya seccin sea un trapecio issceles de rea dada S. Calcular la
profundidad del canal y el ngulo que deben formar las paredes con la horizontal para que la
supercie mojada sea mnima. (Sol: se trata de la mitad de un hexgono regular)
CAPTULO 10
Integrales mltiples
Ya conocemos el comando Integrate para realizar integrales de funciones de una variable y,
como podrs imaginar por lo visto hasta ahora, pasar a varias variables slo ser cuestin de poner
algunas variables ms y alguna coma. En general, la principal diferencia entre una y varias variables
no es tanto la funcin a integrar como el recinto de integracin (por ejemplo, no hay una manera
directa de decirle a Mathematica que queremos integrar en un crculo). Veremos en esta prctica
como se pueden escribir los recintos de integracin en Mathematica , aprovechando para ello las
capacidades grcas del programa.
Expondremos slo el caso de dos variables; para integrales triples los comandos sern totalmente
anlogos.
Bsicamente slo sabemos calcular la integral de una funcin f(x, y) en recintos de uno de los
siguientes tipos:
A = {(x, y) R
2
: a x b, g
1
(x) y g
2
(x)} (10.1)
o
B = {(x, y) R
2
: a y b, h
1
(y) x h
2
(y)} (10.2)
Las correspondientes integrales seran, va el teorema de Fubini,
_
A
f(x, y) d(x,y) =
_
b
a
_
_
g
2
(x)
g
1
(x)
f(x, y) dy
_
dx
y
_
B
f(x, y) d(x,y) =
_
b
a
_
_
h
2
(x)
h
1
(x)
f(x, y) dx
_
dy
La orden para calcular el valor de una integral doble es Integrate o, en caso de que slo nos
interese una aproximacin numrica, NIntegrate. Dado que el comando Integrate intenta calcu-
lar una primitiva y despus evaluar en los extremos de integracin, es ms lento que el comando
NIntegrate. La orden completa es
82 Integrales mltiples
Integrate[funcin,{x,a,b},{y,c,d}]
y lo mismo para NIntegrate.
El caso ms fcil se presenta cuando integramos en rectngulos. En este caso las funciones g
i
o
h
i
son constantes. Por ejemplo, si queremos calcular la integral de f(x, y) = x
2
+y
2
en [0, 2][1, 5]
tendramos que hacer lo siguiente:
In[1]:=
Integrate[x
2
+ y
2
,{x,0,2},{y,1,5}]
Out[1]=
280
3
Pasemos a integrales un poco ms complicadas. Supongamos que queremos integrar la funcin
f(x, y) = x en el conjunto
A = {(x, y) R
2
: x
2
+y
2
1, x 0, y 0}.
El primer paso es intentar averiguar cmo es el conjunto, para lo que nos hara falta dibujar x
2
+y
2
=
1. Para ello, necesitamos un paquete de Mathematica para dibujar curvas que vienen dadas por una
ecuacin (llamada ecuacin implcita). 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 x
2
+y
2
= 1 para
x [0, 1]. La orden es
ImplicitPlot[ecuacin,{x,a,b}]
donde a y b representan el rango de variacin de la variable x, rango que normalmente tendremos
que calcular a ojo. En nuestro caso
In[3]:=
ImplicitPlot[x
2
+y
2
==1,{x,0,1}]
0.2 0.4 0.6 0.8 1
-1
-0.5
0.5
1
Out[3]= - Graphics -
83
Cmo se puede ver, Mathematica dibuja la circunferencia para y positivo y negativo, en cambio
slo nos interesa la parte del primer cuadrante. Para representar esta parte podemos restringir el
rango de la imagen con la opcin PlotRange (la orden ImplicitPlot tiene bsicamente las mismas
opciones que la orden Plot).
In[4]:=
ImplicitPlot[x
2
+y
2
==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 -
Despus de ver el conjunto A donde estamos integrando, es claro cmo podemos poner una
variable en funcin de la otra. Por ejemplo, si ponemos y en funcin de x, para un valor concreto
de x entre 0 y 1, y vara entre 0 y

1 x
2
. Podemos calcular ahora el valor de la integral:
In[5]:=
Integrate[x,{x,0,1},{y,0,Sqrt[1-x
2
]}]
Out[5]=
1
3
Como se puede observar el orden para evaluar la integral es de derecha a izquierda, as que si y
depende de x, el rango de x va primero.
Observars que no hemos cambiado a coordenadas polares. Para integrales en varias variables,
interesa cambiar de variable cuando el dominio o la funcin 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 automticamente). El caso de funciones complicadas no nos debe
preocupar, pues Mathematica se encarga de resolver la integral en la inmensa mayora 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 funcin f(x, y) = e
x/y
, en el conjunto A = {(x, y) R
2
: 0
y
3
x y
2
}.
Estamos en el caso (2). Tenemos la variable x en funcin de y. Vamos primero a ver los puntos
de corte de las ecuaciones y
3
= x, y
2
= x y luego las dibujaremos para hacernos una idea de cul
es el dominio de integracin:
84 Integrales mltiples
In[6]:=
Needs["GraphicsImplicitPlot"]
In[7]:=
Solve[y
3
== y
2
,y]
Out[7]=
{{y->0},{y->0},{y->1}}
In[8]:=
graf1=ImplicitPlot[y
3
==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[y
2
==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
85
De lo hecho se deduce que la integral que queremos calcular es
In[11]:=
Integrate[Exp[x/y],{y,0,1},{x,y
3
, y
2
}]
Out[11]=
3
2

E
2
Ejemplo 2. Calcular la integral de la funcin
f(x, y) = x
2
+y
2
en el conjunto
A = {(x, y) R
2
: (x
2
+y
2
)
2
4(x
2
y
2
), x 0}.
En este caso la funcin es relativamente sencilla pero el dominio no lo es tanto. No hay una
manera fcil de hacer la integral directamente, as que es mejor cambiar a coordenadas polares y
luego plantear la integral. Dibujemos el recinto:
In[12]:=
ImplicitPlot[(x
2
+y
2
)
2
==4(x
2
-y
2
),{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
(cos
2
() sen
2
()), cos 0
Despus de operar, nos quedara
2
_
cos
2
() sen
2
() 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 funcin 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]=

86 Integrales mltiples
Ejercicio 1. Calcular la integral de las siguientes funciones en los recintos determinados por las
siguientes ecuaciones:
1. f(x, y) =
_
4x
2
y
2
, x = 1, y = 0, y = x
2. f(x, y) = xe
x
2
/y
, x = 0, y = 1, y = x
2
3. f(x, y) = y, y > 0, x
2
+y
2
= a
2
, y
2
= 2ax, x = 0
Ejercicio 2. Calcular el volumen del conjunto A en cada uno de los siguientes casos:
1. A =
_
(x, y, z) R
3
: x
2
+y
2
z
_
x
2
+y
2
_
2. A =
_
(x, y, z) R
3
:
x
2
a
2
+
y
2
b
2
1, 0 z
_
x
2
a
2
+
y
2
b
2
_
3. A =
_
(x, y, z) R
3
: 0 z x
2
+y
2
, x +y 1, x, y 0
_
4. A =
_
(x, y, z) R
3
: 0 z
_
x
2
+y
2
, x
2
+y
2
2y
_
5. A =
_
(x, y, z) R
3
: 0 z 4 y
2
, 0 x 6
_
6. A =
_
(x, y, z) R
3
:

x y 2

x, 0 z 9 x
_
7. A =
_
(x, y, z) R
3
: x
2
+y
2
z
2
, x
2
+y
2
+z
2
2z
_
Ejercicio 3. Calcular el volumen limitado superiormente por el cono 4x
2
+ 4y
2
z
2
= 0, infe-
riormente por el plano z = 0 y lateralmente por el cilindro x
2
+(y 2)
2
= 4.
Ejercicio 4. Calcular el volumen de los slidos siguientes:
1. Interseccin de los cilindros x
2
+y
2
= r
2
, y
2
+z
2
= r
2
.
2. El limitado por el plano z = 0, el cilindro x
2
+y
2
= 2ax (a > 0) y el cono x
2
+y
2
= z
2
.






BIBLIOGRAFA




Matemticas y Mathematica.
- Inmaculada Serrano Gmez.
- M Joaquina Berral Yern.
Universidad de Crdoba, 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/

También podría gustarte