Tutorial Mathematica PDF
Tutorial Mathematica PDF
- 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.
ü Tipos 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.
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
ü 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.
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:
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
ü Menú Help
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
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
ü 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<
In[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
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
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
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)
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)
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
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.
Solución.
Los datos pueden introducirse bien directamente o bien a través del menú PALETTES->Other->Basic Math
Input
Apartado a)
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
In[27]:=
E
Out[27]= ‰
In[28]:=
‰
Out[28]= ‰
Apartado b)
In[29]:=
Infinity
Out[29]= ¶
In[30]:=
¶
Out[30]= ¶
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)
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
In[34]:=
N@E, 20D
Out[34]= 2.7182818284590452354
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)
In[36]:=
a2
Out[36]= 15 625
Apartado c)
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
In[40]:=
LogAa2 E
Solución.
Apartado a)
In[41]:=
Clear@aD
Y ahora se introduce a
In[42]:=
a
Out[42]= a
Apartado b)
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.
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 . à
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 . à
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
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`
In[53]:=
?? *lot*
System`
Out[54]= Plot
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
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)
In[57]:=
p
SinB F
4
1
Out[57]=
2
Apartado b)
1.0
0.5
Out[58]=
1 2 3 4 5 6
-0.5
-1.0
Apartado c)
In[59]:=
SimplifyACos@xD4 - 6 Cos@xD2 Sin@xD2 + Sin@xD4 E
Out[59]= Cos@4 xD
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
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)
ü
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
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
In[72]:=
Plot@Log@xD, 8x, 500, 600<D
6.40
6.35
Out[72]=
6.30
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
In[74]:=
ExpandAH3 + 2 xL2 Hx + 2 yL3 E
In[75]:=
ExpandAH3 + 2 xL2 Hx + 2 yL3 , yE
Apartado b)
In[77]:=
Clear@p, qD
In[78]:=
x+2
p= ;
x5 + 3 x4 + 5 x3 + 5 x2 + 3 x + 1
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
Ejemplo 1:
a) Sustituir x por 7 en la expresión x3 + 6 x2 + 3 x + 7
Solución.
Apartado a)
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)
In[85]:=
q = x4 + y5 + 3 x2 y
Out[85]= x4 + 3 x2 y + y5
In[86]:=
q ê. 8x Ø 2, y Ø 3<
Out[86]= 295
In[87]:=
q
Out[87]= x4 + 3 x2 y + y5
In[88]:= Clear@p, qD
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)
Out[91]= 4a+2b+ x
Apartado c)
In[92]:=
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)
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
In[97]:=
f@3D
Out[97]= f@3D
In[98]:=
f Hx_L = x3 + 3 x + 5
Out[98]= 5 + 3 x + x3
In[99]:=
f H3L
Out[99]= 3f
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
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
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)
In[108]:=
Clear@hD
Definimos la función
In[109]:=
h@x_D := 1 ê; 0 <= x <= 1
Apartado b)
In[110]:=
[email protected]
h@2D
Out[110]= 1
Out[111]= h@2D
In[112]:=
Clear@hD
Apartado c)
In[113]:=
Clear@fD
Se define la función
26 tour.nb
In[114]:=
f@x_ ê; x < 0D := x ê; x < 0
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
In[119]:=
f@- 1D
Out[119]= -1
In[120]:=
f@1D
Out[120]= f@1D
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]:=
[email protected]
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.
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
-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
In[130]:=
f3 = Plot@f@xD, 8x, 3, 5<, PlotStyle Ø RGBColor@0, 0, 1DD
Out[130]=
2
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.
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
In[134]:=
f@0D
f@- 1D
[email protected]
f@1D
Out[134]= 0
Out[135]= 1
Out[136]= [email protected]
Out[137]= 1
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)
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]=
Nota: También se puede utilizar el comando lógico AND =Y que se escribe && para introducir las restricciones.
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
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
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.
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
Solución.
Apartado a)
In[158]:=
a = 81, 2, 3, 4, 5, 6, 7, 8, 9<
Apartado b)
In[159]:=
b = a2
Apartado c)
In[160]:=
a+b
In[161]:=
ab
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<
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]:=
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]:=
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
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".
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
Solución.
Apartado a)
In[169]:=
a = 81, 2, 83, 4, 85, 6, 7, 8<<<
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)
In[173]:=
a@@1DD = 79
Out[173]= 79
In[174]:=
a@@3, 2DD = 91
Out[174]= 91
In[175]:=
a
In[176]:=
Clear@aD
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]:=
In[178]:=
Flatten@aD
In[179]:= Flatten@a@@2DDD
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
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
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<<
In[186]:=
MatrixForm@mD
Out[186]//MatrixForm=
- 17 - 30 - 44
32 55 80
- 14 - 24 - 35
In[187]:=
- 17 - 30 - 44
32 55 80
- 14 - 24 - 35
Out[187]= 88- 17, - 30, - 44<, 832, 55, 80<, 8- 14, - 24, - 35<<
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
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
Potencias de matrices usando el comando MatrixPower cuya sintaxis es MatrixPower[n,m], que calcula la potencia
emésnima de la matriz n.
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
Apartado b)
In[192]:=
v = 81, 2, 3<
In[193]:=
m.v
In[194]:=
v.m
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)
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)
In[197]:=
MatrixPower@n, 3D
Out[197]= 88141, 142, 143<, 8115, 114, 113<, 8256, 256, 256<<
In[198]:=
MatrixPower@m, - 1D
5 20 2 25
Out[198]= :: , - 2, - >, 80, 7, 16<, :- , - 4, - >>
3 3 3 3
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)
In[201]:=
Eigenvalues@mD
In[202]:=
Eigenvectors@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
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.
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)
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
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)
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.
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)
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.
In[210]:=
RootsAx10 - x9 - 3 x8 + 3 x7 + 2 x4 - x3 - 7 x2 ã 0, xE
Apartado d)
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
In[213]:=
Roots@HSin@xDL ^ 2 == 0, xD
Out[213]= RootsASin@xD2 ã 0, xE
Apartado e)
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.
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 Â==
Apartado b)
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
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.
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.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<
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 .
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.
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)
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)
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. à
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)
In[231]:=
NSolveA9x y2 + x3 y - 3 Hy xL3 == 0, x3 y + 7 x3 y - 3 Hy xL2 == 9 x - 3=, 8x, y<E
Apartado b)
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. à
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
In[234]:=
FindRootA9x3 + y3 + Exp@yD ã 2, x2 - y + 2 Exp@xD ã 1=, 8x, 0<, 8y, 0<E
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
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>
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
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
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
56 tour.nb
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, [email protected]<, 8Pink, [email protected]<<E
1.0
0.5
Out[239]=
-1.0 -0.5 0.5 1.0
-0.5
-1.0
In[240]:=
Options@ParametricPlotD
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
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]=
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]=
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
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
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]:=
Out[249]=
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]:=
Out[250]=
In[251]:=
Show@esfera, curvaD
Out[251]=
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
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.
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[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
ü 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
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
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
ü 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.
ü 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.
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)
In[269]:=
tablaprimo@y_D := Do@Print@Prime@iDD, 8i, 1, y<D
In[270]:=
tablaprimo@8D
11
13
17
19
Apartado b)
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
In[272]:=
tamul@9D
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
ü 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)
In[276]:=
m = 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.
In[278]:=
n = 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<<
In[281]:=
rango@pD
Out[281]= 2
In[282]:= Clear@rango, m, n, pD
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
In[284]:=
Sen@Pi ê 2D
p
Out[284]= SenB F
2
In[285]:=
sin@Pi ê 2D
p
Out[285]= sinB F
2
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
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
In[290]:=
f@x_D := x ^ 2
In[291]:=
f@3D
Out[291]= 9
In[292]:=
f@x_D := x ^ 3
In[293]:=
b=3
Out[293]= 3
In[294]:=
f@bD
Out[294]= 27
ü 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
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
Y limpiar la variable
In[299]:=
Clear@aD
Ahora
74 tour.nb
Ahora
In[300]:=
f@aD
Out[300]= a2
In[301]:=
Clear@fD
Ejemplo
ProvablePrimeQ[n] es un comando del paquete PrimalityProving` que trata de ver si n es primo.
In[302]:=
ProvablePrimeQ@13D
Out[302]= ProvablePrimeQ@13D
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 ".