You are on page 1of 74

Un pequeño tour con Mathematica

Agustín de la Villa Cuenca


Universidad Pontifia Comillas

Ideas generales sobre


Mathematica
Mathematica es un sistema de cálculo científico (simbólico, numérico y gráfico) interactivo, con una sintaxis próxima a
la notación matemática, disponible para una amplia gama de sistemas operativos.
Algunas de sus capacidades son:
Operaciones numéricas en aritmética racional exacta o decimal de precisión arbitraria.
Manipulación algebraica de variables y símbolos.
Operaciones con polinomios, fracciones algebraicas y series.
Cálculo de límites, derivadas parciales e integrales.
Resolución de ecuaciones y sistemas.
Resolución de ecuaciones diferenciales y en diferencias.
Operaciones con vectores y matrices.
Cálculo vectorial con funciones de varias variables.
Capacidades gráficas en 2 y 3 dimensiones.
Se desarrolló en 1985 y en el año 2010 la versión del programa es la 7, con la se ha trabajado para resolver los problemas
propuestos de este libro y los tutoriales correspondientes.

El programa consta de dos partes diferenciadas:

- El núcleo o Kernel: es la parte encargada de la realización de los cálculos.

- La presentación o FrontEnd es el área de trabajo donde se visualizan las entradas y salidas de datos. Tiene la aparien-
cia de un editor de texto formado por celdas donde escribimos las entradas.

Un archivo de Mathematica o notebook se guardará con la extensión .nb.


2 tour.nb

ü Tipos de celdas.

Hay dos tipos fundamentales de celdas:

- Input o entrada. Son las celdas que aparecen por defecto. En ellas introducimos lo que vamos a evaluar.
Para evaluar una celda se coloca el cursor en un punto cualquiera de la misma y se pulsa la tecla Intro del teclado
numérico o bien la combinación de teclas Mayúsculas Intro del teclado ordinario. Entonces aparece la información
In[n]:= precediendo a lo escrito y también una nueva celda de tipo output.

- Output o salida. Son las celdas en las que aparecen los resultados de evaluar las celdas de tipo Input. Van precedidas
de la información Out[n]=.

Otros tipos de celdas que sirven para organizar el documento son: Título, Subtítulo, Subsubtítulo, Sección,
Subsección, Subsubsección, Texto, que se consiguen con la secuencia de comandos ALT + número correspondi-
ente: 1, 2, 3, 4, 5, 6, 7. O bien, en el menú Format, opción Style.

El cursor tiene dos posiciones:

- Vertical: dentro de una celda.


- Horizontal: entre dos celdas.

Por eso, para introducir un tipo de celda, colocamos el cursor en posición horizontal, pulsamos ALT más el número
correspondiente y escribimos el apartado correspondiente del documento: título... sección... texto.

Nota: Por defecto si tenemos el cursor en posición horizontal y escribimos algo se genera una celda de tipo Input

ü Ejemplo:

In[1]:=
2+2

Out[1]= 4

Para visualizar mejor el tipo de celda en el que estamos, seleccionamos en el menú Window, opción Show Toolbar,
aparece entonces un desplegable en la barra de herramientas y en la parte izquierda con los tipos de celdas.

ü La barra de menús.

ü Menú Format

En la opción Style podemos seleccionar el tipo de celda.


Hay varias opciones referidas al texto como son Font, Face, Size, Text Color, Text Alignment, Text Justifica-
tion.
La opción Background Color permite modificar el color del fondo de celda.
tour.nb 3

ü Menú Cell

1. En este menú la opción Cell Properties presenta las distintas formas en las que se puede encontrar una celda:
abierta, editable, evaluable, activa.

Open: Permite que se muestre el contenido de la misma. Esta opción siempre aparece por defecto.

Editable: Permite modificar su contenido.

Evaluatable: Permite evaluar la celda. Lógicamente esta opción es propia de las celdas tipo Input.

Active: Permite evaluar pero no se puede modificar su contenido ni seleccionarlo, para ello hay que seleccionar la celda
desde el corchete de la derecha. Esta opción, por defecto, aparece desactivada.

2. El submenú Grouping es muy útil y presenta dos opciones que se utilizan en la presentación del documento:

Manual Grouping: Permite la agrupación manual de las celdas.

Automatic Grouping: El programa establece por defecto una agrupación de celdas.

3. Delete All Output: Esta opción permite borrar todas las salidas. Nosotros la hemos utilizado para que el usuario que
trabaje con el documento vaya obteniendo las salidas al ejecutar las celdas Input.

ü Menú Evaluation

La opción Evaluate Cells permite evaluar el documento al abrirlo. También permite evaluar las celdas que selec-
cionemos.

Puede ocurrir que al realizar alguna operación, el programa permanezca en modo running, entonces podemos salir del
núcleo con la opción Quit Kernel.

ü Menú Palettes

Las paletas permiten escribir de forma más simple símbolos y operadores matemáticos, letras griegas, flechas, etc.
Aconsejamos que se haga un recorrido por esta parte del menú. Sólo comentaremos algunas de las opciones

En la opción Basic Math Assistant hay varias posibilidades:


Calculator que se puede usar como calculadora
Basic Commands, donde se encuentran las entradas básicas de símbolos y constantes matemáticas y funciones
elementales (incluyendo las exponenciales, logarítmicas y trigonométricas), operadores, subíndices y superíndices, etc.
Basic Typesetting, donde se encuentran algunos símbolos matemáticos, letras griegas, operadores, subíndices y
superíndices, flechas e iconos, etc.

En la opción Other hay varias posibilidades:


Algebraic Manipulation donde se pueden encontrar algunos comandos de Mathematica.
BasicMathInput, donde se encuentran las entradas básicas de símbolos matemáticos, letras griegas, operadores,
subíndices y superíndices, etc.
Typesetting, donde se aparecen má símbolos matemáticos, subíndices y superíndices, flechas, etc.
ü Menú Window

El submenú Show Ruler muestra la regla en el documento.


La opción Show Toolbar muestra en la barra de herramientas un desplegable con los distintos tipos de celdas.
4 tour.nb

ü Menú Help

La opción Documentation Center permite encontrar comandos que utiliza el programa.

Algunos consejos
Las celdas deben ejecutarse en el orden en que aparecen en el documento. En caso contrario la salida
puede no ser la esperada.

Acudir a la ayuda, si se tiene alguna duda sobre la sintaxis de los comandos utilizados. Es muy fácil. Además
su uso se explica en el apartado 2 de este tour.

Léase la última parte de este documento que pretende aglutinar algunos errores de los más frecuentes al
usar Mathematica.

1. Primeros pasos
ü 1.1. La sintaxis en Mathematica y algunos consejos
prácticos
Mayúsculas, minúsculas, espacios, llaves y corchetes.
ü Mayúsculas

Mathematica distingue entre mayúsculas y minúsculas. Todos los comandos propios del programa empiezan por
mayúscula, por eso se aconseja definir las funciones de propia creación con minúsculas. Si escribimos un comando de
Mathematica con minúsculas, la orden no se va a evaluar.
Lo vemos con un ejemplo:
In[2]:=
Solve@x + 1 == 0, xD

Out[2]= 88x Ø - 1<<

In[3]:=
solve@x + 1 == 0, xD

Out[3]= solve@1 + x ã 0, xD

ü Espacios

Un espacio entre dos variables significa un producto. Por eso Mathematica no deja espacio en los comandos que se
expresan con más de una palabra, por ejemplo MatrixForm.
In[4]:=
881, 2<, 83, 4<< êê MatrixForm

Out[4]//MatrixForm=
1 2
K O
3 4

In[5]:=
881, 2<, 83, 4<< êê Matrix Form

Out[5]= HForm MatrixL@881, 2<, 83, 4<<D


tour.nb 5

ü Llaves

Las llaves se utilizan para definir listas de elementos, que deben estar separados por comas. De hecho las matrices se
definen como listas expresando cada fila entre llaves.
Ejemplos:
In[6]:=
81, 2, 3<

Out[6]= 81, 2, 3<

In[7]:=
881, 2, 3<, 84, 5, 6<<

Out[7]= 881, 2, 3<, 84, 5, 6<<

In[8]:=
881, 2, 3<, 84, 5, 6<< êê MatrixForm

Out[8]//MatrixForm=
1 2 3
K O
4 5 6

ü Corchetes

Los corchetes delimitan los argumentos de las funciones.


Por ejemplo:
In[9]:=
p
SinB F
2
Out[9]= 1

Si se pone paréntesis Mathematica no lo reconoce!!!!!. Admás los paréntesis quedan en rojo diciendo que "lo estamos
haciendo mal".
Por ejemplo:
In[10]:=
p
Sin
2
p Sin
Out[10]=
2

El punto y coma y la manipulación de resultados anteriores


ü El punto y coma ;

Para que una instrucción se evalúe pero no se muestre el resultado se escribe punto y coma ";" al final de la instrucción.
Se puede comprobar evaluando las dos celdas siguientes
In[11]:=
3

Out[11]= 3

In[12]:=
3;
6 tour.nb

ü Resultados anteriores %

En un documento de Mathematica, las entradas Input y las salidas Output quedan numeradas al ser evaluadas. Este
número permite poder hacer referencia al resultado mediante el símbolo %. Así % significa el último resultado, %% ó %2
el penúltimo desde el inicio del documento. %n es el output n.
Por ejemplo:
In[13]:=
2+3

Out[13]= 5

In[14]:=
6+7

Out[14]= 13

In[15]:=
%

Out[15]= 13

Simplificación, aproximación y evaluación


Comandos de simplificación como Simplify, aproximación como N o evaluación como Evaluate pueden ser necesar-
ios o muy convenientes en determinadas instrucciones de Mathematica. Veremos algunos ejemplos a lo largo de este tour.

ü 1.2. Operaciones básicas. Cálculos exactos y


aproximados
Se analizarán algunas operaciones elementales y el orden en que Mathematica las ejecuta.

Los datos pueden introducirse o bien directamente o bien a través del menú PALETTES->Other->Basic Math
Input
Ejemplo 1:
Calcular:
a) 6+4
b) 3+9× 2
c) (9-5)4
237 17
d) 512
+ 23

Solución.
Apartado a)

Primera suma con Mathematica.

In[16]:=
6+4

Out[16]= 10

Apartado b)

El producto puede realizarse con * o dejando un espacio en blanco( Mathematica escribe el signo de la multiplicación).
Así las dos celdas siguientes producen la misma salida
tour.nb 7

In[17]:=
3+9µ2

Out[17]= 21

In[18]:=
3+9*2

Out[18]= 21

Apartado c)

El orden del paréntesis y productos es el usual.

In[19]:=
H9 - 5L * 4

Out[19]= 16

Apartado d)

Ñ
Se puede introducir a mano o bien usando Ñ
de la paleta. En el ejemplo hemos usado las dos opciones.

In[20]:=
17
237 ê 512 +
23

14 155
Out[20]=
11 776

Se invita al usuario a que sombree la expresión anterior y vaya al menú Cell+ ConvertTo + StandardForm
y luego haga Cell+ ConvertTo + InputForm

Ejemplo 2:
Calcular 300!

Solución.
In[21]:=
300 !

Out[21]= 306 057 512 216 440 636 035 370 461 297 268 629 388 588 804 173 576 999 416 776 741 259 476 533 176 716 Ö
867 465 515 291 422 477 573 349 939 147 888 701 726 368 864 263 907 759 003 154 226 842 927 906 974 559 Ö
841 225 476 930 271 954 604 008 012 215 776 252 176 854 255 965 356 903 506 788 725 264 321 896 264 299 Ö
365 204 576 448 830 388 909 753 943 489 625 436 053 225 980 776 521 270 822 437 639 449 120 128 678 675 Ö
368 305 712 293 681 943 649 956 460 498 166 450 227 716 500 185 176 546 469 340 112 226 034 729 724 066 Ö
333 258 583 506 870 150 169 794 168 850 353 752 137 554 910 289 126 407 157 154 830 282 284 937 952 636 Ö
580 145 235 233 156 936 482 233 436 799 254 594 095 276 820 608 062 232 812 387 383 880 817 049 600 000 Ö
000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000

Ejemplo 3:
Calcular:
a) 21000
b) 2.1000

Solución.
Apartado a)
8 tour.nb

In[22]:=
21000

Out[22]= 10 715 086 071 862 673 209 484 250 490 600 018 105 614 048 117 055 336 074 437 503 883 703 510 511 249 Ö
361 224 931 983 788 156 958 581 275 946 729 175 531 468 251 871 452 856 923 140 435 984 577 574 698 574 Ö
803 934 567 774 824 230 985 421 074 605 062 371 141 877 954 182 153 046 474 983 581 941 267 398 767 559 Ö
165 543 946 077 062 914 571 196 477 686 542 167 660 429 831 652 624 386 837 205 668 069 376

Apartado b)

In[23]:=
2.1000

Out[23]= 1.07151 µ 10301

Las salidas son diferentes, por ser diferente el carácter de los números, ya que 2 es un número natural y 2. es un número
real.

ü 1.3. Algunas constantes incorporadas en


Mathematica
Ejemplo:
Introducir
a) Pi
b) e, base de los logaritmos neperianos
c) Infinito

Solución.
Los datos pueden introducirse bien directamente o bien a través del menú PALETTES->Other->Basic Math
Input
Apartado a)

Puede hacerse en el menú Palettes + Other+ Basic Math Input pinchando en p

In[24]:=
p

Out[24]= p

O escribiendo

In[25]:=
Pi

Out[25]= p

Nota: Mathematica tiene incorporado el número p. Por tanto trabajando de forma exacta la salida del número p es el
número p !!!!

Apartado b)

Las constantes incorporadas a Mathematica empiezan por mayúscula. Así al escribir e resulta

In[26]:=
e

Out[26]= e

El número e puede obtenerse con


tour.nb 9

El número e puede obtenerse con

In[27]:=
E

Out[27]= ‰

O bien en el menú Palettes + Other+ Basic Math Input pinchando en ‰

In[28]:=

Out[28]= ‰

Apartado b)

Infinito puede obtenerse con

In[29]:=
Infinity

Out[29]= ¶

O bien en el menú File+Palettes+BasicInput pinchando en ¶

In[30]:=

Out[30]= ¶

ü 1.4. Aproximación y asignación. Definición de


variables
ü 1.4.1. Aproximando con Mathematica
El comando de aproximación es N. Permite aproximar con los dígitos que por defecto tenga asignados Mathematica.
N[expresion,digitos] aproxima la expresión con el número de dígitos especificado.
La instrucción //N aplica N a lo que está escrito antes.

Ejemplo:
Hallar de forma aproximada:
a) El número p.
b) El número e, base de los logaritmos neperianos, con 6 y 20 dígitos.

Solución.
Apartado a)

El comando de aproximación es N. Así

In[31]:=
N@pD

Out[31]= 3.14159

Apartado b)

Con seis digítos, que es la precisión por defecto de Mathematica se puede obtener con
10 tour.nb

In[32]:=
N@ED

Out[32]= 2.71828

O bien con la instrucción // seguida de N, que tiene el efecto de aplicar N a lo que viene antes.

In[33]:=
E êê N

Out[33]= 2.71828

Con 20 dígitos la instrucción apropiada es

In[34]:=
N@E, 20D

Out[34]= 2.7182818284590452354

ü 1.4.2. Asignando valores. Trabajando con expresiones anteriores


Para asignar se utiliza el signo =.
Para trabajar con expresiones anteriores %

Ejemplo 1:
a) Asignar a la letra a el valor 125.
b) Hallar a2 .
c) Hallar el factorial de a.

Solución.
Apartado a)

Nota: A partir de asignar a la letra a el valor de 125 si no se borra esta asignación o se le reasigna otro valor a será 125.

In[35]:=
a = 125

Out[35]= 125

Apartado b)

Con la siguiente instrucción se calcula el cuadrado de 125.

In[36]:=
a2

Out[36]= 15 625

Apartado c)

Y con la siguiente instrucción se calcula el factorial de 125.

In[37]:=
a!

Out[37]= 188 267 717 688 892 609 974 376 770 249 160 085 759 540 364 871 492 425 887 598 231 508 353 156 331 613 Ö
598 866 882 932 889 495 923 133 646 405 445 930 057 740 630 161 919 341 380 597 818 883 457 558 547 055 Ö
524 326 375 565 007 131 770 880 000 000 000 000 000 000 000 000 000 000

