introduccion a mathematicacrosales/1617/cys/practica0.pdf · para ello está dispuesto en dos...

25
Introducción a Mathematica Mathematica es un paquete de software matemático, de uso fácil y gran capacidad, que nos permitirá realizar las operaciones necesarias para resolver problemas que ya se abordaron en su momento en las diferentes asignaturas de matemáticas en cuatrimestres anteriores. En este primer apartado nos iniciaremos en el conocimiento básico de las funciones más importantes de Mathematica que nos serán imprescindibles para el posterior desarrollo de las prácticas de las diversas asignaturas. En cada práctica se hará un estudio de los comandos específicos que son necesarios para el desarrollo de las mismas 1.- Estructura interna de Mathematica Este paquete tiene una estructura que permite su utilización en diferentes entornos, Pc, Mac, Unix, etc. Para ello está dispuesto en dos partes fundamentales. El Kernel (motor de cálculo ) y el Front End (Interfaz de comunicación con el usuario). Cuando se comienza a utilizar el programa se activa el Front End con lo que se puede comenzar a introducir datos y expresiones. En el momento en que se desea realizar la primera operación se activa el Kernel que es el módulo que realiza el cálculo. En el Kernel se encuentran introducidos los procedimientos de cálculo relacionados con una gran cantidad de operaciones ( las más habituales ). Sin embargo, dada la potencia de cálculo del paquete, opera- ciones y procedimientos más complejos se encuentran almacenados en diferentes Packages que deben ser activados antes de realizar los cálculos con ese tipo de sentencias. En el entorno Windows en que nos movemos, el Front End está dispuesto de manera que todo el desarrollo realizado puede ser almacenado prácticamente como en un editor de texto y tiene además todas las características de conectividad con otros paquetes que funcionen en el mismo entorno windows (OLE). También, muchos de los comandos que ejecuta Mathematica han sido introducidos en ventanas gráficas Palettes que permiten una más rápida implementación de las sentencias y evitan memorizar parte de los comandos utilizados. Todas estas características permiten un manejo sencillo y rápido de modo que, con una pequeña introducción a las funciones básicas, al modo de introducir datos y la utilización de la ayuda, se puede manejar con soltura en un corto espacio de tiempo. Introduccion a mathematica.nb 1

Upload: others

Post on 05-May-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Introducción a Mathematica

Mathematica es un paquete de software matemático, de uso fácil y gran capacidad, que nos permitirá

realizar las operaciones necesarias para resolver problemas que ya se abordaron en su momento en

las diferentes asignaturas de matemáticas en cuatrimestres anteriores. En este primer apartado nos

iniciaremos en el conocimiento básico de las funciones más importantes de Mathematica que nos

serán imprescindibles para el posterior desarrollo de las prácticas de las diversas asignaturas. En

cada práctica se hará un estudio de los comandos específicos que son necesarios para el desarrollo

de las mismas

1.- Estructura interna de Mathematica Este paquete tiene una estructura que permite su utilización en diferentes entornos, Pc, Mac, Unix,

etc.

Para ello está dispuesto en dos partes fundamentales. El Kernel (motor de cálculo ) y el Front End

(Interfaz de comunicación con el usuario). Cuando se comienza a utilizar el programa se activa el

Front End con lo que se puede comenzar a introducir datos y expresiones. En el momento en que se

desea realizar la primera operación se activa el Kernel que es el módulo que realiza el cálculo. En el

Kernel se encuentran introducidos los procedimientos de cálculo relacionados con una gran cantidad

de operaciones ( las más habituales ). Sin embargo, dada la potencia de cálculo del paquete, opera-

ciones y procedimientos más complejos se encuentran almacenados en diferentes Packages que

deben ser activados antes de realizar los cálculos con ese tipo de sentencias.

En el entorno Windows en que nos movemos, el Front End está dispuesto de manera que todo el

desarrollo realizado puede ser almacenado prácticamente como en un editor de texto y tiene además

todas las características de conectividad con otros paquetes que funcionen en el mismo entorno

windows (OLE).

También, muchos de los comandos que ejecuta Mathematica han sido introducidos en ventanas

gráficas Palettes que permiten una más rápida implementación de las sentencias y evitan memorizar

parte de los comandos utilizados.

Todas estas características permiten un manejo sencillo y rápido de modo que, con una pequeña

introducción a las funciones básicas, al modo de introducir datos y la utilización de la ayuda, se

puede manejar con soltura en un corto espacio de tiempo.

Introduccion a mathematica.nb 1

2.- Introducción de datos y operaciones

Comenzar a trabajar con Mathematica es muy sencillo, basta con introducir la operación que se

desea realizar y pulsar las teclas Shift + Intro. Así Mathematica realiza la operación

In[1]:= 2∗3

Out[1]= 6

De este modo las operaciones quedan numeradas en el orden en que se van realizando, con lo que se

pueden ir utilizando los resultados previos con solo indicar en que momento se obtuvieron. El

resultado de la última operación se puede recuperar utilizando el símbolo %, el penúltimo mediante

%% y en general el resultado de la k-ésima operación con el símbolo %k.Por tanto, la siguiente

operación hace referencia al resultado obtenido en la primera operación

In[2]:= H3 + 9Lê%1Out[2]= 2

En Mathematica el producto de dos factores se puede representar tanto por el asterisco como por un

espacio en blanco. Es importante recordar que cuando se opera con variables no es lo mismo escribir

