Você está na página 1de 10

Introducción Programación en Mathematica 1

 « ▸  1 of 12

Introducción
‡ Fechas
‡ En este capítulo...
Programando en Mathematica

El lenguaje de programación de Mathematica

Reescritura de términos

Estilos de programación

Comparación con lenguajes tradicionales

Organización de los programas

 « ▸  2 of 12

Programando en Mathematica: ¿Qué es un programa?


La naturaleza interactiva de Mathematica la hace posible de realizar cálculos útiles sin realmente programar. No hay
necesidad de escribir un programa elaborado de antemano, entonces compilarlo, y finalmente probarlo.

Aquí están una secuencia de cálculos para dibujar líneas coordenadas en el plano complejo. Pero antes hacemos un para de
cosas para inicializar la sesión Mathematica,

Será útil ejecutar los siguientes comandos para iniciar apropiadamente esta sesión Mathematica.

In[1]:= Off@General::"spell"D;
Off@General::"spell1"D;
Puede ser útil también limpiar nombres de variables o parámetros que pueden haber sido usados anterioremente en esta
sesión de Mathematica,

In[3]:= Clear["Global`*"];

 « ▸  3 of 12

Programando en Mathematica: Dibujando líneas de


coordenadas
Aquí está una expresión para un número complejo en coordenadas cartesianas x y y.

©2005 Mar. All rights reserved.


2 Programación en Mathematica M.A. Rodríguez-Meza

In[4]:= z=x+Iy

Out[4]= x+Ây

Las coordenadas de z son las partes real e imaginaria del número z.

In[5]:= cz = 8Re@zD, Im@zD<

Out[5]= 8-Im@yD + Re@xD, Im@xD + Re@yD<

Sabemos que x y y son de valor real, así que podemos simplificar la expresión.

In[6]:= cz = ComplexExpand@czD

Out[6]= 8x, y<

 « ▸  4 of 12

Programando en Mathematica: Dibujando las líneas


horizontales
Ahora generamos una lista de fórmulas para las líneas horizontales (con varios valores constantes de y).

In[7]:= hlines = Table@cz, 8y, -1, 1, 0.2<D

88x, -1<, 8x, -0.8<, 8x, -0.6<, 8x, -0.4<, 8x, -0.2<,
8x, 5.55112 µ 10-17 <, 8x, 0.2<, 8x, 0.4<, 8x, 0.6<, 8x, 0.8<, 8x, 1.<<
Out[7]=

Podemos graficar estas líneas con ParametricPlot[].

In[8]:= hg = ParametricPlot@Evaluate@hlinesD, 8x, -p ê 2, p ê 2<D;


1

0.5

-1.5 -1 -0.5 0.5 1 1.5

-0.5

-1

 « ▸  5 of 12

©2005 Mar. All rights reserved.


Introducción Programación en Mathematica 3

Programando en Mathematica: Dibujando las líneas


verticales
Hacemos lo mismo para las líneas verticales (x constante).

In[9]:= vlines = Table@cz, 8x, -p ê 2, p ê 2, p ê 10<D

99- ÅÅÅÅ , y=, 9- ÅÅÅÅÅÅÅÅ , y=, 9- ÅÅÅÅÅÅÅÅ , y=, 9- ÅÅÅÅ , y=, 9- ÅÅÅÅÅÅÅ , y=,
p 2p 3p p p
Out[9]=

80, y<, 9 ÅÅÅÅÅÅÅ , y=, 9 ÅÅÅÅ , y=, 9 ÅÅÅÅÅÅÅÅ , y=, 9 ÅÅÅÅÅÅÅÅ , y=, 9 ÅÅÅÅ , y==
2 5 10 5 10
p p 3p 2p p
10 5 10 5 2

In[10]:= vg = ParametricPlot@Evaluate@vlinesD, 8y, -1, 1<D;


1

0.5

-1.5 -1 -0.5 0.5 1 1.5

-0.5

-1

 « ▸  6 of 12

Programando en Mathematica: El dibujo final


Finalmente mostramos las dos gráficas juntas.