Nota importante: En MATHEMATICA hay tres signos de igualdad que significan cosas distintas
= Asignación.
== Igualdad, que se utilizará en la resolución de ecuaciones lineales, no linealse, diferenciales, etc.
=== Igualdad lógica
tour.nb 11

Nota importante: En MATHEMATICA hay tres signos de igualdad que significan cosas distintas
= Asignación.
== Igualdad, que se utilizará en la resolución de ecuaciones lineales, no linealse, diferenciales, etc.
=== Igualdad lógica

Ejemplo 2:
a) Hallar la raíz cuadrada de a!
b) Hallar el logaritmo de a2 .

Solución.
Apartado a)

Nota: Con % (última salida obtenida) y sus variantes %%, %n etc., se pueden evaluar o manipular expresiones ya
obtenidas anteriormente. Por ejemplo para halla la raíz cuadrada de a! puede evaluarse:
In[38]:=

Out[38]= 20 770 182 351 856 038 766 931 060 754 267 504 298 088 105 326 190 433 246 827 691 043 561 930 752 000 Ö
000 000 000 000 436 410 548 040 597 592 406 973 682 396 470

Apartado b)

Para evaluar el logaritmo de a2 se debe introducir en la instrucción siguiente la salida n, que es la correspondiente a a2 .
Por ello en la siguiente celda se debe sustituir n por el correspondiente número del Output de la salida de a2 del apartado
b del ejemplo anterior.
In[39]:=
Log@% nD

Out[39]= LogB
20 770 182 351 856 038 766 931 060 754 267 504 298 088 105 326 190 433 246 827 691 043 561 930 752 000 Ö
000 000 000 000 436 410 548 040 597 592 406 973 682 396 470 nF

Puede hacerse, obviamente con la instrucción

In[40]:=
LogAa2 E

Out[40]= Log@15 625D

ü 1.4.3. Definiendo y borrando variables. Ocultando la salida


Ejemplo:
El comando asociado a borrar es Clear

a) Borrar el valor asignado a la letra a.


b) Asignar a b el valor 2 y a c el valor 32 . Hallar b + c y borrar la asignación de b y c.

Solución.
Apartado a)

Aplicando el comando Clear a la variable a


12 tour.nb

In[41]:=
Clear@aD

Y ahora se introduce a

In[42]:=
a

Out[42]= a

La salida es a. Ahora a no tiene asignado nada.

Apartado b)

Ahora se introducen b y c. Observar que se pueden definir varias variables a la vez.


No se produce salida del valor b pues cuando se quiere ocultar la salida se pone ;
In[43]:=
b = 2;
c = 32

Out[44]= 9

Se suman b y c

In[45]:=
b + c

Out[45]= 11

Y se borran. Observar que el comando Clear se puede aplicar a varias cosas a la vez.

In[46]:=
Clear@b, cD

Observaciones:
1. Se pueden eliminar todas las variables a través del comando: Remove["Global`*"]
2. Para conocer la situacion de una variable, letra, etc. se ejecuta ?variable
3.- A veces pueden aparecer en los outputs resultados extraños. Probablemente será debido a que algunas de las variables
no se han limpiado a través de Clear y conservan la última asignación que tienen de la sesión de trabajo. Si se limpian
las variables se obtendrá el resultado correcto.
In[47]:=
Remove@"Global`*"D

2. La ayuda
ü Diferentes formas de obtener ayuda
ü 2.1.1. A través del Menú Help
A través del menú Help+Documentation Center y poner la palabra se quiere encontrar.
Se invita que lo haga con Plot y List.

ü 2.1.2. Usando interrogaciones y asteriscos


Con ?Palabra aparece información relativa al comando Palabra. Por ejemplo al ejecutar
tour.nb 13

In[48]:=
? Plot

Plot@ f , 8x, xmin , xmax <D generates a plot of f as a function of x from xmin to xmax .
Plot@8 f1 , f2 , …<, 8x, xmin , xmax <D plots several functions fi .  à

aparece la sintaxis del comando Plot

Con ??Palabra aparece información relativa al comando Palabra y las opciones de dicho comando. Ejecútese por ejemplo

In[49]:=
?? Plot

Plot@ f , 8x, xmin , xmax <D generates a plot of f as a function of x from xmin to xmax .
Plot@8 f1 , f2 , …<, 8x, xmin , xmax <D plots several functions fi .  à

Attributes@PlotD = 8HoldAll, Protected<

1
Options@PlotD = :AlignmentPoint Ø Center, AspectRatio Ø , Axes Ø True, AxesLabel Ø None,
GoldenRatio
AxesOrigin Ø Automatic, AxesStyle Ø 8<, Background Ø None, BaselinePosition Ø Automatic,
BaseStyle Ø 8<, ClippingStyle Ø None, ColorFunction Ø Automatic, ColorFunctionScaling Ø True,
ColorOutput Ø Automatic, ContentSelectable Ø Automatic, CoordinatesToolOptions Ø Automatic,
DisplayFunction ß $DisplayFunction, Epilog Ø 8<, Evaluated Ø System`Private`$Evaluated,
EvaluationMonitor Ø None, Exclusions Ø Automatic, ExclusionsStyle Ø None,
Filling Ø None, FillingStyle Ø Automatic, FormatType ß TraditionalForm, Frame Ø False,
FrameLabel Ø None, FrameStyle Ø 8<, FrameTicks Ø Automatic, FrameTicksStyle Ø 8<,
GridLines Ø None, GridLinesStyle Ø 8<, ImageMargins Ø 0., ImagePadding Ø All,
ImageSize Ø Automatic, ImageSizeRaw Ø Automatic, LabelStyle Ø 8<, MaxRecursion Ø Automatic,
Mesh Ø None, MeshFunctions Ø 8Ò1 &<, MeshShading Ø None, MeshStyle Ø Automatic,
Method Ø Automatic, PerformanceGoal ß $PerformanceGoal, PlotLabel Ø None,
PlotPoints Ø Automatic, PlotRange Ø 8Full, Automatic<, PlotRangeClipping Ø True,
PlotRangePadding Ø Automatic, PlotRegion Ø Automatic, PlotStyle Ø Automatic,
PreserveImageOptions Ø Automatic, Prolog Ø 8<, RegionFunction Ø HTrue &L,
RotateLabel Ø True, Ticks Ø Automatic, TicksStyle Ø 8<, WorkingPrecision Ø MachinePrecision>

Pero si Palabra no es ningún comando de Mathematica ?Palabra y ??Palabra no devuelve nada. Véase por ejemplo

In[50]:=
? Plo

Information::notfound : Symbol Plo not found. à

Para paliar esta dificultad está el símbolo *, que es comodín. Así las salidas de los siguierntes Inputs nos muestran los
comandos que empiezan por Plot, que acaban en Plot y que contienen a lot.
In[51]:=
? Plot*

System`

PlotRangeClipÖ
Plot PlotDivision PlotMarkers ping PlotStyle
PlotRangePadÖ
Plot3D PlotJoined PlotPoints ding
Plot3Matrix PlotLabel PlotRange PlotRegion
14 tour.nb

In[52]:=
? *Plot

System`

ArrayPlot ListLinePlot MatrixPlot


ContourPlot ListLogLinearPlot ParametricPlot
DateListLogPlot ListLogLogPlot Plot
DateListPlot ListLogPlot PolarPlot
DensityPlot ListPlot RegionPlot
DiscretePlot ListPolarPlot ReliefPlot
GraphPlot ListStreamDensityPlot StreamDensityPlot
LayeredGraphPlot ListStreamPlot StreamPlot
LineIntegralConvolutionPlot ListVectorDensityPlot TreePlot
ListContourPlot ListVectorPlot VectorDensityPlot
ListCurvePathPlot LogLinearPlot VectorPlot
ListDensityPlot LogLogPlot
ListLineIntegralConvolutionÖ
Plot LogPlot

In[53]:=
?? *lot*