x y que xy ya que Mathematica en el primer caso entiende x*y mientras que en el segundo considera

una nueva variable llamada (xy).

Las operaciones algebraicas comunes y el orden de evaluación de los diferentes factores sigue el

mismo criterio que cualquier lenguaje de programación. En cualquier caso siempre se puede contro-

lar la operación que se realiza colocando paréntesis.

3.- Precisión en el cálculoMathemática intenta siempre llegar al resultado más aproximado en cada operacion que realiza y

siempre que puede llega al resultado exacto. De este modo cuando se realiza el cociente de dos

números enteros matemática da como resultado dicho cociente puesto que si sacara un número

decimal perdería precisión.

In[3]:= 3ê5Out[3]=

35

Introduccion a mathematica.nb 2

Lo mismo sucede cuando se realizan operaciones con variables. Siempre que no se pueda simplificar

Mathematica presenta el valor que se ha introducido.

In[4]:= Hx^3 + 5Lêx^2Out[4]=

5 + x3

x2

En ocasiones puede interesar llegar a un resultado aproximado en vez de al resultado exacto, para

hacerse una idea del orden de magnitud del resultado obtenido. Para ello se pueden aplicar tres

métodos

a) Introducir alguno de los factores de la operación que se desea realizar de forma aproximada. Para

ello basta con poner en forma decimal algún factor. Ej: 10 = 10.0 ( con poner tan solo el punto

decimal es suficiente)

In[5]:= 3.ê5Out[5]= 0.6

b) Utilizar el comando N[ ]. Con este comando se puede obtener el resultado de forma aproximada e

incluso indicar el número de decimales que se desea que aparezcan. Primero se introduce la oper-

ación a realizar y separado con una coma el número de dígitos significativos.

In[6]:= N@20ê17, 5DOut[6]= 1.1765

c) Utilizar el comando N pero al final de la expresión que se desea evaluar de la siguiente manera

expr //N ( Por defecto Mathematica presenta 6 dígitos significativos ).

In[7]:= 20ê17 êê NOut[7]= 1.17647

4.- Comandos y variables predefinidasMathematica incorpora tanto sus propios comandos como algunas variables de uso muy frecuente de

modo que la primera letra es siempre mayúscula. Para evitar confusiones o errores entre las variables

definidas por el usuario y las ya definidas por el programa se recomienda definir variables propias

que comiencen por letras minúsculas. Entre las variables definidas en el programa se encuentran Pi,

E, I.

Introduccion a mathematica.nb 3

In[8]:= N@PiDOut[8]= 3.14159

In[9]:= N@EDOut[9]= 2.71828

In[10]:=,H−1L

Out[10]=

En cuanto a los comandos, todos ellos comienzan también con mayúscula y además el argumento

que introducimos así como el resto de datos para el control de la operación van entre corchetes.

Comando[arg , control_1, control_2, . . . ]

In[11]:= Cos@Piê3DOut[11]=

12

In[12]:= Plot3D@Sin@x∗yD, 8x, −2, 2<, 8 y, −2, 2<D

-2-1

01

2-2

-1012

-1-0.5

00.51

2-1

01

Out[12]= SurfaceGraphics

4.1.- Funciones Matemáticas Comunes

Las funciones matemáticas más comunmente utilizadas pueden introducirse directamente atendi-

endo al comando o también mediante las paletas que proporciona Mathematica.

Para uitlizar estas Paletas basta con situarse en la barra superior en el comando File y en Palettes

seleccionar la paleta Basic Calculations. En esta paleta aparecen tanto funciones como comandos

muy utilizados.

Por ejemplo, para indicar que se desea realizar una raiz cuadrada se puede utilizar el comando Sqrt[ ]

o también se puede utilizar el icono correspondiente que aparece en la paleta è!!!!Ñ en este caso basta

Introduccion a mathematica.nb 4

con rellenar el recuadro con la expresión que se desea evaluar.

En esta paleta también aparecen funciones trigonometricas tanto directas como inversas Sin[ ] ,

ArcCos[ ] , y las correspondientes expresiones Hiperbólicas Cosh[ ], ArcTanh[ ].

Repasando esta paleta se pueden encontrar funciones como el factorial !, el entero mas cercano a x

Round[x], etc.

Ejercicios de las secciónes 2,3,4- Utilice N para calcular p con 50 decimales.

- Utilice N para ver a que entero se aproxima E p . A continuación utilizar los comandos Floor[E p ] y

Ceiling[E p ].

- Calcule dos números aleatorios con Random[ ] y a continuación multiplíquelos

5.- ListasEn muchas ocasiones es necesario utilizar datos que se encuentran relacionados entre si y que

pueden ser todos ellos el argumento de una función. En esas ocasiones utilizamos listas para definir

todos estos elementos.

Una lista contiene elementos que se encuentran separados por comas de la siguiente manera:

In[13]:= 81, 3, 6, 9, 12<Out[13]= 81, 3, 6, 9, 12<

De este modo todos estos elementos se pueden utilizar como una única variable.

In[14]:= 2^%

Out[14]= 82, 8, 64, 512, 4096<En una lista se pueden introducir elementos que no sean del mismo tipo, como valores numéricos,

variables, texto, etc. En estos casos deberemos referirnos a uno específicamente para poder realizar

la operación correspondiente. Para ello se considera la posición que ocupa dicho elemento en la lista

y se hace referencia a él de la siguiente manera:

In[15]:= a = 82.4, x, 8 2, 6<, Pi<Out[15]= 82.4, x, 82, 6<, π<