In[11]:= Show@hg, vgD;


1

0.5

-1.5 -1 -0.5 0.5 1 1.5

-0.5

-1

©2005 Mar. All rights reserved.


4 Programación en Mathematica M.A. Rodríguez-Meza

 « ▸  7 of 12

Programando en Mathematica: Juntamos los cálculos


comunes
Si lo que queremos es realizar los mismos cálculos para funciones otras que x + i y, notaremos pronto la similaridad de los
pasos para las líneas horizontales y verticales.

Estos pasos fueron para las líneas horizontales

hlines = Table@cz, 8y, -1, 1, 0.2<D

hg = ParametricPlot@Evaluate@hlinesD, 8x, -p ê 2, p ê 2<D;

y para las líneas verticales

vlines = Table@cz, 8x, -p ê 2, p ê 2, p ê 10<D

vg = ParametricPlot@Evaluate@vlinesD, 8y, -1, 1<D;

Es natural buscar una forma de simplificar el cálculo identificando las partes similares y convirtiendola en un procedimiento,
es decir, una colección de pasos de cálculo que podemos hacer con un comando simple.

Aquí está tal procedimiento para producir las líneas. Combina los pasos de cálculo de la tabla y la gráfica paramétrica
anteriores. Las partes variables del cálculo son declarados como parámetros del procedimiento, así lo podemos llamar con
diferentes valores.

In[12]:= curves@xy_List, 8a_, a0_, a1_, da_<, 8b_, b0_, b1_<D :=

lines = Table@xy, 8a, a0, a1, da<D;


Module@8lines<,

ParametricPlot@Evaluate@linesD, 8b, b0, b1<D


D

 « ▸  8 of 12

Programando en Mathematica: Un dibujo de la función


seno
Ahora usemos este procedimiento para dibujar las líneas coordenadas de la función seno.

Aquí está la expresión para el seno de un número complejo en coordenadas cartesianas x y y.

In[13]:= z = Sin@x + I yD

Out[13]= Sin@x + Â yD

Las coordenadas son las partes reales e imaginarias del número z, simplificado como antes.

In[14]:= cz = ComplexExpand@8Re@zD, Im@zD<D

Out[14]= 8Cosh@yD Sin@xD, Cos@xD Sinh@yD<

Ahora generemos las líneas horizontales y verticales usando nuestro procedimiento.

©2005 Mar. All rights reserved.


Introducción Programación en Mathematica 5

In[15]:= hg = curves@cz, 8y, -1, 1, 0.2<, 8x, -p ê 2, p ê 2<D

0.5

-1.5 -1 -0.5 0.5 1 1.5

-0.5

-1

Out[15]= Ü Graphics Ü

In[16]:= vg = curves@cz, 8x, -p ê 2, p ê 2, p ê 10<, 8y, -1, 1<D


0.6

0.4

0.2

-1.5 -1 -0.5 0.5 1 1.5


-0.2

-0.4

-0.6
Out[16]= Ü Graphics Ü

Y ahora las mostramos juntas como antes.

©2005 Mar. All rights reserved.


6 Programación en Mathematica M.A. Rodríguez-Meza

In[17]:= Show@hg, vgD;

0.5

-1.5 -1 -0.5 0.5 1 1.5

-0.5

-1

 « ▸  9 of 12

Programando en Mathematica: Un procedimiento más


Una vez más notamos que aparte del primer cálculo, donde aplicamos la función deseada a x + i y, todo es lo mismo, con los
rangos para la gráfica como parámetros adicionales, que quizas quisieramos variar.

Por lo tanto, podemos juntar todos nuestros cálculos en otro procedimiento. Toma la función a usar y los rangos como
parámetros (pero no los nombres de las variables x y y, que son puramente locales).

In[18]:= cartesianMap@func_, 8x0_, x1_, dx_<, 8y0_, y1_, dy_<D :=


Module@8z, x, y, cz, hg, vg<,
z = func@x + I yD;

hg = curves@cz, 8y, y0, y1, dy<, 8x, x0, x1<D;