System`

ArrayPlot ListPlot3D PlotMarkers


ContourPlot ListPointPlot3D PlotPoints
ContourPlot3D ListPolarPlot PlotRange
Cyclotomic ListStreamDensityPlot PlotRangeClipping
DateListLogPlot ListStreamPlot PlotRangePadding
DateListPlot ListSurfacePlot3D PlotRegion
DensityPlot ListVectorDensityPlot PlotStyle
DiscretePlot ListVectorPlot PolarPlot
GraphPlot ListVectorPlot3D RegionPlot
GraphPlot3D LogLinearPlot RegionPlot3D
LayeredGraphPlot LogLogPlot ReliefPlot
LineIntegralConvolutionPlot LogPlot RevolutionPlot3D
ListContourPlot MatrixPlot Slot
ListContourPlot3D MaxPlotPoints SlotSequence
ListCurvePathPlot ParametricPlot SphericalPlot3D
ListDensityPlot ParametricPlot3D StreamDensityPlot
ListLineIntegralConvolutionÖ
Plot Plot StreamPlot
ListLinePlot Plot3D TreePlot
ListLogLinearPlot Plot3Matrix VectorDensityPlot
ListLogLogPlot PlotDivision VectorPlot
ListLogPlot PlotJoined VectorPlot3D
ListPlot PlotLabel
tour.nb 15

ü 2.1.3. Usando la tecla F1


Se debe poner una palabra, seleccionarla y pulsar la tecla F1. En otras palabras F1 nos conduce directamente a la ayuda.
Puede comprobarse con la siguiente palabra.
In[54]:=
Plot

Out[54]= Plot

ü 2.1.4. Las opciones


Options[Comando] da las opciones de ese comando. Véase por ejemplo

In[55]:=
Options@PlotD

1
Out[55]= :AlignmentPoint Ø Center, AspectRatio Ø , Axes Ø True,
GoldenRatio
AxesLabel Ø None, AxesOrigin Ø Automatic, AxesStyle Ø 8<, Background Ø None,
BaselinePosition Ø Automatic, BaseStyle Ø 8<, ClippingStyle Ø None,
ColorFunction Ø Automatic, ColorFunctionScaling Ø True, ColorOutput Ø Automatic,
ContentSelectable Ø Automatic, CoordinatesToolOptions Ø Automatic,
DisplayFunction ß $DisplayFunction, Epilog Ø 8<, Evaluated Ø Automatic,
EvaluationMonitor Ø None, Exclusions Ø Automatic, ExclusionsStyle Ø None, Filling Ø None,
FillingStyle Ø Automatic, FormatType ß TraditionalForm, Frame Ø False, FrameLabel Ø None,
FrameStyle Ø 8<, FrameTicks Ø Automatic, FrameTicksStyle Ø 8<, GridLines Ø None,
GridLinesStyle Ø 8<, ImageMargins Ø 0., ImagePadding Ø All, ImageSize Ø Automatic,
ImageSizeRaw Ø Automatic, LabelStyle Ø 8<, MaxRecursion Ø Automatic, Mesh Ø None,
MeshFunctions Ø 8Ò1 &<, MeshShading Ø None, MeshStyle Ø Automatic, Method Ø Automatic,
PerformanceGoal ß $PerformanceGoal, PlotLabel Ø None, PlotPoints Ø Automatic,
PlotRange Ø 8Full, Automatic<, PlotRangeClipping Ø True, PlotRangePadding Ø Automatic,
PlotRegion Ø Automatic, PlotStyle Ø Automatic, PreserveImageOptions Ø Automatic,
Prolog Ø 8<, RegionFunction Ø HTrue &L, RotateLabel Ø True,
Ticks Ø Automatic, TicksStyle Ø 8<, WorkingPrecision Ø MachinePrecision>

In[56]:=
Options@SolveD

Out[56]= 8InverseFunctions Ø Automatic, MakeRules Ø False, Method Ø 3,


Mode Ø Generic, Sort Ø True, VerifySolutions Ø Automatic, WorkingPrecision Ø ¶<

3. Algunas funciones elementales


ü 3.1. Funciones trigonométricas
Ejemplo:
p
a) Calcular Sen( 4 )
b) Representar la función Sen(x) en el intervalo (0,2 p).
c) Simplificar la expresión CosHxL4 -6CosHxL2 SenHxL2 + SenHxL4 y obtener diversas expresiones equivalentes a la del
enunciado.

Solución.
Notas:
1.Para este problema se pueden introducir los datos directamente, si se conoce la forma de escribir las funciones
trigonométricas con Mathematica teniendo la precaución de poner los argumentos entre corchetes. En caso contrario se
debe acudir a la ayuda. Así por ejemplo si se escribe Cos en la ayuda aparece la sintaxis de la función.

2. Si usamos el menú en la paleta opción Basic Math Assistant hay varias posibilidades. Una de ellas es Basic Com-
mands, donde se encuentran la sintaxis o bien la forma directa de introducir las funciones trigonométricas.
16 tour.nb

Notas:
1.Para este problema se pueden introducir los datos directamente, si se conoce la forma de escribir las funciones
trigonométricas con Mathematica teniendo la precaución de poner los argumentos entre corchetes. En caso contrario se
debe acudir a la ayuda. Así por ejemplo si se escribe Cos en la ayuda aparece la sintaxis de la función.

2. Si usamos el menú en la paleta opción Basic Math Assistant hay varias posibilidades. Una de ellas es Basic Com-
mands, donde se encuentran la sintaxis o bien la forma directa de introducir las funciones trigonométricas.

Apartado a)

El seno se introduce como Sin y el argumento entre corchetes.

In[57]:=
p
SinB F
4
1
Out[57]=
2

Apartado b)

Aprendiendo a usar el comando PLOT. Si no se sabe su sintaxis márquese y púlsese F1.


In[58]:=
Plot@Sin@xD, 8x, 0, 2 p<D

1.0

0.5

Out[58]=
1 2 3 4 5 6

-0.5

-1.0

Apartado c)

El comando de simplificación es Simplify

In[59]:=
SimplifyACos@xD4 - 6 Cos@xD2 Sin@xD2 + Sin@xD4 E

Out[59]= Cos@4 xD

El comando Simplify también puede obtenerse a través del menú PALETTES->Other->Algebraic


Manipulation Se escribe lo que se desea simplificar, se selecciona y se pincha enla opción Simplify.

Se pueden usar varios comandos de esta paleta como TrigExpand, TrigFactor, ExptoTrig etc y analizar las salidas
obtenidas. Se invita a hacerlo en la expresión del enunciado que es la siguiente
In[60]:=
Cos@xD4 - 6 Cos@xD2 Sin@xD2 + Sin@xD4

Out[60]= Cos@xD4 - 6 Cos@xD2 Sin@xD2 + Sin@xD4

ü 3.2. Funciones exponenciales y logarítmicas


tour.nb 17

3.2. Funciones exponenciales y logarítmicas


1. Las funciones exponenciales pueden introducirse directamente utilizando Exp, para la exponencial de base e o bien
escribir a^x, o utilizando la paleta de Basis Math Input ax si la base es el número a.
Las funciones logarítmicas pueden introducirse utilizando Log[z] para el logaritmo de base e o Log[b,z], que da el
logaritmo en base b de z.
2. Si usamos el menú en la paleta opción Basic Math Assistant hay varias posibilidades. Una de ellas es Basic
Commands, donde se encuentran la sintaxis o bien la forma directa de introducir las funciones exponenciales y
logarítmicas.

ü 3.2.1. Funciones exponenciales


Ejemplo:
Usando la función exponencial
a) Hallar de forma exacta y aproximada el número e.
b) Representar la función exponencial en los intervalos (3,10) y (500,600).

Solución.
Apartado a)

La función exponencial es Exp y el comando de aproximación es N. Se ha utilizado % para llamar a la salida anterior.

In[61]:=
Exp@1D

Out[61]= ‰

In[62]:=
N@%D

Out[62]= 2.71828

También e se puede escribir con la paleta Basic Math Input pinchando en ‰ . O bien escribir E, aunque la salida
que devuelve es ‰
In[63]:=
E

Out[63]= ‰

In[64]:=
N@‰D

Out[64]= 2.71828

Apartado b)

Usamos el comando Plot y vemos las dos diferentes salidas.

ü
18 tour.nb

In[65]:=
Plot@‰x , 8x, 3, 10<D

12 000

10 000

8000

Out[65]= 6000

4000

2000

4 5 6 7 8 9 10

In[66]:=
Plot@‰x , 8x, 500, 600<D

2.0 µ 10253

1.5 µ 10253

Out[66]=
1.0 µ 10253

5.0 µ 10252

520 540 560 580 600

Sería muy interesante analizar las gráficas obtenidas.

ü 3.2.2. Funciones logarítmicas


Ejemplo:
a) Hallar el logaritmo neperiano de e y 10.
b) Hallar el logaritmo decimal de 100 y e.
c) Representar la función logaritmo neperiano en los intervalos (-1,10) y (500,600).

Solución.
Apartado a)

Acudir a la ayuda, en caso necesario, para introducir los comandos asociados a logaritmos en diferentes bases

In[67]:=
Log@ED

Out[67]= 1

In[68]:=
Log@10D

Out[68]= Log@10D

Apartado b)
tour.nb 19

In[69]:=
Log@10, 100D
Log@10, ED

Out[69]= 2

1
Out[70]=
Log@10D

Apartado c)

In[71]:=
Plot@Log@xD, 8x, - 1, 10<D

Out[71]=
2 4 6 8 10

-1

-2

¿Hay algo raro?. Analizarlo.

In[72]:=
Plot@Log@xD, 8x, 500, 600<D

6.40

6.35

Out[72]=
6.30

520 540 560 580 600

ü 3.3. Funciones polinómicas y racionales


Los principales comandos asociados a funciones polinómicas y racionales son Expand, Factor (para desarrollar y
factorizar expresiones) y Apart (para descomponer en fracciones simples), que también pueden obtenerse de la paleta
Algebraic Manipulation
Ejemplo:
a) Desarrollar las expresiones Hx + 3L7 y H3 + 2 xL2 Hx + 2 yL3 . Recuperar posteriormente las expresiones del
enunciado.
x+2 a x+b
b) Descomponer en fracciones simples las funciones racionales , a ,b eR.
x5 +3 x4 +5 x3 +5 x2 +3 x+1 x3 -9 x2 +23 x-15

Solución.
Apartado a)
20 tour.nb

Apartado a)

Usaremos los comandos Expand y Factor, con varias opciones. Véase que son distintas las salidas de las dos últimas
instrucciones que vienen a continuación.
In[73]:=
ExpandAHx + 3L7 E

Out[73]= 2187 + 5103 x + 5103 x2 + 2835 x3 + 945 x4 + 189 x5 + 21 x6 + x7

In[74]:=
ExpandAH3 + 2 xL2 Hx + 2 yL3 E

Out[74]= 9 x3 + 12 x4 + 4 x5 + 54 x2 y + 72 x3 y + 24 x4 y + 108 x y2 + 144 x2 y2 + 48 x3 y2 + 72 y3 + 96 x y3 + 32 x2 y3

In[75]:=
ExpandAH3 + 2 xL2 Hx + 2 yL3 , yE

Out[75]= x3 H3 + 2 xL2 + 6 x2 H3 + 2 xL2 y + 12 x H3 + 2 xL2 y2 + 8 H3 + 2 xL2 y3

Nota: Puede haber variantes dependiendo que se expanda en potencias de x, y o ambas.


Factorizamos la expresión obtenida y se deja como ejercicio obtener la primera expresión del enunciado.
In[76]:=
Factor@%D

Out[76]= H3 + 2 xL2 Hx + 2 yL3

Apartado b)

Borramos la posible asignación de las variables que vamos a utilizar.

In[77]:=
Clear@p, qD

In[78]:=
x+2
p= ;
x5 + 3 x4 + 5 x3 + 5 x2 + 3 x + 1

Con ; no aparece la salida

In[79]:=
ax+b
q=
x - 9 x2 + 23 x - 15
3

b+ax
Out[79]=
- 15 + 23 x - 9 x2 + x3

El comando apropiado para descomponer en fracciones simples es Apart, que también funciona simbólicamente.

In[80]:=
Apart@pD

1 1-x x
Out[80]= + -
2
1+x I1 + x + x2 M 1 + x + x2

In[81]:=
Apart@qD

5a+b -3 a - b a+b
Out[81]= + +
8 H- 5 + xL 4 H- 3 + xL 8 H- 1 + xL
tour.nb 21

In[82]:=
Clear@p, qD

4. Las reglas de sustitución


Mathematica tiene sus reglas para sustituir una variable, expresión, grupo de variables, etc. por otras. Lo analizamos a
continuación.

ü 4.1. La regla de sustitución básica


Para sustituir una cosa por otra en una expresión de cualquier tipo se emplea /. Así al ejecutar la instrucción expresión /.
sustitución. La salida es la expresión con la sustitución aplicada.
Nota: La expresión original no cambia si se quiere utilizar en manipulaciones o instrucciones posteriores.
sustitución debe escribirse como cosa a sustituir-> cosa que la sustituye.
Pueden hacerse varias sustituciones, pudiendo incluso ser de carácter simbólico.
/. aplica cualquier número de sustituciones de forma independiente.
Para sustituir varias "cosas" a la vez, en la terminología de Mathematica UNA LISTA de cosas se realiza entre llaves,
separando cada cosa por comas. (Véase ejemplo 1 apartado b)

Ejemplo 1:
a) Sustituir x por 7 en la expresión x3 + 6 x2 + 3 x + 7

b) Sustituir x por 2 e y por 3 en la expresión x4 + y5 + 3 x2 y

Solución.
Apartado a)

Definimos la función como una letra p.

In[83]:=
p = x3 + 6 x2 + 3 x + 7

Out[83]= 7 + 3 x + 6 x2 + x3

Sustituimos x por 7.

In[84]:=
p ê. x Ø 7

Out[84]= 665

Apartado b)

Definimos la función como una letra q.

In[85]:=
q = x4 + y5 + 3 x2 y

Out[85]= x4 + 3 x2 y + y5

Sustituimos x por 2 e y por 3.


22 tour.nb

In[86]:=
q ê. 8x Ø 2, y Ø 3<

Out[86]= 295

Observemos que q sigue siendo la expresión inicial

In[87]:=
q

Out[87]= x4 + 3 x2 y + y5

In[88]:= Clear@p, qD

ü 4.2. Otras posibilidades de sustitución


1. Para "aplicar" las sustituciones tantas veces como sea posible se utiliza //.

2. valor // comando sustituye el valor en comando, siendo válido para cualquier comando. (Véase ejemplo 3)

Ejemplo 2:
Dado el polinomio a x2 + b x + c se pide
a) Sustituir a por 3
b) Sustituir x por 2 y c por x en el polinomio anterior.
c) Sustituir hasta que ya no sea posible más en el polinomio x por 2 y c por x

Solución.
Apartado a)

Definimos el polinomio

In[89]:=
polinomio = a x2 + b x + c

Out[89]= c + b x + a x2

Sustituimos a por 3

In[90]:=
polinomio ê. a -> 3

Out[90]= c + b x + 3 x2

Apartado b)

Con la siguiente instrucción sólo se sustituye una vez x por 2 y c por x


In[91]:=

polinomio ê. :x -> 2, c -> x>

Out[91]= 4a+2b+ x

Apartado c)

Sustituimos hasta que sea posible x por 2 y c por x


tour.nb 23

In[92]:=

polinomio êê. :x -> 2, c -> x>

Out[92]= 2 +4a+2b

In[93]:=
Clear@polinomioD

Ejemplo 3:
Hallar
2p
a) Sen( 3
)
b) La exponencial de 2.

Solución.
Apartado a)

Aplicamos en este problema la sintaxis valor//comando

In[94]:=
2p
êê Sin
3

3
Out[94]=
2

Apartado b)

In[95]:=
2 êê Exp

Out[95]= ‰2

5. Definición de funciones
ü 5.1. Definición de funciones de una variable
ü 5.1.1. Definición "general" de una función de una variable
Para definir una función denominada Nombre y cuyo valor es expresión se utiliza la siguiente sintaxis:
Nombre[Variable_ ]= expresión
En la definición de la función, que puede llamarse como estimemos oportuno, aparece junto a la variable independiente el
símbolo " _" (guión bajo) .
La definición de una función en Mathematica requiere mantener esta rigurosa sintaxis.
Observaremos a través de ejemplos lo que sucede si se nos olvida poner _ en la definición o si se utilizan parentésis en
lugar de corchetes.

Ejemplo:
Definir la función f HxL = x3 + 3 x + 5 y calcular f (3)

Solución.
No está puesto_
24 tour.nb

In[96]:=
f@xD = x3 + 3 x + 5

Out[96]= 5 + 3 x + x3

Intentamos calcular f (3)

In[97]:=
f@3D

Out[97]= f@3D

Los argumentos no están entre corchetes.

In[98]:=
f Hx_L = x3 + 3 x + 5

Set::write : Tag Times in f x_ is Protected. à

Out[98]= 5 + 3 x + x3

In[99]:=
f H3L

Out[99]= 3f

Por fin lo vamos a hacer bien.

In[100]:=
f@x_D = x3 + 3 x + 5

Out[100]= 5 + 3 x + x3

In[101]:=
f@3D

Out[101]= 41

In[102]:=
Clear@fD

ü 5.1.2. La asignación diferida. Los :


Si después de la definición de una función ponemos :, es decir, se utiliza la sintaxis
Nombre[Variable_ ]:= expresión la función así definida no se evalúa hasta que se solicita.

Ejemplo:
Construir una función que devuelva, en forma expandida, el cuadrado de una expresión.

Solución.
Se utilizará el comando Expand con : y sin : y se verá la diferencia.

In[103]:=
g@x_D = ExpandAx2 E

Out[103]= x2

In[104]:=
h@x_D := ExpandAx2 E
tour.nb 25

In[105]:=
g@a + bD

Out[105]= Ha + bL2

In[106]:=
h@a + bD

Out[106]= a2 + 2 a b + b2

In[107]:=
Clear@g, hD

ü 5.1.3. La definición con condiciones


Si se utiliza /;Condición sólo se está definiendo una expresión para los valores que cumplen condición. Véase si se quiere
la actuación de /;

Ejemplo:
a) Definir la función característica del intervalo [0, 1] y llamarla h.
b) Hallar h( .5) y h(2).
c) Definir la función identidad en el los números negativos.

Solución.
Apartado a)

Borramos previamente las posibles asignaciones de h y la definimos.

In[108]:=
Clear@hD

Definimos la función

In[109]:=
h@x_D := 1 ê; 0 <= x <= 1

Apartado b)

Evaluamos la función en los puntos solicitados. Analizar la salida para el punto 2.

In[110]:=
h@.5D
h@2D

Out[110]= 1

Out[111]= h@2D

In[112]:=
Clear@hD

Apartado c)

Borramos las posibles asignaciones de f

In[113]:=
Clear@fD

Se define la función
26 tour.nb

In[114]:=
f@x_ ê; x < 0D := x ê; x < 0

Veremos su valor en dos puntos. Analizar la salida en el punto 1.

In[115]:=
f@- 1D

Out[115]= -1

In[116]:=
f@1D

Out[116]= f@1D

Nota:
Las condiciones pueden estar dentro de los argumentos. Así lo haremos, viendo que se obtiene el mismo resultado que
antes.
In[117]:=
Clear@fD

Se define la función

In[118]:=
f@x_ ê; x < 0D := x

Veremos su valor en dos puntos

In[119]:=
f@- 1D

Out[119]= -1

In[120]:=
f@1D

Out[120]= f@1D

ü 5.1.4. Definición de funciones a trozos


Se pueden usar repetidamente las condiciones. Cada condición se separa por ;

Ejemplo:
a) Definir la función f que en x§0 vale x2 , x3 si 0<x§2 y 2 si x es mayor que 3.
b) Comprobar dicha definición hallando f(0.5), f(-4) y f( 9)
c) Representar gráficamente dicha función en el intervalo [-3,6]

Solución.
Apartado a)

Definimos la función.

In[121]:=
f@x_D := x ^ 2 ê; x § 0
f@x_D := x3 ê; 0 < x § 3
f@x_D := 2 ê; x > 3

Apartado b)

La evaluamos.
tour.nb 27

La evaluamos.

In[124]:=
f@.5D

Out[124]= 0.125

In[125]:=
f@- 4D

Out[125]= -4

In[126]:=
f@9D

Out[126]= 2

Apartado c)

El comando que se utiliza para dibujar la gráfica de una función de una variable es Plot cuya sintaxis es:
Plot[f,{x,xmin,xmax}, opcion->valor].Se analizarán comandos gráficos en el apartado de Gráficas.

La opción PlotRange permite acotar la variable dependiente.

In[127]:=
Plot@f@xD, 8x, - 3, 6<, PlotRange Ø 8- 2, 10<D

10

Out[127]= 4

-2 2 4 6

-2

Representamos los tres trozos de la función en distinto color para observar mejor el cambio.
Para ello usamos la opción RGBColor.
Luego con el comando Show los mostramos juntos.
In[128]:=
f1 = Plot@f@xD, 8x, - 3, 0<, PlotStyle Ø RGBColor@1, 0, 0DD

-3.0 -2.5 -2.0 -1.5 -1.0 -0.5

-0.5

-1.0

Out[128]= -1.5

-2.0

-2.5

-3.0
28 tour.nb

In[129]:=
f2 = Plot@f@xD, 8x, 0, 3<, PlotStyle Ø RGBColor@0, 1, 0DD

25

20

15
Out[129]=

10

0.5 1.0 1.5 2.0 2.5 3.0

In[130]:=
f3 = Plot@f@xD, 8x, 3, 5<, PlotStyle Ø RGBColor@0, 0, 1DD

Out[130]=
2

3.5 4.0 4.5 5.0

In[131]:=
Show@f1, f2, f3, PlotRange Ø 8- 1, 27<D

25

20

15
Out[131]=

10

-2 2 4

Otra alternativa puede ser usar el comando If, o bien comandos If anidados, que utilizaremos para definir funciones de
varias variables y también analizaremos en el apartado de Programación.

ü 5.1.5. Restricciones a las variables


Se pueden poner restricciones a las variables, como enteras, positivas, etc. La forma de hacerlo es variable_características
Es decir después de la variable se debe especificar sus características, por ejemplo, real, entera, positiva, un número
primo, etc.

Ejemplo:
tour.nb 29

Ejemplo:
Definir la función f(x)=x2 definida en los numeros enteros. Hallar f(0), f(-1), f(0.5) y f(1)

Solución.
Definimos la función, borrando las posibles asignaciones.

In[132]:=
Clear@fD
f@x_IntegerD := x2

Evaluamos la función en los puntos dichos. Obsérvese la salida para .5.

In[134]:=
f@0D
f@- 1D
f@0.5D
f@1D

Out[134]= 0

Out[135]= 1

Out[136]= f@0.5D

Out[137]= 1

ü 5.2. Definición de funciones de varias variables


ü 5.2.1. Definición de una función de varias variables
La definición de una función de varias variables tiene la siguiente sintaxis:
Nombre[Variable1_ , variable2_, ...]= expresión
En la definición debe aparecer junto a las variables independientes el símbolo " _" .
Nota: En las funciones de varias variables existen las posibilidades de definirlas: a trozos, con condiciones, con asig-
nación diferida,... como en funciones de una variable.

Ejemplo:
p p
a) Definir la función g(x ,y)=Sen(x+y) y calcular g J 2 , 3
N
b) Representar gráficamente dicha función en el cuadrado [ -3,3]X[-3,3]

Solución.
Apartado a)

Definimos la función y la evaluamos en el punto.

In[138]:=
g@x_, y_D = Sin@x + yD

Out[138]= Sin@x + yD

In[139]:=
p p
gB , F
2 3

1
Out[139]=
2

Apartado b)
30 tour.nb

Apartado b)

El comando que permite representar funciones de dos variables, expresadas en forma explícita es
Plot3D[f,{x,xmin,xmax},{y,ymin,ymax}]

Si se pide información acerca de este comando (??Plot3D o Plot3D ) se puede observar que permite muchas
opciones que pueden modificarse para conseguir un gráfico determinado.

Representamos la función.

In[140]:=
Plot3D@g@x, yD, 8x, - 3, 3<, 8y, - 3, 3<D

Out[140]=

ü 5.2.2. Definición de funciones a trozos


Un comando útil para definir funciones a trozos es el Comando If cuya sintaxis es
If[condición,t,f] devuelve t si condición es VERDADERO, y f si es FALSA.

Otra sintaxis del comando If es


If[condición,t,f,u] devuelve t si condición es VERDADERO, y f si es FALSA y u si condición no es ni
verdadera ni falsa.

Nota: También se puede utilizar el comando lógico AND =Y que se escribe && para introducir las restricciones.

Se pueden utilizar los If anidados, uno dentro de otro.

Ejemplo:
a) Definir la función f (x, y) tal que para valores de x negativos o nulos y positivos de y valga x2 + y2 .
Hallar f(-3,4) y f(3,3). Representarla en los rectángulos [ -3,-1 ]X [ 1,2 ] y [ -3,-1 ]X [ -2,2 ]
b) Definir la función g(x, y) tal que:
Para valores de x negativos o nulos y positivos de y valga x2 + y2 .
Para valores de x e y negativos o nulos sea nula.
Hallar g(-3,3). Representarla en el rectángulo [-3,-1 ]X [-2,2]
c) Definir la función h(x, y) tal que: Para valores de x negativos o nulos y positivos de y valga x2 + y2 . Para valores de
x e y negativos o nulos sea nula. Para valores de x positivos e y negativos valga 1 y en el resto de los valores de las
variables x e y valga 2. Hallar h(-3,3). Representarla en el rectángulo [-3,-3 ]X [-2,2 ]

Solución.
tour.nb 31

Solución.
Definiremos la función en los distintos apartados usando comandos If, anidados si hiciera falta. Se representarán en los
dominios del enunciado, fundamentalmente para comprobar su dominio de definición.

Apartado a)

In[141]:=
Clear@fD
f@x_, y_D := IfAx § 0 && y > 0, x2 + y2 E

In[143]:=
f@- 3, 4D

Out[143]= 25

In[144]:=
f@3, 3D

Representamos la función. Analícese las salidas.

In[145]:=
Plot3D@f@x, yD, 8x, - 3, - 1<, 8y, 1, 2<D

Out[145]=
32 tour.nb

In[146]:=
Plot3D@f@x, yD, 8x, - 3, - 1<, 8y, - 2, 2<D

Out[146]=

Apartado b)

In[147]:=
Clear@gD
g@x_, y_D = IfAx § 0 && y > 0, x2 + y2 , If@x § 0 && y § 0, 0DE

Out[148]= IfAx § 0 && y > 0, x2 + y2 , If@x § 0 && y § 0, 0DE

In[149]:=
g@- 3, 3D

Out[149]= 18

In[150]:=
Plot3D@g@x, yD, 8x, - 3, - 1<, 8y, - 2, 2<D

Out[150]=

Apartado c)

In[151]:=
h@x_, y_D := IfAx § 0 && y > 0, x2 + y2 , If@x § 0 && y § 0, 0, If@x > 0 && y § 0, 1, 2DDE
tour.nb 33

In[152]:=
h@1, 1D
h@1, - 1D
h@- 1, - 1D
h@- 1, 1D

Out[152]= 2

Out[153]= 1

Out[154]= 0

Out[155]= 2

In[156]:=
Plot3D@h@x, yD, 8x, - 3, 3<, 8y, - 2, 2<D

Out[156]=

In[157]:=
Clear@hD

6. Listas y matrices
ü 6.1. Listas
ü 6.1.1. Las listas con Mathematica

Una lista no es más que una colección de elementos separados entre comas y encerrados entre llaves. Así
{e1,e2,..en} es una lista.
Nota: Los elementos de la lista no tienen prqué ser homogéneos.

ü 6.1.2. Algunas operaciones con listas


Se puede hacer operaciones con listas tales como sumar, restar, multiplicar, elevar a potencias, siempre que sea posible,
es decir sean listas homogéneas. Las operaciones con listas se hacen "elemento a elemento" como muestran los siguientes
ejemplos.

Ejemplo:
a) Introducir la lista {1,2,3,4,5,6,7,8,9} y llamarla a.
b) Hallar a2 y denotarlo por b.
c) Hallar a+b, a*b, a.b, aa y el logaritmo de a.
34 tour.nb

a) Introducir la lista {1,2,3,4,5,6,7,8,9} y llamarla a.


b) Hallar a2 y denotarlo por b.
c) Hallar a+b, a*b, a.b, aa y el logaritmo de a.

Solución.
Apartado a)

In[158]:=
a = 81, 2, 3, 4, 5, 6, 7, 8, 9<

Out[158]= 81, 2, 3, 4, 5, 6, 7, 8, 9<

Apartado b)

In[159]:=
b = a2

Out[159]= 81, 4, 9, 16, 25, 36, 49, 64, 81<

Apartado c)

In[160]:=
a+b

Out[160]= 82, 6, 12, 20, 30, 42, 56, 72, 90<

In[161]:=
ab

Out[161]= 81, 8, 27, 64, 125, 216, 343, 512, 729<

Nota: Con el símbolo . hace el producto escalar de los vectores cuyas componentes son los elementos de las listas.

In[162]:=
a.b

Out[162]= 2025

In[163]:=
aa

Out[163]= 81, 4, 27, 256, 3125, 46 656, 823 543, 16 777 216, 387 420 489<

In[164]:=
Log@aD

Out[164]= 80, Log@2D, Log@3D, Log@4D, Log@5D, Log@6D, Log@7D, Log@8D, Log@9D<

ü 6.1.3. Generación automática de listas. El comando Table


La instrucción Table permite generar listas de forma automática. Su sintaxis es variada. Algunas posibilidades son
Table[expr,{i,imax}] que genera una lista de valores de expr desde i a imax con paso 1.
Table[expr,{i,imin,imax}] que genera una lista de valores de expr desde imin a imax con paso 1.
Table[expr,{i,imin,imax,di}] que genera una lista de valores de expr desde imin a imax con paso di.
Table[expr, {i, imin, imax}, {j, jmin, jmax}, … ] genera una lista anidada.La lista exterior está
asociada a i.

Ejemplo:
a) Generar una lista con los cubos de los números impares hasta 100.
b) Generar una matriz 3X4 donde cada elemento sea la suma de la fila y la columna en que se encuentra.

Solución.
tour.nb 35

Solución.
Apartado a)

Se hará por dos procedimientos usando el comando Table. En el primero el paso es 1 y en el segundo 2.

In[165]:=

TableAH2 n - 1L3 , 8n, 50<E

Out[165]= 81, 27, 125, 343, 729, 1331, 2197, 3375, 4913, 6859, 9261, 12 167, 15 625,
19 683, 24 389, 29 791, 35 937, 42 875, 50 653, 59 319, 68 921, 79 507, 91 125,
103 823, 117 649, 132 651, 148 877, 166 375, 185 193, 205 379, 226 981, 250 047,
274 625, 300 763, 328 509, 357 911, 389 017, 421 875, 456 533, 493 039, 531 441,
571 787, 614 125, 658 503, 704 969, 753 571, 804 357, 857 375, 912 673, 970 299<

In[166]:=

TableAn3 , 8n, 1, 100, 2<E

Out[166]= 81, 27, 125, 343, 729, 1331, 2197, 3375, 4913, 6859, 9261, 12 167, 15 625,
19 683, 24 389, 29 791, 35 937, 42 875, 50 653, 59 319, 68 921, 79 507, 91 125,
103 823, 117 649, 132 651, 148 877, 166 375, 185 193, 205 379, 226 981, 250 047,
274 625, 300 763, 328 509, 357 911, 389 017, 421 875, 456 533, 493 039, 531 441,
571 787, 614 125, 658 503, 704 969, 753 571, 804 357, 857 375, 912 673, 970 299<

Apartado b)

In[167]:=
Table@i + j, 8i, 3<, 8j, 4<D

Out[167]= 882, 3, 4, 5<, 83, 4, 5, 6<, 84, 5, 6, 7<<

Veremos la expresión anterior en forma matricial con la instrucción MatrixForm

In[168]:=
Table@i + j, 8i, 3<, 8j, 4<D êê MatrixForm

Out[168]//MatrixForm=
2 3 4 5
3 4 5 6
4 5 6 7

Nota: Hay otros procedimientos para generar matrices, como puede verse en el apartado siguiente. En este caso es más
cómodo el uso de la instrucción Table pues sus elementos "siguen una ley".

ü 6.1.4. Obtención y sustitución de elementos de las listas


Los elementos de una lista pueden ser a su vez listas, es decir nos podemos encontar con lista de listas. De hecho una
matriz n×m es una lista de n elementos cada uno de los cuales es una lista de m elementos. Por ello en estas situaciones
es conveniente poder sacar cualquier elemento de cualquier sublista de una lista.
El elemento i-ésimo de la lista a, puede obtenerse con a[[i]]. A su vez este elemento iésimo puede ser una lista o lista
de listas y por lo tanto el elemento j-ésimo del elemento iésimo es a[[i,j]] y así sucesivamente. Es decir se puede
descender a cualquier nivel de una lista para entresacar elementos de ella.
Por ejemplo
a[[i]]: Extrae el elemento i de la lista a

a[[i,j]]: Extrae el elemento j del elemento i de la lista a


a[[i,j,k]]: Extrae el elemento k del elemento j del elemento i de la lista a y así sucesivamente.
Para sustituir un elemento de una lista por otro basta ejecutar la instrucción Elemento deseado = Nuevo valor.

Ejemplo:
Dada la lista a={1 , 2 , {3 , 4 , {5 , 6 , 7 , 8}}} se pide:
a) Extraer los números 2, 3 y 8 de dicha lista.
b) Sustituir 1 por 79 y 4 por 91
36 tour.nb

Dada la lista a={1 , 2 , {3 , 4 , {5 , 6 , 7 , 8}}} se pide:


a) Extraer los números 2, 3 y 8 de dicha lista.
b) Sustituir 1 por 79 y 4 por 91

Solución.
Apartado a)

Se define en primer lugar la lista

In[169]:=
a = 81, 2, 83, 4, 85, 6, 7, 8<<<

Out[169]= 81, 2, 83, 4, 85, 6, 7, 8<<<

Se extraen los elementos solicitados que son

In[170]:=
a@@2DD

Out[170]= 2

In[171]:=
a@@3, 1DD

Out[171]= 3

In[172]:=
a@@3, 3, 4DD

Out[172]= 8

Apartado b)

Se sustituyen los elementos.

In[173]:=
a@@1DD = 79

Out[173]= 79

In[174]:=
a@@3, 2DD = 91

Out[174]= 91

In[175]:=
a

Out[175]= 879, 2, 83, 91, 85, 6, 7, 8<<<

In[176]:=
Clear@aD

ü 6.1.5. Algunos comandos importantes de listas


6.1.5.1. El comando Flatten
Para suprimir sublistas, que puede haber dentro de listas, es decir para quitar las llaves interiores de una lista se puede
utilizar la instrucción Flatten es decir alisar, que puede presentar diferentes opciones. La opción Flatten[lista]
suprime todas las llaves interiores.

Ejemplo:
Dada la lista {{1,2,3},{{1,2}}, 3} utilizar el comando Flatten para quitar algunas llaves interiores.
tour.nb 37

Dada la lista {{1,2,3},{{1,2}}, 3} utilizar el comando Flatten para quitar algunas llaves interiores.

Solución.
Definimos la lista.

In[177]:=

a = 881, 2, 3<, 881, 2<<, 3<

Out[177]= 881, 2, 3<, 881, 2<<, 3<

Aplicamos el comando Flatten y desparecen todas las sublistas

In[178]:=
Flatten@aD

Out[178]= 81, 2, 3, 1, 2, 3<

Aplicamos el comando Flatten a la sublista del segundo elemento de la lista

In[179]:= Flatten@a@@2DDD

Out[179]= 81, 2<

Nota: Se puede mirar la estructura de una lista y en general de cualquier comando utilizando FullForm. Por ejemplo

In[180]:=
FullForm@aD
Out[180]//FullForm=
List@List@1, 2, 3D, List@List@1, 2DD, 3D

In[181]:=
Clear@aD

6.1.5.2. El comando Length


Length calcula el número de elementos de una lista. La sintaxis es Length[expr] que devuelve el número de elemen-
tos de expr

Ejemplo:
Hallar el número de números impares menores que 100.

Solución.
Se usa Table para definir la lista.

In[182]:=
imp = Table@n, 8n, 1, 100, 2<D

Out[182]= 81, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65,
67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99<

Y ahora se cuentan.

In[183]:=
Length@impD

Out[183]= 50
38 tour.nb

In[184]:=
Clear@impD

ü 6.2. Matrices
ü 6.2.1. Definición de matrices
Hay varias formas de definir una matriz

1. Una matriz n×m es una lista de n elementos cada uno de los cuales es una lista de m elementos. Por ello introducimos
una matriz sabiendo que las sublistas son las filas.
Nota: Para obtener el resultado en forma de matriz se puede usar el comando MatrixForm.

2. Usando el ratón . Si el ratón está situado en una celda Input pulsando el botón derecho aparece la opción Insert
Table/Matrix.
Escogiendo dicha opción podemos escoger el número de filas y columnas de la matriz y luego rellenar los elementos.

3. Usando paletas: La matriz 2×2 está en la paleta Other -> Basic Math Input. Si la pinchamos aparece en el
documento dicha matriz. Para incrementar el número de filas se pulsan simultaneamente los comandos ‚ y ¿ y para
incrementar el número de columnas‚ y ,

Nota: Para ver una matriz, definida como una lista o que es la salida de operaciones de Mathematica se usa la instrucción
FullForm

Ejemplo:
- 17 - 30 - 44
a) Introducir la matriz 32 55 80 como caso particular de una lista y usando paletas.
- 14 - 24 - 35

b) Seleccionar la fila tercera y la segunda columna de la matriz.

Solución.
Apartado a)

Se introduce la matriz, denominada m, como una lista, cuyos elementos son las filas.

In[185]:=
m = 88- 17, - 30, - 44<, 832, 55, 80<, 8- 14, - 24, - 35<<

Out[185]= 88- 17, - 30, - 44<, 832, 55, 80<, 8- 14, - 24, - 35<<

Para verla en forma de matriz se ejecuta

In[186]:=
MatrixForm@mD

Out[186]//MatrixForm=
- 17 - 30 - 44
32 55 80
- 14 - 24 - 35

Se pueden usar paletas o el ratón


tour.nb 39

In[187]:=
- 17 - 30 - 44
32 55 80
- 14 - 24 - 35

Out[187]= 88- 17, - 30, - 44<, 832, 55, 80<, 8- 14, - 24, - 35<<

Observese que al ejecutar esta instrucción la salida es en forma de lista.

Apartado b)

La matriz es un caso particular de listas cuyos elementos son las filas. Por ello la tercera fila es el tercer elemento de la
lista
In[188]:=
fila3 = m@@3DD

Out[188]= 8- 14, - 24, - 35<

Los elementos de la segunda columna son de la forma mi,2 . Por ello para conseguir la segunda columna se puede utilizar
el comando Table
In[189]:=
colum2 = Table@m@@i, 2DD, 8i, 3<D

Out[189]= 8- 30, 55, - 24<

ü 6.2.2. Operaciones y comandos de matrices


Las operaciones usuales, suma y producto de matrices se realizan con Mathematica de forma usual con los símbolos + y
.
Nota: Si se hace el producto de matrices con * Mathematica multiplica elemento a elemento.
La multiplicación de una matriz por un vector se hace con .

Potencias de matrices usando el comando MatrixPower cuya sintaxis es MatrixPower[n,m], que calcula la potencia
emésnima de la matriz n.

Con el comando MatrixPower[n,-1] se calcula la matriz inversa de m

Nota : También se puede calcular la matriz inversa con el comando Inverse

Determinantes de matrices usando el comando Det y cuya sintaxis es Det[m], que calcula el determinante de la matriz m.

Nota: A través de los comandos Eigenvalues y Eigenvectors se calculan los autovalores y autovectores de una matriz. Si
se quieren obtener ambos en una misma salida los da el comando Eigensystem. La sintaxis de estos comandos es Eigen-
values[m],Eigenvector[m],Eigensystem[m] respectivamente.

Ejemplo:
- 17 - 30 - 44 1 2 3
a) Introducir las matrices m = 32 55 80 y n= 3 2 1 .
- 14 - 24 - 35 4 4 4
b) Dado el vector v={1, 2, 2}, calcular v.m y m.v
c) Calcular m+n y m.n
d) Calcular m3 y la inversa de la matriz m.
e) Hallar el determinante de m.
f) hallar los autovalores y autovectores de la matriz m.

Solución.
Apartado a)
40 tour.nb

Apartado a)

Se introducen utilizando o bien el ratón o bien las paletas y los comandos CTRL+ENTER y CTRL+ ,

In[190]:=
- 17 - 30 - 44
m= 32 55 80
- 14 - 24 - 35

Out[190]= 88- 17, - 30, - 44<, 832, 55, 80<, 8- 14, - 24, - 35<<

In[191]:=
1 2 3
n= 3 2 1
4 4 4

Out[191]= 881, 2, 3<, 83, 2, 1<, 84, 4, 4<<

Apartado b)

Multiplicamos la matriz m matriz por un vector.

In[192]:=
v = 81, 2, 3<

Out[192]= 81, 2, 3<

In[193]:=
m.v

Out[193]= 8- 209, 382, - 167<

In[194]:=
v.m

Out[194]= 85, 8, 11<

Nota: Observése que al multiplicar una matriz por un vector no hace falta especificar si dicho vector es una matriz fila o
columna, aunque el resultado es distinto.

Apartado c)

Hallamos la suma y producto de las dos matrices

In[195]:=
m+n

Out[195]= 88- 16, - 28, - 41<, 835, 57, 81<, 8- 10, - 20, - 31<<

In[196]:=
m.n

Out[196]= 88- 283, - 270, - 257<, 8517, 494, 471<, 8- 226, - 216, - 206<<

Apartado d)

Hallamos las potencias de una matriz y su matriz inversa.

In[197]:=
MatrixPower@n, 3D

Out[197]= 88141, 142, 143<, 8115, 114, 113<, 8256, 256, 256<<

Con MatrixPower[m , -1] se calcula la matriz inversa de m


tour.nb 41

In[198]:=
MatrixPower@m, - 1D

5 20 2 25
Out[198]= :: , - 2, - >, 80, 7, 16<, :- , - 4, - >>
3 3 3 3

También se puede calcular la matriz inversa de m con

In[199]:=
Inverse@mD

5 20 2 25
Out[199]= :: , - 2, - >, 80, 7, 16<, :- , - 4, - >>
3 3 3 3

Apartado e)

Hallamos el determinante.

In[200]:=
Det@mD

Out[200]= -3

Apartado f)

Y finalmente los autovalores y autovectores de una matriz.

In[201]:=
Eigenvalues@mD

Out[201]= 83, - 1, 1<

In[202]:=
Eigenvectors@mD

Out[202]= 887, - 12, 5<, 81, - 2, 1<, 86, - 8, 3<<

El comando Eigensystem da los autovalores y autovectores a la vez.


Nota: Este comando puede causar problemas si la matriz no es estrictamente diagonalizable, ya que devuelve tantos
vectores como el orden de la matriz. Si no es estrictamente diagonalizable los vectores de la salida NO son linealmente
independientes.
In[203]:=
Eigensystem@mD

Out[203]= 883, - 1, 1<, 887, - 12, 5<, 81, - 2, 1<, 86, - 8, 3<<<

7. Resolución de ecuaciones y
sistemas de ecuaciones
ü 7.1. Resolución de ecuaciones
Mathematica permite la resolución de ecuaciones del tipo f(x)= 0, de forma exacta en algunos casos y en otros de
forma aproximada.
42 tour.nb

ü 7.1.1. Resolución exacta


Los comandos Solve, que es más general y Roots, trabajando con ecuaciones polinómicas, son los apropiados para
resolver ecuaciones de forma exacta.

7.1.1.1. El comando Solve


Su sintaxis, en forma más sencilla es Solve[ecuación,variable]

Observaciones:
1. La salida del comando Solve es a través de una lista y cada solución viene en forma de regla. Por ejemplo una posible
salida es de la forma xØ4 y no x = 4 como podría esperarse.
2. El orden de multiplicidad de una raíz viene reflejado en el número de veces que la raíz aparece en la lista solución.
Solve funciona relativamente bien en ecuaciones lineales y polinómicas, hasta un determinado grado. De hecho muchas
veces no da la solución explícita, sino a través de reglas.
3. A veces produce una advertencia en la salida, diciendo que aparecen involucradas funciones inversas y puede no
haberse obtenido todas las soluciones.
4. Solve devuelve {} como salida si no encuentra solución a la ecuación.

7.1.1.2. El comando Roots


Su sintaxis, en forma más sencilla es Roots[ecuación,variable]

Observaciones:
1. La salida del comando Roots es lógica. Por ejemplo la salida es x == 4 y no x = 4 como podría esperarse.
2. Roots sólo resuelve ecuaciones polinómicas.

Ejemplo:
a) Hallar las raíces del polinomio x6 + 2 x5 - 4 x4 - 2 x3 + x2 - 4 x + 6 = 0.
b) Hallar las raíces del polinomio x8 - 7 x6 + 8 x5 + x4 - 8 x3 + 15 x2 - 16 x + 6
c) Hallar las raíces del polinomio x10 - x9 - 3 x8 + 3 x7 + 2 x4 - x3 - 7 x2 .
1
d) Hallar las soluciones de las ecuaciones siguientes: sen2 HxL = 0 y sen2 HxL = 2 .
1
e) Hallar las soluciones de la ecuación senHxL = x - 2 .

Solución.
Apartado a)

Usaremos los comandos Solve y Roots y analizaremos las salidas.


Empezamos con el comando Solve.
In[204]:=
SolveAx6 + 2 x5 - 4 x4 - 2 x3 + x2 - 4 x + 6 ã 0, xE

Out[204]= :8x Ø - 3<, 8x Ø - Â<, 8x Ø Â<, 8x Ø 1<, :x Ø - 2 >, :x Ø 2 >>

Podemos no poner explícitamente la variable x, ya que en este caso es la única que hay.

In[205]:=
SolveAx6 + 2 x5 - 4 x4 - 2 x3 + x2 - 4 x + 6 ã 0E

Out[205]= :8x Ø - 3<, 8x Ø - Â<, 8x Ø Â<, 8x Ø 1<, :x Ø - 2 >, :x Ø 2 >>

Ahora usamos el comando Roots.


tour.nb 43

In[206]:=
RootsAx6 + 2 x5 - 4 x4 - 2 x3 + x2 - 4 x + 6 ã 0, xE

Out[206]= x ã Â »» x ã - Â »» x ã 2 »» x ã - 2 »» x ã - 3 »» x ã 1

Apartado b)

Seguimos los mismos pasos que en el apartado anterior

In[207]:=
SolveAx8 - 7 x6 + 8 x5 + x4 - 8 x3 + 15 x2 - 16 x + 6 ã 0, xE

Out[207]= :8x Ø - 3<, 8x Ø - Â<, 8x Ø Â<, 8x Ø 1<, 8x Ø 1<, 8x Ø 1<, :x Ø - 2 >, :x Ø 2 >>

También funciona con raíces multiples. En la salida se observa que cada raíz está repetida tantas veces como su
multiplicidad.

Con el comando Roots

In[208]:=
RootsAx8 - 7 x6 + 8 x5 + x4 - 8 x3 + 15 x2 - 16 x + 6 ã 0, xE

Out[208]= x ã Â »» x ã - Â »» x ã 2 »» x ã - 2 »» x ã - 3 »» x ã 1 »» x ã 1 »» x ã 1

Apartado c)

Seguimos los mismos pasos que en el apartado anterior.

In[209]:=
SolveAx10 - x9 - 3 x8 + 3 x7 + 2 x4 - x3 - 7 x2 ã 0, xE

Out[209]= 98x Ø 0<, 8x Ø 0<, 9x Ø RootA- 7 - Ò1 + 2 Ò12 + 3 Ò15 - 3 Ò16 - Ò17 + Ò18 &, 1E=,
9x Ø RootA- 7 - Ò1 + 2 Ò12 + 3 Ò15 - 3 Ò16 - Ò17 + Ò18 &, 2E=,
9x Ø RootA- 7 - Ò1 + 2 Ò12 + 3 Ò15 - 3 Ò16 - Ò17 + Ò18 &, 3E=,
9x Ø RootA- 7 - Ò1 + 2 Ò12 + 3 Ò15 - 3 Ò16 - Ò17 + Ò18 &, 4E=,
9x Ø RootA- 7 - Ò1 + 2 Ò12 + 3 Ò15 - 3 Ò16 - Ò17 + Ò18 &, 5E=,
9x Ø RootA- 7 - Ò1 + 2 Ò12 + 3 Ò15 - 3 Ò16 - Ò17 + Ò18 &, 6E=,
9x Ø RootA- 7 - Ò1 + 2 Ò12 + 3 Ò15 - 3 Ò16 - Ò17 + Ò18 &, 7E=,
9x Ø RootA- 7 - Ò1 + 2 Ò12 + 3 Ò15 - 3 Ò16 - Ò17 + Ò18 &, 8E==

El polinomio es de grado elevado y da las soluciones en forma de reglas, lo cual no nos dice nada sobre ellas.

Con el comando Roots se obtiene lo mismo.

In[210]:=
RootsAx10 - x9 - 3 x8 + 3 x7 + 2 x4 - x3 - 7 x2 ã 0, xE

Out[210]= x ã 0 »» x ã 0 »» x ã RootA- 7 - Ò1 + 2 Ò12 + 3 Ò15 - 3 Ò16 - Ò17 + Ò18 &, 1E »»


x ã RootA- 7 - Ò1 + 2 Ò12 + 3 Ò15 - 3 Ò16 - Ò17 + Ò18 &, 2E »»
x ã RootA- 7 - Ò1 + 2 Ò12 + 3 Ò15 - 3 Ò16 - Ò17 + Ò18 &, 3E »»
x ã RootA- 7 - Ò1 + 2 Ò12 + 3 Ò15 - 3 Ò16 - Ò17 + Ò18 &, 4E »»
x ã RootA- 7 - Ò1 + 2 Ò12 + 3 Ò15 - 3 Ò16 - Ò17 + Ò18 &, 5E »»
x ã RootA- 7 - Ò1 + 2 Ò12 + 3 Ò15 - 3 Ò16 - Ò17 + Ò18 &, 6E »»
x ã RootA- 7 - Ò1 + 2 Ò12 + 3 Ò15 - 3 Ò16 - Ò17 + Ò18 &, 7E »»
x ã RootA- 7 - Ò1 + 2 Ò12 + 3 Ò15 - 3 Ò16 - Ò17 + Ò18 &, 8E

Apartado d)

Usamos el comando Solve para las tres ecuaciones del enunciado.


44 tour.nb

Usamos el comando Solve para las tres ecuaciones del enunciado.

In[211]:=
Solve@HSin@xDL ^ 2 == 0, xD

Solve::ifun :
Inverse functions are being used by Solve, so some solutions may not be found; use Reduce
for complete solution information. à
Out[211]= 88x Ø 0<<

Al no ser una ecuación polinómica Solve avisa que se pueden perder soluciones.

In[212]:=
1
SolveBHSin@xDL ^ 2 == , xF
2

Solve::ifun :
Inverse functions are being used by Solve, so some solutions may not be found; use Reduce
for complete solution information. à
p p
Out[212]= ::x Ø - >, :x Ø >>
4 4

Nota: Da las soluciones en una parte de la circunferencia.

In[213]:=
Roots@HSin@xDL ^ 2 == 0, xD

Roots::neq : Sin@xD2 is expected to be a polynomial in the variable x. à

Out[213]= RootsASin@xD2 ã 0, xE

Avisa que la ecuación no es polinómica y por tanto Roots no la puede resolver.

Apartado e)

Lo intentaremos con el comando Solve.

In[214]:=
1
SolveBSin@xD == x - , xF
2

Solve::tdep :
The equations appear to involve the variables to be solved for in an essentially non-algebraic way. à
1
Out[214]= SolveBSin@xD ã - + x, xF
2

Esta vez no sale nada. Además avisa que están involucradas funciones trascendentes.

ü 7.1.2. Resolución aproximada


Los comandos más básicos para resolver ecuaciones f(x)=0, de forma aproximada son NSolve y FindRoot.

7.1.2.1. El comando NSolve


Su sintaxis, en la forma más sencilla, es:
NSolve[ecuación,variable]. Con dicho comando se pueden resolver, de forma aproximada, ecuaciones
polinómicas.

NSolve[ecuación,variable,n] resuelve, de forma aproximada ecuaciones polinómicas, sacando las soluciones


en forma de lista y calculándolas con precisión de n dígitos.
Nota: Si no se específica n , Mathematica trabaja, por defecto con dicho valor asignado en la opción WorkingPreci-
sion.
tour.nb 45

NSolve[ecuación,variable,n] resuelve, de forma aproximada ecuaciones polinómicas, sacando las soluciones


en forma de lista y calculándolas con precisión de n dígitos.
Nota: Si no se específica n , Mathematica trabaja, por defecto con dicho valor asignado en la opción WorkingPreci-
sion.

Ejemplo:
a) Hallar, de forma aproximada, las raíces del polinomio x10 - x9 - 3 x8 + 3 x7 + 2 x4 - x3 - 7 x2 . Hallar dichas raíces
con una precisión de 30 dígitos.
1
b) Hallar, si es posible, usando NSolve, las soluciones de la ecuación SenHxL = x - 2 .

In[215]:=

Solución.
Apartado a)

En el polinomio de este apartado la aplicación de Solve no conducía a la solución. Probamos con el comando NSolve.

In[215]:=
NSolveAx10 - x9 - 3 x8 + 3 x7 + 2 x4 - x3 - 7 x2 ã 0, xE

Out[215]= 98x Ø - 1.72727 + 0. Â<, 8x Ø - 0.864585 + 0.537495 Â<, 8x Ø - 0.864585 - 0.537495 Â<,
8x Ø 0. + 0. Â<, 8x Ø 0. + 0. Â<, 8x Ø 0.121665 + 1.09404 Â<, 8x Ø 0.121665 - 1.09404 Â<,
8x Ø 1.21582 + 0.577266 Â<, 8x Ø 1.21582 - 0.577266 Â<, 9x Ø 1.78146 - 9.86076 µ 10-32 Â==

Se han obtenido, de forma aproximada, las diez raíces del polinomio.


Ahora con precisión de 30 dígitos.
In[216]:=
NSolveAx10 - x9 - 3 x8 + 3 x7 + 2 x4 - x3 - 7 x2 ã 0, x, 30E

Out[216]= 88x Ø - 1.72726512709439004998597915812<,


8x Ø - 0.864585229380665794574107463154 - 0.537494946863088931986745503196 Â<,
8x Ø - 0.864585229380665794574107463154 + 0.537494946863088931986745503196 Â<, 8x Ø 0<,
8x Ø 0<, 8x Ø 0.121665498119106133464626941320 - 1.094038564486683432625220099157 Â<,
8x Ø 0.121665498119106133464626941320 + 1.094038564486683432625220099157 Â<,
8x Ø 1.215820984221464295282486566217 - 0.577266424141318582656169383111 Â<,
8x Ø 1.215820984221464295282486566217 + 0.577266424141318582656169383111 Â<,
8x Ø 1.78146262117458078163996706935<<

Apartado b)

Utilizamos el comando NSolve.

In[217]:=
1
NSolveBSin@xD == x - , xF
2

Solve::tdep :
The equations appear to involve the variables to be solved for in an essentially non-algebraic way. à
1
Out[217]= NSolveBSin@xD ã - + x, xF
2

Esta vez no sale nada. Aparece el mismo mensaje que en el comando Solve. Además avisa que están involucradas
funciones trascendentes.
En resumen Solve y NSolve sólo funcionan con ecuaciones polinómicas. Para ecuaciones más generales puede uti-
lizarse el comando FindRoot.
46 tour.nb

7.1.2.2. El comando FindRoot


El comando FindRoot trata de hallar una solución aproximada de una ecuación, utilizando un algoritmo de tipo Newton.
Su aplicación exige un valor inicial para iniciar el procedimiento por lo que puede ser aconsejable utilizar comandos de
tipo gráfico para encontrar dicho valor inicial. De hecho así lo hacemos en el ejemplo que ilustra la aplicación del
comando FindRoot.

Su sintaxis básica es:


FindRoot[ecuación,{variable,valorinicial}]
Con esta instrucción Mathematica trata de hallar una solución aproximada de ecuación, utilizando un algoritmo de tipo
Newton, cercana a valorinicial.
Hay variantes de este comando. Por ejemplo FindRoot[ecuación,{variable,{x0,x1}}] trata de hallar una
solución aproximada de ecuación, utilizando el método de la secante con xo y x1 como valores iniciales.
Para otras posibilidades de uso de FindRoot véase la ayuda.

Ejemplo:
Hallar las raíces de la ecuación cosx = 2x.

Solución.
La función dada, a la que denotaremos por f, es continua y derivable en R. Por tanto si se encuentra un intervalo [a,
b] en el que se verifique f(a)f(b)<0 , existe, aplicando el teorema de Bolzano, al menos una raíz c en [a, b] es decir
existe al menos un punto c en el cual se tiene f (c) = 0. Si además la función derivada f ' no se anula en ningún
punto de(a,b), la raíz c es única, como consecuencia del Teorema de Rolle.
Representaremos entonces la función f y su derivada f' para ver las posibles raíces y su situación.

Representamos la función, borrando previamente las posibles asignaciones de la función f.

In[218]:=
Clear@fD;
f@x_D := Cos@xD - 2 x

In[220]:=
Plot@f@xD, 8x, - 10, 10<D

20

10

Out[220]=
-10 -5 5 10

-10

-20

Representamos la derivada. La derivada se representa con ' o bien con el comando D en Mathematica. Se ha elegido la
opción de que la intersección de los ejes sea el origen de coordenadas
tour.nb 47

In[221]:=
Plot@f£ @xD, 8x, - 10, 10<, AxesOrigin Ø 80, 0<D

-10 -5 5 10

-0.5

-1.0

Out[221]= -1.5

-2.0

-2.5

-3.0

Como f' es negativa la función es decreciente y tendrá como mucho una raíz.
Representemos f(x) en un intervalo más pequeño en el que se puede localizar con más precisión en qué intervalo se
encuentra la única raíz.
In[222]:=
Plot@f@xD, 8x, 0, 1<D

1.0

0.5

0.2 0.4 0.6 0.8 1.0


Out[222]=

-0.5

-1.0

-1.5

La raíz se encuentra en el intervalo [0,1]. Si elegimos como valor inicial 0.6 el valor aproximado de la raíz es:

In[223]:=
FindRoot@Cos@xD - 2 x == 0, 8x, 0.6<D

Out[223]= 8x Ø 0.450184<

Si elegimos como valor inicial 0 el valor aproximado de la raíz es:

In[224]:=
FindRoot@Cos@xD - 2 x == 0, 8x, 0<D

Out[224]= 8x Ø 0.450184<

In[225]:=
Clear@fD

Nota: Se pueden resolver ecuaciones de la forma x=f(x) a través de los comandos Nest y NestList .

ü 7.2. Sistemas de ecuaciones


Se dan a continuación comandos que resuelven de forma exacta o aproximada sistemas de ecuaciones no lineales.
48 tour.nb

ü 7.2.1. Resolución exacta


El comando Solve es el más apropiado para resolver ecuaciones de forma exacta.

El comando Solve
Su sintaxis, en forma más sencilla es Solve[ecuación,variables]
Con esta instrucción Mathematica trata de resolver un sistema de ecuaciones polinómicas, despejando las variables que
se le indican.

Observaciones:
1. La salida del comando Solve es a través de una lista y cada solución viene en forma de regla.
2. El orden de multiplicidad de una raíz viene reflejado en el número de veces que la raíz aparece en la lista solución.
3. Solve funciona relativamente bien en sistemas de ecuaciones lineales y polinómicas, hasta un determinado grado. De
hecho muchas veces no da la solución explícita, si no a través de reglas.
4. Solve da {} como salida si no encuentra solución a la ecuación.
5. A veces produce una advertencia en la salida, diciendo que aparecen involucradas funciones inversas y puede no
obtener todas las soluciones.

Hay muchas opciones para el comando Solve. Por ejemplo:


Solve[ecuación,variables,elim] trata de resolver el sistema de ecuaciones, despejando las variables que se
le indican y eliminando las variables que se especifican. Para otras sintaxis del comando Solve acúdase a la ayuda.

Nota: El comando Roots resuelve ecuaciones polinómicas, aunque sea de varias variables, especificando la variable en
que la queremos despejar, con lo cual el resultado quedará en función de las restantes.

Ejemplo:
Hallar usando el comando Solve, si es posible, las soluciones de los sistemas de ecuaciones siguientes:
a) x2 + y2 + z2 = 1, x - y - z = 0.
b) x y2 + x3 y - 3 Hy xL3 = 0,x3 y + 7 x3 y - 3 Hy xL2 = 9 x - 3
c) x y2 + x2 y - 3 = 0, Sin@xD2 + y Cos@xD = 0.
In[226]:=

Solución.
Apartado a)

Usamos el comando Solve, poniendo distintas variables a despejar en función de las restantes.

In[226]:=
SolveA9x2 + y2 + z2 == 1, x - y - z == 0=, 8x, y<E

1 1 z 1 1
Out[226]= ::x Ø z- 2 - 3 z2 ,yØ -z - 2 - 3 z2 >, :x Ø + 2 - 3 z2 , y Ø -z + 2 - 3 z2 >>
2 2 2 2 2
In[227]:=
SolveA9x2 + y2 + z2 == 1, x - y - z == 0=, 8x, z<E

1 1 y 1 1
Out[227]= ::x Ø y- 2 - 3 y2 ,zØ -y - 2 - 3 y2 >, :x Ø + 2 - 3 y2 , z Ø -y + 2 - 3 y2 >>
2 2 2 2 2
In[228]:=
SolveA9x2 + y2 + z2 == 1, x - y - z == 0=, 8z, y<E

1 1 x 1 1
Out[228]= ::z Ø x- 2 - 3 x2 ,yØ x+ 2 - 3 x2 >, :z Ø + 2 - 3 x2 , y Ø x- 2 - 3 x2 >>
2 2 2 2 2

Apartado b)

Usamos el comando Solve.


tour.nb 49

Usamos el comando Solve.

In[229]:=
SolveA9x y2 + x3 y - 3 Hy xL3 == 0, x3 y + 7 x3 y - 3 Hy xL2 == 9 x - 3=, 8x, y<E

1
Out[229]= ::y Ø 0, x Ø >,
3
1
:y Ø J3807 - 13 149 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 1E +
2037
2
17 931 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 1E -
3
42 120 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 1E -
4
13 608 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 1E +
5
5400 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 1E +
6
4608 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 1E +
7
15 872 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 1E N,

x Ø RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 1E>,
1
:y Ø J3807 - 13 149 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 2E +
2037
2
17 931 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 2E -
3
42 120 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 2E -
4
13 608 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 2E +
5
5400 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 2E +
6
4608 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 2E +
7
15 872 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 2E N,

x Ø RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 2E>,
1
:y Ø J3807 - 13 149 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 3E +
2037
2
17 931 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 3E -
3
42 120 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 3E -
4
13 608 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 3E +
5
5400 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 3E +
6
4608 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 3E +
7
15 872 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 3E N,

x Ø RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 3E>,
1
:y Ø J3807 - 13 149 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 4E +
2037
2
17 931 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 4E -
-
50 tour.nb

2
17 931 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 4E -
3
42 120 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 4E -
4
13 608 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 4E +
5
5400 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 4E +
6
4608 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 4E +
7
15 872 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 4E N,

x Ø RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 4E>,
1
:y Ø J3807 - 13 149 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 5E +
2037
2
17 931 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 5E -
3
42 120 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 5E -
4
13 608 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 5E +
5
5400 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 5E +
6
4608 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 5E +
7
15 872 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 5E N,

x Ø RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 5E>,
1
:y Ø J3807 - 13 149 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 6E +
2037
2
17 931 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 6E -
3
42 120 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 6E -
4
13 608 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 6E +
5
5400 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 6E +
6
4608 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 6E +
7
15 872 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 6E N,

x Ø RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 6E>,
1
:y Ø J3807 - 13 149 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 7E +
2037
2
17 931 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 7E -
3
42 120 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 7E -
4
13 608 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 7E +
5
5400 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 7E +
6
4608 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 7E +
7
15 872 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 7E N,

x Ø RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 7E>,
1
:y Ø J3807 - 13 149 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 8E +
2037
-
tour.nb 51

2
17 931 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 8E -
3
42 120 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 8E -
4
13 608 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 8E +
5
5400 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 8E +
6
4608 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 8E +
7
15 872 RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 8E N,

x Ø RootA3 - 9 Ò1 - 27 Ò12 + 138 Ò13 - 153 Ò14 - 62 Ò15 - 3 Ò16 + 64 Ò18 &, 8E>>

Al ser los polinomios de grado elevado no resuelve el sistema. Da la solución en forma de funciones puras.

Apartado c)

Usamos el comando Solve.

In[230]:=
SolveA9x y2 + x2 y - 3 == 0, Sin@xD2 + y Cos@xD == 0=, 8x, y<E

Solve::tdep :
The equations appear to involve the variables to be solved for in an essentially non-algebraic way. à

Out[230]= SolveA9- 3 + x2 y + x y2 ã 0, y Cos@xD + Sin@xD2 ã 0=, 8x, y<E

Al no ser un sistema de ecuaciones polnómicas Solve avisa que no lo sabe resolver.

ü 7.2.2. Resolución aproximada


Los comandos más básicos para resolver sistemas de ecuaciones, de forma aproximada, son NSolve y FindRoot.
Analizaremos la sintaxis de cada uno de ellos.

7.2.2.1. El comando NSolve


La sintaxis del comando NSolve, en su forma más sencilla, es:
NSolve[ecuación,variables]. Con dicho comando se pueden resolver, de forma aproximada, sistemas ecua-
ciones polinómicas.

NSolve[ecuación,variables,n] resuelve, de forma aproximada ecuaciones polinómicas, sacando las soluciones


en forma de lista y calculándolas con precisión de n dígitos.
Nota: Si no se específica n , Mathematica trabaja, por defecto con dicho valor asignado en la opción WorkingPreci-
sion.

Ejemplo:
Hallar, si es posible, usando el comando NSolve las soluciones de los sistemas de ecuaciones:
a) x y2 + x3 y - 3 Hy xL3 = 0, x3 y + 7 x3 y - 3 Hy xL2 = 9 x - 3
b) x y2 + x2 y - 3 = 0, Sin@xD2 + y Cos@xD = 0.
In[231]:=

Solución.
Apartado a)

Usamos el comando NSolve.


52 tour.nb

In[231]:=
NSolveA9x y2 + x3 y - 3 Hy xL3 == 0, x3 y + 7 x3 y - 3 Hy xL2 == 9 x - 3=, 8x, y<E

Out[231]= 88x Ø - 0.270475, y Ø 4.62845<, 8x Ø 0.33695 - 0.240167 Â, y Ø 0.706673 + 1.67115 Â<,


8x Ø 0.33695 + 0.240167 Â, y Ø 0.706673 - 1.67115 Â<, 8x Ø - 1.31621, y Ø 0.681516<,
8x Ø - 0.318333 - 1.3459 Â, y Ø - 0.659198 - 0.0442653 Â<,
8x Ø - 0.318333 + 1.3459 Â, y Ø - 0.659198 + 0.0442653 Â<,
8x Ø 0.329591, y Ø - 0.105035<, 8x Ø 0.333333, y Ø 0.<, 8x Ø 1.21986, y Ø 0.700117<<

Apartado b)

Usamos el comando NSolve.

In[232]:=
NSolveA9x y2 + x2 y - 3 == 0, Sin@xD2 + y Cos@xD == 0=, 8x, y<E

Solve::tdep :
The equations appear to involve the variables to be solved for in an essentially non-algebraic way. à

Out[232]= NSolveA9- 3 + x2 y + x y2 ã 0, y Cos@xD + Sin@xD2 ã 0=, 8x, y<E

Al no ser un sistema de ecuaciones polinómicas NSolve avisa que no lo sabe resolver.

7.2.2.1. El comando FindRoot


El comando FindRoot trata de hallar una solución aproximada de un sistema de ecuaciones, utilizando un algoritmo de
tipo Newton.
Su aplicación exige un valor inicial para cada variable para poder empezar el procedimiento por lo que puede ser aconse-
jable utilizar comandos de tipo gráfico para encontrar dicho valor inicial. En el apartado dedicado a paquetes vemos la
utilización de un paquete gráfico que ayuda a utilizar el comando FindRoot.

Su sintaxis básica es:


FindRoot[ecuaciones,{variable1->punto1},{variable2->punto2}, ..{variablen-
>punton}]
Con esta instrucción Mathematica trata de hallar una solución aproximada de del sistema de ecuaciones con n variables y
con condición inicial {punto1,punto2,.., punton}, utilizando un algoritmo de tipo Newton.
Hay variantes de este comando. Por ejemplo FindRoot[ecuación,{variable,{x0,x1}}] trata de hallar una
solución aproximada de la ecuación, utilizando el método de la secante con xo y x1 como valores iniciales.
Para otras posibilidades de uso de FindRoot véase la ayuda.

Ejemplo:
Hallar usando el comando FindRoot las raíces del sistema de ecuaciones
x3 + y3 + Exp HyL == 1, x2 - y + 2 Exp HxL == 2
In[233]:=

Solución.
En este problema probamos con datos iniciales al azar. En el apartado dedicado a paquetes veremos una estrategia,
utilizando comandos de tipo gráfico, para no "ir a ciegas".
In[233]:=
FindRootA9x3 + y3 + Exp@yD ã 2, x2 - y + 2 Exp@xD ã 1=, 8x, 1<, 8y, 1<E

Out[233]= 8x Ø - 0.275737, y Ø 0.594056<

Cambiamos los datos iniciales.

In[234]:=
FindRootA9x3 + y3 + Exp@yD ã 2, x2 - y + 2 Exp@xD ã 1=, 8x, 0<, 8y, 0<E

Out[234]= 8x Ø - 0.275737, y Ø 0.594056<

8. Gráficos con Mathematica


tour.nb 53

8. Gráficos con Mathematica


Mathematica permite obtener gráficos en dos y tres dimensiones. En este tour sólo mostramos los comandos más carac-
terísticos, representación de curvas en el plano y superficies en el espacio, expresadas en forma paramétrica y explícita y
curvas en el espacio definidas por sus ecuaciones paramétricas.

ü 8.1. Gráficos en dos dimensiones


Mostramos los comandos que permiten representar curvas en el plano expresadas en forma explícita y paramétrica.

ü 8.1.1. Representación de curvas planas en forma explícita


Mathematica permite representar curvas en el plano, expresadas en forma explícita, utilizando para ello el comando Plot.
Ya se ha utilizado dicho comando en algún apartado de este tour.
La sintaxis básica del comando es Plot[f,{x,xmin,xmax}].

Ejemplo:
Representar gráficamente la función f(x)=sen(x) en el intervalo [0,4p].

Solución.
Se representa con la instrucción:

In[235]:=
Plot@Sin@xD, 8x, 0, 4 p<D

1.0

0.5

Out[235]=
2 4 6 8 10 12

-0.5

-1.0

El comando permite multitud de opciones. Pueden verse ejecutando


54 tour.nb

In[236]:=
Options@PlotD

1
Out[236]= :AlignmentPoint Ø Center, AspectRatio Ø , Axes Ø True,
GoldenRatio
AxesLabel Ø None, AxesOrigin Ø Automatic, AxesStyle Ø 8<, Background Ø None,
BaselinePosition Ø Automatic, BaseStyle Ø 8<, ClippingStyle Ø None,
ColorFunction Ø Automatic, ColorFunctionScaling Ø True, ColorOutput Ø Automatic,
ContentSelectable Ø Automatic, CoordinatesToolOptions Ø Automatic,
DisplayFunction ß $DisplayFunction, Epilog Ø 8<, Evaluated Ø Automatic,
EvaluationMonitor Ø None, Exclusions Ø Automatic, ExclusionsStyle Ø None, Filling Ø None,
FillingStyle Ø Automatic, FormatType ß TraditionalForm, Frame Ø False, FrameLabel Ø None,
FrameStyle Ø 8<, FrameTicks Ø Automatic, FrameTicksStyle Ø 8<, GridLines Ø None,
GridLinesStyle Ø 8<, ImageMargins Ø 0., ImagePadding Ø All, ImageSize Ø Automatic,
ImageSizeRaw Ø Automatic, LabelStyle Ø 8<, MaxRecursion Ø Automatic, Mesh Ø None,
MeshFunctions Ø 8Ò1 &<, MeshShading Ø None, MeshStyle Ø Automatic, Method Ø Automatic,
PerformanceGoal ß $PerformanceGoal, PlotLabel Ø None, PlotPoints Ø Automatic,
PlotRange Ø 8Full, Automatic<, PlotRangeClipping Ø True, PlotRangePadding Ø Automatic,
PlotRegion Ø Automatic, PlotStyle Ø Automatic, PreserveImageOptions Ø Automatic,
Prolog Ø 8<, RegionFunction Ø HTrue &L, RotateLabel Ø True,
Ticks Ø Automatic, TicksStyle Ø 8<, WorkingPrecision Ø MachinePrecision>

Si se quieren usar algunas de ellas la sintaxis es Plot[f,{x,xmin,xmax},opciones]

Algunas de las opciones de dicho comando son:

PlotStyle: Permite elegir algunas características de estilo de la gráfica, tales como el color RGBColor y grosor Thickness

AspectRatio: Si se escoge Automatic se utiliza la misma escala en los dos ejes de coordenadas

PlotRange: Permite elegir el rango de las imágenes.

Nota: Si se utilizan varias opciones estas deben de ir separadas por comas.

Ejemplo:
Representar gráficamente la función f(x) =sen(4x)+cos(5x) en el intervalo [0,2] en color rojo y con la misma
escala en los dos ejes.
In[237]:=

Solución.
Se representa con la instrucción:
tour.nb 55

In[237]:=
Plot@Sin@4 xD + Cos@5 xD, 8x, 0, 2<, PlotStyle Ø RGBColor@1, 1, 0D, AspectRatio Ø AutomaticD

1.0

0.5

Out[237]=

0.5 1.0 1.5 2.0

-0.5

Nota: La opción de Color puede introducirse, después de escribirse sabiendo que RGBColor[1, 0, 0] es rojo
RGBColor[0,1, 0] es verde y RGBColor[0, 0,1] es azul Y se puede combinar con número entre 0 y 1. Así
RGBColor[1, 1, 0] es mezcla de rojo y verde, es decir amarillo.
En la versión 7 también se puede introducir la opción de color a través de PlotStyle Ø Nombre del color (en
inglés). Así representaremos en naranja la curva anterior
In[238]:=
Plot@Sin@4 xD + Cos@5 xD, 8x, 0, 2<, PlotStyle Ø Orange, AspectRatio Ø AutomaticD

1.0

0.5

Out[238]=

0.5 1.0 1.5 2.0

-0.5
56 tour.nb

ü 8.1.2. Representación de varias curvas


El comando que permite representar gráficamente una colección (lista) de curvas expresadas en forma explícita es:
Plot[{f1,f2,..,fn},{x,xmin,xmax},opciones]
Notas:
1. Se puede asignar más de una opción a cada una de las gráficas. Si una gráfica tiene asignadas varias opciones, estas
deben de ir entre llaves.
2. Con este comando todas las curvas deben ser representadas en el mismo intervalo. En otras situaciones debería
utilizarse el comando Show.

Ejemplo:
Representar en una misma gráfica las funciones sen(10x) y x3 - x en el intervalo [-1,1], con distintos colores y
grosores.

Solución.
Sería deseable que el usuario modificase el grosor y el color de cada gráfica.

In[239]:=
PlotA9Sin@10 xD, x3 - x=, 8x, - 1, 1<,
PlotStyle Ø 88RGBColor@1, 0, 0D, Thickness@0.02D<, 8Pink, Thickness@0.03D<<E

1.0

0.5

Out[239]=
-1.0 -0.5 0.5 1.0

-0.5

-1.0

ü 8.1.3. Representación de curvas planas en paramétricas


Mathematica permite representar curvas en el plano, expresadas en forma paramétrica x = x(t), y = y(t), utilizando
para ello el comando ParametricPlot.
La sintaxis del comando es ParametricPlot[{x[t],y[t]},{t,tmin,tmax},opciones].
Las opciones pueden verse a través de la instrucción
tour.nb 57

In[240]:=
Options@ParametricPlotD

Out[240]= 8AlignmentPoint Ø Center, AspectRatio Ø Automatic, Axes Ø True,


AxesLabel Ø None, AxesOrigin Ø Automatic, AxesStyle Ø 8<, Background Ø None,
BaselinePosition Ø Automatic, BaseStyle Ø 8<, BoundaryStyle Ø Automatic,
ColorFunction Ø Automatic, ColorFunctionScaling Ø True, ColorOutput Ø Automatic,
ContentSelectable Ø Automatic, CoordinatesToolOptions Ø Automatic,
DisplayFunction ß $DisplayFunction, Epilog Ø 8<, Evaluated Ø Automatic,
EvaluationMonitor Ø None, Exclusions Ø Automatic, ExclusionsStyle Ø None,
FormatType ß TraditionalForm, Frame Ø Automatic, FrameLabel Ø None,
FrameStyle Ø 8<, FrameTicks Ø Automatic, FrameTicksStyle Ø 8<, GridLines Ø None,
GridLinesStyle Ø 8<, ImageMargins Ø 0., ImagePadding Ø All, ImageSize Ø Automatic,
ImageSizeRaw Ø Automatic, LabelStyle Ø 8<, MaxRecursion Ø Automatic, Mesh Ø Automatic,
MeshFunctions Ø Automatic, MeshShading Ø None, MeshStyle Ø Automatic, Method Ø Automatic,
PerformanceGoal ß $PerformanceGoal, PlotLabel Ø None, PlotPoints Ø Automatic,
PlotRange Ø Automatic, PlotRangeClipping Ø True, PlotRangePadding Ø Automatic,
PlotRegion Ø Automatic, PlotStyle Ø Automatic, PreserveImageOptions Ø Automatic,
Prolog Ø 8<, RegionFunction Ø HTrue &L, RotateLabel Ø True,
Ticks Ø Automatic, TicksStyle Ø 8<, WorkingPrecision Ø MachinePrecision<

Ejemplo:
Representar la elipse centrada en el origen, ejes paralelos a los ejes y tal que la longitud del semieje del eje OX es 3 y la
del eje OY es 4.

Solución.
La instrucción, en la que se ha usado la misma escala en los dos ejes a través de la opción AspectRatio Ø Automatic
es:
In[241]:=
ParametricPlot@83 Cos@tD, 4 Sin@tD<, 8t, 0, 2 p<, AspectRatio Ø AutomaticD

Out[241]=
-3 -2 -1 1 2 3

-2

-4

ü 8.2. Gráficos en tres dimensiones


58 tour.nb

8.2. Gráficos en tres dimensiones


Mathematica permite representar superficies expresadas en forma explícita y paramétrica.

ü 8.2.1. Representación de superficies expresadas en forma explícita


Mathematica permite representar superficies expresadas en forma explícita, utilizando para ello el comando Plot3D.
La sintaxis básica del comando es Plot3D[f,{x,xmin,xmax},{y,ymin,ymax}]. Pueden introducirse opciones
Plot3D[f,{x,xmin,xmax},{y,ymin,ymax},opciones]. Una lista de las opciones puede verse ejecutando
In[242]:=
Options@Plot3DD

Out[242]= 8AlignmentPoint Ø Center, AspectRatio Ø Automatic, Axes Ø True, AxesEdge Ø Automatic,


AxesLabel Ø None, AxesOrigin Ø Automatic, AxesStyle Ø 8<, Background Ø None,
BaselinePosition Ø Automatic, BaseStyle Ø 8<, BoundaryStyle Ø GrayLevel@0D,
Boxed Ø True, BoxRatios Ø 81, 1, 0.4<, BoxStyle Ø 8<, ClippingStyle Ø Automatic,
ColorFunction Ø Automatic, ColorFunctionScaling Ø True, ColorOutput Ø Automatic,
ContentSelectable Ø Automatic, ControllerLinking Ø Automatic,
ControllerMethod Ø Automatic, ControllerPath Ø Automatic,
CoordinatesToolOptions Ø Automatic, DisplayFunction ß $DisplayFunction,
Epilog Ø 8<, Evaluated Ø Automatic, EvaluationMonitor Ø None, Exclusions Ø Automatic,
ExclusionsStyle Ø None, FaceGrids Ø None, FaceGridsStyle Ø 8<, Filling Ø None,
FillingStyle Ø Opacity@0.5D, FormatType ß TraditionalForm, ImageMargins Ø 0.,
ImagePadding Ø All, ImageSize Ø Automatic, LabelStyle Ø 8<, Lighting Ø Automatic,
MaxRecursion Ø Automatic, Mesh Ø Automatic, MeshFunctions Ø 8Ò1 &, Ò2 &<,
MeshShading Ø None, MeshStyle Ø Automatic, Method Ø Automatic,
NormalsFunction Ø Automatic, PerformanceGoal ß $PerformanceGoal, PlotLabel Ø None,
PlotPoints Ø Automatic, PlotRange Ø 8Full, Full, Automatic<, PlotRangePadding Ø Automatic,
PlotRegion Ø Automatic, PlotStyle Ø Automatic, PreserveImageOptions Ø Automatic,
Prolog Ø 8<, RegionFunction Ø HTrue &L, RotationAction Ø Fit, SphericalRegion Ø False,
Ticks Ø Automatic, TicksStyle Ø 8<, ViewAngle Ø Automatic, ViewCenter Ø Automatic,
ViewMatrix Ø Automatic, ViewPoint Ø 81.3, - 2.4, 2.<, ViewRange Ø All,
ViewVector Ø Automatic, ViewVertical Ø 80, 0, 1<, WorkingPrecision Ø MachinePrecision<

Ejemplo:
Representar gráficamente la función f(x,y)= sen(x+y) en el cuadrado [-3,3]×[-3,3]

Solución.
Se representa la instrucción básica, dejando al usuario interesado la introducción de opciones.

ü
tour.nb 59

In[243]:=
Plot3D@Sin@x + yD, 8x, - 3, 3<, 8y, - 3, 3<D

Out[243]=

ü 8.2.2. Representación de varias superficies


Así como era posible, con el comando Plot, representar varias curvas, el comando Plot3D no permite representar varias
superficies simultáneamente.
Sin embargo el comando de Mathematica Show permite representar varios objetos gráficos (curvas, superficies, puntos,
etc.) en una misma gráfica. La estructura del comando Show es Show[grafica1 , grafica2 ,
......,opciones]
Es aconsejable al utilizar este comando, asignar previamente a cada una de las gráficas un nombre (grafica1, grafica2,
......)

Ejemplo:
Representar los paraboloides 9 -y2 - x2 e y2 + x2 en el cuadrado D=[-3,3]X[-3,3].

Solución.
Se representa el primer paraboloide, al cual se le denota por par1 para su posterior manipulación.
60 tour.nb

In[244]:=
par1 = Plot3DA9 - y2 - x2 , 8x, - 3, 3<, 8y, - 3, 3<E

Out[244]=

Y con la siguiente instrucción se representa el otro, al que se ha denominado par2.

In[245]:=
par2 = Plot3DAx2 + y2 , 8x, - 3, 3<, 8y, - 3, 3<E

Out[245]=

Se utiliza ahora la instrucción Show que permite representar varias superficies, o gráficas de otro tipo, en una misma
gráfica.
tour.nb 61

In[246]:=
Show@par1, par2D

Out[246]=

In[247]:=
Clear@par1, par2D

ü 8.2.3. Representación de superficies expresadas en forma paramétrica


Mathematica permite representar superficies expresadas en forma paramétrica, utilizando para ello el comando
ParametricPlot3D.
La sintaxis básica de dicho comando es ParametricPlot3D[{x(u,v),y(u,v),z(u,v)},{u,umin,umax-
<,{v,vmin,vmax<].
Pueden introducirse opciones usando el comando
ParametricPlot3D[{x(u,v),y(u,v),z(u,v)},{u,umin,umax<,{v,vmin,vmax},opciones]. Una
lista de las opciones puede verse ejecutando
In[248]:=
Options@ParametricPlot3DD

Out[248]= 8AlignmentPoint Ø Center, AspectRatio Ø Automatic, Axes Ø True, AxesEdge Ø Automatic,


AxesLabel Ø None, AxesOrigin Ø Automatic, AxesStyle Ø 8<, Background Ø None,
BaselinePosition Ø Automatic, BaseStyle Ø 8<, BoundaryStyle Ø None,
Boxed Ø True, BoxRatios Ø Automatic, BoxStyle Ø 8<, ColorFunction Ø Automatic,
ColorFunctionScaling Ø True, ColorOutput Ø Automatic, ContentSelectable Ø Automatic,
ControllerLinking Ø Automatic, ControllerMethod Ø Automatic,
ControllerPath Ø Automatic, CoordinatesToolOptions Ø Automatic,
DisplayFunction ß $DisplayFunction, Epilog Ø 8<, Evaluated Ø Automatic,
EvaluationMonitor Ø None, Exclusions Ø Automatic, ExclusionsStyle Ø None,
FaceGrids Ø None, FaceGridsStyle Ø 8<, FormatType ß TraditionalForm, ImageMargins Ø 0.,
ImagePadding Ø All, ImageSize Ø Automatic, LabelStyle Ø 8<, Lighting Ø Automatic,
MaxRecursion Ø Automatic, Mesh Ø Automatic, MeshFunctions Ø Automatic, MeshShading Ø None,
MeshStyle Ø Automatic, Method Ø Automatic, NormalsFunction Ø Automatic,
PerformanceGoal ß $PerformanceGoal, PlotLabel Ø None, PlotPoints Ø Automatic,
PlotRange Ø Automatic, PlotRangePadding Ø Automatic, PlotRegion Ø Automatic,
PlotStyle Ø Automatic, PreserveImageOptions Ø Automatic, Prolog Ø 8<,
RegionFunction Ø HTrue &L, RotationAction Ø Fit, SphericalRegion Ø False,
Ticks Ø Automatic, TicksStyle Ø 8<, ViewAngle Ø Automatic, ViewCenter Ø Automatic,
ViewMatrix Ø Automatic, ViewPoint Ø 81.3, - 2.4, 2.<, ViewRange Ø All,
ViewVector Ø Automatic, ViewVertical Ø 80, 0, 1<, WorkingPrecision Ø MachinePrecision<

Ejemplo:
Representar la esfera de ecuaciones paramétricas
p p
x=cosHuL cosHvL, y=cosHuL senHvL, z=senHuL, uœA- , E,vœ@0, 2 pD
2 2
62 tour.nb

Representar la esfera de ecuaciones paramétricas


p p
x=cosHuL cosHvL, y=cosHuL senHvL, z=senHuL, uœA- , E,vœ@0, 2 pD
2 2

Solución.
Se representa sin la caja ni los ejes. Se ha llamado al gráfico esfera para representarla en el ejemplo siguiente.

In[249]:=

esfera = ParametricPlot3DB8Cos@uD Cos@vD, Cos@uD Sin@vD, Sin@uD<,


p p
:u, - , >, 8v, 0, 2 p<, Boxed Ø False, Axes Ø FalseF
2 2

Out[249]=

ü 8.2.4. Representación de curvas alabeadas


El comando ParametricPlot3D permite también representar curvas alabeadas. Entonces su sintaxis debe ser:
ParametricPlot3D[{f(t),g(t),h(t)},{t,tmin,tmax},opciones].

Ejemplo:
Representar en un mismo gráfico la esfera de ecuaciones paramétricas
p p
x=cosHuL cosHvL, y=cosHuL senHvL, z=senHuL, uœA- , E,vœ@0, 2 pD
2 2
y la curva sobre dicha esfera dada por la relación v=2u.

Solución.
La esfera se ha representado en el ejemplo anterior.

Representamos la curva.
tour.nb 63

In[250]:=

curva = ParametricPlot3DB8Cos@uD Cos@2 uD, Cos@uD Sin@2 uD, Sin@uD<,


p p
:u, - , >, Boxed Ø False, Axes Ø False, PlotStyle Ø Thickness@0.02DF
2 2

Out[250]=

Se representan juntas utilizando el comando Show.


64 tour.nb

In[251]:=
Show@esfera, curvaD

Out[251]=

Se cambia el punto de vista.

In[252]:=
Show@esfera, curva, ViewPoint Ø 82.016, 0.035, 2.717<D

Out[252]=

Nota. En la versión 7 se puede cambiar el punto de vista pinchando con el ratón la gráfica y moviéndola. Se invita al
usuario a que lo haga en la gráfica anterior
tour.nb 65

Nota. En la versión 7 se puede cambiar el punto de vista pinchando con el ratón la gráfica y moviéndola. Se invita al
usuario a que lo haga en la gráfica anterior

In[253]:=
Clear@esfera, curvaD

Notas: Hay otros comandos para representar superficies. Por ejemplo


1. ContourPlot3D que permite representar superficies expresadas en forma implícita.
2. RevolutionPlot3D puede representar superficies de revolución.

9. Los paquetes de Mathematica


Un paquete es un conjunto de instrucciones o comandos específicos, que no tiene incorporado el Kernel.
A través de las versiones de Mathematica comandos que antes estaban en un paquete, por ejemplo la descomposición de
Cholesky de una matriz, ahora los tiene incorporados el núcleo.

Para cargar un paquete ejecutaremos la instrucción <<nombre del paquete` o bien Needs["nombre
del paquete`"]
Por ejemplo Div es un comando del paquete VectorAnalysis.
Para ver los paquetes que tiene Mathematica podemos ir a la ayuda y escribir Packages. Entre las posibilidades aparece
StandardExtraPackages. Si pinchamos en esta opción podemos ver los paquetes que tiene incorporados Mathematica.

A continuación ponemos un ejemplo en el que es necesario cargar previamente un paquete.

Ejemplo:
Calcular el gradiente de la función escalar f(x,y,z)=5x2 y 3 z4

Solución.
El operador gradiente está en el paquete VectorAnalysis`. Cargamos previamente dicho paquete con cualquiera de
las dos instrucciones siguientes

In[254]:= << VectorAnalysis`

In[255]:= Needs@"VectorAnalysis`"D

Ejecutamos la siguiente instrucción que calcula el gradiente de una función en coordenadas cartesianas, que deben ser
denotadas por (x,y,z).
In[256]:=
Grad@5 x ^ 2 y ^ 3 z ^ 4, Cartesian@x, y, zDD

Out[256]= 910 x y3 z4 , 15 x2 y2 z4 , 20 x2 y3 z3 =
66 tour.nb

10. Algo sobre programación


Mathematica tiene comandos que permiten programar procedimientos. Aquí sólo indicaremos algunos de ellos ya sea por
su importancia o por su utilización en algunos de los documentos de este CD. Dividiremos estos comandos en:
Comandos de control.
Comandos de iteración.
Comandos auxiliares.
Variables locales.
De cada uno de estos apartados sólo indicaremos la sintaxis de alguno de los comandos.
Nota: No mencionaremos nada sobre contadores, acumuladores, comandos de aplicación, como por ejemplo Map y
Apply, en este tour.

ü 10. 1. Comandos de control


Los principales comandos de control son: If, Switch y Which. Analizaremos alguna de las sintaxis del comando If.

ü El comando If
Las sintaxis más usuales del comando If son:
If [condición,expr1,expr2], que evalúa expr1 si condición es cierta y expr2 si condición es falsa.
If [condición,expr1,expr2,expr3], que evalúa expr1 si condición es cierta; expr2 si condición es falsa y
expr3 si condición no es cierta ni falsa, es decir, si condición no es realmente una condición.

Ejemplo 1:
Definir y representar gráficamente en el intervalo [-3,2], utilizando el comando If, la función: Cos(4x) si x<0, 1 si
0§x §1, x2 si x>1.

Solución.
Obsérvese la utilización del comando If anidado.

In[257]:=
f@x_D := IfAx < 0, Cos@4 xD, IfA0 § x § 1, 1, x2 EE

Y representamos la función en el intervalo pedido.

In[258]:=
Plot@f@xD, 8x, - 3, 2<D

2
Out[258]=

-3 -2 -1 1 2

-1

In[259]:=
Clear@fD

Ejemplo 2:
tour.nb 67

Ejemplo 2:
Programar un procedimiento que devuelva -1 si un punto del plano está en el eje OX, -2 en el eje OY, 0 si es el origen de
coordenadas e i si está en el cuadrante i.

Solución.
Un posible procedimiento puede ser el siguiente donde se ha utilizado AND=Y (que se escribe &&) y los If anidados.

In[260]:=
locpunto@8x_, y_<D := If@x == 0 && y == 0, 0,
If@y == 0, - 1, If@x == 0, - 2, If@x > 0 && y > 0, 1, If@x < 0 && y > 0, 2, If@x < 0 && y < 0, 3, 4DDDDDD

Comprobamos el procedimiento para algunos puntos.

In[261]:=
locpunto@81, 0<D

Out[261]= -1

In[262]:=
locpunto@80, 1<D

Out[262]= -2

In[263]:=
locpunto@80, 0<D

Out[263]= 0

In[264]:=
locpunto@81, 1<D

Out[264]= 1

In[265]:=
locpunto@8- 1, 1<D

Out[265]= 2

In[266]:=
locpunto@8- 1, - 1<D

Out[266]= 3

In[267]:=
locpunto@81, - 1<D

Out[267]= 4

In[268]:=
Clear@locpuntoD

ü 10. 2. Comandos de iteración


Los principales comandos de iteración son: Do y For y While. Analizaremos alguna de las sintaxis asociadas a los
comandos Do y For. Los ejemplos de aplicación de estos comandos se harán conjuntamente con el comando auxiliar
Print, que analizaremso a continuación de ellos.
68 tour.nb

ü El comando Do
Las sintaxis más usuales del comando Do son:
Do[sentencias,{k,ki,kf}], que ejecuta sentencias tomando la variable k valores desde ki hasta kf con paso 1.
Do[sentencias,{k,ki,kf,dk}], que ejecuta sentencias tomando la variable k valores desde ki hasta kf con
paso dk.
Do[sentencias,{k,kf}], que ejecuta sentencias tomando la variable k valores desde 1 hasta kf con paso 1.

ü El comando For
La sintaxis del comando For es:
For[inicio,condicion,incremento,sentencias]. Con ella se evalúa inicio y ejecuta sentencias e incre-
mento hasta que condicion sea falsa.

ü 10.3. Comandos auxiliares


Englobamos dentro de este apartado comandos que permiten interrumpir un proceso, como Break, manipular un bucle
como Continue y Return, escribir resultados como Print e introducir datos como Input. Sólo analizaremos aquí Print
quese utilizará en los ejemplos posteriores conjuntamente con los comandos Do y For.

ü El comando Print
La sintaxis más usual del comando Print es:
Print[expr1,expr2,...]. Con ella se presentan en pantalla los resultados de evaluar expr1, expr2, seguidos y
sin espacios entre ellos.

Notas:
1.Print permite sacar resultados por pantalla en una sentencia que no sea la última del programa, ya que Print imprime
su resultado aunque esté seguido de punto y coma. También permite sacar mensajes por pantalla. Los mensajes deben
aparecer entre comillas dobles " " para indicar a Mathematica que queremos que saque por pantalla el mensaje textual, es
decir como está escrito.

2. Print no deja ningún espacio de separación a la hora de presentar sus argumentos. Por eso hay que dejar espacios en
blanco al final de los mensajes.
Print evalúa el valor de sus argumentos antes de mostrarlos por pantalla a no ser que estén entre comillas, en cuyo caso
los presenta textualmente.

Otras sintaxis del comando Print son:


Print[expr1];Print[expr2]; que muestra por pantalla expr1, expr2,.. cada uno en una línea.
Print[" "] que saca por pantalla una línea en blanco.

Ejemplo 1:
a) Construir una función que calcule los números primos desde el primero hasta el que ocupa un lugar dado.
b) Construir una función que de la tabla de multiplicar de un número dado. Hallar la tabla de multiplicar del 9.