Una vez definida la lista pasamos a operar con los elementos de la misma. La expresión a[[i]] hace

referencia al elemento i-esimo de la lista.

Introduccion a mathematica.nb 5

In[16]:= 3∗a@@1DDOut[16]= 7.2

In[17]:= a@@2DD^3Out[17]= x3

In[18]:= Cos@a@@4DDDOut[18]= −1

In[19]:= 2∗a@@3DDOut[19]= 84, 12<

El tercer elemento de la lista es a su vez una lista por lo que se puede hacer referencia al elemento en

si, a[[3]], o a cada uno de los elementos que lo componen a[[3,1]] y a[[3,2]] pudiendo operar con

ellos por separado

In[20]:= a@@2DD^a@@3, 1DDOut[20]= x2

In[21]:= a@@2DD^a@@3, 2DDOut[21]= x6

Este tipo de listas tienen gran aplicación, para dar límites de integración, zonas donde se desea

dibujar una función y fundamentalmente para el trabajo con matrices. Toda matriz se expresa como

una lista, de modo que se puede definir un vector como una lista unidimensional {1,2,3}mientras

que una matriz es una lista bidimensional {{1,3,5},{2,4,6}} (matriz 2x3). Mathematica cuando

devuelve resultados también los devuelve en forma de lista, por ejemplo cuando proporciona las

raices de un polinomio.

Ejemplos:

In[22]:= Plot@x^2, 8x, −3, 3<D

Introduccion a mathematica.nb 6

-3 -2 -1 1 2 3

2

4

6

8

Out[22]= Graphics

In[23]:= Integrate@x^2, 8x, 0, 2<DOut[23]=

83

In[24]:= a = 881, 3, 5<, 8 2, 4, 6<<Out[24]= 881, 3, 5<, 82, 4, 6<<In[25]:= MatrixForm@aD

Out[25]//MatrixForm=J 1 3 52 4 6

NIn[26]:= Chop@Solve @x^3 + 2 x^2 − 5 x − 4 == 0, xD êê ND

Out[26]= 88x → 1.85577<, 8x → −3.17741<, 8x → −0.678363<<Las operaciones 24 y 25 hacen referencia a operaciones con matrices. La 24 define una matriz de

dos filas y tres columnas mientras que MatrixForm[ ] representa la Lista anterior en forma matricial.

La última operación calcula las raices de la ecuación y devuelve una lista de tres listas cada una de

ellas con un elemento ( una solución de la ecuación).

Como veremos posteriormente, no será necesario memorizar todo este tipo de comandos puesto que

una de las herramientas más útiles de Mathematica 3.0 (las paletas de comandos) nos permitirá

introducir estas sentencias de otra forma

Utilizando el comando Table se pueden generar listas sin dar explícitamente cada uno de los elemen-

tos que la componen. Basta con indicar la expresión a través de la que se genera y el número de

elementos que la componen de la siguiente manera:

Table[expresión,{i, min,max,paso}] donde la expresión es una expresión en la que i variará entre

los valores mínimo y máximo especificados y considerando el paso indicado en la lista.

In[27]:= Table@x^i, 8i, 2, 9, 2<DOut[27]= 8x2, x4, x6, x8<

Introduccion a mathematica.nb 7

Se pueden generar de esta manera listas de varias dimensiones, introduciendo en vez de una única

expresión una lista de expresiones

In[28]:= Table@8E^Hj − 2L, j∗2ê3<, 8 j, 3, 5<DOut[28]= 98 , 2<, 9 2, 8

3=, 9 3, 10

3==

Si no se indica el paso se considera que vale uno. De igual manera, si no se indica el valor mínimo se

comienza desde uno

In[29]:= Table@i, 8 i, 4<DOut[29]= 81, 2, 3, 4<

Asi como conseguimos listas dimensiones introduciendo varias expresiones,también se pueden

conseguir listas de este tipo introduciendo varios índices.

In[30]:= Table@i + j, 8 i, 1, 3<, 8 j, 2, 5<DOut[30]= 883, 4, 5, 6<, 84, 5, 6, 7<, 85, 6, 7, 8<<In[31]:= MatrixForm@%D

Out[31]//MatrixForm=ikjjjjjj 3 4 5 64 5 6 75 6 7 8