cz = ComplexExpand@8Re@zD, Im@zD<D;

vg = curves@cz, 8x, x0, x1, dx<, 8y, y0, y1<D;

D
Show@hg, vgD

El uso del procedimiento también significa que nosotros no necesitaremos más alguna variable global, tal como z.

In[19]:= Clear@zD

 « ▸  10 of 12

Programando en Mathematica: Un dibujo de la función


exponencial
Aquí está el dibujo de las líneas de coordenadas bajo la función exponencial.

In[20]:= cartesianMap@Exp, 8-1, 1, 0.2<, 8-2, 2, 0.2<D;

©2005 Mar. All rights reserved.


Introducción Programación en Mathematica 7

-1 1 2

-1

-2

-1 1 2

-1

-2

-1 1 2

-1

-2

 « ▸  11 of 12

Programando en Mathematica: Un dibujo más perfecto


Ahora podemos comenzar a mejorar nuestro program. Las deficiencias obvias que notamos son:

©2005 Mar. All rights reserved.


8 Programación en Mathematica M.A. Rodríguez-Meza

Ë las dos gráficas intermedias no deben ser mostradas.

Ë el dibujo se ve aplastado.

Con experiencia y la documentación de Mathematica podemos corregir estos dos problemas fácilmente.

Para suprimir las gráficas intermedias, usamos la función DisplayTogether[] del paquete estándar Graphics`GraphÖ
ics`.

Para preservar la razón de aspecto, usamos el ajuste de la opción AspectRatioØAutomatic .

Podemos también simplificar los argumentos de curves[], que realmente no necesitamos que las partes sean nombradas
individualmente. Aquí está la siguiente versión de nuestros procedimientos.

In[21]:= Clear@curves, cartesianMapD

In[22]:= curves@xy_List, spread_, bounds_D :=


Module@8lines<,
lines = Table@xy, spreadD;

D
ParametricPlot@Evaluate@linesD, boundsD

In[23]:= Needs@"Graphics`Graphics`"D

In[24]:= cartesianMap@func_, 8x0_, x1_, dx_<, 8y0_, y1_, dy_<D :=


Module@8z, x, y, cz<,
z = func@x + I yD;
cz = ComplexExpand@8Re@zD, Im@zD<D;

curves@cz, 8y, y0, y1, dy<, 8x, x0, x1<D,


DisplayTogether@

curves@cz, 8x, x0, x1, dx<, 8y, y0, y1<D,

D
AspectRatio Ø AutomaticD

Ahora las cosas se ven mejor.

©2005 Mar. All rights reserved.


Introducción Programación en Mathematica 9

In[25]:= cartesianMap@Exp, 8-1, 1, 0.2<, 8-2, 2, 0.2<D;

-1 1 2

-1

-2

 « ▸  12 of 12

Programando en Mathematica: ¿Qué está en un programa?


Note que tan fácil es experimentar, juntar los cálculos en un procedimiento, y modificar nuestro código. Podemos inmediata-
mente intentar nuevas versiones y ver si las cosas trabajan como deseamos.

Enseñarte como escribir tales procedimientos con un entendimiento de lo que está en ellos es uno de los objetivos obvios de
este curso.

Por no paramos allí. Hay más en la programación que simplemente escribir un conjunto de códigos. Cualquier cosa más
complicada que una simple función o destinada para compartir con otros necesita consideración de esos tópicos adicionales.

Ë documentación

Ë manejo de errores

Ë eficiencia

Ë modularidad y ocultación de información

Ë distribución y técnicas de instalación.

En este curso miraremos en todos estos aspectos de la programación en Mathematica, desde los ingredientes más internos de
las funciones y procedimientos hasta los aspectos de ingeniería de software de proyectos más grandes.

©2005 Mar. All rights reserved.


10 Programación en Mathematica M.A. Rodríguez-Meza

Verás también las similaridades del lenguaje de programación en Mathematica con otros lenguajes con los que tu puedes
estar familiarizado y mirarás los estilos avanzados de programación y características únicos de Mathematica.

©2005 Mar. All rights reserved.

Você também pode gostar