Solución.
Apartado a)

Utilizamos los comandos Do y Print.

In[269]:=
tablaprimo@y_D := Do@Print@Prime@iDD, 8i, 1, y<D

Calculamos los ocho primeros primos.


tour.nb 69

Calculamos los ocho primeros primos.

In[270]:=
tablaprimo@8D

11

13

17

19

Apartado b)

Utilizamos los comandos Do y Print.

In[271]:=
tamul@n_D := HPrint@"La tabla de multiplicar del numero ", n, " es:"D;
Do@Print@n, " por ", i, " es ", n iD, 8i, 1, 10<DL

La tabla de multiplicar del 9 será:

In[272]:=
tamul@9D

La tabla de multiplicar del numero 9 es:

9 por 1 es 9

9 por 2 es 18

9 por 3 es 27

9 por 4 es 36

9 por 5 es 45

9 por 6 es 54

9 por 7 es 63

9 por 8 es 72

9 por 9 es 81

9 por 10 es 90

Ejemplo 2:
Programar un procedimiento que devuelva los enteros entre -2 y 3 junto con sus cuadrados.

Solución.
Una instrucción, utilizando el comando For, puede ser:

In[273]:=
ForAi = - 2, i < 3, ++i, PrintA9i, i2 =EE
70 tour.nb