y{zzzzzzSe ha obtenido una matriz bidimensional en las columnas hacen referencia a todos distintos valores

de j (2,3,4,5) mientras que las filas hacen referencia a los valores de i (1,2,3)

Ejercicios de la sección 5- Utilice Table para hacer una lista de cinco nueves

- Utilice Table para hacer una lista conjunta de los cuadrados y los cubos de los numeros pares del

uno al nueve

- Utilice Table para crear una lista con las potencias de x de 2 a 9 con paso 3

- Seleccione de la lista anterior x5 y evalúelo para x = 2

- Crear con el comando Table una matriz 3 x 2

6.- Funciones definidas por el usuario

Introduccion a mathematica.nb 8

En general los ejercicios que realizaremos con Mathematica no serán únicamente operaciones

aritméticas sino que se necesitará utilizar funciones definidas por el usuario para realizar el análisis

de las mismas asi como para operar con elllas. Por ello se debe aprender a definir funciones de una

o varias variables, así como evaluar las mismas para cualquier punto.

6.1.-Definición de funciones

Para definir funciones, igual que cualquier otra variable definida por el usuario, se recomienda

utilizar palabras que empiecen por minúscula o letras minúsculas, para evitar que las variables

definidas por el usuario se confundan con variables o comandos propios de Mathematica.

La definición de funciones es muy sencilla basta con indicar la expresión correspondiente de la

siguiente manera:

In[32]:= f@x_D := x^3 + 2 x^2 + 3 x + 5

Esta sentencia no da ningún resultado puesto que tan solo se trata de una definición. Para ver que

efectivamente la expresión que se ha introducido se corresponde con la deseada basta con preguntar

cual es la función f que se ha definido, de la siguiente manera:

In[33]:= ?f

Global`f

f@x_D := x3 + 2 x2 + 3 x + 5

Es fundamental definir de esta manera las funciones, colocando como variable independiente la

variable x_, este símbolo permite considerar la variable x como una variable global que puede ser

tanto un valor numérico como una expresión en la que haya definidas otras variables

In[34]:= f@y − zDOut[34]= 5 + 3 Hy − zL + 2 Hy − zL2 + Hy − zL3In[35]:= f@3D

Out[35]= 59

Del mismo modo se pueden asignar valores a las variables de las funciones a través de la expresión /.

de la forma siguiente:

In[36]:= f@xD ê. x −> 3

Introduccion a mathematica.nb 9

Out[36]= 59

In[37]:= f@xD ê. x −> u + v

Out[37]= 5 + 3 Hu + vL + 2 Hu + vL2 + Hu + vL3El símbolo /. se puede considerar como "Tal que" de forma que la última operación se puede traducir

como: calcular cuanto vale f[x] tal que x=a+b. Lo mismo que se ha realizado para una función de

una variable se podría reañizar para funciones de varias variables.

In[38]:= m@x_, y_D := x^2 + 2 y x + 5 x + 2

In[39]:= m@x, yD ê. 8x −> 2, y −> 5<Out[39]= 36

In[40]:= m@x, yD ê. 8x −> r − s, y −> t<Out[40]= 2 + 5 Hr − sL + Hr − sL2 + 2 Hr − sL t

Las funciones que se han definido hasta el momento tienen un dominio que para las funciones

polinómicas, por ejemplo, es todo el conjunto de los números reales. Sin embargo se pueden definir

también funciones a trozos, definiendo en cada caso en que dominio esta definida la función. Se

pueden representar este tipo de funciones de tres formas distintas.

1.- Asignando sucesivamente los valores de la función en cada intervalo.

In[41]:= g@x_ ê; x < −2D := −3 x;g@x_ ê; −2 <= x <= 2D := 6;g@x_ ê; x > 2D := 3 x

In[44]:= Plot@g@xD, 8x, −4, 4<, PlotRange −> 80, 12<D

-4 -2 2 4

24681012

Out[44]= Graphics

Se ha definido la función g[x] dividida en tres trozos,x<-2 , -2<=x<=2 , x>2.

Se puede definir la misma función con el comando Which:

Introduccion a mathematica.nb 10

In[45]:= h@x_D := Which@ x < −2, −3 x, −2 <= x <= 2, 6, x > 2, 3 xDIn[46]:= Plot@h@xD, 8x, −4, 4<D

-4 -2 2 4

789101112

Out[46]= Graphics

En este caso se definen los intervalos y seguidos con comas los valores de la función en estos

intervalos de la forma: Which[intervalo1, valor, intervalo2,valor,......]

Por último, otra forma de definir funciones a trozos es introduciendo el comando if

In[47]:= j@x_D := If@x < 3, 2, x − 2DIn[48]:= Plot@j@xD, 8x, 0, 6<D

1 2 3 4 5 6

1.52

2.53

3.54

Out[48]= Graphics

En este caso debido a la nomenclatura del comando If tan solo se pueden dividir en dos intervalos ya

que se pueden asignar valores distintos en función de que se cumpla la condición o no se cumpla. El

comando If se define de la siguiente manera:

If [condición,expresión1,expresión2]. De esta manera si se cumple la condición se ejecuta la

expresión 1 y si no se cumple la expresión se ejecuta la expresión 2.

6.2.- Operando con expresiones algebraicas

Cuando se opera con expresiones algebraicas Mathematica proporciona el resultado exacto ( si

puede conseguirlo ). Sin embargo las expresiones que se obtienen pueden parecer muy complejas

puesto que en ese proceso el paquete no se preocupa de reducir al máximo la expresión. Por ello

Introduccion a mathematica.nb 11

siempre que las expresiones resulten complejas es muy ùtil considerar el comando Simplify[ ] que

simplifica al máximo la expresión con que se trabaja. Por ejemplo:

In[49]:= x^3 + 3 x^2 + 3 x + 1

Out[49]= 1 + 3 x + 3 x2 + x3

In[50]:= Simplify@%DOut[50]= H1 + xL3In[51]:= ‡ 1

x4 − 1 x

Out[51]=14H−2 ArcTan@xD + Log@−1 + xD − Log@1 + xDL

In[52]:= D@%, xDOut[52]=

14J 1

−1 + x−

11 + x

−2

1 + x2N

In[53]:= Simplify@%DOut[53]=

1−1 + x4

En las tres ùltimas operaciones se ha realizado una integral indefinida, a continuación se ha realizado

la derivada del resultado y por ùltimo se ha simplificado la expresión

En este último ejemplo vemos como obtenemos el resultado inicial al derivar el resultado obtenido

de la integral anterior, aunque si no hubieramos utilizado el comando Simplify[ ] resultaría difícil

darse cuenta de ello.

Otra operación que se puede realizar es la de obtener los factores de una expresión algebraica, muy

ùtil para obtener las raices de un polinomio, por ejemplo. Para ello se utiliza el comando Factor[ ]

In[54]:= 1 + 4 x + 6 x2 + 4 x3 + x4 + 12 y + 36 x y + 36 x2 y +

12 x3 y + 54 y2 + 108 x y2 + 54 x2 y2 + 108 y3 + 108 x y3 + 81 y4

Out[54]= 1 + 4 x + 6 x2 + 4 x3 + x4 + 12 y + 36 x y + 36 x2 y +

12 x3 y + 54 y2 + 108 x y2 + 54 x2 y2 + 108 y3 + 108 x y3 + 81 y4

In[55]:= Factor@%DOut[55]= H1 + x + 3 yL4

Introduccion a mathematica.nb 12

In[56]:= Plot3D@%%, 8x, −5, 5<, 8y, −2, 2<D

-4-2

02

4 -2

-1012

020004000

-4-2

02

4

Out[56]= SurfaceGraphics

In[57]:= << Graphics`ImplicitPlot`

In[58]:= ImplicitPlot@1 + x + 3 y == 0, 8x, −5, 5<D-4 -2 2 4

-2-1.5-1

-0.50.51

Out[58]= Graphics

De este modo la representación en dos dimensiones indica los puntos de corte de la superficie

definida con el plano z=0 .

Del mismo modo puede interesar en ocasiones obtener el desarrollo completo de una expresión

algebraica que está simplificada. Para ello se utiliza le comando Expand[ ] como veremos en el

siguiente ejemplo

In[59]:= Hx^2 + 1L^2∗Hx + 2L^3Out[59]= H2 + xL3 H1 + x2L2In[60]:= Expand@%D

Out[60]= 8 + 12 x + 22 x2 + 25 x3 + 20 x4 + 14 x5 + 6 x6 + x7

Ejercicios de la sección 6- Representar como f(x) la función ( x+2 )Hx - 1L2 Hx - 2L3

- Dibujar dicha función con el comando Plot entre x = -3 , x = 3

Introduccion a mathematica.nb 13

- Expandir la expresión de f(x) hasta obtener un polinomio de grado 6 en x

- Aplicar la expresión Factor [ ] para llegar a la expresión de partida.

7.- PaletasUna de las mejoras sustanciales de Mathematica 3.0 en cuanto a la comunicación con el usuario es la

presentación de paletas que permiten introducir sentencias y realizar operaciones de forma más

sencilla. Para algunas sentencias de Mathematica como Sqrt[ ] ( Raiz Cuadrada ), Sum[ ] ( Sumato-

rio ), Product[ ] ( Producto ),etc. resulta complicado escribir en el notebook cual es la operación que

se desea realizar, mientras que con las paletas estas operaciones vienen representadas por sus

símbolos matemáticos por lo que basta con introducir los datos de la operación para que ésta se

pueda llevar a cabo. Los símbolos que utilizan estas paletas para realizar las operaciones anteriores

son: è!!!!Ñ ,⁄Ñ=Ñ

Ñ Ñ , ¤Ñ=ÑÑ Ñ . Introduciendo en los recuadros los valores deseados se completa la

sentencia con lo que se puede realizar la operación. Basta con pulsar el tabulador para pasar de un

recuadro a otro e ir llenando la sentencia completa.

En este sentido Mathematica 3.0 introduce ya como predefinidas una serie de paletas en las que se

representan tanto comandos, como operaciones, caracteres, matrices,etc. Para ver todas ellas basta

con activar en el menu File la palabra Palettes con lo que se puede ver todas las paletas predefinidas.

Una de las aplicaciones mas comodas de las paletas es la definición de matrices puesto que partiendo

de matrices 2 x 2 que aparecen en la paleta se puede llegar a conseguir matrices de cualquier dimen-

sión. Se aumenta el número de filas con el comando " Control + Intro" mientras que el número de

columnas aumenta al pulsar "Control + ,"

8.- Gráficos con Mathematica Una herramienta de apoyo muy importante a la hora de resolver una gran cantidad de problemas

matemáticos ( sobre todo de una y dos variables ) es la representación de funciones. De esta manera

se pueden ver cuales son los extremos de una función, sus asíntotas, etc.

Mathematica dispone de una gran cantidad de comandos que permiten representar curvas y superfi-

Introduccion a mathematica.nb 14

cies. En este apartado se hará una exposición general de los comandos que se utilizarán posterior-

mente en las prácticas de las diferentes asignaturas. Debido a que la nomenclatura es exactamente

igual se introducirán de forma conjunta las expresiones de dibujo en dos y tres variables.

8.1.- Plot, Plot3D

Estos comandos generan la función f en un recinto definido por el usuario. La forma de expresarlo es

la siguiente:

Plot[ f , {x,x_min,x_max}]

Plot3D[f , {x,x_min,x_max},{y,y_min,y_max}]

Ejemplos:

Definimos previamente dos funciones, una de una variable y otra de dos variables y posteriormente

las representamos.

In[61]:= f@x_D := Sin@xD + x^2ê2In[62]:= g@x_, y_D := x^2 + y∗x − 2 y

A continuación pasamos a representar ambas funciones

In[63]:= Plot@f@xD, 8x, −Pi, Pi<D

-3 -2 -1 1 2 3

1

2

3

4

5

Out[63]= Graphics

In[64]:= Plot3D@g@x, yD, 8x, −2, 2<, 8y, −2, 2<D

-2-1

01

2-2

-1

012

-505

10

2-1

01

Introduccion a mathematica.nb 15

Out[64]= SurfaceGraphics

Estos dos comandos permiten dibujar funciones de la forma y = f(x) o z = g(x,y). Por otro lado una

grán cantidad de funciones no vienen representadas de forma explícita e incluso es imposible

despejar una de las variables en función del resto. Por ello se necesita otra serie de comandos que

nos permitan representar esas funciones. Las otras dos formas en que mas habitualmente se presen-

tan las funciones son la forma paramétrica y la forma implícita. A continuación veremos como se

representan las funciones cuando viene definidas de esta manera.

8.2.- ParametricPlot, ParametricPlot3D

Estos comandos permiten representar funciones que vienen definidas a través de parámetros. Una

función de dos variables se representaría de la siguiente manera:

x = x(t)

y = y(t)A medida que varía el parametro se obtienen puntos de la curva.

Para el caso de tres dimensiones a través de expresiones paramétricas se pueden representar tanto

curvas como superficies. Una curva se representa de la siguiente manera:

x = x(t)

y = y(t)Variando t se obtiene una familia simplemente infinita de puntos ( una curva )

z = z(t)

Para representar una superficie se necesitan dos parámetros, de forma que se obtiene una familia

doblemente infinita de puntos que generan la superficie. La superficie se reptresenta de la siguiente

manera:

x=x( u,v)

y=y( u,v)

z=z( u,v)

Vista esta introducción podemos presentar la forma de utilizar los comandos ParametricPlot y

ParametricPlot3D.

ParametricPlot [{x,y},{t,t_min,t_max}]

ParametricPlot3D[{x,y,z},{u,u_min,u_max},{v,v_min,v_max}]

In[65]:= ParametricPlot@8Cos@5 tD, Sin@3 tD<, 8t, 0, 2 π<D

Introduccion a mathematica.nb 16

-1 -0.5 0.5 1

-1

-0.5

0.5

1

Out[65]= Graphics

La función representada es x=Cos[5*t],y=Sin[3*t].

Para el caso de ParametricPlot3D veremos un ejemplo de una curva y otro de una superficie.

In[66]:= ParametricPlot3D@8Cos@5 tD, Sin@3 tD, Sin@tD<, 8t, 0, 2 π<D

-1-0.5

00.5

1

-1-0.5

00.5

1

-1-0.5

0

0.5

1

-1-0.5

00.5

1-0.5

00.5

Out[66]= Graphics3D

Se trata de una curva puesto que tan solo se tiene un parámetro. La función es de la forma:

x=Cos[5t]

y=Sin[3t]

z=Sin[t]

Para el caso de una superficie:

In[67]:= ParametricPlot3D@8Cos@uD∗Cos@vD, Sin@uD∗Cos@vD, Sin@vD<,8u, 0, 2∗Pi<, 8v, −Pi, Pi<D

Introduccion a mathematica.nb 17

-1-0.5

00.5

1

-1-0.5

00.5

1

-1-0.5

0

0.5

1

-1-0.5

00 5

1-0.5

00.5

Out[67]= Graphics3D

La superficie representada es :

x=Cos[u]*Cos[v]

y=Sin[u]*Cos[v]

z=Sin[v]

8.3.- ImplicitPlot

Este comando se emplea para representar funciones definidas de forma implicita de dos variables.

Para poder utilizar estos comandos se debe hacer referencia a paquetes especificos que tienen los

programas con los que se ejecutan estos comandos. Para cargar estos paquetes se debe ejecutar la

siguiente orden:

<<Graphics`ImplicitPlot`

Estas instrucciones permiten cargar la librerís de tipo grafico que permite representar funciones

implicitas de dos variables.

In[68]:= << Graphics`ImplicitPlot`

Una vez cargadas las librerías, pasamos a explicar la nomenclatura de cada uno de los dos coman-

dos. ImplicitPlot[eq,{x,x_min,x_max}]. Donde eq es la ecuación que define la función implicita y se

introduce además el intervalo donde se dibuja la función.

In[69]:= ImplicitPlot@x^2 + y^2 − 4 == 0, 8x, −3, 3<D

Introduccion a mathematica.nb 18

-2 -1 1 2

-2

-1

1

2

Out[69]= Graphics

In[70]:= h@x_, y_D := 3∗x + 5∗y

In[71]:= ImplicitPlot@h@x, yD == 3, 8x, −3, 3<D

-3 -2 -1 1 2 3

-1-0.5

0.51

1.52

Out[71]= Graphics

In[72]:= Show@%, %%%D

-3 -2 -1 1 2 3

-2

-1

1

2

Out[72]= Graphics

In[73]:= ImplicitPlot@8x^2 + y^2 − 4 == 0, h@x, yD == 3<, 8x, −3, 3<D

Introduccion a mathematica.nb 19

-3 -2 -1 1 2 3

-2

-1

1

2

Out[73]= Graphics

En los dos últimos ejemplos se han presentado dos formas distintas de representar varias finciones

en un mismo gráfico. El comando Show[ ] permite representar diferentes gráficos combinados.

Mientras que el comando ImplicitPlot permite representar varios gráficos a la vez agrupados entre

llaves

El comando ImplicitPLot3D representa funciones de tres variables en forma implícita. La nomencla-

tura es de la siguiente forma:

ImplicitPlot3D[eq,{x,x_min,x_max},{y,y_min,y_max},{z,z_min,z_max}]

Ejemplos:

Ejercicios de la sección 8

- Dibujar la función sen(x)/x así como la función sen(x) en el intervalo (-10,10)

- Dibujar la función x*y

- Dibujar la función paramétrica x = 4 Cos(-11t / 4)+7 Cos(t)

y = 4 Sin(-11t / 4)+7 Sin(t) Desde 0 a 8Pi

- Dibujar la funcion x= Cos(u)Sin(v)

y= Cos(u)Cos(v)

z=v

- Dibujar la función : 4x^2+y^2=1

9.- PackagesUna de las caracteríaticas más importantes de Mathematica es que se trata de un sistema extensible.

Es decir, hay una gran cantidad de funciones matemáticas, constantes , etc. que están introducidas en

el programa. Pero utilizando el lenguaje de Mathematica se pueden añadir más funciones a las ya

existentes.

En general, cuando se realizan las operaciones mas comunes es suficiente con el programa para que

se puedan ejecutar. Sin embargo cuando se trabaja en un campo específico, hay una serie de funci-

Introduccion a mathematica.nb 20

ones que no están especificadas en Mathematica y se introducen de otro modo.

En estos casos se pueden utilizar los Mathematica Packages que son librerías en las que se encuent-

ran definidos procedimientos de cálculo relacionados con operaciones matemáticas mas específicas.

Estos Packages consisten en funciones definidas en el lenguaje de Mathematica que le permiten al

programa realizar estas operaciones mas complejas.

Para poder utilizar las funciones que se encuentran en estos Packages en primer lugar se debe indicar

a Mathematica que se van a utilizar en la sesión funciones específicas de ese paquete. Para ello se

carga el paquete en cuestión de la siguiente manera:

In[74]:= << Calculus`VectorAnalysis`

Una vez cargado este Package ya se pueden realizar operaciones relacionadas con los comando que

introduce este fichero como pueden ser el cálculo de la divergencia , del gradiente, etc

In[75]:= Grad@5 x^2 y^3 z^4, Cartesian@x, y, zDDOut[75]= 810 x y3 z4, 15 x2 y2 z4, 20 x2 y3 z3<

Existen una gran cantidad de Packages que ya vienen cargados en la instalación de Mathematicas

referentes a diversos campos como son :

Algebra, Cálculo, Matemática Discreta, Geometría, Gráficos, Algebra Lineal, Estadística ,etc.

Dentro de cada uno de estos campos se encuentran diversos Packages que se van cargando. Para ver

con detenimiento los distintos Packages que proporciona Mathematica utilice la ayuda de Mathemat-

ica y en el apartado de Add-ons seleccione el campo Standard Packages. A partir de aqui selecciona-

ndo cada uno de los campos se pueden ver los diferentes Packages que existen para cada rama

matemática.

Como se puede apreciar al cargar el paquete en la sesion de Mathematica se hace referencia al

campo general del paquete (en nuestro caso Calculus) y a continuación encerrado entre tildes " ` " el

paquete particular que se desea cargar (`VectorAnalysis`).

Recordando operaciones que se hicieron en su momento, al explicar ImplicitPlot e ImplicitPlot3D

vimos como se tenían que cargar dos paquetes que se encontraban en el directorio Graphics que eran:

<<Graphics`ImplicitPlot`

<<Graphics`ImplicitPlot3D`

10.- Resolución de EcuacionesMathematica dispone de un amplio grupo de sentencias que permiten resolver ecuaciones. Dependi-

endo del tipo de ecuación que se desee resolver y las variables y parámetros que tenga será conve-

niente utilizar uno u otro de los comandos que a continuación se exponen.

Roots[ ecuación , variable ] permite obtener las raices de una ecuación polinómica en la variable que

Introduccion a mathematica.nb 21

se indica en la expresión. Este comando funcionará correctamente siempre que se pueda obtener de

forma exacta la raiz del polinomio.

In[76]:= Roots@Hx + 2L^3∗Hx − 3L == 0, xDOut[76]= x 3 »» x −2 »» x −2 »» x −2

In[77]:= Roots@Hx + y − 1L∗Hx − 2L == 0, xDOut[77]= x 2 »» x 1 − y

In[78]:= Roots@Hx + y − 1L∗Hx − 2L == 0, yDOut[78]= y 1 − x

La expresión Roots[ ] devuelve todas las raices de la ecuación.En caso de haber mas de una solución

relaciona todas ellas mediante operadores lógicos ( | | significa OR , && significa AND ).

En caso que no se pueda obtener el valor exacto de la raiz se utilizarà el comando NRoots[ ] que

proporciona una solución aproximada.

In[79]:= Roots@x^7 + x + 4 == 0, xDOut[79]= x Root@4 + #1 + #17 &, 1D »»

x Root@4 + #1 + #17 &, 2D »» x Root@4 + #1 + #17 &, 3D »»x Root@4 + #1 + #17 &, 4D »» x Root@4 + #1 + #17 &, 5D »»x Root@4 + #1 + #17 &, 6D »» x Root@4 + #1 + #17 &, 7D

In[80]:= NRoots@x^7 + x + 4 == 0, xDOut[80]= x −1.16076 »» x −0.776478 − 0.89959 »» x −0.776478 + 0.89959 »»

x 0.226587 − 1.21468 »» x 0.226587 + 1.21468 »»x 1.13027 − 0.566349 »» x 1.13027 + 0.566349

En este último ejemplo se puede ver como intentando obtener las raices con el comando Roots no se

llega a una solución por lo que hay que buscar la solución aproximada.

Para un caso mas general en que se desea resolver una ecuación cualquiera se utiliza el comando

Solve[ ] que funciona de la misma manera que el comando Roots[ ]

In[81]:= Solve@Hx + 2L^3∗Hx − 3L == 0, xDOut[81]= 88x → −2<, 8x → −2<, 8x → −2<, 8x → 3<<

Los resultados se presentan en una lista en que se asignan a x un valor con el signo x->.

Cuando no se pueden obtener los valores exactos la solución queda en función del comando Root y

se puede obtener la solución aproximada aplicando el comando N[ ]

Introduccion a mathematica.nb 22

In[82]:= Solve@x^7 + x + 4 == 0, xDOut[82]= 88x → Root@4 + #1 + #17 &, 1D<,8x → Root@4 + #1 + #17 &, 2D<, 8x → Root@4 + #1 + #17 &, 3D<,8x → Root@4 + #1 + #17 &, 4D<, 8x → Root@4 + #1 + #17 &, 5D<,8x → Root@4 + #1 + #17 &, 6D<, 8x → Root@4 + #1 + #17 &, 7D<<In[83]:= N@%D

Out[83]= 88x → −1.16076<, 8x → −0.776478 − 0.89959 <, 8x → −0.776478 + 0.89959 <,8x → 0.226587 − 1.21468 <, 8x → 0.226587 + 1.21468 <,8x → 1.13027 − 0.566349 <, 8x → 1.13027 + 0.566349 <<Este Comando permite resolver ecuaciones que no sean polinómicas como por ejemplo:

In[84]:= Solve@Sin@xD Cos@xD == 0, xD— Solve::ifun :

Inverse functions are being used by Solve, so some solutions may notbe found; use Reduce for complete solution information. More…

Out[84]= 98x → 0<, 9x → −π2=, 9x →

π2==

En este caso se obtienen algunas soluciones triviales y devuelve un mensaje que indica la posible

existencia de mas soluciones

Este comando Solve permite también resolver sistemas de ecuaciones que se representan en una lista

o bien unidas a través del símbolo && (And). Ejemplos de este tipo se verán en las prácticas corre-

spondientes al Algebra.

En muchas ocasiones se emplean parámetros que pueden ir variando según se desee y que mejoran o

empeoran el comportamiento de un sistema. Por ello es muy interesante, poder resolver ecuaciones

en las que se encuentren parámetros. Para ello el comando mas indicado en el paquete Mathematica

es Reduce[ ]. La forma de presentarlo es idéntica a los anteriores. Veamos algún ejemplo:

In[85]:= Clear@a, xDIn[86]:= Reduce@3 a x^3 − 2 x + 3 == 0, xD

Out[86]= a 0 && x 32»»

a ≠ 0 && Hx Root@3 − 2 #1 + 3 a #13 &, 1D »» x Root@3 − 2 #1 + 3 a #13 &, 2D »»x Root@3 − 2 #1 + 3 a #13 &, 3DL

En este ejemplo se ve claramente el funcionamiento del comando. Si a vale cero logicamente se trata

de una ecuación en que solo hay una raiz. Si a es distinto de cero se obtienen tres raices distintas

dado que estamos estudiando un polinomio de grado tres.

Introduccion a mathematica.nb 23

Este comando también se puede emplear cuando se trabaja con un sistema de ecuaciones como en el

caso anterior, definiendo todos ellos entre llaves o con el símbolo &&. Ej:

In[87]:= Clear@a, r, sDIn[88]:= 882, a<, 83, 1<<.8r, s< == 80, 1<

Out[88]= 82 r + a s, 3 r + s< 80, 1<In[89]:= Reduce@%, 8r, s<D

Out[89]= −2 + 3 a ≠ 0 && r a−2 + 3 a

&& s 1 − 3 r

Resuelve el sistema matricial considerando el valor del parámetro a. Lógicamente el valor del

determinante de la matriz tiene que ser no nulo ya que el rango debe ser dos para que exista solución.

Cuando no se pueden obtener soluciones mediante los comandos que se han explicado se debe pasar

a los métodos iterativos para la obtención de soluciones de la ecuación.

Para ello se utiliza el comando FindRoot[ecuación,{x,sol_aprox}] en el que se indica la ecuación

que se desea resolver y un valor cercano a la solución de la ecuación. Debido a esto se recomienda

anteriormente dibujar la función para tener una idea aproximada de la posición de la solución.

Ejemplo: Calcular las soluciones de la ecuación x Sin[x]-1/2= 0

In[90]:= Plot@x Sin@xD − 1ê2, 8x, 0, 4<D1 2 3 4

-3

-2

-1

1

Out[90]= Graphics

In[91]:= FindRoot@x Sin@xD − 1ê2 == 0, 8x, 1<DOut[91]= 8x → 0.740841<In[92]:= FindRoot@x Sin@xD − 1ê2 == 0, 8x, 3<D

Out[92]= 8x → 2.97259<Ejercicios de la sección 10

Introduccion a mathematica.nb 24

- Resolver x^2+2x+2=0

- Resolver x^2+a x+2=0

- Calcular raices de la ecuación Tan[x] == Cos[x] en el intervalo [0 , Pi]

Introduccion a mathematica.nb 25