8- 2, 4<

8- 1, 1<

80, 0<

81, 1<

82, 4<

In[274]:=
Clear@tablaprimo, tamulD

ü 10.4. Variables locales


El procedimiento de borrar todas las variables que puedan intervenir en un programa puede resultar bastante molesto.
Además, puede que no interese borrar ciertas variables cuyo contenido se quiera conservar. Estas y otras muchas razones
son las que aconsejan el uso de variables locales y del comando Module.

ü El comando Module
La sintaxis del comando Module es:
Module[{x1,x2,..,xn},expr], que ejecuta expr tratando a todas las variables o funciones x1, x2, ...xn
como locales siempre que aparezcan en expr.

Ejemplo:
a) Construir un procedimiento, que llamaremos rango, que calcule el rango de una matriz.
b) Hallar, utilizando la función anterior el rango de las matrices
1 2 3
1 2 3 1 2 1 1
1 -2 3
m= 4 5 6 n = 1 -1 1 0 p =
2 0 6
7 8 9 2 1 2 1
0 4 0

Solución.
Apartado a)

Tratamos como variables locales las columnas de la matriz y la dimensión del núcleo de la matriz, que en Mathematica se
calcula a través del comando NullSpace. También usamos Dimensions que nos permite calcular el número de columnas
de la matriz, de la que queremos calcular el rango.
In[275]:=
rango@m_D := Module@8n, k<, n = Dimensions@mDP2T; k = Length@NullSpace@mDD; n - kD

Apartado b)

Lo ejecutamos para determinadas matrices.

In[276]:=
m = 881, 2, 3<, 84, 5, 6<, 87, 8, 9<<

Out[276]= 881, 2, 3<, 84, 5, 6<, 87, 8, 9<<

In[277]:=
rango@mD

Out[277]= 2

Nota: No importa la letra con la que se denomine a la matriz: Por ejemplo a esta matriz se la llama m.

Para otra matriz.


tour.nb 71

Para otra matriz.

In[278]:=
n = 881, 2, 1, 1<, 81, - 1, 1, 0<, 82, 1, 2, 1<<

Out[278]= 881, 2, 1, 1<, 81, - 1, 1, 0<, 82, 1, 2, 1<<

In[279]:=
rango@nD

Out[279]= 2

Una tercera.

In[280]:=
p = 881, 2, 3<, 81, - 2, 3<, 82, 0, 6<, 80, 4, 0<<

Out[280]= 881, 2, 3<, 81, - 2, 3<, 82, 0, 6<, 80, 4, 0<<

In[281]:=
rango@pD

Out[281]= 2

In[282]:= Clear@rango, m, n, pD

11. Algunos errores frecuentes


Mathematica puede sorprender en determinadas ocasiones actuando de modo diferente al esperado. La causa puede ser
una mala sintaxis en los comandos o bien alguna acción anterior del usuario y que, en este momento no tiene bajo
control. Para ayudar a detectar y, en la medida de lo posible, evitar estos errores incluimos aquí un pequeño catálogo de
situaciones que, con mucha frecuencia, dan lugar a errores. Algunos de ellos ya han sido comentados en apartados
anteriores.

ü Error: La sintaxis no es correcta


Mathematica exige que la sentencias sean correctas fundamentalmente en lo relativo a corchetes, paréntesis y llaves.
Incluso si la instrucción no tiene una sintaxis correcta Mathematica avisa poniendo el símbolo que causa el problema en
un color como este También un error importante en la sintaxis es olvidar que los comandos de Mathematica empiezan
por mayúscula.

Ejemplos
Esta instrucción está inacabada

In[283]:=
Simplify@Hx ^ 2 - y ^ 2L ê Hx - yD

Al ejecutarla nos avisa de que hay que cerra el paréntesis. Esta es correcta.

In[283]:=
Simplify@Hx ^ 2 - y ^ 2L ê Hx - yLD

Out[283]= x+y

Hallaremos el seno de p/2


72 tour.nb

In[284]:=
Sen@Pi ê 2D

p
Out[284]= SenB F
2

Ojo que en Mathematica el seno es Sin.

In[285]:=
sin@Pi ê 2D

p
Out[285]= sinB F
2

Está avisando que sin se ha escrito con minúscula. A la tercera...

In[286]:=
Sin@pi ê 2D

pi
Out[286]= SinB F
2

Y ahora. Parece que está todo bien. Pues..no pues Pi constante que tiene incorporada Mathematica debe escribirse con
mayúscula.
In[287]:=
Sin@Pi ê 2D

Out[287]= 1

ü Error: Los argumentos deben ir entre llaves, aunque estamos


acostumbrados a escribirlos entre paréntesis
En Mathematica los argumentos de los comandos van entre corchetes.

Ejemplo
Si hallamos el coseno de Pi/4

In[288]:=
p
Cos
4
Cos p
Out[288]=
4

De hecho nos avisa del error pues los paréntesis aparecen en rojo.

En cambio

In[289]:=
p
CosB F
4
1
Out[289]=
2

ü Error: Intentar usar una función o dato sin estar definidos


Mathematica dará resultados extraños si no ejecutamos instrucciones previas que pueden ser necesarias.

Así si definimos la función f(x)=x^2 no ejecutamos la instrucción y evaluamos f en el punto 3 se obtiene


tour.nb 73

In[290]:=
f@x_D := x ^ 2

In[291]:=
f@3D

Out[291]= 9

Mathematica desconoce la función.

Si definimos la función f(x)=x^3, asignamos a b el valor 3 pero no ejecutamos la instrucción se tiene

In[292]:=
f@x_D := x ^ 3

In[293]:=
b=3

Out[293]= 3

In[294]:=
f@bD

Out[294]= 27

Mathematica desconoce en el primer caso la función f y el valor del punto b en el segundo.

ü Error: Utilizar una variable o parámetro que tiene una asignación previa
Mathematica da "resultados raros" al usar variables o parámetros en determinadas ocasiones por tener un valor asignado
previamente y que no tenemos controlado.

Ejemplo
Asignamos a a una matriz cuadrada de orden 2

In[295]:=
1 2
a := K O
3 4

Definimos la función

In[296]:=
f@x_D := x ^ 2

Evaluamos la función en a.

In[297]:=
f@aD

Out[297]= 881, 4<, 89, 16<<

Esperabamos como respuesta a2 y en este caso Mathematica ha elevado la matriz anterior al cuadrado, elemento a
elemento. En una situación de este tipo una posible estrategia es ver el valor de a
In[298]:=
a

Out[298]= 881, 2<, 83, 4<<

Y limpiar la variable

In[299]:=
Clear@aD

Ahora
74 tour.nb

Ahora

In[300]:=
f@aD

Out[300]= a2

In[301]:=
Clear@fD

ü Error: Usar algún comando de un paquete que no se ha cargado


Mathematica necesita cargar previamente un paquete para poder usar cualquier comando que esté en dicho paquete. Si no
se hace así y se ejecuta primero el comando nos hace una advertencia y no nos deja cargar el paquete debiendo cerrar la
sesión de Mathematica para poder cargar el paquete o bien ir al menú Evaluation y escoger la opción Quit Kernel.
Entonces Mathematica empieza de nuevo, sin tener que cerrar el documento.

Ejemplo
ProvablePrimeQ[n] es un comando del paquete PrimalityProving` que trata de ver si n es primo.

Si ejecutamos primero el comando para ver si 13 es primo

In[302]:=
ProvablePrimeQ@13D

Out[302]= ProvablePrimeQ@13D

Y ahora intentamos cargar el paquete

In[303]:=
<< PrimalityProving`

ProvablePrimeQ::shdw :
Symbol ProvablePrimeQ appears in multiple contexts 8PrimalityProving`, Global`<; definitions in
context PrimalityProving` may shadow or be shadowed by other definitions. à

Nos avisa que hay problemas al cargar dicho paquete. Por tanto es necesario "reiniciar Mathematica ".

You might also like