Está en la página 1de 303

BREVE MANUAL DE

M
Segunda Edicin
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 0.5 1.5 2 2.5 3

2 1.5 1 0.5 0 -0.5

1 1.5

2 2.5

3 0

0.5

R. Ipanaqu
e upublicaciones t med ne

Breve Manual de Maxima


Segunda Edicin

Breve Manual de Maxima


Segunda Edicin
R. Ipanaqu

Departamento de Matemtica Universidad Nacional de Piura

Robert Ipanaqu Chero


Departamento de Matemtica Universidad Nacional de Piura Urb. Miraores s/n, Castilla, Piura PER

https://sites.google.com/site/ripanaque robertchero@hotmail.com

La composicin de BREVE MANUAL DE MAXIMA, Segunda Edicin,


A se ha hecho en LTEX, usando el editor libre TEXMAKER 3.2.2.

Este documento es libre; se puede redistribuir y/o modicar bajo los trminos de la GNU General Public License tal como lo publica la Free Software Foundation. Para ms detalles vase la GNU General Public License en

http://www.gnu.org/copyleft/gpl.html

Primera Edicin: Mayo 2010, Segunda Edicin: Enero 2012. Publicado por el grupo eumednet. Grupo de Investigacin de la Universidad de Mlaga, Espaa

http://www.eumed.net
Hecho el depsito legal en la Biblioteca Nacional de Espaa con Registro N 10/101865

ISBN-13: 978-84-693-7160-2

En memoria de mi padre, Juan A. Ipanaqu Vargas

ndice general

Prlogo 1. Obtencin de
1.1. 1.2.

xi

Maxima Maxima
. . . . . . . . . . . . . . . . . . .

1
1 2

Descarga . . . . . . . . . . . . . . . . . . . . . . . . . . Instalacin . . . . . . . . . . . . . . . . . . . . . . . . .

2. Funcionamiento de
2.1. 2.2.

9
9 10

Interfaz de cuaderno

Interfaz basada en texto . . . . . . . . . . . . . . . . .

3. Uso del sistema


3.1. 3.2. 3.3. 3.4. 3.5. 3.6. 3.7. 3.8. 3.9.

Maxima

12
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 14 17 20 23 23 24 25 25

La estructura de

Maxima

Cuadernos como documentos

Conguracin de opciones y estilos . . . . . . . . . . . Bsqueda de ayuda . . . . . . . . . . . . . . . . . . . . Reinicio . . . . . . . . . . . . . . . . . . . . . . . . . .

Comentarios . . . . . . . . . . . . . . . . . . . . . . . . Paquetes en

Maxima

. . . . . . . . . . . . . . . . . . .

Advertencias y mensajes . . . . . . . . . . . . . . . . . Interrupcin de clculos . . . . . . . . . . . . . . . . .

vi

ndice

4. Clculos numricos
4.1. 4.2. 4.3. 4.4. 4.5. Aritmtica . . . . . . . . . . . . . . . . . . . . . . . . . Resultados exactos y aproximados . . . . . . . . . . .

26
26 27 30 33 35

Algunas funciones matemticas . . . . . . . . . . . . . Clculos con precisin arbitraria . . . . . . . . . . . .

Nmeros complejos . . . . . . . . . . . . . . . . . . . .

5. Generacin de clculos
5.1. 5.2. 5.3. 5.4. Uso de entradas y salidas previas . . . . . . . . . . . . Denicin de variables . . . . . . . . . . . . . . . . . . Secuencia de operaciones . . . . . . . . . . . . . . . . . Impresin de expresiones sin evaluar . . . . . . . . . .

37
37 39 42 44

6. Clculos algebraicos
6.1. 6.2. 6.3. 6.4. 6.5. 6.6. 6.7. Clculo simblico . . . . . . . . . . . . . . . . . . . . . Valores para smbolos . . . . . . . . . . . . . . . . . .

47
47 50 54 56 58 64 66

Transformacin de expresiones algebraicas . . . . . . . Simplicacin de expresiones algebraicas . . . . . . . . Expresiones puestas en diferentes formas . . . . . . . . Simplicacin con asunciones . . . . . . . . . . . . . .

Seleccin de partes de expresiones algebraicas . . . . .

7. Matemticas simblicas
7.1. 7.2. 7.3. 7.4. 7.5. 7.6. Lmites . . . . . . . . . . . . . . . . . . . . . . . . . . Diferenciacin . . . . . . . . . . . . . . . . . . . . . . . Integracin . . . . . . . . . . . . . . . . . . . . . . . .

68
68 70 73 78 81 84

Sumas y Productos . . . . . . . . . . . . . . . . . . . . Operadores relacionales y lgicos Ecuaciones . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

ndice

vii

7.7. 7.8. 7.9.

Solucin de Ecuaciones Algebraicas . . . . . . . . . . . Solucin de Ecuaciones Trascendentales . . . . . . . .

85 87 92 94 95 97 99 102 103

Sistemas de Inecuaciones Lineales . . . . . . . . . . . .

7.10. Inecuaciones racionales . . . . . . . . . . . . . . . . . . 7.11. Ecuaciones diferenciales ordinarias . . . . . . . . . . .

7.12. Sistemas de ecuaciones diferenciales ordinarias lineales 7.13. Series de potencias . . . . . . . . . . . . . . . . . . . . 7.14. Transformada de Laplace . . . . . . . . . . . . . . . .

7.15. Ecuaciones recurrentes . . . . . . . . . . . . . . . . . .

8. Matemticas numricas
8.1. 8.2. Solucin numrica de ecuaciones Integrales numricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

105
105 107

9. Funciones y programas
9.1. 9.2. 9.3. 9.4. Denicin de funciones . . . . . . . . . . . . . . . . . . Reglas de transformacin para funciones . . . . . . . . Funciones denidas a partir de expresiones . . . . . . . Funciones denidas a trozos . . . . . . . . . . . . . . .

109
109 118 121 124

10.Listas
10.1. Juntar objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2. Generacin de listas

129
129 130 133 136 137 138 140 141 142

10.3. Eleccin de elementos de una lista

10.4. Prueba y bsqueda de elementos de una lista 10.5. Combinacin de listas

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10.6. Reordenamiento de listas

10.7. Agregar y quitar elementos de una lista 10.8. Reorganizacin de listas

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10.9. Funciones adicionales para listas

viii

ndice

11.Arrays 12.Matrices
12.1. Generacin de Matrices . . . . . . . . . . . . . . . . . 12.2. Elegir elementos de matrices . . . . . . . . . . . . . . . 12.3. Operaciones matriciales . . . . . . . . . . . . . . . . . . . . . . . . . . .

144 147
147 150 151 155 158 159

12.4. Funciones adicionales para matrices

12.5. Matrices asociadas a sistemas de ecuaciones . . . . . . 12.6. Autovalores y autovectores . . . . . . . . . . . . . . .

13.Conjuntos
13.1. Generacin de conjuntos . . . . . . . . . . . . . . . . . 13.2. Conversiones entre conjuntos y listas . . . . . . . . . . 13.3. Eleccin de elementos de un conjunto . . . . . . . . . . . .

161
161 163 164 165 167 168 168 171

13.4. Prueba y bsqueda de elementos de un conjunto 13.5. Agregar y quitar elementos de un conjunto

. . . . . .

13.6. Reorganizacin de conjuntos . . . . . . . . . . . . . . . 13.7. Operaciones con conjuntos . . . . . . . . . . . . . . . . 13.8. Funciones adicionales para conjuntos . . . . . . . . . .

14.Grcos
14.1. Grcos bsicos . . . . . . . . . . . . . . . . . . . . . . 14.2. Opciones . . . . . . . . . . . . . . . . . . . . . . . . . . 14.3. Grcos de puntos y lneas . . . . . . . . . . . . . . .

173
174 176 180 183 185 185 190 191

14.4. Grcos paramtricos y polares . . . . . . . . . . . . . 14.5. Combinacin de grcos . . . . . . . . . . . . . . . . . 14.6. Grcos de supercies tridimensionales . . . . . . . . . 14.7. Grcos de densidad y contornos . . . . . . . . . . . . 14.8. Grcos animados . . . . . . . . . . . . . . . . . . . .

ndice

ix

15.Utilidades de los menes de


15.1. El men 15.2. El men 15.3. El men 15.4. El men 15.5. El men 15.6. El men 15.7. El men 15.8. El men 15.9. El men 15.10. l men E 15.11. l men E

wxMaxima

194
194 197 200 203 204 207 211 214 216 219 220

Archivo Editar Celda

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Maxima lgebra Anlisis Grcos Numrico Ayuda Simplicar

Ecuaciones

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

16.Grcos con draw


16.1. Objetos grcos bidimensionales . . . . . . . . . . . . . . 16.2. Opciones para los objetos grcos bidimensionales 16.2.1. Opciones locales

222
223 234 234 237 238 241 246 254 254 255 255 257 260 261 263

. . . . . . . . . . . . . . . . .

16.2.2. Opciones locales genricas . . . . . . . . . . . . 16.2.3. Opciones globales . . . . . . . . . . . . . . . . . 16.2.4. Ejemplos ilustrativos . . . . . . . . . . . . . . . 16.3. Objetos grcos tridimensionales . . . . . . . . . . . .

16.4. Opciones para objetos grcos tridimensionales . . . . 16.4.1. Opciones locales . . . . . . . . . . . . . . . . .

16.4.2. Opciones locales genricas . . . . . . . . . . . . 16.4.3. Opciones globales . . . . . . . . . . . . . . . . . 16.4.4. Ejemplos ilustrativos . . . . . . . . . . . . . . . 16.5. Fijacin de valores para opciones . . . . . . . . . . . . 16.6. Grcos mltiples 16.7. Grcos animados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

ndice

17.Campos de direcciones con plotdf 18.Archivos y operaciones externas


18.1. Generacin de expresiones y archivos T X . . . . . . . E 18.2. Generacin de archivos HTML . . . . . . . . . . . . . . . . . . . .

267 271
271 274 275

18.3. Generacin de expresiones Lisp y Fortran

19.Programacin con

Maxima
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

276
276 279 282 284

19.1. Operadores relacionales y lgicos 19.2. Operadores y argumentos 19.3. Programacin funcional

19.4. Implementacin del paquete:

ejemplo

. . . . . . . . .

Prlogo

Este manual da una introduccin al Software Libre

Maxima v5.25.1,

presentndolo como un potente Sistema de lgebra Computacional (Computer Algebra System, o CAS) cuyo objeto es la realizacin de clculos matemticos, tanto simblicos como numricos; adems de ser expandible, pues posee un lenguaje de programacin propio. Las razones para apostar por el uso de Software Libre pueden deducirse de las cuatro libertades asociadas a este tipo de Software:

libertad de ejecutarlo, para cualquier propsito; libertad de estudiar cmo trabaja, y cambiarlo a voluntad de quien lo usa; libertad de redistribuir copias para ayudar al prjimo; y libertad de mejorarlo y publicar sus mejoras, y versiones modicadas en general, para que se benecie toda la comunidad.
De hecho, las libertades asociadas a todo Software Libre y, en particular, al CAS

Maxima

hacen de ste una formidable herramienta

pedaggica accesible a todos los presupuestos, tanto institucionales como individuales. No obstante, somos sinceros en sealar que no posee toda la versatilidad de sus smiles comerciales; pero el hecho que sea gratuito minimiza tal carencia. Hay que sealar, tambin, que cualquier actualizacin de un Software Libre puede obtenerse sin obstculo alguno y as es posible contar inmediatamente con la ltima versin del mismo. Algo que no sucede con el Software Comercial, a menos que se tenga disponibilidad inmediata de dinero para pagar la actualizacin. La idea de elaborar este manual surge de la necesidad de contar con bibliografa propia acerca de un CAS Libre para trabajar con alumnos de un curso de pregrado, los cuales ya estaban familiarizados con el uso de un CAS Comercial. La experiencia ha sido bastante satisfactoria y

xi

xii

Prlogo

quedan en el tintero los borradores para la futura elaboracin de un libro en el que se plasmen los resultados obtenidos en tal curso. Este manual se compone de diecinueve captulos en los cuales se describen resumidamente las principales caractersticas de las funciones incorporadas en el ncleo de

Maxima, as como de algunos paque-

tes que son de gran utilidad. Adems, en el ltimo captulo se dan los lineamientos generales para la elaboracin de paquetes de funciones. Esto con la nalidad que el usuario obtenga el mximo provecho en el uso de

Maxima.

xima,

Las nuevas herramientas incluidas en las ltimas versiones de

Ma-

as como la constante revisin y mejora de los aportes hechos

por diferentes usuarios ha motivado esta segunda edicin del manual.

R. Ipanaqu

Piura, Per

CAPTULO

Obtencin de

Maxima
Maxima

Maxima

puede funcionar en distintos sistemas operativos, entre ellos en el sistema

diversas variantes de Windows y de GNU/Linux. En este captulo se tratar acerca de la descarga e instalacin de operativo Windows (95 o posterior). El lector interesado en utilizar

Maxima en alguna variante de GNU/Linux, puede acceder a la seccin Download de la web de Maxima y seguir las instrucciones que en ella
se indican.

1.1 Descarga
Maxima
se descarga gratuitamente desde la pgina de
1

sourceforge

que alberga a una gran cantidad de instaladores de softwares de cdigo abierto . Debemos destacar que por el hecho de ser gratuito no requiere de ningn password que siempre est asociado con el software comercial (tambin llamado software propietario o ms acertadamente

software privativo ).

La direccin especca donde esta alojado

Maxima

es la siguiente:

http://sourceforge.net/projects/maxima/files
1 Cdigo
abierto (en ingls open source) es el trmino con el que se conoce al

software distribuido y desarrollado libremente. El cdigo abierto tiene un punto de vista ms orientado a los benecios prcticos de compartir el cdigo que a las cuestiones morales y/o loscas las cuales destacan en el llamado software libre.

Cap. 1. Obtencin de Maxima

Figura 1.1:

Porcin de la pgina de descarga de para Windows.

Maxima-5.25.1.exe.

El botn sealado permite la descarga directa de Maxima

desde donde puede descargarse el archivo el instalador de

Maxima

Maxima-5.25.1.exe que es

para Windows. Este instalador ocupa 29.0

MB de espacio en memoria. Una vez descargado el instalador se ver un icono, como el que se aprecia en la gura 1.2, en la carpeta donde ste se haya descargado.

1.2 Instalacin
Despus de la descarga se procede a instalar

Maxima,

lo cual debe

hacerse siguiendo los pasos que se detallan a continuacin.

Figura 1.2:

Icono del instalador de

Maxima-5.25.1.exe.

1. Hacer doble clic sobre el icono del instalador.

Sec. 1.2. Instalacin

2. Si aparece un cuadro como el de la gura 1.3, hacer clic sobre el botn

Ejecutar .

Figura 1.3:
3. Seleccionar el idioma (g. 1.4).

Cuadro de vericacin.

Espaol y hacer clic sobre el botn Aceptar

Figura 1.4:

Cuadro para seleccionar el idioma.

4. Hacer clic sobre el botn

Siguiente del al asistente de instalacin de Maxima

cuadro

Bienvenido

(g. 1.5). del cuadro

5. Seleccionar la opcin

Acepto el acuerdo

do de Licencia.

Luego hacer clic en el botn

mismo cuadro (g. 1.6). 6. Hacer clic en el botn 1.7).

Acuer Siguiente del

Siguiente del cuadro Informacin (g.

7. Seleccionar la carpeta en la cual se quiere instalar Maxima (generalmente se deja la carpeta que aparece por defecto) y luego

Cap. 1. Obtencin de Maxima

Figura 1.5:

Cuadro

Bienvenido al asistente de instalacin de Ma-

xima.

Figura 1.6:

Cuadro

Acuerdo de Licencia.

hacer clic en el botn

Carpeta de Destino
8. En el cuadro casillas remos

(g. 1.8).

Siguiente del

cuadro

Seleccione la

Seleccione los Componentes desmarcar las Portugus y Portugus Brasileo ya que slo utilizael idioma Espaol. Esto permite, a su vez, el ahorro de

memoria (g. 1.9). 9. Seleccionar la carpeta del men Inicio en la cual se quiere ubi-

Sec. 1.2. Instalacin

Figura 1.7:

Cuadro

Informacin.

Figura 1.8:

Cuadro

Seleccione la Carpeta de Destino.

car el icono de acceso a

Maxima

(generalmente se deja la car-

10.

Siguiente del cuadro Seleccione la Carpeta del Men Ini cio (g. 1.10). Hacer clic en el botn Siguiente del cuadro seleccione las Tareas Adicionales para que el asistente cree un icono de acceso directo a

peta que aparece por defecto) y luego hacer clic en el botn

Maxima

11. Hacer clic en el botn

Instalar del

en el escritorio (g. 1.11). cuadro

Listo para Instalar

Cap. 1. Obtencin de Maxima

Figura 1.9:

Cuadro

Seleccione los Componentes.

Figura 1.10:
(g. 1.12).

Cuadro

Seleccione la Carpeta del Men Inicio.

12. Hacer clic en el botn 1.13).

Siguiente del cuadro Informacin (g.

13. Por ltimo, hacer clic en el botn

Finalizar del cuadro Completando la Instalacin de Maxima (g. 1.14).

Despus de seguir el procedimiento anterior deben haberse instalado: el ncleo de

Maxima

que es el responsable de todos los clculos

Sec. 1.2. Instalacin

Figura 1.11:

Cuadro

Seleccione las Tareas Adicionales.

Figura 1.12:

Cuadro

Listo para Instalar.

y permite una interfaz de texto, el entorno grco el entorno grco

wxMaxima que per-

mite una interfaz grca (o interfaz de cuaderno) bastante amigable,

XMaxima

que tambin permite una interfaz gr-

ca (aunque menos amigable que

wxMaxima )

y una aplicacin para

usuarios de habla hispana. Adems, debe haberse creado automticamente, en el escritorio de su ordenador (computadora), el icono de acceso directo al entorno grco

wxMaxima

(g. 1.15).

Cap. 1. Obtencin de Maxima

Figura 1.13:

Cuadro

Informacin.

Figura 1.14:

Cuadro

Completando la Instalacin de Maxima .

Figura 1.15:

Icono de acceso directo a wxMaxima.

CAPTULO

Funcionamiento de

Maxima

2.1 Interfaz de cuaderno


utilice un icono o el men de Inicio nalizar texto con entrada para formas grcas de inicializar

Maxima

Maxima

Shift

Enter

salir de

elegir el tem salida del men

Maxima

Funcionamiento de Maxima en una interfaz de cuaderno.

El acceso a una interfaz de cuaderno es factible en un ordenador usado va una interfaz puramente grca (como Windows). En una interfaz de cuaderno, es posible interactuar con de

wxMaxima,

Maxima,

a travs despus

creando documentos interactivos. Para ello el usuario

debe hacer doble clic en el icono de inicio de

wxMaxima,

de lo cual se desplegar un cuaderno en blanco. En este cuaderno el usuario digita la entrada (input), luego presiona (en simultneo) las teclas

entrada, etiqueta la entrada con

Shift Enter y Maxima

aade punto y coma al nal de tal

( %in )

, la procesa y devuelve la

correspondiente salida (output) etiquetada con 9

( %on )

10

Cap. 2. Funcionamiento de Maxima

Maxima

El usuario digita

1+1, luego naliza su entrada con Shift Enter Maxima aade . punto y coma al nal de sta, la etiqueta con ( %i1) , la procesa e inmediatamente despus devuelve la respectiva salida etiquetada con ( %o1) .

( %i1) 1+1; ( %o1) 2


Debe recordarse que los cuadernos corresponden al entorno grco

wxMaxima.

El ncleo de

Maxima

es el que realiza realmente los

clculos (seccin 3.1). Para salir de

wxMaxima, el usuario elige el tem salida del respec-

tivo men en la interfaz de cuaderno.

2.2 Interfaz basada en texto


maxima
nalizar texto con ;

Enter
quit();

Maxima y entrada para Maxima


inicializar salir de

comando del sistema operativo para

Maxima

Funcionamiento de Maxima en una interfaz basada en texto.

Con una interfaz basada en texto, el usuario interacta con su ordenador digitando texto mediante el teclado. Para inicializar el comando

xima

maxima

Maxima

en una interfaz basada en texto, se digita

en el prompt del sistema operativo. Cuando

ha inicializado, imprimir el prompt

( %i1),

Ma-

esto signica que

esta lista para que el usuario haga su entrada. ste puede entonces digitar su entrada, terminndola con ; y presionando luego Enter .

Maxima

procesa la entrada y genera un resultado, el mismo que

etiquetar con

( %o1).

Obsrvese que la mayor parte de los dilogos dados en el libro muestran salidas en la forma que se obtendran con una interfaz de

Sec. 2.2. Interfaz basada en texto

11

cuaderno de

Maxima ; la salida con una interfaz basada en texto luce Maxima, debe digitarse Quit(); en el prompt de la

similar, pero carece de caractersticas tales como caracteres especiales y cambio de tamao de fuente. Para salir de entrada.

CAPTULO

Uso del sistema

Maxima
Maxima

3.1 La estructura de
Maxima wxMaxima XMaxima

ncleo responsable de todos los clculos interfaz de cuaderno que se ocupa de interactuar con el usuario (muy amigable) interfaz grca que se ocupa de interactuar con el usuario (menos amigable que

wxMaxima )

Partes bsicas del Sistema Maxima.

Maxima

es un potente motor de clculo simblico aunque, en su

origen, no destacaba por tener una interfaz grca ms amigable para los usuarios que la simple consola de texto. Con el tiempo este hecho ha ido cambiando y han aparecido distintos entornos de ejecucin que intentan facilitar la interaccin con los usuarios. Entre ellos, estn

XMaxima

wxMaxima.

XMaxima

es la primera interfaz grca que fue desarrollada, es

mantenida ocialmente por el equipo de desarrollo de

Maxima.

En

Windows se instala automticamente. Presenta algunas ventajas como la integracin en formato HTML de manuales de ayuda. Sin em12

Sec. 3.1. La estructura de Maxima

13

Figura 3.1:

Un cuaderno que mezcla texto, grcos con entradas y salidas de Maxima.

bargo, tambin tiene algunas desventajas con respecto a otras interfaces ms modernas.

wxMaxima 1 ,

basada en la biblioteca grca

wxwidgets,

gracias

a la cual existen versiones nativas tanto para sistemas operativos GNU/Linux como para Windows. Integra elementos especcos para la navegacin de la ayuda, introduccin de matrices, creacin de grcas, clculo de lmites, derivadas o integrales, etc. Actualmente tambin se instala automticamente en Windows.

1 wxMaxima

fue desarrollada por Andrej Vodopivec y est disponible en

http://wxmaxima.sourceforge.net

14

Cap. 3. Uso del sistema Maxima

Figura 3.2:

Un dilogo con Maxima usando una interfaz basada en texto.

interfaz de cuaderno con

wxMaxima

documentos interactivos

interfaz basada en texto

texto desde el teclado

Tipos comunes de interfaz con Maxima.

En algunos casos, puede que el usuario no necesite usar la interfaz de cuaderno, y que desee en cambio interactuar directamente con el ncleo de al ncleo.

Maxima. Es posible hacer esto usando la interfaz basada en

texto, en la cual se digita el texto en el teclado y ste va directamente

3.2 Cuadernos como documentos


Los cuadernos de

wxMaxima

permiten crear documentos que pueden

verse interactivamente en la pantalla o imprimirse en papel. En los

Sec. 3.2. Cuadernos como documentos

15

Figura 3.3:

Un cuaderno de wxMaxima como documento.

cuadernos extensos, es comn tener los captulos, secciones etc., representados cada uno en grupos de celdas. La extensin de estos grupos de celdas es indicada por el botn asociado a la celda dominante que es una celda de estilo ttulo, seccin o subseccin. Un grupo de celdas puede estar abierto o cerrado. Cuando est abierto se puede ver todas sus celdas explcitamente. Pero cuando est cerrado, slo puede verse la celda que encabeza el grupo de celdas. Los cuadernos extensos son a menudo distribuidos con muchos grupos de celdas cerradas, para que cuando sean vistos por primera vez el cuaderno muestre solamente una lista de su contenido. Es posible abrir las partes en las que el usuario est interesado haciendo clic sobre el botn apropiado. A cada celda dentro de un cuaderno se le asigna un estilo en particular que indica su rol dentro del cuaderno. La interfaz de

wxMaxima

provee menes y mtodos abreviados

de teclas para insertar celdas con diferentes estilos todos ellos estn disponibles en el ltimo bloque del men

Cell.

As, por ejemplo, el material entendido como entrada para ser ejecutado por el ncleo de

Maxima est en el estilo de Input (entrada),

16

Cap. 3. Uso del sistema Maxima

Figura 3.4:

Haciendo clic sobre el botn que corresponde a la celda dominante se cierra el grupo, dejando slo la primera celda visible.

Figura 3.5:

Cuando el grupo est cerrado, el botn que le corresponde aparece relleno en color negro. Haciendo clic sobre este botn se abre nuevamente el grupo.

Figura 3.6:

El recuadro muestra los menes y mtodos abreviados de teclas para insertar celdas con diferentes estilos.

Sec. 3.3. Conguracin de opciones y estilos

17

Figura 3.7:

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

Figura 3.8:

Primer paso para congurar las opciones y estilos.

mientras que el que se entiende para ser ledo como solamente de texto est en estilo Text (texto).

3.3 Conguracin de opciones y estilos


Como se vio en la seccin 3.2 los cuadernos pueden editarse a manera de documentos.

wxMaxima

incorpora una conguracin predenida

para los estilos de los ttulos, secciones, etc. Sin embargo, es posible cambiar algunos aspectos de dicha conguracin haciendo clic en la opcin

Preferencias

del men

Editar.

Preferencias se desplega la Conguracin de wxMaxima que incorpora dos pestaas: Opciones y Estilo.
Despus de hacer clic en la opcin ventana

18

Cap. 3. Uso del sistema Maxima

Figura 3.9:

Activando o desactivando las casillas de vericacin se cambia la conguracin de las opciones.

Cuadro 3.1:

Valores asignados en la conguracin de Fuentes

Fuentes Fuente predeterminada Fuente matemtica

Tipo Courier New (12) Courier New (12)

Por ejemplo, cuando est activa la casilla de vericacin de la opcin la pestaa

Hacer coincidir los parntesis en los controles de texto (de Opciones), wxMaxima cierra automticamente cualquier
Aceptar ,

parntesis que se abra en una celda de estilo Input. Al desactivar esta casilla, y hacer clic en lo haga. En la pestaa tante intuitiva. Por ejemplo, congurando los estilos con los valores indicados en los cuadros 3.1 y 3.2 se obtienen cuadernos con un aspecto elegante.

tomticamente ningn parntesis sino que esperar a que el usuario

wxMaxima

no volver a cerrar au-

Estilo

se presenta una lista de todos los estilos que

pueden congurarse a gusto del usuario y la forma de hacerlo es bas-

Sec. 3.3. Conguracin de opciones y estilos

19

Cuadro 3.2:
Estilos

Valores asignados en la conguracin de Estilos

Color rgb(0,0,0) rgb(0,0,0) rgb(188,73,18) rgb(188,73,18) rgb(54,95,145) rgb(252,250,245) rgb(252,250,245)

Fuente Courier New Tahoma Tahoma Tahoma Tahoma

Aspecto Gruesa, Itlica Normal Gruesa Gruesa Gruesa

Tam. 12 12 16 18 24

Nombre de funciones Celda de texto Celda de subseccin Celda de seccin Celda de ttulo Fondo de celda de texto Fondo

Figura 3.10:

Un cuaderno de wxMaxima como documento, despus de haber editado la conguracin de estilo.

20

Cap. 3. Uso del sistema Maxima

Figura 3.11:

Un ejemplo de bsqueda de informacin bsica sobre una funcin en el

ndice

de la

Ayuda

de Maxima

3.4 Bsqueda de ayuda


Maxima

Todas las funciones incorporadas en formas. La ms usada es desde el men que da acceso a la opcin

estn descritas en el

manual en lnea del usuario, el cual puede ser consultado en diferentes

Ayuda, de la barra de menes, Ayuda de Maxima la cual sirve como un

punto de entrada a la gran cantidad de documentacin en lnea para

Maxima.

Tambin es factible buscar ayuda desde un cuaderno de trabajo. Para ello puede utilizarse la funcin especial

?.

describe2

o tambin el smbolo

2 describe

no evala su argumento. La funcin

cuentra la documentacin solicitada y

false

describe

devuelve

true

si en-

en caso contrario.

Sec. 3.4. Bsqueda de ayuda

21

describe(string )

encuentra el elemento, si existe, cuyo ttulo coincide exactamente con culas y minsculas)

string

(ignorando la diferencia entre mays-

describe(string,exact ) describe(string,inexact )

equivale a

describe(string )

encuentra todos los elementos documentados que contengan ttulos

string

en sus

Sintaxis de la funcin describe, la cual permite recibir informacin de las funciones de Maxima.

?name ??name
Otras formas de recibir informacin.

equivale a equivale a

describe("name")

describe("name",inexact)

Maxima

Esta sentencia da informacin de la funcin incorporada

max.

- -Funcin: max(<x_1>,. . . ,<x_n>) Devuelve las un valor simplicado <x_1> de hasta la mayor <x_n>. de Si

( %i1) describe("max");

expresiones

desde

`get(trylevel,maxmin)' es 2 o ms, `max' aplica la simplicacin `max(e,e)>|e|'. Si `get(trylevel,maxmin)' es 3 o ms, `max' intenta eliminar las expresiones que estn entre dos de los argumentos dados; por ejemplo, `max(x,2*x,3*x)>max(x,3*x)'. Para asignar el valor 2 a `trylevel' se puede hacer `put(trylevel,2,maxmin)'. There are also some inexact matches for `max'. Try ` ?? max' to see them.

( %o1)

true

22

Cap. 3. Uso del sistema Maxima

Maxima

Esta sentencia encuentra todos los elementos documentados que contienen en sus ttulos. No devuelve

"plus"

true

false

hasta que el usuario seleccione las op-

ciones que desee consultar (aqu las opciones disponibles son: 0,1,2,3, all y none).

( %i2) describe("plus",inexact);
0: doscmxplus (Funciones y variables para las matrices y el lgebra lineal). 1: poisplus (Series de Poisson) 2: region_boundaries_plus (Funciones y variables para worldmap) 3: trigexpandplus (Funciones y variables para trigonometra) Enter space-separated numbers, `all' or `none':

Maxima

Una vez elegidas las opciones (en este caso 0 y 2) la sentencia devuelve

true.

( %i3) describe("plus",inexact);
0: doscmxplus (Funciones y variables para las matrices y el lgebra lineal). 1: poisplus (Series de Poisson) 2: region_boundaries_plus (Funciones y variables para worldmap) 3: trigexpandplus (Funciones y variables para trigonometra) Enter space-separated numbers, `all' or `none': 0 2: - -Variable opcional: doscmxplus Valor por defecto: `false'. Cuando `doscmxplus' vale `true', las operaciones entre escalares y matrices dan como resultado una matriz. - -Funcin : region_boundaries_plus(<x1>,<y1>,<x2>,<y2>)

Sec. 3.5. Reinicio

23

Detecta los segmentos poligonales almacenados en la variable global `boundaries_array' con al menos un vrtice dentro del rectngulo denido por los extremos (<x1>,<y1>) -superior izquierdo- y (<x2>,<y2>) inferior derecho-. Ejemplo. ( %i1) load(worldmap)$; ( %i2) region_boundaries(10.4,41.5,20.7,35.4); ( %o2) [1846, 1863, 1864, 1881, 1888, 1894] ( %i3) draw2d(geomap( %))$

( %o3) true

3.5 Reinicio
La forma brusca de reiniciar

Maxima

es saliendo de

obstante, en muchos casos resulta til reiniciar

wxMaxima.
opcin

Para reiniciar

Maxima

sin salir de

wxMaxima. No Maxima sin salir de wxMaxima se elige la

Reiniciar Maxima

del men

Maxima.

Figura 3.12:

Reiniciando Maxima en una interfaz de cuaderno.

3.6 Comentarios
Los comentarios son toda una serie de caracteres que no afectan los clculos. En y

Maxima

los comentarios se escriben entre las marcas

/.

24

Cap. 3. Uso del sistema Maxima

/comentario /
Escribiendo comentarios.

con esta sintaxis

comentario

es inter-

pretado como un comentario

Maxima

Aqu se muestra un clculo y un comentario.

( %i1) 4+5 /*esto es una suma*/; ( %o1) 9

3.7 Paquetes en
Maxima

Maxima
Maxima
es que es un

Una de las caractersticas ms importantes de en

sistema extensible, hay una cierta cantidad de funciones incorporadas pero, usando el lenguaje de programacin de siempre es posible aadir ms funciones.

Maxima,

Para muchos tipos de clculos, lo incorporado en la versin estndar de

Maxima

ser suciente. Sin embargo, si se trabaja en particu-

lar en un rea especializada, es posible encontrarse en la necesidad de utilizar ciertas funciones no incorporadas en

Maxima.

En tales casos, podra ser factible encontrar (o elaborar) un package (paquete) de funciones de que sean necesarias.

Maxima

que contenga las funciones

load(paquete )
Leyendo paquetes de Maxima.

lee un paquete de

Maxima

Si el usuario quiere usar las funciones de un paquete en particular, primero debe inicializar el paquete en
Maxima

Maxima.

Con estas sentencias se est inicializando y utilizando una funcin de un paquete en particular de Maxima.

( %i1) load(simplex)$

Sec. 3.8. Advertencias y mensajes

25

( %i2) minimize_lp(x+y,[3*x+2*y>2,x+4*y>3]); 9 7 ( %o2) [ 10 , [y = 10 , x = 1 ]] 5


El hecho de que

Maxima

ca que las posibilidades de

Maxima

pueda extenderse usando paquetes signison ilimitadas. En lo que al uso

concierne, no hay en realidad ninguna diferencia entre las funciones denidas en paquetes y las funciones incorporadas en

Maxima.

3.8 Advertencias y mensajes


Maxima
sigue el trabajo del usuario silenciosamente, dando salida solamente cuando ste lo requiere. Sin embargo, si imprimir un mensaje de advertencia.
Maxima

Maxima

se perca-

ta de algo que se pretende hacer y que denitivamente no entiende,

La funcin para calcular la raz cuadrada debe tener solamente un argumento.

Maxima imprime un mensaje para advertir que, en este caso, se ha errado en el


nmero de argumentos.

( %i1) sqrt(4,5);
sqrt: wrong number of arguments. - - an error. To debug this try: debugmode(true);

3.9 Interrupcin de clculos


Probablemente habr veces en que el usuario desee detener en medio de un clculo. Tal vez l se da cuenta que pidi a

Maxima Maxima

hacer un clculo incorrecto. O quizs el clculo tarda demasiado, y quiere saber que es lo que pasa. La forma en que se interrumpe un clculo en

Maxima

depende de qu clase de interfaz est utilizando.

Clic en el botn

+ Ctrl C

interfaz de cuaderno interfaz basada en texto

Formas de interrumpir clculos en Maxima.

CAPTULO

Clculos numricos

4.1 Aritmtica
Los clculos aritmticos se realizan con nmeros literales (enteros, racionales, decimales ordinarios y decimales grandes). Excepto en el caso de la exponenciacin, todas las operaciones aritmticas con nmeros dan lugar a resultados en forma de nmeros. El usuario puede hacer aritmtica con con una calculadora
Maxima

Maxima

tal y como lo hara

Aqu tenemos la suma de dos nmeros.

( %i1) 5.6+3.7; ( %o1) 9.3


Maxima

Con

indicamos el producto de dos nmeros.

( %i2) 5.6*3.7; ( %o2) 20.72


Maxima

Es posible digitar operaciones aritmticas haciendo uso de los parntesis.

( %i3) (2+3)^3-4*(6+7);
26

Sec. 4.2. Resultados exactos y aproximados

27

( %o3) 73

x ^y

x y x x /y x y z x +y +z

potencia menos divisin producto suma

Operaciones aritmticas en Maxima.


Las operaciones aritmticas en por ejemplo, signica

las convenciones estndares de la matemtica. Como es usual,

2+3/7, 2+(3/7), y no (2+3)/7. El usuario siempre pue-

Maxima se agrupan de acuerdo con

de controlar la forma de agrupar explcitamente usando los parntesis.

4.2 Resultados exactos y aproximados


Una calculadora electrnica hace todos sus clculos con una precisin determinada, digamos de diez dgitos decimales. Con en cambio, es posible obtener resultados exactos.
Maxima

Maxima,

Maxima da un resultado exacto para

2300 .

( %i1) 2^300; ( %o1) 20370359763344860862684456884093781610514683936 65936250636140449354381299763336706183397376


El usuario puede pedir a cin

Maxima que devuelva un resultado aproxio una combinacin de ambos.

mado, tal como lo dara una calculadora, para ello puede usar la fun-

float

o la variable

numer

Maxima

Esto da un resultado numrico aproximado.

( %i2) 2^300,float; ( %o2) 2.0370359763344861 1090

28

Cap. 4. Clculos numricos

float(expr )

da un valor numrico aproximado para ciertas

expr expr

expr , float expr , numer


float(expr ), numer

equivale a

float(expr )

da un valor numrico aproximado para ciertas

da un valor numrico aproximado para cualquier tante

expr

que no sea una cons-

Obteniendo aproximaciones numricas.

Maxima

Esta forma tambin da un resultado numrico aproximado.

( %i3) float(2^300); ( %o3) 2.0370359763344861 1090

Maxima

Para el clculo previo la constante

numer

no es til.

( %i4) 2^300,numer; ( %o4) 20370359763344860862684456884093781610514683936 65936250636140449354381299763336706183397376

Maxima

Maxima puede dar resultados en trminos de nmeros racionales.

( %i5) 1/3+2/7; ( %o5) 13 21

Maxima

En este caso, tanto con aproximado.

float

como con

numer,

se obtiene un resultado numrico

( %i6) 1/3+2/7,float; ( %o6) 0.61904761904762

Sec. 4.2. Resultados exactos y aproximados

29

( %i7) 1/3+2/7,numer; ( %o7) 0.61904761904762

Cuando el usuario digita un entero como 7,

Maxima

asume que es

exacto. Si digita un nmero como 4.5, con un punto decimal explcito,

Maxima
Maxima

asume que desea efectuar clculo numrico aproximado.

Esto es tomado como un nmero racional exacto, y es llevado a una fraccin irreducible.

( %i8) 26/78; ( %o8) 1 3

Maxima

Cuando el usuario digita un nmero con un punto decimal explcito, Maxima produce un resultado numrico aproximado.

( %i9) 26.7/78; ( %o9) 0.34230769230769

Maxima

Aqu, la presencia del punto decimal seguido del cero hace que Maxima d un resultado numrico aproximado.

( %i10) 26.0/78; ( %o10) 0.33333333333333

Maxima

Cuando cualquier nmero en una expresin aritmtica es digitado con un punto decimal seguido del cero, el usuario obtiene un resultado numrico aproximado.

( %i11) 5.0+9/78-5/8; ( %o11) 4.490384615384615

30

Cap. 4. Clculos numricos

4.3 Algunas funciones matemticas


Maxima
incluye una gran coleccin de funciones matemticas. A continuacin se mencionan las ms comunes.

sqrt(x ) exp(x ) log(x ) sin(x ), cos(x ), tan(x ), cot(x ), sec(x ), csc(x ) asin(x ), acos(x ), atan(x ), acot(x ), asec(x ), acsc(x )

raz cuadrada exponencial

( x) (ex ) (loge x)

logaritmo neperiano

funciones trigonomtricas (con argumentos en radianes) funciones trigonomtricas inversas

n! n !!
abs(x ) round(x ) mod(n,m ) floor(x ) ceiling(x ) random(x ) max(x,y , . . .), min(x,y , . . .) ifactor(n )

factorial de

(producto de los enteros

1, 2, . . . , n) 13. . .n (n
(

impar)

24. . .n

par)

valor absoluto redondeo

mdulo

entre

m)

(resto de la divisin de

mayor entero menor o igual que menor entero mayor o igual que nmero seudo aleatorio

x
x

r < x,

si

xN

r, tal que 0 0 < r < x, si x R+

mximo, mnimo de

x,y,. . .

factores primos de

Algunas de las funciones matemticas ms comunes.

Los argumentos de todas las funciones en

Maxima

se colocan

entre parntesis. Los nombres de las funciones incorporadas en

Maxima

empie-

zan con letra minscula.

Dos puntos importantes acerca de funciones en Maxima.

Sec. 4.3. Algunas funciones matemticas

31

Maxima

Esto da

loge 15.7.

( %i1) log(15.7); ( %o1) 2.753660712354262

Maxima

Maxima no incluye una funcin para el logaritmo de base 10 u otras bases. Para loge x salvar esta dicultad el usuario puede hacer uso de la frmula logb x = . As, loge b
por ejemplo, lo siguiente devuelve un resultado numrico para

log2 1024.

( %i2) log(1024)/log(2),numer; ( %o2) 10.0

Maxima

Esto devuelve

64

como un nmero exacto.

( %i3) sqrt(64); ( %o3) 8

Maxima

Esto da un valor numrico aproximado para

6.

( %i4) sqrt(6),numer; ( %o4) 2.449489742783178

Maxima

La presencia explcita de un punto decimal seguido de un cero le indica a Maxima que d un resultado numrico aproximado.

( %i5) sqrt(6.0); ( %o5) 2.449489742783178

Maxima

En este caso Maxima devuelve un nmero en forma simblica exacta.

( %i6) sqrt(6);

32

Cap. 4. Clculos numricos

( %o6)
Maxima

Aqu tenemos un resultado entero exacto para

40 39 . . . 1.

( %i7) 40!; ( %o7) 815915283247897734345611269596115894272000000000


Maxima

Esto da un valor numrico aproximado del factorial.

( %i8) float(40!); ( %o8) 8.1591528324789768 1047

%e %i inf minf infinity und %pi

e 2.718281828459045 i = 1
representa al innito real positivo representa al innito real negativo representa al innito complejo representa un resultado indenido

3.141592653589793

Algunas constantes matemticas comunes.


Maxima

Este es el valor numrico de

2 .

( %i9) %pi^2,numer; ( %o9) 9.869604401089358


Maxima

Esto devuelve el valor exacto para

sen(/2).

( %i10) sin( %pi/2); ( %o10) 1

Sec. 4.4. Clculos con precisin arbitraria

33

4.4 Clculos con precisin arbitraria


Cuando el usuario utiliza

float, numer

para obtener un resultado numrico, indicar a

Maxima

o una combinacin de ambos devuelve el resultado

con un nmero jo de cifras signicativas. No obstante, es posible

Maxima

las cifras signicativas con las que se desea operar.

Esto permite obtener resultados numricos en grado de precisin.

Maxima

con cualquier

fpprec :n $ bfloat(expr ) fpprec :n $ expr , bfloat

valor numrico de

expr

calculado con

dgitos de precisin (el valor por de-

fecto es 16)

Evaluacin numrica con precisin arbitraria.

Maxima

Esto devuelve el valor numrico de

con un nmero jo de cifras signicativas.

( %i1) float( %pi); ( %o1) 3.141592653589793

Maxima

Esto devuelve

con 50 dgitos.

( %i2) fpprec : 50$ bfloat( %pi); ( %o2) 3.141592653589793238462643383279502884197169399 3751b0

Cabe mencionar que el smbolo de dolar que aparece despus del nmero que indica la cantidad de dgitos signicativos se utiliza, en general, para nalizar una sentencia y, a diferencia del punto y coma, no permite que aparezca ninguna salida en pantalla (subsec. 5.3). Al realizar cualquier tipo de clculo numrico el usuario puede introducir pequeos errores de redondeo en sus resultados. Cuando se aumenta la precisin numrica estos errores se hacen ms pequeos. Asegurarse que se obtiene la misma respuesta al aumentar la precisin numrica es a menudo una buena forma de vericar los resultados.

34

Cap. 4. Clculos numricos

Maxima

La cantidad

163 esta bastante prxima a ser entera. Para vericar que el

resultado no es un entero, el usuario tiene que usar la precisin numrica suciente.

( %i3) fpprec:40$ bfloat(exp( %pi*sqrt(163))); ( %o3) 2.625374126407687439999999999992500725972b17


El usuario que desee, por ejemplo, visualizar 200 cifras signicativas, o

con una precisin de

21000

con el total de las cifras, utilizando las

sentencias aqu descritas encontrar que la salida se muestra truncada en la parte central, en donde aparece un nmero que indica la cantidad de dgitos faltantes.
Maxima

Esto devuelve una salida de

con 200 dgitos, la cual ha sido truncada. El dato

entre los corchetes indica que se han obviado 443 dgitos

( %i4) fpprec:200$ bfloat( %pi); ( %o4) 3.1415926535897932384626433832[443digits]885752724 8912279381830119491b0


ascii como el algoCambiar pantalla 2D del sentencias de ( %i4) .

ritmo de salida matemtica


men

Para obtener una salida completa se selecciona de la opcin

Maxima

y luego se ejecutan las

Tngase presente que el algoritmo de salida matemtica, previamente seleccionado (ascii), prevalecer hasta que el usuario vuelva a seleccionar como algoritmo de salida matemtica a
Maxima

xml.

Despus de cambiar el algoritmo de salida matemtica se devuelve la salida 200 dgitos.

con

( %i5) fpprec : 200$ bfloat( %pi); ( %o5) 3.141592653589793238462643383279502884197169399 37510582097494459230781640628620899862803482534 21170679821480865132823066470938446095505822317 25359408128481117450284102701938521105559644622 948954930382b0

Sec. 4.5. Nmeros complejos

35

Figura 4.1:

Seleccionando

ascii

como el algoritmo de salida.

4.5 Nmeros complejos


Es posible ingresar nmeros complejos en constante

%i,

igual a

Maxima
i

con slo incluir la

variable llamada

i,

pero

1Note . no 1.

que una

ordinaria signica una

x + %iy realpart(z ) imagpart(z ) conjugate(z ) cabs(z ) carg(z )

el nmero complejo parte real parte imaginaria complejo conjugado mdulo de

x+iy

en

el argumento

|z|ei

Operaciones con nmeros complejos.

Maxima

Esto devuelve como resultado el nmero imaginario

2i.

( %i1) sqrt(-4); ( %o1) 2 %i


Maxima

Esto devuelve la divisin de dos nmeros complejos.

( %i2) (8+4* %i)/(-1+ %i),rectform;

36

Cap. 4. Clculos numricos

( %o2) 6 %i 2

Maxima

Aqu tenemos el valor exacto de un exponencial complejo.

( %i3) exp(11+5* %i),rectform; ( %o3) %e11 %i sin (5) + %e11 cos (5)

Maxima

Aqu tenemos el valor numrico de un exponencial complejo.

( %i4) exp(11+5* %i),numer; ( %o4) 16984.02989166794 57414.76791532402 %i

CAPTULO

Generacin de clculos

5.1 Uso de entradas y salidas previas


Al realizar clculos, muchas veces se necesita usar expresiones previamente ingresadas u obtenidas. En

Maxima,

_ y % siempre hacen

referencia a la ltima expresin de entrada y salida, respectivamente.

la ltima expresin de entrada la ltima expresin de salida la expresin de la entrada la expresin de la salida la expresin de la rior

% %in %on %th(i )

%in

%on i -sima salida ante-

Formas de hacer referencia a expresiones de entrada y salida previas.

Para efectos didcticos, a partir de esta seccin se supone un reinicio de

Maxima

(sec. 3.5).

Maxima

Aqu se tienen las expresiones de la primera entrada y salida.

( %i1) 5^3; ( %o1) 125


37

38

Cap. 5. Generacin de clculos

Maxima

Esto agrega 6 a la expresin de la ltima salida.

( %i2) %+6; ( %o2) 131


Maxima

Esto utiliza las dos expresiones de las salidas previas.

( %i3) 5+ %o1+ %; ( %o3) 261


Maxima

Esto suma las expresiones de las salidas

( %o1)

( %o3)

( %i4) %o1+ %o3; ( %o4) 386


Maxima

Aqu se eleva al cuadrado la expresin de la salida

( %o2)

( %i5) %o2^2; ( %o5) 17161


Si se utiliza una interfaz basada en texto en

Maxima, entonces las

lneas sucesivas de entradas y salidas aparecern siempre en orden. Sin embargo, si se utiliza una interfaz de cuaderno, varias lneas sucesivas de entradas y salidas no necesariamente aparecen en orden. Es posible, por ejemplo, volver atrs e insertar el clculo siguiente dondequiera que se desee en el cuaderno. Tngase en cuenta que % siempre invoca el ltimo resultado que

Maxima

gener. ste puede o

no ser el resultado que aparece inmediatamente encima de su actual posicin en el cuaderno. Con una interfaz de cuaderno, la nica manera de saber cundo un resultado particular fue generado es mirar la etiqueta de

( %on)

que tiene. Como es posible insertar y suprimir en

todas partes en un cuaderno, de acuerdo a la necesidad del usuario, el ordenamiento de los resultados, por lo general, no tiene ninguna relacin con el orden en el cual los resultados fueron generados.

Sec. 5.2. Denicin de variables

39

5.2 Denicin de variables


Cuando se efectan clculos extensos, muchas veces es conveniente dar nombre a los resultados intermedios. De igual modo que en las matemticas tradicionales o en otros lenguajes de programacin, es posible hacer esto introduciendo
Maxima

variables

con un nombre especco.

Esto inicializa el valor de la variable x con 6.

( %i1) x:6; ( %o1) 6


Maxima

Donde quiera que aparezca x, Maxima la reemplaza por su valor 6.

( %i2) x^3-25 ( %o2) 191


Maxima

Esto asigna un nuevo valor para x.

( %i3) x:11+5 ( %o3) 16


Maxima

pi es inicializada con el valor numrico de

con 20 dgitos de exactitud.

( %i4) fpprec:20$ ( %i5) pi: %pi,bfloat; ( %o5) 3.1415926535897932385b0


Maxima

Aqu esta el valor de

sqrt(pi).

( %i6) sqrt(pi) ( %o6) 1.7724538509055160273b0

40

Cap. 5. Generacin de clculos

x : valor x : y : valor

asigna un valor a la variable

x x
e

asigna un valor a las variable

y
e

kill(x ) kill(x ,y ) values


Manipulacin de variables.

x quita cualquier valor asignado a x


quita cualquier valor asignado a ha asignado un valor

muestra las variables a las que se les

Es muy importante recordar que los valores asignados a las variables son permanentes. Una vez que el usuario ha asignado un valor a una variable en particular, el valor ser almacenado hasta que ste lo remueva explcitamente. El valor, claro est, desaparecer si el usuario inicia una nueva sesin con

Maxima.

Olvidarse de las deniciones hechas es la causa ms comn de errores al usar

Maxima.

Si el usuario pusiera

que ste siempre quiere que

tenga el valor

5,

x:5, Maxima

asume

hasta o a menos que

se le indique explcitamente otra cosa. Para evitar los errores, deben quitarse los valores denidos en cuanto se haya terminado de usarlos.

Quite valores que asigne a las variables en cuanto termine de

usarlos.

Un principio til al usar Maxima.

Maxima

Inicializando el valor de la variable y con 9.

( %i7) y:9; ( %o7) 9

Maxima

Aqu se muestran todas las variables que tienen un valor asignado.

( %i8) values; ( %o8) [x, , y]

Sec. 5.2. Denicin de variables

41

Maxima

Sentencia para quitar el valor asignado a la variable x.

( %i9) kill(x); ( %o9) done


Maxima

Sentencia para quitar el valor asignado a todas las variables.

( %i10) kill(values); ( %o10) done


Las variables que el usuario dene pueden tener cualquier nombre. No hay lmite para la longitud de sus nombres. Un inconveniente, sin embargo, es que los nombres de las variables nunca pueden empezar con nmeros. Por ejemplo,

x3

puede ser una variable, pero

corresponde a una sintaxis incorrecta en


Maxima

Maxima.

3x

He aqu cuatro variables diferentes.

( %i11) EstoEsUnaVariable:4/3; 4 ( %o11) 3 ( %i12) Esto_Es_Una_Variable:5^3; ( %o12) 125 ( %i13) estoesunavariable:8; ( %o13) 8 ( %i14) esto_es_una_variable:sqrt(7); ( %o14) 7
Maxima

Con

values visualizamos las nuevas variables a las que se les ha asignado un valor.

( %i15) values; ( %o15) [EstoEsUnaVariable,

Esto_Es_Una_Variable,

estoesunavariable, esto_es_una_variable]

42

Cap. 5. Generacin de clculos

Maxima

Es posible realizar operaciones diversas con estas variables.

( %i16) (Esto_Es_Una_Variable^2+esto_es_una_variable* estoesunavariable)/EstoEsUnaVariable; 3(8 7 + 15625) ( %o16) 4

Maxima

Con

kill(all)

tambin se quita el valor asignado a todas las variables.

( %i17) kill(all); ( %o17) done

Maxima

Esta vez

values

no encuantra ninguan variable con valor asignado.

( %i18) values; ( %o18) [ ]

5.3 Secuencia de operaciones


Al realizar clculos con

Maxima, usualmente se lo hace mediante una

secuencia de pasos. Si el usuario desea puede realizar cada paso en una lnea separada. A veces, sin embargo, es conveniente ingresar varios pasos en una misma lnea. Es posible hacer esto simplemente separando cada una de las partes ingresadas con punto y coma (si quiere verse las salidas en pantalla) o con signo de dolar (si no quiere verse salida alguna).

Sec. 5.3. Secuencia de operaciones

43

expr1 ; expr2 ; . . . ; exprn ; expr1 $ expr2 $ . . . $ exprn $ expr1 $ expr2 $ . . . $ exprn ;

hace varias operaciones y da el resultado de todas ellas hace varias operaciones y no muestra ningn resultado hace varias operaciones y da el resultado de la ltima lnea

Formas de hacer secuencias de operaciones en Maxima.


Maxima

Esto realiza tres operaciones en una misma lnea y muestra todos los resultados.

( %i1) x:3; y:4; z:x+y; ( %o1) 3 ( %o2) 4 ( %o3) 7


Maxima

Esto realiza tres operaciones en una misma lnea sin mostrar resultados.

( %i4) x:3$ y:4$ z:x+y$


Maxima

Esto realiza tres operaciones en una misma lnea y muestra el resultado de la ltima operacin.

( %i8) x:3$ y:4$ z:x+y; ( %o10) 7


Si el usuario naliza su entrada con un signo de dolar, esto es interpretado por de hacer que

Maxima

como si estuviera ingresando una secuencia

de operaciones con un signo de dolar al nal; as que tiene el efecto

Maxima

calcule las operaciones especicadas, pero no

muestre la salida.

expr $
Inhibiendo la salida.

realiza una operacin, pero no muestra la salida

44

Cap. 5. Generacin de clculos

Maxima

Aadiendo un signo de dolar al nal de la lnea se le indica a Maxima que no muestre la salida.

( %i11) x:47+5$
Maxima

Usando

se puede visualizar la salida anterior.

( %i12) % ( %o12) 52

5.4 Impresin de expresiones sin evaluar


El operador comilla simple evita la evaluacin. Aplicado a un smbolo, la comilla simple evita la evaluacin del smbolo. Aplicado a la invocacin de una funcin, la comilla simple evita la evaluacin de la funcin invocada, aunque los argumentos de la funcin son evaluados (siempre y cuando la evaluacin no se evite de otra manera). Aplicado a una expresin con parntesis, la comilla simple evita la evaluacin de todos los smbolos y llamadas a funciones que hubiesen en la expresin.
Maxima

Esto asigna valores a las variables a y b.

( %i1) a:45$ b:56$

'a 'f (x ) '(expr )

a evita la evaluacin de la funcin f, pero


evita la evaluacin del smbolo no de sus argumentos evita la evaluacin de todos los smbolos y llamadas a funciones que hayan en la expresin

expr

Evitando la evaluacin.

Sec. 5.4. Impresin de expresiones sin evaluar

45

Maxima

El operador comilla simple (') aplicado a la variable a evita la evaluacin de sta.

( %i3) 'a ( %o3) a

Maxima

El operador ' aplicado a la funcin

integrate

evita la evaluacin de sta.

( %i4) 'integrate(x^3,x); ( %o4)


x3 dx

Maxima

Un uso interesante del operador '.

( %i5) 'integrate(x^3,x)=integrate(x^3,x); x4 ( %o5) x3 dx = 4

Maxima

El operador ' no evita la evaluacin de los argumentos de una funcin.

( %i6) 'integrate((2+3)*x^3,x); ( %o6) 5


x3 dx

Maxima

El operador ' aplicado a una expresin.

( %i7) '(2*sqrt(a)+b*integrate(x^3,x)); ( %o7) b x3 dx + 2 a

46

Cap. 5. Generacin de clculos

Maxima

Otro uso interesante del operador '.

( %i8) '(2*sqrt(a)+b*integrate(x^3,x))=(2*sqrt(a)+ b*integrate(x^3,x)); ( %o8) b x3 dx + 2 a = 14x4 + 6 5

CAPTULO

Clculos algebraicos

6.1 Clculo simblico


Una de las caractersticas importantes de frmulas algebraicas as como nmeros.

Maxima

es que puede hacer

clculos simblicos y numricos. Esto signica que puede manejar

Maxima

He aqu un tpico clculo numrico.

( %i1) 4+36-1; ( %o1) 39

Maxima

Este es un clculo simblico.

( %i2) 7*x-3*x+6; ( %o2) 4 x + 6

Clculo numrico Clculo simblico

4 + 36 1 39 7x 3x + 6 4x + 6

Clculo simblico y numrico.


47

48

Cap. 6. Clculos algebraicos

Maxima

El usuario puede digitar cualquier expresin algebraica en Maxima.

( %i3) x^3+2*x-1; ( %o3) x3 + 2 x 1

Maxima

Maxima realiza automticamente simplicaciones algebraicas bsicas. Aqu combina a x2 y a 4x2 para dar 3x2 .

( %i4) x^2+x-4*x^2; ( %o4) x 3 x2

Es posible digitar cualquier expresin algebraica usando los operadores enumerados en la seccin 4.1. No debe olvidarse ingresar el asterisco para el producto, por ejemplo:

x y, de lo contrario Maxima

asumir que se trata de una sola variable.

Maxima

Maxima reordena y combina trminos usando las reglas estndares del lgebra.

( %i5) x*y+2*x^2*y+y^2*x^2-2*y*x; ( %o5) x2 y 2 + 2 x2 y x y

Maxima

He aqu otra expresin algebraica.

( %i6) (x+2*y+1)*(x-2)^2; ( %o6) (x 2)2 (2 y + x + 1)

Maxima

La funcin

expand

ampla productos y potencias.

( %i7) expand( %); ( %o7) 2x2 y 8xy + 8y + x3 3x2 + 4

Sec. 6.1. Clculo simblico

49

Maxima

factor

hace lo inverso de

expand.

( %i8) factor( %); ( %o8) (x 2)2 (2y + x + 1)

Cuando se digita expresiones complicadas, es importante poner los parntesis en los lugares correctos. As, por ejemplo, debe dar la expresin

x4y

en la forma

interpretar como

x4 y .

x^(4*y). Si no se colocan los parntesis, se

Maxima

He aqu una frmula ms complicada, que requiere de varios parntesis.

( %i9) sqrt(2)/9801*(4*n)!*(1103+26390*n)/(n!^4+1); ( %o9)


2 (26390 n+1103) (4 n)! 9801 (n!4 +1)

Cuando el usuario digita una expresin,

Maxima

aplica autom-

ticamente su gran repertorio de reglas para transformar las expresiones. Estas reglas incluyen las reglas estndares del lgebra, tales como

x x = 0,
Maxima

junto con reglas mucho ms sosticadas.

Maxima utiliza reglas estndares del lgebra para sustituir

( x + 1)4

por

(x+1)2 .

( %i10) sqrt(x+1)^4; ( %o10) (x + 1)2

Maxima

Maxima no conoce ninguna regla para esta expresin, as que deja expresin en
la forma original que usted le dio.

( %i11) log(cos(x)+1); ( %o11) log (cos x + 1)

50

Cap. 6. Clculos algebraicos

6.2 Valores para smbolos


Cuando

Maxima

transforma una expresin por ejemplo

est tratando la variable tales casos,

x + x en 2 x, x en forma puramente simblica o formal. En x

x es un smbolo que puede representar cualquier expresin.

A menudo, sin embargo, se necesita sustituir un smbolo como aunque puede que sea una expresin. Para sustituir el smbolo

por un valor determinado. Algunas veces este valor ser un nmero;

x,

que aparece en la expresin

con un valor determinado; el usuario puede utilizar la funcin una sintaxis alternativa de la misma.

1 + 2x, ev o

ev(expr, x=valor ) ev(expr, x=valor, y=valor )

reemplaza

exp

por

valor

en la expresin

realiza varios reemplazos

expr, x=valor expr, x=valor, y=valor

reemplaza

exp

por

valor

en la expresin

realiza varios reemplazos

Sustitucin de smbolos por valores en expresiones.


Maxima

Esto realiza la regla de sustitucin

x=3

en la expresin

1 + 2x.

( %i1) 1+2*x,x=3; ( %o1) 7


Maxima

Tambin es posible sustituir es sustituida por

por cualquier expresin. Aqu cada ocurrencia de

2 y.

( %i2) 1+x+x^2,x=2-y; ( %o2) y + (2 y)2 + 3


Maxima

Maxima trata las reglas de sustitucin como cualquier otra expresin simblica.

( %i3) x=y+3;

Sec. 6.2. Valores para smbolos

51

( %o3) x = y + 3

Maxima

Esto aplica la regla de sustitucin ltima a la expresin

x2 9.

( %i4) x^2-9, %; ( %o4) (y + 3)2 9

Maxima

Es posible aplicar varias reglas de sustitucin juntas.

( %i5) (x+y)*(x-y)^2,x=3,y=1-a; ( %o5) (4 a) (a + 2)2


La funcin

ev o su sintaxis alternativa, permiten aplicar reglas de


x por 3 siempre que aparezca x. Segn x : 3, x

sustitucin a una expresin particular. A veces, sin embargo, se querr denir reglas de sustitucin que se apliquen siempre. Por ejemplo, puede ser que se desee sustituir lo discutido en la seccin 5.2, puede hacerse esto asignando el valor

x,

usando

x : 3.

Una vez que se haya hecho la asignacin

siempre ser sustituido por


Maxima

3,

cuando aparezca.

Esto asigna el valor de

x.

( %i6) x:3; ( %o6) 3


Maxima

Ahora

ser sustituido automticamente por

dondequiera que aparezca.

( %i7) x^2-1; ( %o7) 8


Maxima

Esto asigna la expresin

1+a

x.

( %i8) x:a+1;

52

Cap. 6. Clculos algebraicos

( %o8) a + 1

Maxima

Ahora

es reemplazado por

a + 1.

( %i9) x^2-1; ( %o9) (a + 1)2 1

Es posible denir como valor de un smbolo a cualquier expresin, no solamente a un nmero. Debe recordarse que una vez que se haya dado tal denicin, sta continuar siendo utilizada siempre que aparezca el smbolo, hasta que el usuario la cambie o quite explcitamente. Para la mayora de usuarios, el olvidarse quitar valores que han asignado a los smbolos es la causa ms comn de errores al usar

Maxima.

x:valor
kill(x )
Asignando valores a smbolos.

dene un valor para zado siempre

que ser utili-

remueve cualquier valor denido para

Maxima

El smbolo

todava tiene el valor que le asign arriba.

( %i10) x+5-2*x; ( %o10) 2 (a + 1) + a + 6

Maxima

Esto quita el valor que asign a

x.

( %i11) kill(x) ( %o11) done

Sec. 6.2. Valores para smbolos

53

Maxima

Ahora

no tiene ningn valor denido, as que puede ser utilizado como variable

puramente simblica.

( %i12) x+5-2*x; ( %o12) 5 x


Los lenguajes de programacin tradicionales que no soportan el clculo simblico permiten que las variables sean utilizadas solamente como nombres para objetos, tpicamente nmeros, que se han asignado como valores para ellos. En

Maxima,

sin embargo,

se puede

tambin tratar como variable puramente formal, a la cual se le puede aplicar varias reglas de transformacin. Por supuesto, si el usuario da explcitamente una denicin, por ejemplo sustituida siempre por

x : 3,

entonces

ser

3,

y no sirve ms como variable formal.

Debe recordarse que las deniciones explcitas por ejemplo tienen un efecto global. Por otra parte, un reemplazo tal como

x:3

expr , x = 3
afecta solamente a la expresin especca

expr.

Es posible mezclar siempre reemplazos con asignaciones. Con asignaciones, se puede dar nombres a las expresiones en las cuales se desea hacer reemplazos, o a las reglas que se desea utilizar para hacer los reemplazos.

Maxima

Esto asigna un valor al smbolo

t.

( %i13) t:x^2+1; ( %o13) x2 + 1

Maxima

Esto asigna un valor al smbolo

x.

( %i14) t,x=2; ( %o14) 5

54

Cap. 6. Clculos algebraicos

Maxima

Esto encuentra el valor de

para un valor diferente de

x.

( %i15) t,x=5*a; ( %o15) 25a2 + 1

Maxima

Esto encuentra el valor de resultado numricamente.

cuando

es sustituido por

%pi,

y luego evala el

( %i16) t,x= %pi,numer; ( %o16) 10.86960440108936

Maxima

No obstante, el smbolo

preserva la denicin original.

( %i17) t; ( %o17) x2 + 1

6.3 Transformacin de expresiones algebraicas


A menudo hay muchas formas diferentes de escribir la misma expresin algebraica. Como un ejemplo, la expresin escrita como

x + 2x + 1. Maxima
2

(x + 1)2

puede ser

proporciona una gran coleccin

de funciones para hacer conversiones entre las diferentes formas de expresiones algebraicas.

Maxima

expand da la forma expandida


desarrolladas.

de una expresin, con los productos y las potencias

( %i1) expand((x+1)^2); ( %o1) x2 + 2 x + 1

Sec. 6.3. Transformacin de expresiones algebraicas

55

expand(expr )

desarrolla productos y potencias, escribiendo el resultado como suma de trminos

expr ,expand factor(expr ) expr ,factor

equivale a escribe

expand(expr )
como un producto de fac-

expr

tores mnimos equivale a

factor(expr )

Dos funciones comunes para transformar expresiones algebraicas.

Maxima

factor

recupera la forma original.

( %i2) factor( %); ( %o2) (x + 1)2

Maxima

Es fcil generar expresiones complicadas con

expand.

( %i3) (x+3*y+1)^4,expand; ( %o3) 81 y 4 + 108 x y 3 + 108 y 3 + 54 x2 y 2 + 108 x y 2 + 54 y 2 + 12 x3 y + 36 x2 y + 36 x y + 12 y + x4 + 4 x3 + 6 x2 + 4 x + 1

Maxima

factor

a menudo le da expresiones ms simples.

( %i4) %,factor; ( %o4) (3 y + x + 1)4

Maxima

Hay algunos casos donde

factor

puede dar expresiones ms complicadas.

( %i5) x^8-1,factor; ( %o5) (x 1) (x + 1) x2 + 1

x4 + 1

56

Cap. 6. Clculos algebraicos

Maxima

En este caso,

expand

da la forma ms simple.

( %i6) %,expand; ( %o6) x8 1

6.4 Simplicacin de expresiones algebraicas


En muchas situaciones el usuario desea escribir una expresin algebraica en la forma ms simple posible. Aunque sea difcil saber exactamente lo que se entiende por la forma ms simple, un procedimiento prctico que vale la pena seguir es analizar varias formas diferentes de una expresin, y elegir la de menor nmero de partes

rat(expr ) ratsimp(expr )

convierte cional

expr

al formato cannico ra-

simplica la expresin

expr

y todas

sus subexpresiones, incluyendo los argumentos de funciones no racionales

expr ,ratsimp fullratsimp(expr )

equivale a

aplica repetidamente

ratsimp(expr ) ratsimp

a una

expresin, seguida de simplicaciones no racionales, hasta que no se obtienen ms transformaciones; entonces devuelve el resultado

expr ,fullratsimp

equivale a

fullratsimp(expr )

Simplicacin de expresiones algebraicas.

Se puede utilizar, a menudo,

ratsimp

para mejorar expresiones

complicadas que se obtienen como resultado de clculos.

Maxima

He aqu la integral de

1 . x4 1

( %i1) integrate(1/(x^4-1),x);

Sec. 6.4. Simplicacin de expresiones algebraicas

57

( %o1) log(x+1) 4

arctan x 2

log(x1) 4

Maxima

Al derivar el ltimo resultado debera volverse a la expresin original. En este caso, como es comn, se obtiene una versin ms complicada de la expresin original.

( %i2) diff( %,x); 1 1 ( %o2) 2 (x2 +1) 4 (x+1) +

1 4 (x1)

Maxima

ratsimp

permite volver a la forma original de la expresin.

( %i3) ratsimp( %); ( %o3) x41 1

Las expresiones pueden incluir funciones no racionales y los argumentos de tales funciones son tambin racionalmente simplicados.
Maxima

He aqu una expresin que incluye funciones no racionales cuyos argumentos admiten ser racionalmente simplicados.

( %i4) sin(x/(x^2+x))=exp((log(x)+1)^2-log(x)^2); ( %o4) sen


x x2 +x

= %e(log x+1)

log2 x

Maxima

ratsimp

simplica los argumentos de tales funciones.

( %i5) %,ratsimp; ( %o5) sen


1 x+1

= %e x2

Ante expresiones no racionales, una llamada a

ratsimp

puede no

ser suciente para conseguir un resultado simplicado. En ocasiones

58

Cap. 6. Clculos algebraicos

sern necesarias ms de una llamada a precisamente


Maxima

fullratsimp.

ratsimp,

que es lo que hace

Esto dene la variable

expresion.

( %i6) expresion:(x^(a/2)+1)^2*(x^(a/2)-1)^2/(x^ a-1); 2 2 (xa/2 1) (xa/2 +1) ( %o6) a 1 x

Maxima

En general,

rat no simplica otras funciones que no sean la suma, resta, multipli-

cacin, divisin y exponenciacin de exponente entero.

( %i7) rat(expresion); 4 2 (xa/2 ) 2 (xa/2 ) +1 ( %o7) xa 1

Maxima

Con

ratsimp

se consigue una mejor simplicacin.

( %i8) ratsimp(expresion); ( %o8)


x2 a 2 xa +1 xa 1

Maxima

Con

fullratsimp

se consigue simplicar la expresin al mximo.

( %i9) fullratsimp(expresion); ( %o9) xa 1

6.5 Expresiones puestas en diferentes formas


Las expresiones algebraicas complicadas se pueden escribir generalmente en varias maneras. nes de estas funciones son

Maxima

proporciona una variedad de funy

ciones para convertir expresiones de una forma a otra. Los ms comu-

expand, factor

ratsimp.

Sin embargo,

Sec. 6.5. Expresiones puestas en diferentes formas

59

cuando se tiene expresiones racionales que contienen cocientes, puede ser necesario utilizar otras funciones.

expandwrt(expr,var1 , . . . , varn ) expand(expr ) factor(expr ) partfrac(expr,var )

expande la expresin to a las variables

expr

con respecy por

var1 , . . . , varn

defecto no expande los denominadores expande la expresin

factoriza la expresin expande la principal

expr expr expresin expr

en fraccio-

nes parciales respecto de la variable

var

Comandos para transformar expresiones algebraicas.

Maxima

He aqu una expresin racional, la cual puede ser escrita en varias formas diferentes.

( %i1) e:(x-1)^2*(2+x)/((1+x)*(x-3)^2); ( %o1)


(x1)2 (x+2) (x3)2 (x+1)

Maxima

expandwrt

expande el numerador de la expresin, pero deja el denominador en

forma factorizada.

( %i2) expandwrt(e,x); ( %o2)


x3 (x3)2 (x+1)

3x (x3)2 (x+1)

2 (x3)2 (x+1)

Maxima

expand

expande todo, incluyendo el denominador.

( %i3) expand(e); ( %o3)


x3 x3 5 x2 +3 x+9

3x x3 5 x2 +3 x+9

2 x3 5 x2 +3 x+9

60

Cap. 6. Clculos algebraicos

Maxima

partfrac

separa la expresin en trminos con denominadores simples.

( %i4) partfrac( %,x); 19 1 ( %o4) 4 (x+1) + 4 (x3) +

5 (x3)2

+1

Maxima

factor

factoriza todo, en este caso reproduce la forma original.

( %i5) factor( %); ( %o5)


(x1)2 (x+2) (x3)2 (x+1)

collectterms(expr,var )

agrupa juntas todos las potencias de

var

Reordenamiento de expresiones en varias variables.

Maxima

He aqu una expresin algebraica en dos variables.

( %i6) v:expand((3+2*x)^2*(x+2*y)^2); ( %o6) 16 x2 y 2 +48 x y 2 +36 y 2 +16 x3 y+48 x2 y+36 x y+ 4 x4 + 12 x3 + 9 x2

Maxima

Esto agrupa los trminos de

afectados por la misma potencia de

x.

( %i7) collectterms(v,x); ( %o7) x 48 y 2 + 36 y + x2 16 y 2 + 48 y + 9 + 6 y 2 + x3 (16 y + 12) + 4 x4

Maxima

Esto agrupa juntas las potencias de

y.

( %i8) collectterms(v,y);

Sec. 6.5. Expresiones puestas en diferentes formas

61

( %o8) 16 x2 + 48 x + 36 y 2 + 16 x3 + 48 x2 + 36 x y+ 4 x4 + 12 x3 + 9 x2

Como acaba de verse, cuando el usuario se limita a expresiones polinmicas racionales, hay muchas formas de escribir cualquier expresin particular. Si ste considera expresiones ms complicadas, que incluyan, por ejemplo, funciones matemticas trascendentes, la variedad de formas posibles llega a ser mayor. Por consiguiente, es imposible tener una funcin incorporada especco en cada forma posible. Ms bien,
1

Maxima

Maxima para producir

le permite construir sistemas

arbitrarios de reglas de transformacin para hacer diversas conversiones . Sin embargo, hay algunas funciones incorporadas adicionales de

Maxima

para transformar expresiones.

trigexpand(expr )

expande funciones trigonomtricas e hiperblicas de sumas de ngulos y de mltiplos de ngulos presentes en la expresin

expr

expr ,trigexpand trigsimp(expr )

trigexpand(expr ) utiliza las identidades sen(x)2 + 2 2 cos(x) = 1 y cosh(x) senh(x)2 = 1


equivale a para simplicar expresiones que contienen

tan, sec,

etc.

trigreduce(expr,var )

combina productos y potencias de senos y cosenos trigonomtricos e hiperblicos de

var,

transformndolos en

otros que son mltiplos de

var

trigreduce(expr )

si no se introduce el argumento de

var,

entonces se utilizan todas las variables

expr

expr ,trigreduce

equivale a

trigreduce(expr )

Algunas funciones ms para transformar expresiones.

1 Para

ms detalle al respecto consulte sobre las funciones

scsimp

defrule

en la ayuda de Maxima.

62

Cap. 6. Clculos algebraicos

trigrat(expr ) exponentialize(expr )

devuelve una forma cannica simplicada cuasi-lineal de una expresin trigonomtrica convierte las funciones trigonomtricas e hiperblicas de ciales

expr

a exponen-

expr ,exponentialize demoivre(expr ) expr ,demoivre rectform(expr ) expr ,rectform polarform(expr ) expr ,polarform radcan(expr )

equivale a

exponentialize(expr )

convierte exponenciales complejos en expresiones equivalentes pero en trminos de las funciones trigonomtricas equivale a

demoivre(expr )

devuelve una expresin de la forma

a+ b %i equivalente a expr, con a y b reales

equivale a

rectform(expr )

devuelve una expresin de la forma

r %e %i reales

equivalente a

expr,

con

equivale a

polarform(expr )

simplica la expresin

expr, que puede

contener logaritmos, exponenciales y radicales, convirtindola a una forma cannica

expr ,radcan prod ,radexpand:all

equivale a las races producto ej.,

radcan(expr )

n, se extraen
logcontract(expr )
analiza do ma en la

n -simas de los factores del prod, que sean potencias de


del smbolo radical (p.

4x2 2x)
expresin de

expr
la

refor-

cursivamente, subexpresiones expresiones

transforman-

a1*log(b1)+a2*log(b2)+c
de la forma

expr ,logcontract

log(ratsimp(b1^a1*b2^a2))+c equivale a logcontract(expr )

Algunas funciones ms para transformar expresiones.

Sec. 6.5. Expresiones puestas en diferentes formas

63

Maxima

Esto expande la expresin trigonomtrica, escribindola de modo que todas las funciones tengan argumento x.

( %i9) tan(x)*cos(3*x),trigexpand; ( %o9) cos3 x 3 cos x sin2 x tan x

Maxima

Esto reduce la expresin usando ngulos mltiples.

( %i10) tan(x)*cos(2*x),trigreduce; ( %o10) tan x cos (3 x)

Maxima

Esto expande el seno asumiendo que

son reales.

( %i11) sin(x+ %i*y),rectform; ( %o11) %i cos x sinh y + sin x cosh y

Maxima

Con

logcontract

se contrae una expresin logartimica.

( %i12) 2*(a*log(x)+2*a*log(y)),logcontract; ( %o12) a log x2 y 4 expand y factor

Las transformaciones hechas por funciones como

siempre son correctas, independientemente del valor que puedan tener las variables simblicas en las expresiones. A veces, sin embargo, es til realizar transformaciones que slo son correctas para algunos posibles valores de las variables simblicas. Transformaciones como stas las realizan
Maxima

radcan

radexpand:all.

Maxima no expande automticamente potencias no enteras de productos y cocientes.

( %i13) sqrt(x^5*y/w^3);

64

Cap. 6. Clculos algebraicos

( %o13)

x5 y w3

Maxima

radcan

hace la expansin.

( %i14) %,radcan; ( %o14)


x2
5

w2

Maxima

En este caso Maxima aplica una equivalencia matemtica.

( %i15) sqrt(x^6*y^2/w^10); ( %o15)


|x|3 |y| |w|5

Maxima

Utilizando la variable opcional

radexpand con el valor asignado all, Maxima

pasa

por alto la equivalencia anterior.

( %i16) sqrt(x^6*y^2/w^10),radexpand:all; ( %o16)


x3 y w5

6.6 Simplicacin con asunciones


assume(pred1 , . . . , predn ) f orget(pred1 , . . . , predn ) f acts()
Asuncin de predicados.
aade los predicados al contexto actual borra los predicados establecidos por

pred1 , . . . , predn

assume

devuelve una lista con los predicados asociados al contexto actual

Sec. 6.6. Simplicacin con asunciones

65

Maxima

assume

devuelve una lista con los predicados que han sido aadidos al contexto.

( %i1) assume(x>0,y<0); ( %o1) [x > 0, y < 0]

Maxima

Maxima realiza simplicaciones asumiendo los predicados ingresados.

( %i2) [sqrt(x^2),sqrt(y)]; ( %o2) x, y

Maxima

Otra simplicacin asumiendo los predicados ingresados.

( %i3) sqrt(x^2*y^2); ( %o3) x y


Maxima

facts

muestra los predicados asociadas al contexto actual.

( %i4) facts(); ( %o4) [x > 0, y < 0]

Maxima

forget

borra los predicados previamente establecidos.

( %i5) forget(x>0,y<0); ( %o5) [x > 0, y < 0]

Maxima

Despus de borrar los predicados con lista vaca.

forget,

la llamada

facts()

devuelve una

( %i6) facts(); ( %o6) [ ]

66

Cap. 6. Clculos algebraicos

6.7 Seleccin de partes de expresiones algebraicas


coeff(expr,x,n ) hipow(expr,x ) part(expr,n1 , . . . , nk )
devuelve el coeciente de (el argumento

xn

en

expr

puede omitirse si es

igual a la unidad) devuelve el mayor exponente explcito de

hipow

en

expr

(si

no aparece en

expr,

devuelve 0)

devuelve la parte de mero se obtiene la despus la parte

expr

que se espe-

cica por los ndices

n1 , . . . , nk (priparte n1 de expr,
del resultado an-

n2

terior, y as sucesivamente)

Comandos para seleccionar partes de polinomios.

Maxima

He aqu una expresin algebraica.

( %i1) e:expand((1+3*x+4*y^2)^2); ( %o1) 16 y 4 + 24 x y 2 + 8 y 2 + 9 x2 + 6 x + 1

Maxima

Esto da el coeciente de

en

e.

( %i2) coeff(e,x); ( %o2) 24 y 2 + 6

Maxima

hipow(expr ,y)

da la mayor potencia de

que aparece en expr.

( %i3) hipow(e,y); ( %o3) 4


Maxima

Esto da el cuarto trmino en

e.

( %i4) part(e,4);

Sec. 6.7. Seleccin de partes de expresiones algebraicas

67

( %o4) 9 x2

num(expr ) denom(expr )

devuelve el numerador de

no es una fraccin, devuelve

expr

devuelve el

expr (si expr expr ) denominador de expr (si


1)

no es una fraccin, devuelve

Comandos para seleccionar partes de expresiones racionales.

Maxima

He aqu una expresin racional.

( %i5) r:(1+x)/(2*(2-y)); x+1 ( %o5) 2 (2y)

Maxima

denom

selecciona el denominador.

( %i6) denom(r); ( %o6) 2 (2 y)

Maxima

denom

da 1 para las expresiones que no son cocientes.

( %i7) denom(1/x+1/y); ( %o7) 1

CAPTULO

Matemticas simblicas

La capacidad de

Maxima

de tratar con expresiones simblicas, as co-

mo numricas, le permite usarlo para muchas reas de la matemtica, siendo la ms comn el clculo.

7.1 Lmites
limit(f,x,x0 ) limit(f,x,x0 ,plus) limit(f,x,x0 ,minus)
Lmites.
el lmite el lmite el lmite

xx0

l f m l f m l f m

xx+ 0

xx 0

Maxima

He aqu la expresin

sen x . x

( %i1) f:sin(x)/x; ( %o1)


sin(x) x

Maxima

Si se sustituye x por 0, la expresin se hace 0/0, y se obtiene un mensaje de error.

( %i2) f,x=0;
68

Sec. 7.1. Lmites

69

( %o2)

Division by 0 - -an error. To debug this try: debugmode(true);

Maxima

Si se evala

sen(x) para un x

prximo a 0, se consigue un resultado prximo a 1.

( %i3) f,x=0.01; ( %o3) 0.99998333341667

Maxima

Esto encuentra el lmite de

sen(x) cuando x tiende a 0. x

( %i4) limit(f,x,0); ( %o4) 1

inf minf und ind zeroa zerob infinity


Smbolos especiales para lmites.

+
indenido indenido pero acotado innitesimal mayor que cero innitesimal menor que cero innito complejo

La funcin

limit con un solo argumento se utiliza frecuentemente

para simplicar expresiones en las que aparecen los smbolos especiales para lmites.

Maxima

Esto da un resultado para

1 ().

( %i5) limit(1-minf); ( %o5)

70

Cap. 7. Matemticas simblicas

Maxima

He aqu la simplicacin de una expresin que incluye un innitesimal mayor que cero.

( %i6) limit(x+zeroa); ( %o6) x

7.2 Diferenciacin
diff(f,x ) diff(f,x,n ) diff(f,x1 , n1 , . . . , xm , nm ) diff(f )
Diferenciacin con Maxima.
devuelve la primera derivada de pecto de la variable devuelve la pecto de

res-

n -esima derivada de f f

res-

devuelve la derivada parcial de respecto de

con

x1 , . . . , xm y equivale a diff(. . .(diff(f,xm , nm . . .), x1 , n1 )


devuelve el diferencial total de

Maxima

He aqu la derivada

xn

con respecto a

x.

( %i1) diff(x^ n,x); ( %o1) n xn1


Maxima

Maxima conoce las derivadas de todas las funciones matemticas estndar.

( %i2) diff(atan(x),x); ( %o2) x21 +1

Maxima

La tercera derivada con respecto a

x.

( %i3) diff(x^ n,x,3);

Sec. 7.2. Diferenciacin

71

( %o3) (n 2) (n 1) n xn3

Si no se indica la variable, mientras

Maxima

asume que se quiere calcular

la diferencial total. En notacin matemtica,

diff(f )

diff(f,x ) es como

d dx f ,

es como

df .

Maxima

Esto da la diferencial total respectivamente.

d(xn ). delx

deln

son los diferenciales

dx

dn,

( %i4) diff(x^ n); ( %o4) n xn1 del (x) + xn log x del (n)

As como se trata variables simblicamente, tambin es posible tratar funciones simblicamente en forma explcita para la funcin

Maxima. As, por ejemplo, puede


f(x),

encontrarse frmulas para las derivadas de

ma

f.

sin especicar una

Para esto hay que indicar a

Maxi-

depends.
Maxima

la dependencia de la funcin, lo que se consigue con la funcin

Esto declara la dependencia

f (x2 ).

( %i5) depends(f,x^2); ( %o5) f x2

Maxima

Ahora Maxima puede utilizar la regla de cadena para simplicar la derivada.

( %i6) diff(2*x*f,x); ( %o6) 4 d d 2 f x2 + 2 f x

72

Cap. 7. Matemticas simblicas

depends(, ) depends(1 , 1 , . . . , n , n ) depends([1 , . . . , n ] , ) depends(, [1 . . . , n ]) depends([1 , . . . , n ] , [1 , . . . , m ]) dependencies remove(, dependency) remove([1 , . . . , n ] , dependency) remove(all, dependency)

declara la dependencia funcional declara la dependencia

()

funcional

1 (1 ) , . . . , n (n )
declara la dependencia funcional

1 () , . . . , n ()
declara la dependencia funcional

(1 , . . . , n )
declara la dependencia funcional

1 (1 , . . . , m ) , . . . , n (1 , . . . , m )
lista de tomos que tienen algn tipo de dependencia funcional elimina la dependencia funcional asociada con

1 , . . . , n

elimina la dependencia funcional asociada con

elimina la dependencia funcional de todos los tomos que la tengan

Declaracin y remonicin de dependencia funcional.

Maxima

Esto declara las dependencias

u(x)

v(x).

( %i7) depends([u,v],x); ( %o7) [u (x) , v (x)]

Maxima

Aqu se obtiene una frmula para

d dx

(uv ),

donde

u = u(x)

v = v(x).

( %i8) diff(u^ v,x),expand; ( %o8) uv log u ddx v + uv1

d dx

u v

Maxima

Esto permite apreciar todas las dependencias declaradas hasta el momento.

( %i9) dependencies;

Sec. 7.3. Integracin

73

( %o9) f x2 , u (x) , v (x)

Maxima

Con esta sentencia se borran todas las dependencias.

( %i10) remove(all,dependency); ( %o10) done

7.3 Integracin
integrate(f,x ) integrate(f,x,a,b ) integrate(f=g,x ) changevar('expr,(x, y), y,x )
la integral indenida la integral denida

f dx f dx

b a

la integral denida de una ecuacin, equivale a

f dx =

gdx

hace el cambio de variable dado por

(x, y) = 0
depende de

y)

en la expresin

expr

que

(la nueva variable ser

Integracin.

integration_constant integration_ constant_counter

variable del sistema cuyo valor por defecto es

%c

variable del sistema cuyo valor por defecto es 0

Constantes y contadores de constantes para integrar ecuaciones.

Maxima

Para calcular la integral

xn dx,

Maxima, pregunta si

n+1 = 0

n + 1 = 0.

En

este caso se le ha indicado la eleccin de la opcin

n + 1 = 0,

es decir,

n = 1.

Is

n+1

( %i1) integrate(x^ n,x);


zero or nonzero? n;

74

Cap. 7. Matemticas simblicas

( %o1)

xn+1 n+1

Maxima

He aqu la integral

xn dx,

cuando

n = 1.

Is

n+1

( %i2) integrate(x^ n,x);


zero or nonzero? z;

( %o2) log(x)

Maxima

Este es un ejemplo ligeramente ms complicado.

( %i3) integrate(1/(x^4-a^4),x); arctan( x ) ( %o3) log(x+a) + log(xa) 2 a3 a 4 a3 4 a3

Maxima

Recurdese que

logcontract

contrae los logaritmos.

( %i4) integrate(1/(x^4-a^4),x),logcontract; x+a log( xa )+2 arctan( x ) a ( %o4) 4 a3

Maxima

resuelve casi cualquier integral que puede ser expresada

en trminos de funciones matemticas estndares. Pero debe comprenderse que aun cuando un integrando pueda contener slo funciones simples, su integral puede implicar funciones mucho ms complicadas, o puede no ser expresable en absoluto en trminos de funciones matemticas estndares.
Maxima

He aqu una integral simple.

( %i5) integrate(log(1-x^2),x),logcontract; ( %o5) x log 1 x2 2 + log


x+1 x1

Sec. 7.3. Integracin

75

Maxima

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

( %i6) integrate(log(1-x^2)/x,x); ( %o6) log(x) log 1 x2 +


li 2 (1x2 ) 2

Maxima

Esta integral involucra la funcin

erf2 .

( %i7) integrate(exp(1-x^2),x); ( %o7)


e erf(x) 2

Maxima

Esta integral simplemente no puede ser expresada en trminos de funciones matemticas estndares. Por consiguiente, Maxima la deja como est.

( %i8) integrate(x^ x,x); ( %o8)


xx dx

Maxima

b
He aqu la integral denida

sen2 (x) dx.

( %i9) integrate(sin(x)^2,x,a,b); ( %o9)


sin(2 a)2 a 4

sin(2 b)2 b 4

Maxima

He aqu otra integral denida.

( %i10) integrate(exp(-x^2),x,0,inf); ( %o10)


2

76

Cap. 7. Matemticas simblicas

Maxima

Maxima no puede darle una frmula para esta integral denida.

( %i11) integrate(x^ x,x,0,1); ( %o11)


0 1

xx dx

Maxima

1
Esto evala la integral mltiple

x 0

(x2 + y 2 ) dy dx.

( %i12) integrate(integrate(x^2+y^2,y,0,x),x,0,1); ( %o12) 1 3

Cuando una constante de integracin se crea durante la integracin denida de una ecuacin, el nombre de la constante se construye concatenando las variables (del sistema)

integration_constant_counter.
Maxima

integration_constant

Esto calcula la integral denida de una ecuacin.

( %i13) integrate(x^2=sin(x),x); ( %o13)


x3 3

= %c1 cos(x)

Maxima

integration_constant

se le puede asignar un smbolo cualquiera.

( %i14) integration_constant: 'K; ( %o14) K

Maxima

Esto calcula la integral denida de una ecuacin a la que se le ha reiniciado la constante de integracin por defecto.

( %i15) integrate(x^2=sin(x),x);

Sec. 7.3. Integracin

77

( %o15)

x3 3

= K2 cos x

Maxima

Es posible reiniciar el contador de

integration_constant_counter.

( %i16) reset(integration_constant_counter); ( %o16) [integration _constant _counter ]

Maxima

Aqu se aprecia que el contador ha sido reiniciado.

( %i17) integrate (x^2=sin(x),x); ( %o17)


x3 3

= K1 cos x

Es posible realizar un cambio de variable en una integral indenida o denida usando la funcin

changevar.

Para que

Maxima

pueda

realizar esto debe mantenerse la integral sin evaluar (seccin 5.4).

Maxima

He aqu una integral clsica sin evaluar.

( %i18) 'integrate( %e^ sqrt(y),y); ( %o18)

%e

dy

Maxima

Esto realiza un cambio de variable en una integral indenida.

( %i19) assume(z>0)$ changevar( %o34,y-z^2,z,y); ( %o19)

%e

dy

78

Cap. 7. Matemticas simblicas

Maxima

Esto realiza un cambio de variable en una integral denida.

( %i20) 'changevar(integrate( %e^ sqrt(y),y,0,4), y-z^2,z,y); ( %o20) 2


0

z %ez dz
2

7.4 Sumas y Productos


sum(f ,i,imin , imax ) lsum(f ,i,L)
Sumas.
la suma

imax imin
en

representa la suma de mento

para cada ele-

Maxima

7
Esto construye la suma

xi . i i=1

( %i1) sum(x^ i/i,i,1,7); ( %o1)


x7 7

x6 6

x5 5

x4 4

x3 3

x2 2

+x

Maxima

n
Esto devuelve la suma

i2
i=1

sin realizar ningn cambio.

( %i2) sum(i^2,i,1,n);
n

( %o2)
i=1

i2

Maxima

Agregando

simpsum

la suma es calculada simblicamente como una funcin de

n.

( %i3) sum(i^2,i,1,n),simpsum;

Sec. 7.4. Sumas y Productos

79

( %o3)

2 n3 +3 n2 +n 6

Maxima

Combinando

simpsum

con

factor

se obtiene un resultado factorizado.

( %i4) sum(i^2,i,1,n),simpsum,factor; ( %o4)


n (n+1) (2 n+1) 6

Maxima

Maxima tambin puede dar un resultado exacto para esta suma innita.

( %i5) sum(1/i^4,i,1,inf),simpsum; ( %o5)


4 90

Maxima

3
Esta es la suma mltiple

xi y j .
i=1 j=1

( %i6) sum(sum(x^ i*y^ j,j,1,i),i,1,3); ( %o6) x3 y 3 + x3 y 2 + x2 y 2 + x3 y + x2 y + x y

Maxima

Esta es una suma para la cual los valores del ndice de variacin no estn equiincrementados.

( %i7) lsum(x^ i,i,[1,2,7]); ( %o7) x7 + x2 + x

product(f (i ),i,imin , imax )


Productos.

el producto

imax imin

f (i)

Maxima

Los productos se obtienen en forma similar a las sumas.

( %i8) prod(x+i,i,1,4);

80

Cap. 7. Matemticas simblicas

( %o8) (x + 1) (x + 2) (x + 3) (x + 4)

Maxima

Agregando de

simpproduct

la suma es calculada simblicamente como una funcin

n.

( %i9) product(k,k,1,n),simpproduct; ( %o9) n!

Maxima

Este es un producto que no puede ser resuelto.

( %i10) product(integrate(x^k,x,0,1),k,1,n);
n

( %o10)
k=1

1 k+1

Cabe mencionar que la funcin

changevar

tambin se puede uti-

lizar para cambiar los ndices de una suma o producto. Sin embargo, debe tenerse en cuenta que cuando se realiza un cambio en una suma o producto, el mismo debe expresarse en trminos de sumas, como

i = j + . . .,
Maxima

no como una funcin de mayor grado.

He aqu una suma nita con ndice

j.

( %i11) sum(f(j+2)*x^ j,j,-2,n);


n

( %o11)
j=2

f (j + 2) xj

Maxima

Esto realiza el cambio

j =i2

en la suma anterior.

( %i12) changevar( %,j-i+2,i,j);

Sec. 7.5. Operadores relacionales y lgicos

81

n+2

( %o12)
i=0

f (i) xi2

Maxima

Aqu se hace el cambio

i=k2

en un producto innito.

( %i13) product(f(i+2)*x^(i+2),i,-2,inf);

( %o13)
i=2

f (i + 2) xi+2

( %i14) changevar( %,i-k+2,k,i); ( %o14)


k=0

f (k) xk

7.5 Operadores relacionales y lgicos


= # > >= < <= equal notequal
Operadores relacionales.
igual (por sintaxis) desigual (por sintaxis) mayor que mayor o igual que menor que menor o igual que igual (por valor) desigual (por valor)

compare(x,y )

compara

, <=, >, >=, =, #, notcomparable unknown, segn sea el caso

devuelve

<

Funcin para obtener operadores relacionales.

82

Cap. 7. Matemticas simblicas

Maxima

Esto prueba si 10 es menor que 7.

( %i1) 10<7,pred; ( %o1) f alse

Maxima

Esto prueba si 10 es diferente que 7.

( %i2) 10#7,pred; ( %o2) true


Maxima

Maxima puede determinar que esto es verdadero.

( %i3) %pi^ %e< %e^ %pi,pred; ( %o3) true


Maxima

Maxima no sabe si esto es verdadero o falso.

( %i4) x>y,pred; ( %o4) x > y

Maxima

He aqu dos comparaciones.

( %i5) compare(1,2); ( %o5) < ( %i6) compare(1/x,0); ( %o6) #

Maxima

Una diferencia notable entre

equal.

( %i7) (x+1)^2=x^2+2*x+1,pred; ( %o7) f alse

Sec. 7.5. Operadores relacionales y lgicos

83

( %i8) equal((x+1)^2,x^2+2*x+1),pred; ( %o8) true


El usuario debe tener presente que, los operadores relacionales son todos operadores binarios.

Maxima

no reconoce expresiones del estilo

a < b < c.
Maxima

Al pretender evaluar una desigualdad como la siguiente, Maxima devuelve un mensaje de error.

( %i9) 2<3<4,pred; ( %o9) incorrect syntax:

Found logical expression where alge-

braic expression expected incorrect syntax: Premature termination of input at ;.

not and or if cond then expr1 else expr2


Operadores lgicos.

negacin conjuncin disyuncin devuelve

expr2

si

cond

expr1
es

false

si

cond

es

true,

Maxima

Una forma de ingresar expresiones del estilo operador lgico

a < b < c,

en Maxima, es usando el

and.

( %i10) 2<3 and 3<4; ( %o10) true

Maxima

Mientras no se hayan hecho asignaciones adecuadas a esto es verdadero o falso.

q,

Maxima no sabe si

( %i11) p and q;

84

Cap. 7. Matemticas simblicas

( %o11) p q

7.6 Ecuaciones
En

Maxima, una ecuacin consiste de dos expresiones vinculadas con


=. La expresin a = b representa una ecuacin sin evaluar,

el smbolo

la cual puede vericarse o no.

expr1 = expr2

representa una ecuacin devuelve devuelve

lhs(expr1 = expr2 ) rhs(expr1 = expr2 )


Ecuaciones en Maxima.

expr1 expr2

Maxima

Una ecuacin por s misma no es evaluada.

( %i1) x^4-5*x^2-3=x; ( %o1) x = x4 5 x2 3


Es muy importante que el usuario no confunda seccin 5.2). Mientras que gina una asignacin,
Maxima

x=y

x:y con x=y (ver x:y es una declaracin imperativa que ori-

no causa ninguna accin explcita.

Con

lhs3

se selecciona el miembro izquierdo de la ecuacin.

( %i2) lhs(x=x^4-5*x^2-3); ( %o2) x


Maxima

Con

rhs

se selecciona el miembro derecho de la ecuacin.

( %i3) rhs(x=x^4-5*x^2-3); ( %o3) x4 5 x2 3

Sec. 7.7. Solucin de Ecuaciones Algebraicas

85

7.7 Solucin de Ecuaciones Algebraicas


solve(ecu,x )
Solucin de ecuaciones.
resuelve la ecuacin algebraica incgnita

ecu

de

solve siempre trata de dar frmulas explcitas para las soluciones


de ecuaciones. Sin embargo, para ecuaciones sucientemente complicadas, no pueden darse frmulas algebraicas explcitas. Si se tiene una ecuacin algebraica en una variable, y la potencia ms alta de la variable es menor que cinco, entonces

Maxima

siempre puede dar frmulas

para las soluciones. Sin embargo, si la potencia ms alta es cinco o ms, puede ser matemticamente imposible dar frmulas algebraicas explcitas para todas las soluciones.
Maxima

Maxima siempre puede solucionar ecuaciones algebraicas en una variable cuando


la potencia ms alta es menor que cinco.

( %i1) solve(x^4-5*x^2-3=0,x); 37+5 37+5 375 %i ( %o1) x = 2 , x = 2 , x = , 2 375 %i x= 2

Maxima

Tambin puede solucionar algunas ecuaciones que involucran potencias ms altas.

( %i2) solve(x^6=1,x); ( %o2) x =


x=

3 %i+1 , x = 3 %i1 , x 2 2 3 %i1 2 ,x = 1

= 1, x =

3 %i+1 , 2

Maxima

Hay algunas ecuaciones, sin embargo, para las cuales es matemticamente imposible encontrar frmulas explcitas para las soluciones.

( %i3) solve(2-4*x+x^5=0,x);

86

Cap. 7. Matemticas simblicas

( %o3) 0 = x5 4 x + 2

Tambin puede usarse ciones simultneas.

Maxima

para solucionar sistemas de ecua-

solve([ecu1 , . . . , ecun ] , [x1 , . . . , xn ])


Solucin de sistemas ecuaciones.

resuelve un sistema de ecuaciones polinmicas simultneas (lineales o no)

Maxima

He aqu una lista de dos ecuaciones simultneas, para que sean resueltas en las variables x e y.

( %i4) solve([a*x+y=0,2*x+(1-a)*y=1],[x,y]); ( %o4)


x=
1 a2 a+2 , y a = a2 a+2

Maxima

He aqu algunas ecuaciones simultneas ms complicadas.

( %i5) solve([x^2+x*y+y^2=4,x+x*y+y=2],[x,y]); ( %o5) [x = 2, y = 0] , x =


11 %i3 ,y 2

x=

= 11 %i7 , [x = 0, y = 2] 11 %i1

11 %i+3 ,y 2

= 11 %i+7 , 11 %i+1

Maxima

Con

rectform

se obtiene una mejor presentacin.

( %i6) %,rectform; ( %o6) [x = 2, y = 0] , x =

x=

11 %i 2

3, y = 2

11 %i 3, y = 2 2 11 %i 2 3 , [x 2

11 %i 2

3 2

= 0, y = 2]

Una variable para

solve puede ser tambin una expresin. Esto se

aprecia, por ejemplo, al aplicar esta funcin para obtener la derivada

Sec. 7.8. Solucin de Ecuaciones Trascendentales

87

de una funcin denida en forma implcita.


Maxima

Esto asigna la ecuacin

y 3 3 x y + x3 = 0

a la variable

e.

( %i7) e:x^3-3*x*y+y^3=0; ( %o7) y 3 3 x y + x3 = 0

Maxima

Aqu se dene la dependencia

y(x).

( %i8) depends(y,x); ( %o8) [y (x)]

Maxima

Ahora se deriva

( %i9) diff(e,x); ( %o9) 3 y 2 ddx y 3 x

d dx

y 3 y + 3 x2 = 0

Maxima

Finalmente se resuelve la ecuacin para la variable

d dx

y.

( %i10) solve( %,diff(y,x)); ( %o10)


d dx

y=

yx2 y 2 x

7.8 Solucin de Ecuaciones Trascendentales


El paquete

to_poly_solver4

escrito por Barton Willis de la Univer-

sidad de Nebraska amplia la capacidad de

Maxima

para solucionar

algunas ecuaciones que implican funciones trascendentales.

4 El

paquete

to_poly_solver

es experimental, siendo posible que las especi-

caciones de sus funciones puedan cambiar en el futuro, o que algunas de estas funciones puedan ser incorporadas a otras partes de Maxima.

88

Cap. 7. Matemticas simblicas

load(to_poly_solver)$ to_poly_solve(e, l, [options])

inicializa el paquete

to_poly_solver

intenta resolver las ecuaciones cgnitas

de in-

Comando para solucionar ecuaciones trascendentales.

simpfuncs

permite insertar funciones para transformar las soluciones (por ejemplo,

expand, dfloat, nicedummies,


mas, denida por el usuario)

etc.

Incluso pueden ser funciones anni-

parameters use_grobner

intenta encontrar una solucin vlida para parmetros especicados por el usuario se aplica bases de grobner a las ecuaciones antes de intentar resolverlas

Algunas opciones de to_poly_solver.


Maxima

Inicializacin del paquete

to_poly_solver.

( %i1) load(to_poly_solver)$
Maxima

Aqu se soluciona una ecuacin algebraica.

( %i2) to_poly_solve(2*x^2-3*x+5=0,x); ( %o2) %union [x =


31 i3 ], [x 4

31 i+3 ] 4

Maxima

Esto muestra la solucin de un sistema de ecuaciones lineales.

( %i3) to_poly_solve( [2*x-y=5,x+3*y=1], [x,y]); ( %o3) %union [x = 16 , y = 3 ] 7 7

Sec. 7.8. Solucin de Ecuaciones Trascendentales

89

Maxima

Esto muestra la solucin de un sistema de ecuaciones polinomiales.

( %i4) to_poly_solve( [(x^2+1)*(y^2+1)=10,(x+y)*(x*y-1)=3], [x,y]); ( %o4) %union ([x = 3, y = 0], [x = 2, y = 1], [x = 0, y = 3], [x = 1, y = 2], [x = 1, y = 2], [x = 2, y = 1])

Maxima

Este sistema de ecuaciones, en un inicio, no puede ser resuelto.

( %i5) to_poly_solve( [x^2+y^2=2^2,(x-1)^2+(y-1)^2=2^2], [x,y]); ( %o5) %union ()

Maxima

Al asignar el valor

true

a la opcin

use_grobner,

se obtiene la solucin.

( %i6) to_poly_solve( [x^2+y^2=2^2,(x-1)^2+(y-1)^2=2^2], [x,y],use_grobner=true); ( %o6) %union [x =


71 2 ,y

7+1 2 ], [x

7+1 2 ,y

71 2 ]

Maxima

Esta solucin no restringe el parmetro.

( %i7) to_poly_solve(a*x=x,x); ( %o7) %union ([x = 0])

Maxima

Al indicar los parmetros con la opcin

parameters

la solucin es formal.

( %i8) to_poly_solve(a*x=x,x,parameters=[a]);

90

Cap. 7. Matemticas simblicas

( %o8) %union ( %if (a 1 = 0, [x = %c50], %union ()) , %if (a 1#0, [x = 0], %union ()))

Maxima

Esto muestra la solucin de la ecuacin que siendo

x+

x=

3 2

x . Note x+ x

x = 0 el segundo miembro de la ecuacin pierde el sentido (falla debida

al algoritmo utilizado por el paquete).

( %i9) to_poly_solve( sqrt(x+sqrt(x))-sqrt(x-sqrt(x))= (3/2)*sqrt(x/(x+sqrt(x))),x); ( %o9) %union [x = 0], [x = 25 ] 16

Maxima

Aqu se muestra la solucin de la ecuacin funcin trascendental logaritmo.

3 log( x+1+1) log(x40)

= 3,

que involucra la

( %i10) to_poly_solve( log(sqrt(x+1)+1)/log((x-40)^(1/3))=3,x); ( %o10) %union ([x = 48], [x = 36.02856987347005 5.91047671912819 i], [x = 5.910476719128112 i + 36.02856987347006])

Maxima

Para

convertir

cada

solucin

real

de

doble

precisin

hgase

uso

de

simpfunc=[dfloat].

( %i11) to_poly_solve(x^2+x+1=0,x,simpfuncs=[dfloat]); ( %o11) %union ([x = 0.86602540378444 i 0.5], [x = 0.86602540378444 i 0.5])

Maxima

Solucin de la ecuacin

cos(x) sin(x)+1

sin(x)+1 cos(x)

=4

que involucra las funciones tras-

cendentales seno y coseno.

( %i12) to_poly_solve( cos(x)/(sin(x)+1)+(sin(x)+1)/cos(x)=4,x);

Sec. 7.8. Solucin de Ecuaciones Trascendentales

91

( %o12) %union [x = 2 %z60 ], [x = 2 %z62 + ] 3 3

Maxima

Aqu se sustituyen las constantes de la salida previa (vea la seccin 6.2).

( %i13) %, %z 60=k, %z 62=n; ( %o13) %union [x = 2 k ], [x = 2 n + ] 3 3

Maxima

No obstante, la funcin

nicedummies

inicializa los ndices (compare

( %o14)

con

( %o12)

).

( %i14) nicedummies( %o80); ( %o14) %union [x = 2 %z0 ], [x = 2 %z1 + ] 3 3

Maxima

He aqu la solucin de la ecuacin trascendental

sin x +

= cos x

. 4

( %i15) to_poly_solve( sin(x+ %pi/6)=cos(x- %pi/4),x, simpfuncs=[expand]); ( %o15) %union [x = %z65 + 7 ] 24

Maxima

En este caso se resuelve la ecuacin trascendental

tan x = cot x.

( %i16) to_poly_solve(tan(x)=cot(x),x, simpfuncs=[expand,nicedummies]); ( %o16) %union [x =


%z0 2

+ ] 4

Maxima

Esta es la solucin de la ecuacin trascendental

sin x2 + 1 = cos (x).

( %i17) to_poly_solve(sin(x^2+1)=cos(x),x, simpfuncs=[expand,nicedummies]);

92

Cap. 7. Matemticas simblicas

( %o17) %union [x = 1 8 %z02 3 ], [x = 8 %z02 3 + 1 ], 2 2 2 2 1 [x = 8 %z0+2 3 2 ], [x = 8 %z0+2 3 1 ] 2 2 2

Maxima

Esta es la solucin de una ecuacin exponencial.

( %i18) to_poly_solve(exp(x^2-1)-1=0,x, simpfuncs=[expand,nicedummies]); ( %o18) %union [x = 2 i %z0 + 1], [x = 2 i %z0 + 1]

Maxima

Esta es una ecuacin que no puede ser resulta por

to_poly_solve.

( %i19) to_poly_solve(exp(x^2-1)-x=0,x);
Unable to solve Unable to solve Unable to solve

( %o19) %solve [ex

x = 0], [x]

7.9 Sistemas de Inecuaciones Lineales


Adems de la funcin incluye la funcin

to_poly_solve el paquete to_poly_solver fourier_elim que permite resolver sistemas de

inecuaciones lineales y algunas inecuaciones racionales.

load(to_poly_solver)$ fourier_elim([ineq1 , ineq2 , . . .], [var1 , var2 , . . .])

inicializa el paquete aplica cin de sistema el de

to_poly_solver
de eliminael las lineales de para resolver

algoritmo Fourier

inecuaciones

[ineq1 , ineq2 , . . .] respecto variables [var1 , var2 , . . .]


Comando para solucionar inecuaciones lineales.

Sec. 7.9. Sistemas de Inecuaciones Lineales

93

Maxima

Esto permite resolver el sistema vale a

2 < x < , e < x < 4.

La solucin aqu obtenida equi-

e < x < .

( %i1) fourier_elim([-2<x,x< %pi and %e<x,x<4],[x]); ( %o1) [e < x, x < ]

Maxima

Eliminando primero respecto de y superior para

x y luego respecto de y , se obtienen lmites inferior

x que dependen de y , y lmites numricos para y . Si se eliminan en orden inverso, se obtienen los lmites de y en funcin de x, y los de x son nmeros.

( %i2) fourier_elim([x+y<1,y>x and x>0],[x,y]); ( %o2) [0 < x, x < min (1 y, y) , 0 < y, y < 1] ( %i3) fourier_elim([x+y<1,y>x and x>0],[y,x]); ( %o3) [x < y, y < 1 x, 0 < x, x < 1 ] 2

Maxima

Estas desigualdades no admiten solucin.

( %i4) fourier_elim([x+y<1,y>x and x>1],[x,y]); ( %o4) emptyset ( %i5) fourier_elim([x+y<1,y>x and x>1],[y,x]); ( %o5) emptyset

Maxima

Aqu se resuelve la inecuacin

(x2) (x1)2 (x+4) x+3

< 0.

( %i6) fourier_elim([(x-1)^2*(x+4)*(x-2)/(x+3)<0],[x]); ( %o6) [3 < x, x < 1] [1 < x, x < 2] [x < 4]

Maxima

Esto resuelve la inecuacin

1 x

( %i7) fourier_elim([x-1/x>=0],[x]);

94

Cap. 7. Matemticas simblicas

( %o7) [x = 1] [x = 1] [1 < x] [1 < x, x < 0]

Maxima

En este caso se resuelve la inecuacin

|x+2| |x1|

< 1.

( %i8) fourier_elim([abs((x+2)/(x-1))<1],[x]); ( %o8) [x < 2] [x = 2] [2 < x, x < 1 ] 2

Maxima

En caso de que uno de los factores no sea lineal, de inecuaciones simplicadas.

fourier_elim

devuelve una lista

( %i9) fourier_elim([(x^3-1)*(x+3)<0],[x]); ( %o9) [3 < x, x < 1, x2 + x + 1 > 0] [1 < x, x2 + x + 1 > 0] [x < 3, x2 + x + 1 > 0]

7.10 Inecuaciones racionales


Un paquete especializado en resolver inecuaciones racionales, escrito por Volker van Nek, es

solve_rat_ineq.

load(solve_rat_ineq)$ solve_rat_ineq(ineq)

inicializa el paquete resuelve la

solve_rat_ineq inecuacin racional ineq

Comando para solucionar inecuaciones racionales.

Maxima

Aqu se resuelve la inecuacin

(x3 1)(x + 3) < 0.

( %i1) solve_rat_ineq((x^3-1)*(x+3)<0); ( %o1) [[x > 3, x < 1]]

Sec. 7.11. Ecuaciones diferenciales ordinarias

95

Maxima

En este ejemplo se resuelve la inecuacin

(y 3 1)(y + 3)2 0.

( %i2) solve_rat_ineq((y^3-1)*(y+3)^2>=0); ( %o2) [[y = 3], [y >= 1]]

Maxima

En este caso se resuelve la inecuacin

(x1)2 (x+4)(x2) x+3

< 0.

( %i3) solve_rat_ineq((x-1)^2*(x+4)*(x-2)/(x+3)<0); ( %o3) [[x < 4], [x > 3, x < 1], [x > 1, x < 2]]

Maxima

Aqu se resuelve la inecuacin

x1>

1 . x

( %i4) solve_rat_ineq(x-1>1/x); ( %o4) [[x >


51 2 ,x

< 0], [x >

5+1 2 ]]

7.11 Ecuaciones diferenciales ordinarias


ode2(ecu,dvar,ivar )
resuelve la ecuacin diferencial ordinaria variable independiente y segundo orden

ecu, de variable dependiente dvar y ivar, de primer

ic1(sol,x = x0 , y = y0 ) ic2(sol,x = x0 , y = y0 , 'dif f (y, x) = dy0 ) bc2(sol,x = x0 , y = y0 , x = x1 , y = y1 )

resuelve el problema del valor inicial en ecuaciones diferenciales ordinarias de primer orden resuelve el problema del valor inicial en ecuaciones diferenciales ordinarias de segundo orden resuelve el problema del valor en la frontera para ecuaciones diferenciales ordinarias de segundo orden

Solucin de ecuaciones diferenciales ordinarias.

96

Cap. 7. Matemticas simblicas

Maxima

He aqu la solucin de la ecuacin diferencial

y '(x) = ay(x) + 1.

En esta solucin

%c

es una constante que debe ser determinada a partir de valores iniciales.

( %i1) ode2('diff(y,x)=a*y+1,y,x); ( %o1) y = %c


ea x a

ea x

Maxima

Si se incluye una condicin inicial apropiada, entonces no hay ninguna constante en la solucin.

( %i2) ic1( %,x=0,y=0); ax ( %o2) y = e a1

Maxima

He aqu la solucin de la ecuacin diferencial

y ''(x)+y y '(x) = 0. En esta solucin

%k1

%k2

son constantes a ser determinadas a partir de valores iniciales o valores

de frontera.

( %i3) ode2('diff(y,x,2)+y*'diff(y,x)^3=0,y,x); ( %o3)


y 3 +6 %k1 y 6

= x + %k2

Maxima

Si se incluyen las condiciones iniciales apropiadas desaparecen las constantes.

( %i4) ic2( %,x=0,y=0,'diff(y,x)=1); y 3 3 y (y 2 1) ( %o4) =x 6

Maxima

Si se incluyen los valores de frontera apropiados tambin desaparecen las constantes.

( %i5) bc2( %o96,x=0,y=0,x=1,y=1); ( %o5)


y 3 +5 y 6

=x

Sec. 7.12. Sistemas de ecuaciones diferenciales ordinarias lineales

97

7.12 Sistemas de ecuaciones diferenciales ordinarias lineales


La funcin

desolve resuelve sistemas de ecuaciones diferenciales ordi-

narias lineales utilizando la transformada de Laplace. La dependencia funcional respecto de una variable independiente debe indicarse explcitamente, tanto en las variables como en las derivadas. Por ejemplo, para la primera derivada, a diferencia de la forma en la seccin 7.11), debe usarse la forma

'diff(y, x) (usada 'diff(y(x), x).

desolve(ecu,y (x )) desolve([ecu1 , . . . , ecun ] , [y1 (x), . . . , yn (x)]) atvalue((x), x = x0 , val)

resuelve una ecuacin diferencial para

y (x ),

tomando a

como variable

independiente resuelve sistemas de ecuaciones diferenciales ordinarias lineales permite aadir la condicin inicial

(x0 ) = val
lineales

a un determinado sistema

de ecuaciones diferenciales ordinarias

Solucin de sistemas de ecuaciones diferenciales ordinarias lineales.

Maxima

He aqu la solucin de la ecuacin diferencial

y ''(x) + y(x) = 2x.

( %i1) desolve(diff(y(x),x,2)+y(x)=2*x,y(x)); ( %o1) y (x) = sin(x) ddx y (x) x=0 2 + y (0) cos(x) + 2 x

Maxima

Esto resuelve el sistema

x'(t) = y(t), y '(t) = x(t) .

( %i2) desolve([diff(x(t),t)=y(t),diff(y(t),t)=x(t)], [x(t),y(t)]); ( %o2) x (t) =


y (t) =
(y(0)+x(0)) %et 2

(y(0)x(0)) %et , 2

(y(0)+x(0)) %et 2

(y(0)x(0)) %et 2

98

Cap. 7. Matemticas simblicas

Maxima

De esta manera se aaden las las condiciones iniciales sistema anterior.

x(0) = 1, y(0) = 0

al

( %i3) atvalue(x(t),t=0,1); ( %o3) 1 ( %i4) atvalue(y(t),t=0,0); ( %o4) 0

Maxima

Al volver a resolver el sistema se obtienen las soluciones con las condiciones iniciales dadas.

( %i5) desolve([diff(x(t),t)=y(t),diff(y(t),t)=x(t)], [x(t),y(t)]); ( %o5) x (t) =


%et 2

%et 2 , y (t)

%et 2

%et 2

Maxima

En este otro ejemplo se resuelve la ecuacin diferencial

e x x2 ,

con las condiciones iniciales

y(0) y (0) y (0)

d3 y dx3

dy 3 d y + 3 dx y = dx2

=1 =0 . = 2

( %i6) eq:diff(y(x),x,3)-3*diff(y(x),x,2)+3*diff(y(x),x) -y(x)= %e^x*x^2; ( %o6)


d3 d x3

y (x) 3

d2 d x2

y (x) + 3

d dx

y (x) y (x) = x2 ex

( %i7) atvalue(diff(y(x),x,2),x=0,-2)$ atvalue(diff(y(x),x),x=0,0)$ atvalue(y(x),x=0,1)$ ( %i10) desolve([eq],[y(x)]); ( %o10) y (x) =


x 5 ex 60

x 2 ex 2

x ex + ex

Sec. 7.13. Series de potencias

99

7.13 Series de potencias


taylor(expr, x, a, n)
expande la expresin de la variable

expr

en un desa-

rrollo de Taylor o de Laurent respecto con trminos hasta

x alrededor del punto a, (x a)n n


en todas las va-

taylor(expr, [x1 , x2 , . . .] , a, n)

devuelve la serie en potencias truncada de grado

x1 , x2 , . . . (a, a, . . .)
riables

alrededor del punto

taylor(expr, [x1 , a1 , n1 ] , [x2 , a2 , n2 ] , . . .)

devuelve la serie en potencias truncada en las variables del punto grados

x1 , x2 , . . . alrededor (a1 , a2 , . . .); el truncamien-

to se realiza, respectivamente, en los

n1 , n2 , . . .

taylor(expr, [x1 , x2 , . . .] , [a1 , a2 , . . .] , [n1 , n2 , . . .] , . . .) taylor(expr, [x, a, n, 'asymp])


Obtencin de series de potencias.

equivale

a taylor(expr, [x1 , a1 , n1 ] , [x2 , a2 , n2 ] , . . .)

desarrolla de es

expr en potencias negativas x a (el trmino de mayor orden (x a)n )

Las operaciones matemticas de las que se ha hablado hasta ahora son exactas. Considerando la entrada exacta, sus resultados son frmulas exactas. En muchas situaciones, sin embargo, no se necesita un resultado exacto. Puede ser suciente, por ejemplo, encontrar una frmula aproximada que es vlida, digamos, cuando la cantidad pequea.

es

Maxima

Esto da una aproximacin en serie de potencias para alrededor de trminos de orden

0,

hasta los

3.

( %i1) taylor((1+x)^ n,x,0,3); (n2 n) x2 (n3 3 n2 +2 n) x3 ( %o1) 1 + n x + + + 2 6

100

Cap. 7. Matemticas simblicas

Maxima

Maxima conoce las expansiones en serie de potencias para una gran cantidad
funciones matemticas.

( %i2) taylor(exp(-a*t)*(1+sin(2*t)),t,0,4); (a2 4 a) t2 (a3 6 a2 +8) t3 ( %o2) 1 + (a + 2) t + + 2 6


(a4 8 a3 +32 a) t4
24

Maxima

Si se da una funcin no conocida, de derivadas.

taylor escribe la serie de potencias en trminos

( %i3) taylor(1+f(t),t,0,3); ( %o3) 1 + f (0) +


d3 d t3

d dt t3

f (t) +

t=0

t+

d2 d t2

f (t)
t=0

t2

f (t)
t=0

Las series de potencias son frmulas aproximadas que juegan el mismo papel con respecto a las expresiones algebraicas como los nmeros aproximados con las expresiones numricas.

Maxima

permite

realizar operaciones en series de potencias y en todos los casos mantiene el orden apropiado o el grado de precisin para las series de potencias resultantes.
Maxima

He aqu una serie de potencias simple, de orden 3.

( %i4) taylor(exp(x),x,0,3); ( %o4) 1 + x +


x2 2

x3 6

Maxima

Cuando se hacen operaciones en una serie de potencias, el resultado es calculado slo en el orden apropiado en x.

( %i5) %^2*(1+ %);

Sec. 7.13. Series de potencias

101

( %o5) 2 + 5 x +

13 x2 2

35 x3 6

Maxima

Al copiar los tres primeros trminos del desarrollo anterior se tiene una expresin ordinaria.

( %i6) 2+5*x+(13*x^2)/2+(35*x^3)/6; ( %o6)


35 x3 6

13 x2 2

+ 5x + 2

Maxima

Ahora el cuadrado es calculado exactamente.

( %i7) %^2; ( %o7)


35 x3 6

13 x2 2

+ 5x + 2

Maxima

Al aplicar

expand

se obtiene un resultado con once trminos.

( %i8) %,expand; ( %o8)


1225 x6 36

455 x5 6

1207 x4 12

265 x3 3

+ 51 x2 + 20 x + 4

Maxima

He aqu una serie de potencias doble de orden 3.

( %i9) taylor(sin(y+x),[x,0,3],[y,0,3]); ( %o9) y


y3 6

++ 1
y 12
2

y2 2

x + y + 2

y3 12

x2 +

1 6 +

x3 +

Un detalle interesante para mencionar es que serie de potencias de una funcin.

Maxima, en los casos

que sea posible, permite obtener la frmula general del desarrollo en

102

Cap. 7. Matemticas simblicas

powerseries(expr, x, a)

devuelve la forma general del desarrollo en serie de potencias de la variable

expr

para

alrededor del punto

Obtencin de series de potencias.


Maxima

He aqu una conocida frmula.

( %i10) powerseries(sin(x),x,0); ( %o10)


(1)i1 x2 i1 +1 i1 =0 (2 i1 +1)!

Maxima

Esta es una frmula ms elaborada.

( %i11) powerseries(cos(x^2-1),x,0); ( %o11) sin(1)


(1)i2 x2 (2 i2 +1) i2 =0 (2 i2 +1)!

+ cos(1)

(1)i2 x4 i2 i2 =0 (2 i2 )!

Maxima

Una forma de eliminar los subndices de los ndices, en las sumas, es usando la funcin

niceindices.

( %i12) niceindices(powerseries(cos(x^2-1),x,0)); ( %o12) sin(1)


(1)i x2 (2 i+1) i=0 (2 i+1)!

+ cos(1)

(1)i x4 i i=0 (2 i)!

7.14 Transformada de Laplace


laplace(expr, t, s) ilt(expr, s, t)
calcula la transformada de Laplace de

expr

con respecto de la variable

parmetro de transformacin

s s
y pa-

calcula la transformada inversa de Laplace de rmetro

expr t.

con respecto de

Transformadas de Laplace.

Sec. 7.15. Ecuaciones recurrentes

103

Maxima

Esto calcula la transformada de Laplace.

( %i1) laplace(t^3*exp(a*t),t,s); 6 ( %o1) (sa)4

Maxima

He aqu la transformada inversa.

( %i2) ilt( %,s,t); ( %o2) t3 %ea t

7.15 Ecuaciones recurrentes


El paquete

solve_rec

resuelve expresiones recurrentes lineales con

coecientes polinomiales.
Maxima

Inicializacin del paquete

solve_rec.

( %i1) load(solve_rec)$
Maxima

Esto resuelve una ecuacin recurrente simple.

( %i2) solve_rec(a[n]=3*a[n-1]+1,a[n],a[1]=1); n ( %o2) an = 32 1 2

Maxima

He aqu una solucin ms complicada de otra ecuacin recurrente.

( %i3) solve_rec(a[n+1]=(a[n]+1)/(n+1),a[n],a[1]=0);
n1

( %o3) an =

%j=1

( %j+1)! %j+1

n!

104

Cap. 7. Matemticas simblicas

Maxima

He aqu la solucin de una ecuacin recurrente con dos condiciones iniciales.

( %i4) solve_rec( a[n+2]=(3*a[n+1]-a[n])/2, a[n],a[1]=0,a[2]=1); ( %o4) an = 2 22n

Maxima

Ejemplo de recurrencia lineal con coecientes polinomiales.

( %i5) solve_rec( 2*x*(x+1)*y[x]-(x^2+3*x-2)*y[x+1]+(x-1)*y[x+2], y[x],y[1]=1,y[3]=3); ( %o5) yx = 3 2x2 x! 2

Maxima

Clculo de las soluciones racionales de una expresin recurrente lineal.

( %i6) solve_rec_rat( (x+4)*a[x+3]+(x+3)*a[x+2]-x*a[x+1]+ (x^2-1)*a[x]=(x+2)/(x+1), a[x]); ( %o6) ax = (x1)1(x+1)

CAPTULO

Matemticas numricas

8.1 Solucin numrica de ecuaciones


algsys([ecu1 , . . . , ecum ] , [x1 , . . . , xn ]) allroots(ecu, x) find_root(ecu, x, a, b)
Bsqueda de races numricas.
resuelve el sistema de ecuaciones polinmicas riables

ecu1 , . . . , ecum x1 , . . . , x n

para las va-

calcula aproximaciones numricas de las races reales y complejas de la ecuacin polinmica

ecu para

la variable

calcula una raz de la ecuacin el intervalo de aislamiento

ecu [a, b]

en

Maxima

solve

devuelve la ecuacin ingresada.

( %i1) solve(2-4*x+x^5=0,x); ( %o1) 0 = x5 4 x + 2

Maxima

algsys

proporciona una lista con soluciones aproximadas.

( %i2) algsys([2-4*x+x^5=0],[x]);
105

106

Cap. 8. Matemticas numricas

( %o2) [[x = 1.243596445373759] , [x = 1.438447695329177 %i 0.11679186122298] , [x = 1.438447695329177 %i 0.11679186122298] , [x = 1.518512140520062] , [x = 0.50849947534103]]

Maxima

La opcin

realonly:true

proporciona nicamente las aproximaciones reales.

( %i3) algsys([2-4*x+x^5=0],[x]),realonly:true; ( %o3) [[x = 1.243596445373759] , [x = 0.50849947534103] , [x = 1.518512140520062]]

Si las ecuaciones involucran slo funciones lineales o polinmicas, entonces puede usarse

algsys para obtener aproximaciones numricas

de todas las soluciones. Sin embargo, cuando las ecuaciones involucran funciones ms complicadas, no hay en general ningn procedimiento sistemtico para obtener todas las soluciones, an numricamente. En tales casos, puede usarse Tngase presente que

find_root

para buscar soluciones.

find_root espera que la funcin en cuestin

tenga signos diferentes en los extremos del intervalo de aislamiento.

Maxima

Aqu Maxima devuelve la misma sentencia de entrada, pues extremos del intervalo de aislamiento:

find_root

evala los

[0, 2];

y la funcin

log

que, en este caso,

forma parte de la ecuacin no est denida en cero.

( %i4) find_root(3*cos(x)=log(x),x,0,2); ( %o4) nd_root (3 cos (x) = log (x) , x, 0.0, 2.0)

Maxima

Variando el extremo izquierdo del intervalo de aislamiento se obtiene una solucin aproximada.

( %i5) find_root(3*cos(x)=log(x),x,0.00001,2); ( %o5) 1.447258617277903

Sec. 8.2. Integrales numricas

107

Maxima

La ecuacin tiene varias soluciones. Si se da un intervalo de aislamiento diferente,

find_root

puede devolver una solucin diferente.

( %i6) find_root(3*cos(x)=log(x),x,12,15); ( %o6) 13.10638768062491

8.2 Integrales numricas


quad_qags(f, x, a, b) quad_qagi(f, x, a, inf ) quad_qagi(f, x, minf, b) quad_qagi(f, x, minf, inf )
Integrales numricas.
calcula numricamente la integral

b a

f dx
numricamente la integral

calcula

f dx
numricamente la integral

calcula

f dx
numricamente la integral

calcula

f dx

Las funciones tro elementos:

quad_qags y quad_qagi devuelven una lista de cua-

1. la aproximacin a la integral, 2. el error absoluto estimado de la aproximacin, 3. el nmero de evaluaciones del integrando, 4. un

cdigo de error.
puede tener los siguientes valores:

El

cdigo de error

0 1 2

si no ha habido problemas; si se utilizaron demasiados intervalos; si se encontr un nmero excesivo de errores de redondeo;

108

Cap. 8. Matemticas numricas

3 4 5 6

si el integrando ha tenido un comportamiento extrao frente a la integracin; fallo de convergencia; la integral es probablemente divergente o de convergencia lenta; si los argumentos de entrada no son vlidos.

Maxima

quad_qags

puede manejar singularidades en los puntos nales de la regin de

integracin.

( %i1) quad_qags(1/sqrt(x*(1-x)),x,0,1); ( %o1) 3.141592653589849, 6.2063554295832546 1010 , 567, 0

Maxima

Para resolver integrales numricas sobre regiones innitas se usa

quad_qagi.

( %i2) quad_qagi(exp(-x^2),x,minf,inf); ( %o2) 1.772453850905516, 1.420263678183091 108 , 270, 0

CAPTULO

Funciones y programas

9.1 Denicin de funciones


Hasta aqu, se ha visto muchos ejemplos de funciones incorporadas en

Maxima.
Maxima

En esta seccin, se mostrar la forma en que el usuario

puede aadir sus propias funciones a

Maxima.

Esto dene la funcin

f.

( %i1) f(x):=x^2; ( %o1) f (x) := x2

Maxima

eleva al cuadrado su argumento.

( %i2) f(a+1); ( %o2) (a + 1)2

Maxima

El argumento puede ser un nmero.

( %i3) f(4); ( %o3) 16


109

110

Cap. 9. Funciones y programas

Maxima

O puede ser una expresin ms complicada.

( %i4) f(x^2+3*x); ( %o4) x2 + 3 x


2

Maxima

Puede usarse

en un clculo.

( %i5) expand(f(x+y+1)); ( %o5) y 2 + 2 x y + 2 y + x2 + 2 x + 1

Maxima

Esto muestra la denicin hecha para

f.

( %i6) dispfun(f); ( %t6) f (x) := x2 ( %o6) [ %t6]

f(x) := x2 dispfun(f) remfunction(f) functions

dene la funcin

f f f

muestra la denicin de

borra todas las deniciones de

es una variable que contiene los nombres de las funciones denidas por el usuario

Denicin de una funcin en Maxima.

Maxima

Las funciones en Maxima pueden tener cualquier nmero de argumentos

( %i7) hump(x,xmax):=(x-xmax)^2/xmax; ( %o7) hump (x, xmax) :=


(xxmax)2 xmax

Sec. 9.1. Denicin de funciones

111

Maxima

Puede usarse la funcin

hump

tal como cualquiera de las funciones predenidas.

( %i8) 2+hump(x,3.5); ( %o8) 0.28571428571429 (x 3.5)2 + 2

Maxima

Esto da una nueva denicin para

hump,

que sobrescribe la anterior.

( %i9) hump(x,xmax):=(x-xmax)^4; ( %o9) hump(x, xmax) := (x xmax)4

Maxima

Slo es mostrada la nueva denicin.

( %i10) dispfun(hump); ( %t10) hump (x, xmax) := ( %o10) [ %t10]

(xxmax)2 xmax

Maxima

Esto limpia todas las deniciones para

hump.

( %i11) remfunction(hump); ( %o11) [hump]

dispfun(f1 , . . . , fn ) remfunction(f1 , . . . , fn ) dispfun(all) remfunction(all)


Vista y borrado de varias funciones

muestra las deniciones de

fi fi

borra todas las deniciones de

muestra las deniciones de todas las funciones denidas por el usuario borra todas las deniciones de todas la funciones denidas por el usuario

112

Cap. 9. Funciones y programas

Maxima

Ahora se dene la funcin

g.

( %i12) g(x):=sqrt(1-x); ( %o12) g(x) := 1 x

Maxima

Estro muestra la denicin de todas las funciones (en este caso

g).

( %i13) dispfun(all); x ( %t13) f (x) := 2 ( %t13) g(x) := 1 x ( %o13) [ %t13, %t14]

Maxima

Esto borra la denicin de todas las funciones (en este caso

g).

( %i14) remfunction(all); ( %o14) [f, g]

Maxima

Ya no hay funciones denidas por el usuario.

( %i15) dispfun(all); ( %o15) [ ]

Cuando se ha terminado con una funcin particular, es bueno limpiar las deniciones que se haya hecho para ella. Si no, podra incurrirse en un conicto al usar la misma funcin para un propsito diferente en la sesin de

Maxima.

Maxima

tambin permite denir funciones con una cantidad va-

riable de argumentos (funciones de argumento variable) y funciones que se aplican directamente a listas (funciones

array ).

Sec. 9.1. Denicin de funciones

113

F ([L]) := (L) F [x1 , . . . , xn ] := (x1 , . . . , xn ) F [x1 , . . . , xn ] := [1 (x1 , . . . , xn ), . . . , m (x1 , . . . , xn )]

dene la funcin

F cuyo nmero de arF F


cuyo argu-

gumentos es variable dene la funcin array mento es una lista dene la funcin array lista cuyo argu-

mento es una lista y que devuelve una

Ms deniciones de funciones en Maxima.

Maxima

Aqu se dene la funcin

que admite un nmero variable de argumentos.

( %i16) F([x]):=x^2+4; ( %o16) F ([ x ]) := x2 + 4

Maxima

Esto evala

en un solo argumento.

( %i17) F(2); ( %o17) 8


Maxima

Esto evala

en dos argumentos.

( %i18) F(2,3); ( %o18) [8, 13]

Maxima

He aqu la denicin de la funcin array

G.

( %i19) G[x,y]:=x^2+y^2; ( %o19) Gx,y := x2 + y 2

Maxima

Aqu se evala

en la lista

[2, 3]

( %i20) G[2,3];

114

Cap. 9. Funciones y programas

( %o20) 13
Maxima

Esto dene la funcin array

que devuelve una lista.

( %i21) H[x,y]:=[2*x,3-y,x*y]; ( %o21) Hx,y := [2 x, 3 y, x y]

Maxima

Aqu se evala la funcin

en la lista

[4, 3].

( %i22) H[4,3]; ( %o22) [8, 0, 12]


Para visualizar la denicin de este tipo de funciones puede usarse la funcin usarse la funcin

dispfun, pero para borrar las respectivas deniciones debe remarray.


borra la funcin array

remarray(F ) remarray(F1 , . . . , Fn ) remarray(all)


Borrado de funciones array

F F1 , . . . , Fn

borra las funciones array

borra todas las funciones array denidas por el usuario

Maxima

Esto la denicin de todas las funciones array, hasta ahora, denidas.

( %i23) dispfun(all); ( %t23) F ([ x ]) := x2 + 4 ( %t23) Gx,y := x2 + y 2 ( %t23) Hx,y := [2 x, 3 y, x y] ( %o23) [ %t24, %t25, %t26]

Maxima

Esto borra la denicin de la funcin

denida en

( %i17)

( %i24) remfunction(F);

Sec. 9.1. Denicin de funciones

115

( %o24) [F ]

Maxima

Esto borra la denicin de todas las funciones array denidas por el usuario.

( %i25) remarray(all); ( %o25) [G, H]


Adems,

Maxima

permite denir las llamadas funciones

annimas

que son de mucha utilidad en contextos vinculados con la programacin. La funcin para denirlas es

lambda.

lambda([x], expr) lambda([x1 , . . . , xm ] , expr1 , . . . , exprn )


Funcin annima

dene una funcin annima dene una funcin annima de argumentos mltiples

Maxima

Una funcin annima puede asignarse a una variable y ser evaluada como si fuese una funcin ordinaria.

( %i26) f:lambda([ x ], x^2); ( %o26) lambda([ x ] , x2 ) ( %i27) f(a); ( %o27) a2


Maxima

O puede aplicarse directamente.

( %i28) lambda([ x ], x^2)(a); ( %o28) a2


Maxima

No obstante, no es reconocida por

dispfun.

( %i29) dispfun(all);

116

Cap. 9. Funciones y programas

( %o29) [ ]

En muchas clases de clculos, el usuario puede encontrarse digitando la misma entrada a tencias de entrada.

Maxima muchas veces. Es posible ahorrarse

mucha digitacin deniendo una funcin que contiene todas las sen-

Maxima

Esto construye un producto de tres trminos, y expande el resultado.

( %i30) expand(product(x+i,i,1,3)); ( %o30) x3 + 6 x2 + 11 x + 6

Maxima

Esto hace lo mismo, pero con cuatro trminos.

( %i31) expand(product(x+i,i,1,4)); ( %o31) x4 + 10 x3 + 35 x2 + 50 x + 24

Maxima

Esto dene una funcin lo expande.

exprod

que construye un producto de n trminos, luego

( %i32) exprod(n):=expand(product(x+i,i,1,n)) $

Maxima

Siempre que usa la funcin, ejecutar las operaciones

product

expand.

( %i33) exprod(5); ( %o33) x5 + 15 x4 + 85 x3 + 225 x2 + 274 x + 120

Las funciones que se denen en

Maxima

son esencialmente proce-

dimientos que ejecutan las sentencias dadas por el usuario. Es posible incluir varios pasos en los procedimientos, separados por comas.

Sec. 9.1. Denicin de funciones

117

Maxima

El resultado que se obtiene de la funcin es simplemente la ltima expresin en el procedimiento. Note que debe ponerse parntesis alrededor del procedimiento cuando se dene.

( %i34) cex(n,i):=( t:exprod(n),coeff(t,x^i) )$

Maxima

Esto corre el procedimiento.

( %i35) cex(5,3); ( %o35) 85

(expr1 , expr2 , . . .)

una secuencia de expresiones para evaluar (procedimiento)

block([a, b, . . .] , proc)
Construccin de procedimientos.

un procedimiento con variables locales

a, b, . . .

Una buena idea es declarar, como locales, las variables que se usan dentro de los procedimientos, de modo que no intereran con clculos fuera de stos. Puede hacerse esto estableciendo los procedimientos como tratadas como locales.

bloques, en los cuales se da una lista de variables para que sean

Maxima

La funcin

cex denida en ( %i37)

no es un bloque, as que el valor de

t escapa,

y existe incluso despus de la evaluacin de la funcin.

( %i36) t; ( %o36) x5 + 15 x4 + 85 x3 + 225 x2 + 274 x + 120

118

Cap. 9. Funciones y programas

Maxima

Esta funcin es denida como un bloque con variable local

u.

( %i37) ncex(n,i):=block([u], u:exprod(n), coeff(u,x^ i) ) $


Maxima

La funcin devuelve el mismo resultado que la anteriormente denida.

( %i38) ncex(5,3); ( %o38) 85


Maxima

Ahora, sin embargo, el valor de u no se escapa de la funcin.

( %i39) u ( %o39) u
Es posible asignar un valor inicial a una o ms variables locales dentro de la lista de las mismas. Tambin se puede denir una funcin como bloque sin declarar variables locales, para lo cual debe omitirse dicha lista. Un bloque puede aparecer dentro de otro bloque. Las variables locales se inicializan cada vez que se entra dentro de un nuevo bloque. Las variables locales de un bloque se consideran globales dentro de otro anidado dentro del primero. Si una variable es no local dentro de un bloque, su valor es el que le corresponde en el bloque superior. Este criterio se conoce con el nombre de alcance dinmico.

9.2 Reglas de transformacin para funciones


Maxima
Maxima

permite al usuario denir sus propias reglas de transforma-

cin y patrones de comparacin.

Denicin de la regla de transformacin que reemplaza

por

3.

( %i1) defrule(regtran1,x,3);

Sec. 9.2. Reglas de transformacin para funciones

119

( %o1) regtran1 : x 3

Maxima

Aplicacin de la regla de transformacin

regtran1

( %i2) apply1(1+f(x)+f(y),regtran1); ( %o2) f (y) + f (3) + 1

Maxima

Puede denirse una regla de transformacin para

f(x).

sta no afecta a

f(y).

( %i3) defrule(regtran2,f(x),p); regtran2 : f (x) p ( %i4) apply1(1+f(x)+f(y),regtran2); ( %o4) f (y) + p + 1

Maxima

Esto dene un patrn

f(t)

que admite cualquier argumento para f.

( %i5) matchdeclare(t,true); done ( %i6) defrule(patron,f(t),t^2); ( %o6) patron : f (t) t2

Maxima

Aqu se aplica el patrn previamente denido.

( %i7) apply1(1+f(x)+f(y),patron); ( %o7) y 2 + x2 + 1

Maxima

Esto muestra todas las reglas, hasta aqu, denidas.

( %i8) disprule (all); ( %t8) regtran1 : x 3

120

Cap. 9. Funciones y programas

( %t8) regtran2 : f (x) p ( %t8) patron : f (t) t2 ( %o8) [ %t51, %t52, %t53]

Maxima

Con esta sentencia se borran todas las deniciones de las reglas

regtran1,

regtran2

patron.

( %i9) clear_rules(); ( %o9) f alse

Maxima

Esto indica que todas las deniciones de las reglas han sido borradas.

( %i10) disprule (all); ( %o10) [ ]

Probablemente, el aspecto ms potente de las reglas de transformacin en

Maxima

es que ellas pueden involucrar expresiones no

nrica f(t) para la cual se ha declarado el tipo de variable t con matchdeclare. As, una regla de transformacin para f(t) especica cmo debera ser transformada la funcin f con el tipo de argumento especicado. Ntese que, en contraste, una regla de transformacin para

slo literales, sino tambin patrones. Un patrn es una expresin ge-

f(x)

sin realizar la declaracin de la variable, especica slo la

transformacin de la expresin literal nada sobre la transformacin de

f(y).

f(x),

y por ejemplo, no dice

Siempre que se cumpla con la declaracin especicada, es posible establecer reglas de transformacin para expresiones de cualquier forma.
Maxima

Esto dene una funcin de predicado que dene el patrn de producto para un argumento.

( %i11) prodp(expr):= not atom(expr) and op(expr)=*; ( %o11) prodp(expr) := atom(expr) op(expr) =  

Sec. 9.3. Funciones denidas a partir de expresiones

121

( %i12) matchdeclare(p,prodp); ( %o12) done

Maxima

Ahora se dene una regla que transforme una funcin aplicada a un producto como la suma de los factores a los cuales se les ha aplicado la funcin.

( %i13) defrule( reg,f(p),apply( +, map(f,args(p)) ) ); ( %o13) reg : f (p) apply (+, map (f, args (p)))

Maxima

Luego, al aplicar la regla recin denida se aprecia el efecto producido.

( %i14) apply1(f(a*b)+f(c*d),reg); ( %o14) f (d) + f (c) + f (b) + f (a)

Maxima

Esto aplica la regla sin limitar el nmero de los factores en el argumento de

f.

( %i15) apply1(f(a)+f(a*b*c)+f(c),reg); ( %o15) 2 f (c) + f (b) + 2 f (a)

Maxima

Esto combina la regla denida por el usuario con la funcin

expand

de Maxima.

( %i16) apply1(f(a)*f(a*b*c)*f(c),reg),expand; ( %o16) f (a) f 2 (c) + f (a) f (b) f (c) + f 2 (a) f (c)

9.3 Funciones denidas a partir de expresiones


En muchos casos, sobre todo en programacin, resulta bastante til poder denir una funcin a partir de una expresin dada para luego

122

Cap. 9. Funciones y programas

poder invocarla con facilidad y as evitar el uso reiterado de la funcin

ev

(ver seccin 6.2).

define(f (x1 , . . . , xn ), expr) define(f [x1 , . . . , xn ], expr)

dene una funcin de nombre argumentos

x1 , . . . , x n

y cuerpo

f con expr

dene una funcin array de nombre

f con expr

argumentos

x1 , . . . , x n

y cuerpo

Denicin de funciones a partir de expresiones.

Maxima

Esto almacena la expresin

x2 + 1

en la variable

ex.

( %i1) ex:x^2+1; ( %o1) x2 + 1

Maxima

Aqu se pretende denir la funcin

a partir de

ex.

No obstante, al realizar una

evaluacin no se obtiene el resultado esperado.

( %i2) f(x):=ex $ ( %i3) f(8); ( %o3) x2 + 1

Maxima

Por otra parte, al utilizar

define

para denir la funcin

a partir de

ex

si se

obtiene un resultado satisfactorio.

( %i4) define(g(x),ex) $ ( %i5) g(8); ( %o5) 65 define se aprecia al denir funciones a par-

Una gran utilidad de numricos.

tir de las derivadas de otras, las cuales sern evaluadas en valores

Sec. 9.3. Funciones denidas a partir de expresiones

123

Maxima

He aqu la denicin de la funcin

f = x2 + 1 .

( %i6) f(x):=x^2+1 $

Maxima

Ahora, a partir de

f,

se dene

f 

como

f  =

df . dx

( %i7) f'(x):=diff(f(x),x) $

Maxima

La evaluacin simblica de

f 

no presenta problema alguno.

( %i8) f'(t); ( %o8) 2t

Maxima

No obstante, la evaluacin numrica no esta permitida para dicha funcin.

( %i9) f'(8); ( %o9) di: second argument #0: f '(x=8)

must be a variable; found 8

- - an error. To debug this try: debugmode(true);

Maxima

Aqu se vuelve a denir

f ,

pero en este caso se utiliza la funcin

define

(re-

cuerde que esta nueva denicin anula a la anterior).

( %i10) define(f'(x),diff(f(x),x)) $

Maxima

La evaluacin simblica es idntica.

( %i11) f'(t); ( %o11) 2t

124

Cap. 9. Funciones y programas

Maxima

Sin embargo, ya no hay dicultad en la evaluacin numrica.

( %i12) f'(8); ( %o12) 16

9.4 Funciones denidas a trozos


Maxima
no cuenta con una funcin especca para manipular adecuadamente las funciones denidas a trozos. Una forma, bastante limitada, de superar esta carencia es utilizando el condicional

if.

Maxima

Esto dene la funcin

f (x) =

x2 , x,

x < 2, x 2.

( %i1) f(x):=block([], if (x<2) then return(x^2), if (x>=2) then return(sqrt(x)) )$

Maxima

Aqu se hacen dos evaluaciones numricas de la funcin.

( %i2) f(-2); ( %o2) 4 ( %i3) f(9); ( %o3) 3

Maxima

No obstante, una evaluacin simblica deja mucho que desear.

( %i4) f(t); ( %o4) if t >= 2 then return t

Sec. 9.4. Funciones denidas a trozos

125

Maxima

Y ni que decir de un intento de derivar o integrar.

( %i5) diff(f(x),x); d ( %o5) if x >= 2 then return x dx ( %i6) integrate(f(x),x); ( %o6) if x >= 2 then return x dx

Maxima

Denamos, ahora, la funcin

( %i7) g(x):=block([], if (-2<x and x<2) then return(x^2), if (2<=x and x<3) then return(sqrt(x)), if (3<=x and x<5) then return(1-x) )$

x2 , g(x) = x, 1 x,

2 < x < 2 , 2 x < 3, 3 x < 5.

Maxima

El lgebra de funciones tampoco puede efectuarse.

( %i8) f(x)+g(x); ( %o8) (if x >= 2 then return ( x)) + (if 3 <= x and x < 5 then return (1 x))

Por otra parte, se tiene el paquete


1

pw elaborado por Richard Hen-

nessy , el cual est en proceso de desarrollo, que puede resultar til en ciertos casos.

Maxima

Esto carga el paquete

pw.

( %i9) load(pw)$
1 El paquete pw (cuya versin en la actualidad es 6.4) http://sourceforge.net/projects/piecewisefunc/
se puede descargar desde

126

Cap. 9. Funciones y programas

Maxima

Esto dene la funcin

f (x) =

x2 , x,

x < 2, x 2.

( %i10) f(x):=piecewise( [minf,x^2,2,sqrt(x),2,sqrt(x),inf], x,open)$

Maxima

Aqu se hacen tres evaluaciones numricas de la funcin.

( %i11) f(-2); ( %o11) 4 ( %i12) f(2); ( %o12) 2 ( %i13) f(9); ( %o13) 3

Maxima

Una evaluacin simblica nos deja ver las funciones utilizadas por el autor para manipular las funciones denidas a trozos.

( %i14) f(t); ( %o14)


t (signum(t2)unit_spike(t2)+1) + 2 t2 (signum(t2)unit_spike(t2)+1) + 2

t unit_spike (t 2)

Maxima

Con la funcin

pwsimp

se obtiene una presentacin matricial.

( %i15) pwsimp(f(x),x,array); If x in ( , 2 ) then 2 x If x in [ 2 , 2 ] then 2 If x in ( 2 , ) then x ( %o15) Done

Sec. 9.4. Funciones denidas a trozos

127

Maxima

No obstante, la derivacin no es correcta. Note que, de acuerdo con la denicin, no existe

f (2);

sin embargo, aqu se obtiene

3 .

22

( %i16) pwsimp( If x If x If x ( %o16) Done

diff(f(x),x), x,array); in ( , 2 ) then in [ 2 , 2 ] then in ( 2 , ) then

2x
1
3

22 1 2 x

Maxima

He aqu integracin.

( %i17) pwsimp(pwint(f(x),x),x,array),expand; 3 x3 If x in ( , 2 ) then + 232 4 3 3 3 If x in [ 22 2 , 2 ] then +4 3 3 3 3 2x2 22 4 If x in ( 2 , ) then 3 3 + 3 ( %o17) Done

Maxima

Denamos, ahora, la funcin

( %i18) g(x):=piecewise( [-2,x^2,2,sqrt(x),2,sqrt(x),3,1-x,3,1-x,5], x,open)$

x2 , g(x) = x, 1 x,

2 < x < 2 , 2 x < 3, 3 x < 5.

Maxima

Observe esta operacin.

( %i19) f(3)+g(3); ( %o19) 3 2

128

Cap. 9. Funciones y programas

Maxima

No obstante, al calcular

f (x) + g(x)

se aprecia que

f (3) + g(3) = 42 2

( %i20) pwsimp(f(x)+g(x),x,array); If x in ( , 2 If x in [ 2 , 2 If x in ( 2 , 2 If x in [ 2 , 2 If x in ( 2 , 3 If x in [ 3 , 3 If x in ( 3 , 5 If x in [ 5 , 5 If x in ( 5 , ( %o20) Done

) ] ) ] ) ] ) ] )

then then then then then then then then then

42 3 2 x + x + 1 5 x

x2 4 2 x2 3 22 2 x

Es preciso anotar que el objetivo no ha sido criticar negativamente el paquete

pw,

sino, mostrar al lector la existencia de un trabajo que en el tema de las funciones denidas a trozos.

en un futuro cercano puede ser una buena alternativa para la carencia que adolece

Maxima

CAPTULO

10

Listas

10.1 Juntar objetos


Las listas son bloques de construccin bsica para nmeros son representados como listas en

Maxima

Lisp 1 .
es

Todos los tipos de datos diferentes a los arreglos, tablas mixtas o

Lisp.

Puede decirse que,

en un nivel bsico, lo que esencialmente hace una lista en clase.

Maxima

proporcionar una forma de agrupar varias expresiones de cualquier

Maxima

He aqu una lista de nmeros.

( %i1) [2,3,4]; ( %o1) [2, 3, 4]

Maxima

Esto da una lista de expresiones simblicas.

( %i2) x^ %-1; ( %o2) x2 1, x3 1, x4 1


1 Lisp (List Processing )
est programado Maxima.

es el lenguaje de programacin de alto nivel en el que

129

130

Cap. 10. Listas

Maxima

Es posible derivar estas expresiones.

( %i3) diff( %,x); ( %o3) 2 x, 3 x2 , 4 x3

Maxima

Y luego encontrar los valores cuando

es reemplazado por

3.

( %i4) %,x=3; ( %o4) [6, 27, 108]

La mayora de funciones matemticas incorporadas en mente sobre cada elemento de una lista.

Maxima

han sido implementadas listables de modo que acten separada-

10.2 Generacin de listas


Maxima permite crear listas de acuerdo a una cierta regla denida por
el usuario. Para ello cuenta con la funcin incorporada

create_list.

create_list(f, i, imin , imax ) create_list(f, i, list) create_list(f, i, imin , imax , j, jmin , jmax , . . .) create_list(f, i, list1 , j, list2 , . . .)

da una lista de valores con de

i i

variando

imin

imax
variando

da una lista de valores con

de acuerdo a cada elemento de genera una lista con cada

list
ndice

(i, j, . . .) variando del valor mnimo al valor mximo que le han sido asociados genera una lista con cada ndice

(i, j, . . .) variando de acuerdo a cada elemento de la lista que se le ha asociado

Funciones para generar listas.

Sec. 10.2. Generacin de listas

131

Maxima

Esto da una lista de los valores de

i2 ,

con

variando de

6.

( %i1) create_list(i^2,i,1,6); ( %o1) [1, 4, 9, 16, 25, 36]

Maxima

He aqu una lista de los valores de

sen

n 5

para

variando de

4.

( %i2) create_list(sin(n/5),n,0,4); 3 ( %o2) 0, sin 1 , sin 2 , sin 5 , sin 4 5 5 5

Maxima

Esto da los valores numricos de la tabla generada en

( %i6)

( %i3) %,numer; ( %o3) [0, 0.19866933079506, 0.38941834230865, 0.56464247339504, 0.71735609089952]

Maxima

Tambin puede hacerse tablas de frmulas.

( %i4) create_list(x^ i+2*i,i,1,5); ( %o4) x + 2, x2 + 4, x3 + 6, x4 + 8, x5 + 10

Maxima

create_list usa exactamente la misma notacin para el iterador que las funciones sum y product que fueron mencionadas en la seccin 7.4.

( %i5) product(x^ i+2*i,i,1,5); ( %o5) (x + 2) x2 + 4 x3 + 6 x4 + 8

x5 + 10

Maxima

Esto hace una lista con valores de

variando desde

hasta

en pasos de

0.25

( %i6) create_list(0.25*i,i,1,4)$

132

Cap. 10. Listas

( %i7) create_list(sqrt(x),x, %); ( %o7) [0.5, 0.70710678118655, 0.86602540378444, 1.0]

Maxima

Es posible realizar otras operaciones en las listas que se obtienen con

create_list.

( %i8) %^2+3; ( %o8) [3.25, 3.5, 3.75, 4]

Maxima

Esto hace una lista de

xi + y j

con

variando desde

hasta

variando desde

hasta

2.

( %i9) create_list(x^ i+y^ j,i,1,3,j,1,2); ( %o9) y + x, y 2 + x, y + x2 , y 2 + x2 , y + x3 , y 2 + x3

Maxima

Esto crea una lista conteniendo cuatro copias del smbolo

x.

( %i10) create_list(x,i,1,4); ( %o10) [x, x, x, x]

Maxima

Esto da una lista de cuatro nmeros seudo aleatorios.

( %i11) create_list(random(1.0),i,1,4); ( %o11) [0.25223887668538, 0.41556272272148, 0.61257388925382, 0.84181265533592]

Sec. 10.3. Eleccin de elementos de una lista

133

10.3 Eleccin de elementos de una lista


part(list, i)

list [ i ]

el

i-simo

elemento de

list

(el primer

elemento es

list [ 1 ])

part(list, [ i, j, . . . ]) part(list, i1 , . . . , ik )

una lista formada por los elementos

i, j, . . .

de

list list que se especii1 , . . . , ik (primero i1 de list, despus

obtiene la parte de ca por los ndices se obtiene la parte sucesivamente)

la parte i2 del resultado anterior, y as

first(list), second(list), . . . , tenth(list) last(list)

devuelve el primer, segundo, ..., dcimo elemento de

list list

devuelve el ltimo elemento de

Operaciones con elementos de una lista.

Maxima

Esto extrae el tercer elemento de la lista.

( %i1) part([4,-1,8,-6],3); ( %o1) 8

Maxima

Esto extrae una lista de elementos.

( %i2) part([4,-1,8,-6],[2,3,1,2,3,4,1]); ( %o2) [1, 8, 4, 1, 8, 6, 4]

Maxima

Esto asigna una lista en la variable

u.

( %i3) u:[7,2,4,6]; ( %o3) [7, 2, 4, 6]

134

Cap. 10. Listas

Maxima

Puede extraerse elementos de

u.

( %i4) u[3]; ( %o4) 4


Maxima

Pueden realizarse operaciones diversas con

u.

( %i5) (u+1)/(u-6); 1 ( %o5) 3 , 6 , 6, 8 4


Es posible crear listas multidimensionales mediante la anidacin de listas en listas.
Maxima

Esto crea una lista

2 2,

y le da el nombre

m.

( %i6) m:create_list(create_list(i-j,j,1,2), i,1,2); ( %o6) [[0, 1] , [1, 0]]

Maxima

Esto extrae la primera sublista de la lista de listas,

( %i7) m[1]; ( %o7) [0, 1]

Maxima

Esto extrae el segundo elemento de aquella sublista.

( %i8) %[2]; ( %o8) 1


Maxima

Esto hace las dos operaciones juntas.

( %i9) part(m,1,2);

Sec. 10.3. Eleccin de elementos de una lista

135

( %o9) 1
Maxima

Esto genera una lista tridimensional de

2 2 2.

Es una lista de listas de listas.

( %i10) create_list(create_list(create_list(i*j^2*k^3, k,1,2),j,1,2),i,1,2); ( %o10) [[[1, 8] , [4, 32]] , [[2, 16] , [8, 64]]]

Maxima

Si no se anida

create_list

se obtiene una lista unidimensional.

( %i11) create_list(i*j^2*k^3,i,1,2,j,1,2,k,1,2); ( %o11) [1, 8, 4, 32, 2, 16, 8, 64]


Al asignar una lista a una variable, puede usarse las listas en Maxima de modo similar a los arrays en otros lenguajes de programacin. De esta manera, por ejemplo, es posible resetear un elemento de una lista asignando un valor a

u [ i ].

part(u, i) u [ i ] u [ i ] : valor
Operando listas como arrays.

extrae el i-simo elemento de la lista resetea el

i -simo

elemento de la lista

Maxima

Aqu hay una lista.

( %i12) u:[2,1,5,7]; ( %o12) [2, 1, 5, 7]

Maxima

Esto resetea el segundo elemento de la lista.

( %i13) u[2]:0; ( %o13) 0

136

Cap. 10. Listas

Maxima

Ahora la lista asignada a

se ha modicado.

( %i14) u; ( %o14) [2, 0, 5, 7]

10.4 Prueba y bsqueda de elementos de una lista


sublist(L, P ) sublist_indices(L, P ) ?position(elem, L) member(f orm, list) freeof(f orm, list) freeof(f orm1 , . . . , f ormn , list)
devuelve la lista de elementos lista

de la

para los cuales el predicado

P (x)

es verdadero

devuelve los ndices de los elementos de la lista

para la cual el predicado

P (x)

es verdadero

devuelve el ndice que indica la posicin que ocupa prueba si prueba si parte de

elem

en la lista

L list

f orm es un

elemento de

f orm list

no ocurre en ninguna

equivale a freeof(f orm1 , list) and . . . and freeof(f ormn , list)

Funciones para la prueba y bsqueda de elementos de una lista.

Maxima

Esto da una lista de todos los elementos de

[a, 1, 3, b, 7]

que son de tipo simblico.

( %i1) sublist([a,1,3,b,7],symbolp); ( %o1) [a, b]

Maxima

Esto da una lista de todas posiciones, de la lista tran elementos de tipo simblico.

[a, 1, 3, b, 7],

en las que se encuen-

( %i2) sublist_indices([a,1,3,b,7],symbolp);

Sec. 10.5. Combinacin de listas

137

( %o2) [1, 4]

Maxima

En este caso se emplea una funcin annima para denir un predicado, el cual indica que se quiere obtener una lista de todos los elementos, de la lista que son mayores que 2.

[1, 2, 4, 7, 6, 2],

( %i3) sublist([1,2,4,7,6,2],lambda([h],h>2)); ( %o3) [4, 7, 6]

Maxima

Esto muestra que

es un elemento de

[11, 1, 2, 4, 5, 5].

( %i4) member(4,[11,1,2,4,5,5]); ( %o4) true

Maxima

Por otra parte

3,

no lo es.

( %i5) member(3,[11,1,2,4,5,5]); ( %o5) f alse

Maxima

Esto muestra que

ocurre en alguna parte de

[[1, 2] , [3, 0]].

( %i6) freeof(0,[[1,2],[3,0]]); ( %o6) f alse

10.5 Combinacin de listas


join(list1 , list2 )
Combinar listas.
crea una nueva lista con los elementos de las listas

list1

list2

alternados

138

Cap. 10. Listas

Maxima

He aqu dos listas, de igual longitud, combinadas.

( %i1) join([1,2],[a,b]); ( %o1) [1, a, 2, b]

Maxima

He aqu la combinacin de dos listas de diferente longitud (join ignora los elementos sobrantes de la lista de mayor longitud).

( %i2) join([1,2],[a,b,c,d]); ( %o2) [1, a, 2, b]

10.6 Reordenamiento de listas


sort(list) sort(list, P ) reverse(list) permutations(list) unique(list)
Ordenamiento de listas.
ordena los elementos de ascendente ordena los elementos de do con el predicado

list list

en forma

de acuer-

invierte el orden de los elementos de

list
devuelve un conjunto con todas las permutaciones distintas de los miembros de

list list
sin redundancias, es de-

devuelve

cir, sin elementos repetidos

Maxima

Esto ordena los elementos de una lista en forma estndar. En casos simples como ste el ordenamiento es alfabtico o numrico.

( %i1) sort([d,b,c,a]); ( %o1) [a, b, c, d]

Sec. 10.6. Reordenamiento de listas

139

Maxima

Esto ordenada los elementos de la lista en forma descendente.

( %i2) sort([11,1,2,4,5,5],>); ( %o2) [11, 5, 5, 4, 2, 1]

Maxima

Aqu se ordenada los elementos de la lista segn sea la norma de cierto elemento menor que la norma del posterior.

( %i3) sort([3+5* %i, %i-8,4+ %i,1+2* %i], lambda([a,b],abs(a)<abs(b)) ); ( %o3) [2 i + 1, i + 4, 5 i + 3, i 8]

Maxima

Esto invierte el orden de los elementos de la lista.

( %i4) reverse([d,b,c,a]); ( %o4) [a, c, b, d]

Maxima

Aqu se tienen todas las permutaciones de

[a, b, c].

( %i5) permutations([a,b,c]); ( %o5) {[a, b, c] , [a, c, b] , [b, a, c] , [b, c, a] , [c, a, b] , [c, b, a]}

Maxima

De esta forma se eliminan los elementos repetidos en una lista.

( %i6) unique([11,1,2,2,4,5,5]); ( %o6) [1, 2, 4, 5, 11]

140

Cap. 10. Listas

10.7 Agregar y quitar elementos de una lista


append(list1 , list2 , . . . , listn ) cons(elem, list) endcons(elem, list) delete(elem, list) rest(list, n) deleten(list, n)
devuelve una lista cuyos elementos son los de la lista

list1

seguidos de los de

list2 , . . . , listn
agrega agrega borra

elem elem

al inicio de la lista al nal de la lista

list

list

elem

de la lista

list

n elementos (n > 0) o los ltimos n elementos (n < 0) de la lista list


borra los primeros borra el

n -simo

elemento de la lista

list
Agregar y quitar elementos de una lista.

Maxima

Aqu se genera una lista con los elementos de dos listas dadas.

( %i1) append([1,2,3],[a,b,c]); ( %o1) [1, 2, 3, a, b, c]

Maxima

Aqu se inserta

al inicio de la lista dada.

( %i2) cons(x,[a,b,c]); ( %o2) [x, a, b, c]

Maxima

En este caso se inserta

al nal de la lista dada.

( %i3) endcons(x,[a,b,c]); ( %o3) [a, b, c, x]

Sec. 10.8. Reorganizacin de listas

141

Maxima

Esto devuelve una lista dada con los dos primeros elementos borrados.

( %i4) rest([a,g,f,c,x],2); ( %o4) [f, c, x]

Maxima

Esto devuelve una lista dada con los dos ltimos elementos borrados.

( %i5) rest([a,g,f,c,x],-2); ( %o5) [a, g, f ]

10.8 Reorganizacin de listas


flatten(list) partition(list, x)
elimina todos los niveles que pueda tener la lista

list list
en dos listas;

particiona la lista dependen de penden de

una que contiene los elementos que no

x,

y otra, los que si de-

Funciones para reorganizar listas anidadas.

Maxima

He aqu una lista a la que se le eliminan todos los niveles.

( %i1) flatten([7,2,[3,[5]],4]); ( %o1) [7, 2, 3, 5, 4]

Maxima

Esto particiona la lista

a, b, a2 + 1, c

( %i2) partition([a,b,a^2+1,c],a); ( %o2) [b, c] , a, a2 + 1

142

Cap. 10. Listas

10.9 Funciones adicionales para listas


listp(expr) emptyp(list) length(list) list1 .list2 apply(f, [x1 , . . . , xn ]) map(f, [a1 , . . . , an ]) map(f, [a1 , . . . , an ] , [b1 , . . . , bn ] , . . .) outermap(f, list1 , . . . , listn )
verica si verica si

expr list

es una lista

es una lista vaca

devuelve la longitud de

list list1
y

devuelve el producto escalar de

list2
evala

f (x1 , . . . , xn ) [f (a1 ), . . . , f (an )] [f (a1 , b1 , . . .), . . . , f


a cada uno de la lista

devuelve la lista devuelve

f (an , bn , . . .)]
aplica la funcin los elementos del producto cartesiano

list1 list2 . . . listn


Algunas funciones adicionales para listas.

Maxima

Con la funcin

length

es fcil obtener la longitud de una lista.

( %i1) length([7,9,0]); ( %o1) 3

Maxima

Aqu se usa la funcin

apply

para encontrar el elemento de mayor valor.

( %i2) apply(max,[11,1,2,4,5,5]); ( %o2) 11

Maxima

He aqu un ejemplo en el que se usa la funcin

map.

( %i3) map(first,[[a,b],[c,d]]); ( %o3) [a, c]

Sec. 10.9. Funciones adicionales para listas

143

Maxima

Este es otro ejemplo en el que se usa la funcin

map.

Para usos como este debe

recordarse que las listas deben tener la misma cantidad de elementos.

( %i4) map(+,[1,2,9],[-1,3,7]); ( %o4) [0, 5, 16]

Maxima

He aqu un ejemplo en el que se usa la funcin

outermap.

( %i5) outermap(^,[a,b],[c,d,e]); ( %o5) [[ac , ad , ae ], [bc , bd , be ]]

Maxima

En este ejemplo se combina el uso de la funcin (vase

map

con una funcin annima

( %i26)

( %i28)
p

de la seccin 9.1) para obtener una lista que contiene con cada una de las sublistas de

los productos escalares de

q.

( %i6) p:[x,y,z]$ q:[[a1,b1,c1],[a2,b2,c2],[a3,b3,c3]]$ ( %i8) map(lambda([h],p.h),q); ( %o8) [c1 z + b1 y + a1 x, c2 z + b2 y + a2 x, c3 z + b3 y + a3 x]

CAPTULO

11

Arrays

array(nombre, dim1 , . . . , dimn ) array(nombre, tipo, dim1 , . . . , dimn )


Creacin de arrays.

crea un array de dimensin be ser menor o igual que 5

n,

que de-

crea un array con sus elementos del tipo especicado (el tipo puede ser

fixnum

flonum)

listarray(A) arrayinfo(A) fillarray(A, B)


Algunas funciones para arrays.

devuelve una lista con los elementos del array

devuelve informacin acerca del array

A
rellena el array

A con los valores de B ,

que puede ser una lista u otro array

Maxima

Esto dene el array

de dimensin

2.

( %i9) array(u,2); ( %o9) u


144

145

Maxima

Esto indica que el array no tiene valores asignados.

( %i10) listarray(u); ( %o10) [#####, #####, #####]

Maxima

Esto asigna valores, a partir de una lista, al array.

( %i11) fillarray(u,[1,-7,8]); ( %o11) u

Maxima

Esto permite visualizar los valores asignados.

( %i12) listarray(u); ( %o12) [1, 7, 8]

Maxima

Aqu se dene el array

( %i13) array(phi,1,2); ( %o13)

Maxima

Esto asigna valores a

( %i14) phi[0,0]:-1$ phi[0,1]:1$ phi[0,2]:4$ phi[1,0]:4$ phi[1,1]:7$ phi[1,2]:5$

Maxima

Aqu se tiene una lista con los valores asignados a

( %i22) listarray(phi); ( %o22) [1, 1, 4, 4, 7, 5]

146

Cap. 11. Arrays

Maxima

Esto da informacin acerca de

( %i23) arrayinfo(phi); ( %o23) [declared , 2, [1, 2]]


Si el usuario asigna un valor a una variable subindicada antes de declarar el array correspondiente, se construye un array no declarado. Los arrays no declarados, tambin conocidos por el nombre de arrays de claves (hashed arrays), son ms generales que los arrays declarados. El usuario no necesita declarar su tamao mximo y pueden ir creciendo de forma dinmica. Los subndices de los arrays no declarados no necesariamente deben ser nmeros.
Maxima

Esto asigna un valor a la variable

subindicada con

hola.

( %i24) t[hola]:a; ( %o24) a


Maxima

Esto asigna un valor a la variable

subindicada con

adios.

( %i25) t[adios]:b; ( %o25) b


Maxima

Ahora se muestran los valores asignados al array no declarado

t.

( %i26) listarray(t); ( %o26) [b, a]

Maxima

Y tambin se muestra informacin con respecto a

t.

( %i27) arrayinfo(t); ( %o27) [hashed , 1, [adios] , [hola]]

CAPTULO

12

Matrices

12.1 Generacin de Matrices


Las matrices en

matrix
que

Maxima

son expresiones que comprenden el operador

Maxima

y cuyos argumentos son listas (ver seccin 19.2). Esto indica tiene establecida una diferencia entre una matriz y una

lista de listas.

matrix([a11 , a12 , . . . , a1n ] , . . . , [am1 , am2 , . . . , amn ]) genmatrix(f, m, n) entermatrix(m, n) ident(n) zeromatrix(m, n) diagmatrix(n, elem)

devuelve una matriz de orden

mn

devuelve una matriz a partir de

mn

generada

f m n,

devuelve una matriz de orden interactiva

cuyos elementos son leidos de forma

devuelve la matriz identidad de orden

n
devuelve una matriz rectangular

mn

con todos sus elementos iguales a cero devuelve una matriz diagonal de orden todos ellos iguales a

n con los elementos de la diagonal elem

Funciones para generar matrices.

147

148

Cap. 12. Matrices

diag_matrix(d1 , d2 , . . . , dn ) vandermonde_matrix ([x1 , . . . , xn ]) hilbert_matrix (n)

devuelve una matriz diagonal con los elementos de la diagonal iguales a

d1 , d2 , . . . , dn n por n, cuya (n1) 2 sima la es [1, xi , xi , . . . , xi ]


devuelve una matriz devuelve la matriz de Hilbert (si

in

por

no es un entero positivo, emite

un mensaje de error)

Funciones para generar matrices.

Maxima

He aqu la denicin de una matriz.

( %i1) matrix([3,1,0],[2,4,1],[1,7,2]); 3 1 0 ( %o1) 2 4 1 1 7 2

Maxima

Una lista de listas no es interpretada como matriz.

( %i2) [[3,1,0],[2,4,1],[1,7,2]]; ( %o2) [[3, 1, 0], [2, 4, 1], [1, 7, 2]]

Maxima

Con

apply

puede convertirse una lista de listas a matriz.

( %i3) apply(matrix,[[3,1,0],[2,4,1],[1,7,2]]); 3 1 0 ( %o3) 2 4 1 1 7 2

Maxima

Aqu se genera una matriz

(ai,j ) M33 /ai,j = i 2j .

( %i4) a[i,j]:=i-2*j $

Sec. 12.1. Generacin de Matrices

149

( %i5) genmatrix(a,3,3); 1 3 5 ( %o5) 0 2 4 1 1 3

Maxima

Esto genera una matriz de Vandermonde simblica.

( %i6) vandermonde_matrix([x[0],x[1],x[2]]); 1 x0 x2 0 ( %o6) 1 x1 x2 1 1 x2 x2 2

Maxima

Esto genera una matriz de Vandermonde numrica.

( %i7) vandermonde_matrix([2,3,5]); 1 2 4 ( %o7) 1 3 9 1 5 25

Maxima

He aqu una matriz de Hilbert de orden

3.

( %i8) hilbert_matrix(3); 1 1 1 2 3 ( %o8) 1 1 1


2 1 3 3 1 4 4 1 5

150

Cap. 12. Matrices

12.2 Elegir elementos de matrices


M[ i ] M [ i, j ]
part(M, i) part(M, i, j) devuelve la -sima la de la matriz devuelve el elemento

Mi,j

de

Funciones para elegir elementos de matrices.

Maxima

Esto genera la matriz

mediante una funcin annima.

( %i1) A:genmatrix(lambda([i,j],i-j),3,3); 0 1 2 ( %o1) 1 0 1 2 1 0

Maxima

Aqu se selecciona el elemento

A1,2 .

( %i2) A[1,2]; ( %o2) 1

Maxima

Esto devuelve una matriz identidad de orden

3.

( %i3) ident(3); 1 0 0 ( %o3) 0 1 0 0 0 1

Maxima

Esto selecciona la segunda la de la matriz identidad.

( %i4) %[2]; ( %o4) [0, 1, 0]

Sec. 12.3. Operaciones matriciales

151

12.3 Operaciones matriciales


A.B
producto matricial devuelve la inversa de la matriz

invert(M ) M p determinant(M ) mat_trace(M ) transpose(M ) minor(M, i, j) adjoint(M ) addcol(M, list1 , . . . , listn ) addrow(M, list1 , . . . , listn ) col(M, i) row(M, i) rank(M, i, j) setelmx(x, i, j, M ) submatrix(i1 , . . . , im , M, j1 , . . . , jn ) submatrix(i1 , . . . , im , M ) submatrix(M, j1 , . . . , jn )
Algunas operaciones matriciales.

exponenciacin matricial no conmutativa devuelve el determinante de la matriz

M
devuelve la traza de la matriz cuadrada

devuelve la transpuesta de la matriz

M
devuelve el menor

(i, j)

de la matriz

M
devuelve la matriz adjunta de la matriz

aade la(s) columna(s) dada(s) por la(s) lista(s) (o matrices) a la matriz

M
aade la(s) la(s) dada(s) por la(s) lista(s) (o matrices) a la matriz devuelve la triz

i -sima columna de la mai -sima

M.

El resultado es una matriz de

una sola columna devuelve la la de la matriz

M.

El resultado es una matriz de una

sola la calcula el rango de la matriz asigna el valor to de la matriz actualizada devuelve una nueva matriz formada a partir de la matriz

x al (i,j )-simo elemenM y devuelve la matriz

pero cuyas las

i1 , . . . , 1m

y columnas

j1 , . . . , j n

han

sido eliminadas

152

Cap. 12. Matrices

echelon(M ) triangularize(M ) rowop(M, i, j, ) rowswap(M, i, j) columnop(M, i, j, )

devuelve la forma escalonada de la matriz

M , obtenida por eliminacin gaus-

siana devuelve la forma triangular superior de la matriz

M , obtenida por elimina-

cin gaussiana devuelve la matriz que resulta de relizar la transformacin con las las

Fi

Fj

de la matriz

Fi Fi Fj M
y

intercambia las las

de la matriz

M
devuelve la matriz que resulta de relizar la transformacin con las columnas

Ci

Ci Ci Cj Cj de la matriz i
y

columnswap(M, i, j) kronecker_product(A, B)
Algunas operaciones matriciales.

intercambia las columnas matriz

de la

M A
y

devuelve el producto de Kronecker de las matrices

Maxima

He aqu una matriz

22

de variables simblicas.

( %i1) A:matrix([a,b],[c,d]); a b ( %o1) c d

Maxima

He aqu la transpuesta de

A.

( %i2) transpose(A); a c ( %o2) b d

Sec. 12.3. Operaciones matriciales

153

Maxima

Esto da la inversa de

en forma simblica.

( %i3) invert(A); d b adbc adbc ( %o3) a c adbc adbc

Maxima

Esto da el determinante de

A.

( %i4) determinant(A); ( %o4) a d b c


Maxima

He aqu una matriz racional

3 3.

( %i5) B:genmatrix(lambda([ i,j ],1/(i+j-1)),3,3); 1 1 1 2 3 ( %o5) 1 1 1 2 3 4


1 3 1 4 1 5

Maxima

Esto da su inversa.

( %i6) invert(B); 9 36 30 ( %o6) 36 192 180 30 180 180

Maxima

Multiplicando la inversa con la matriz original se obtiene la matriz identidad.

( %i7) %.B; 1 0 0 ( %o7) 0 1 0 0 0 1

154

Cap. 12. Matrices

Maxima

Aqu se dene una matriz

de orden

4 5.

( %i8) M:matrix([2,-1,2,-1,-8],[2,-2,3,-3,-20], [1,1,1,0,-2],[1,-1,4,3,4]); 2 1 2 1 8 2 2 3 3 20 ( %o8) 1 1 1 0 2 1 1 4 3 4

Maxima

Esto efecta el intercambio de las las resultante.

de la matriz

y devuelve la matriz

( %i9) rowswap(M,2,1); 2 2 3 3 20 2 1 2 1 8 ( %o9) 1 1 1 0 2 1 1 4 3 4

Maxima

Esto realiza la transformacin resultante.

F2 F2 + F1

en la matriz

y devuelve la matriz

( %i10) rowop(M,2,1,-1); 2 1 2 1 8 4 3 5 4 28 ( %o10) 1 1 1 0 2 1 1 4 3 4

Maxima

He aqu el producto de Kronecker de dos matrices.

( %i11) kronecker_product( matrix([a,b],[c,d]), matrix([1,2,3],[4,5,6],[7,8,9]) );

Sec. 12.4. Funciones adicionales para matrices

155

( %o11)

a 4a 7a c 4c 7c

2a 5a 8a 2c 5a 8c

3a 6a 9a 3c 6a 9c

b 2b 3b 4b 5b 6b 7b 8b 9b d 2d 3d 4d 5d 6d 7d 8d 9d

12.4 Funciones adicionales para matrices


matrix_size(M )
devuelve una lista con dos elementos que constituyen el nmero de las y columnas de la matriz mente

M,

respectiva-

matrixp(expr) mat_norm(M, p) addmatrices(f, A, B, . . .)

verica si

expr

es una matriz de la matriz

devuelve la

p -norma

Los valores admisibles para

inf

frobenius

son

M. 1,

devuelve

la donde

matriz

(f (ai,j , bi,j , . . .))mn ,

m n

es el orden comn de las matrices

mat_unblocker(M ) outermap(f, M1 , . . . , Mn )

A, B, . . . si M es una matriz de bloques, deshace


los bloques de un nivel aplica la funcin

a cada uno de

los elementos del producto cartesiano

M1 M2 . . . Mn
Ms funciones para matrices.

Maxima

He aqu la matriz

D.

( %i1) d[i,j]:=1+(-1)^ (i+j) $ ( %i3) D:genmatrix(d,3,4);

156

Cap. 12. Matrices

2 ( %o3) 0 2

0 2 0

2 0 2

0 2 0

Maxima

Esto devuelve una lista con el nmero de las y columnas de la matriz

D.

( %i4) matrix_size(D); ( %o4) [3, 4]

Maxima

Utilizando la funcin tricial.

matrixp

es posible comprobar que

es una expresin ma-

( %i5) matrixp(D); ( %o5) true

Maxima

He aqu la norma de frobenius de la matriz

B.

( %i6) mat_norm(D,frobenius); ( %o6) 2 6

Maxima

A continuacin se denen las matrices xados.

A, B

con elementos simblicos inde-

( %i7) A:genmatrix(a,2,3); a1,1 a1,2 a1,3 ( %o7) a2,1 a2,2 a2,3 ( %i8) B:genmatrix(b,2,3); b1,1 b1,2 b1,3 ( %o8) b2,1 b2,2 b2,3 ( %i9) C:genmatrix(c,2,3);

Sec. 12.4. Funciones adicionales para matrices

157

( %o9)

c1,1 c2,1

c1,2 c2,2

c1,3 c2,3

Maxima

Este es el resultado obtenido al aplicar matrices

mediante la funcin

addmatrices

a las

A, B

C.

( %i10) addmatrices(f,A,B,C); f (a1,1 , b1,1 , c1,1 ) f (a1,2 , b1,2 , c1,2 ) f (a1,3 , b1,3 , c1,3 ) ( %o10) f (a2,1 , b2,1 , c2,1 ) f (a2,2 , b2,2 , c2,2 ) f (a2,3 , b2,3 , c2,3 )

Maxima

Si

es +, el resultado es

A + B + C.

( %i11) addmatrices(+,A,B,C); c1,1 + b1,1 + a1,1 c1,2 + b1,2 + a1,2 ( %o11) c2,1 + b2,1 + a2,1 c2,2 + b2,2 + a2,2

c1,3 + b1,3 + a1,3 c2,3 + b2,3 + a2,3

Maxima

Con

outermap

mat_unblocker

tambin es posible obtener el producto de Kro-

necker de dos matrices.

( %i12) outermap( *,matrix([a,b],[c,d]), matrix([1,2,3],[4,5,6],[7,8,9]) ); a 2a 3a b 2b 3b 4a 5a 6a 4b 5b 6b 7a 8a 9a 7b 8b 9b ( %o12) c 2c 3c d 2d 3d 4c 5c 6c 4d 5d 6d 7c 8c 9c 7d 8d 9d ( %i13) mat_unblocker( %);

158

Cap. 12. Matrices

( %o13)

a 4a 7a c 4c 7c

2a 5a 8a 2c 5a 8c

3a 6a 9a 3c 6a 9c

b 2b 3b 4b 5b 6b 7b 8b 9b d 2d 3d 4d 5d 6d 7d 8d 9d

12.5 Matrices asociadas a sistemas de ecuaciones


coefmatrix([eq1 , . . . , eqm ], [x1 , . . . , xn ]) augcoefmatrix([eq1 , . . . , eqm ], [x1 , . . . , xn ])
devuelve la matriz de coecientes para las variables ecuaciones lineales

x1 , . . . , xn del sistema eq1 , . . . , eqm

de

devuelve la matriz aumentada de coecientes para las variables del sistema de

x1 , . . . , x n
lineales

ecuaciones

eq1 , . . . , eqm
Funciones para generar matrices asociadas a sistemas de ecuaciones.

Maxima

He aqu la matriz de coecientes del sistema de ecuaciones lineales, dado.

( %i1) coefmatrix([2*x-3*y=1,x+y=3],[x,y]); 2 3 ( %o1) 1 1

Maxima

Esta es la matriz aumentada del mismo sistema anterior.

( %i2) augcoefmatrix([2*x-3*y=1,x+y=3],[x,y]); 2 3 1 ( %o2) 1 1 3

Sec. 12.6. Autovalores y autovectores

159

Maxima

Aqu se hace la transformacin

F2 F2 1 F1 2

en la matriz aumentada anterior. A

partir de ste ltimo resultado se deduce que la solucin del sistema de ecuaciones lineales, dado, ser

y=1

x = 2.

( %i3) rowop( %,2,1,1/2); 2 3 1 5 5 ( %o3) 0 2 2

12.6 Autovalores y autovectores


charpoly(M, x) eigenvalues(M )
calcula el polinomio caracterstico vinculado a la matriz la variable

M,

en trminos de

devuelve una lista con dos sublistas, la primera de stas conteniendo los valores propios de la matriz multiplicidades

y la segun-

da, conteniendo sus correspondientes

eigenvectors(M )

devuelve una lista con dos elementos;

eigenvalues(M ),

el

primero

est

formado

por

el segundo es una

lista de listas de vectores propios, una por cada valor propio, pudiendo haber ms de un vector propio en cada lista

Obtencin de autovalores y autovectores asociados a una matriz dada.

Maxima

He aqu una matriz

3 3.

( %i1) c[i,j]:=i+j+1$ C:genmatrix(c,3,3); 3 4 5 ( %o1) 4 5 6 5 6 7

160

Cap. 12. Matrices

Maxima

ste es el polinomio caracterstico, en trminos de la variable x, asociado a la matriz

C.

( %i2) charpoly(C,x),expand; ( %o2) x3 + 15 x2 + 6 x

Maxima

Aqu se tienen los valores propios, y su respectiva multiplicidad, asociados a la matriz

C.

( %i3) eigenvalues(C); ( %o3)

24915 , 2

249+15 ,0 2

, [1, 1, 1]

Maxima

Finalmente, se muestran los valores propios, con su respectiva multiplicidad, y vectores propios de la matriz

C.

( %i4) eigenvectors(C); ( %o4)

24915 , 249+15 , 0 , [1, 1, 1] , 2 2 24919 835 1, 28 , 3 14 , 83+5 , [[1, 2, 1]] 1, 249+19 , 3 14 28

CAPTULO

13

Conjuntos

Los conjuntos en dor

set y cuyos argumentos son los elementos del mismo (ver seccin

Maxima

son expresiones que comprenden el operahace una diferencia entre conjuntos y

19.2). Esto indica que

Maxima

listas, lo que permite trabajar con conjuntos cuyos elementos puedan ser tambin conjuntos o listas.

Maxima
cin.

dispone de funciones para realizar operaciones con con-

juntos, como la interseccin o la unin. No obstante, debe tenerse en cuenta que los conjuntos deben ser nitos y denidos por enumera-

13.1 Generacin de conjuntos


set(a1 , . . . , an )
{a1 , . . . , an }
construye un conjunto cuyos elementos son

a1 , . . . , an

equivale a

set(a1 , . . . , an ) set()
f , siendo vars una f y s un conjunto

set() {} makeset(f, vars, s)

genera un conjunto vaco equivale a

genera un conjunto cuyos miembros se generan a partir de o lista de listas lista de variables de

Funciones para generar conjuntos.


161

162

Cap. 13. Conjuntos

Maxima

He aqu un conjunto formado por los elementos

a, b, c, d.

( %i1) {a,b,c,d}; ( %o1) {a, b, c, d}

Maxima

Al ingresar un conjunto cuyos elementos estn desordenados y repetidos, stos son ordenados y unicados de forma automtica.

( %i2) {c,e,f,f,a,b,c,d,a}; ( %o2) {a, b, c, d, e, f }

Maxima

La funcin

makeset

permite generar un conjunto. En este caso se considera una

funcin de dos variables, la cual es aplicada a una lista de listas.

( %i3) makeset(i/j,[i,j],[[1,a],[2,b],[3,c],[4,d]]); 1 4 ( %o3) a , 2 , 3 , d b c

Maxima

He aqu otro conjunto generado con

makeset.

Ahora se considera una funcin de

una variable, la cual es aplicada a un conjunto de listas.

( %i4) makeset(x/2,[x],{[1],[2],[3],[4],[5]}); ( %o4) 1 , 1, 3 , 2, 5 2 2 2

Maxima

Las operaciones aritmticas son listables.

( %i5) x^[1,2,3]; ( %o5) x, x2 , x3

Maxima

Sin embargo, las operaciones aritmticas no son conjuntables.

( %i6) x^{1,2,3};

Sec. 13.2. Conversiones entre conjuntos y listas

163

( %o6) x{1,2,3}
Maxima

La sustitucin si es conjuntable, aunque siempre respetando la unicacin.

( %i7) {x,x^2,x^3,x+1},x=1; ( %o7) {1, 2}

13.2 Conversiones entre conjuntos y listas


setify(list) fullsetify(list)
forma un conjunto a partir de los miembros de la lista

list

sustituye los operadores de lista presentes en juntos

conj

por operadores de con-

Conversiones de listas a conjuntos.

listify(conj) full_listify(conj)

forma una lista a partir de los miembros del conjunto

conj
por operadores de

sustituye los operadores de conjunto presentes en listas

conj

Conversiones de conjuntos a listas.

Maxima

Esto convierte una lista en conjunto.

( %i1) setify([a,c,d,e]); ( %o1) {a, c, d, e}

Maxima

Esto convierte un conjunto en lista.

( %i2) listify({a,b,c,d});

164

Cap. 13. Conjuntos

( %o2) [a, b, c, d]

Maxima

Esto sustituye todos los operadores de conjuntos a operadores de listas.

( %i3) fullsetify([a,[b,c],[e,[f,g]],k]); ( %o3) {a, {b, c} , {e, {f, g}} , k}

Maxima

Esto sustituye todos los operadores de listas a operadores de conjuntos.

( %i4) full_listify( %); ( %o4) [a, [b, c] , [e, [f, g]] , k]

Considerando que, cualquier lista puede convertirse a conjunto, entonces puede usarse

create_list

para generar una lista y luego

convertir la lista obtenida a conjunto. De esta manera se tiene una forma indirecta para generar conjuntos.

13.3 Eleccin de elementos de un conjunto


part(conj, i) first(conj), second(conj), . . . , tenth(conj) last(conj)
devuelve el junto

i -simo

elemento del con-

conj

respetando el ordenamien-

to y la unicacin internos devuelve el primer, segundo, ..., dcimo elemento de

conj conj

devuelve el ltimo elemento de

Seleccin de partes de un conjunto.

Maxima

Aqu se obtiene el primer elemento de un conjunto que ha sido ordenado y unicado internamente.

( %i1) part({b,c,c,d,a},1);

Sec. 13.4. Prueba y bsqueda de elementos de un conjunto

165

( %o1) a

Maxima

El quinto elemento no existe.

( %i2) part({b,c,c,d,a},5);
part: fell o the end. - - an error. To debug this try: debugmode(true);

13.4 Prueba y bsqueda de elementos de un conjunto


Existe una funcin especca para averiguar si un elemento pertenece a un conjunto, no obstante hay funciones genricas alternativas para ello.

subset(conj, P ) subsetp(conj1 , conj2 ) elementp(x, conj) member(x, conj) freeof(x, conj) freeof(x1 . . . , xn , conj)

extrae todos los elementos de un conjunto

conj

que satisfacen el predicado

P
devuelve devuelve

true true true

si y slo si si y slo si

con1 conj2 x es elemento x es miembro

del conjunto devuelve

conj
si y slo si

del conjunto prueba si

conj

x no ocurre en ninguna parte

conj
equivale a f reeof (x1 ; conj) and . . . and f reeof (xn ; conj)

Prueba de elementos de un conjunto.

Maxima

En este ejemplo se extrae, del conjunto los elementos pares.

{1, 2, 3, 4, 5, 7}

, el subconjunto de todos

( %i1) subset({1,2,3,4,5,7},evenp);

166

Cap. 13. Conjuntos

( %o1) {2, 4}

Maxima

Aqu se extrae, del conjunto

{1, 2, 3, 4, 5, 7} , el subconjunto de todos los elementos

tales que

t < 4.

( %i2) subset({1,2,3,4,5,7},lambda([t],is(t<4))); ( %o2) {1, 2, 3}

Maxima

Aqu se extrae, del conjunto

{1, 2, 3, 4, 5, 7} , el subconjunto de todos los elementos

tales que

mod(t, 3) = 1.

( %i3) subset({1,2,3,4,5,7}, lambda([t],is(mod(t,3)=1))); ( %o3) {1, 4, 7}

Maxima

Esto verica una contencin de conjuntos.

( %i4) subsetp({1,2},{5,6,7,9,1,2}); ( %o4) true

Maxima

Esto verica que el elemento

pertenece al conjunto

{2, 4, 5, 7}.

( %i5) elementp(2,{2,4,5,7}); ( %o5) true

Maxima

La funcin genrica

member

realiza los mismo.

( %i6) member(2,{2,4,5,7}); ( %o6) true

Sec. 13.5. Agregar y quitar elementos de un conjunto

167

Maxima

La funcin genrica

f reeof

indica que

forma parte del conjunto

{2, 4, 5, 7}.

( %i7) freeof(2,{2,4,5,7}); ( %o7) f alse

Maxima

La funcin genrica

f reeof

indica que

6 y 5 no forman parte del conjunto {1, 2, 3}.

( %i8) freeof(6,5,{1,2,3}); ( %o8) true

13.5 Agregar y quitar elementos de un conjunto


Es posible agregar y/o quitar elementos de un conjunto dado mediante dos funciones especcas de

Maxima.

adjoin(x, conj) disjoin(x, conj)

devuelve el conjunto mento

conj conj

con el ele-

x x

insertado sin el ele-

devuelve el conjunto mento

Funciones para agregar y quitar elementos de un conjunto.

Maxima

Aqu se inserta el elemento

en el conjunto

{1, 4, 7}.

( %i1) adjoin(2,{1,4,7}); ( %o1) {1, 2, 4, 7}

Maxima

Esto elimina el elemento

de

{1, 4, 7}.

( %i2) disjoin(4,{1,4,7}); ( %o2) {1, 7}

168

Cap. 13. Conjuntos

13.6 Reorganizacin de conjuntos


flatten(conj) set_partitions(conj) set_partitions(conj, n)
elimina todos los niveles en

conj

devuelve el conjunto de todas las particiones de

conj conj en n conjun-

devuelve un conjunto con todas las descomposiciones de tos no vacos disjuntos

Reorganizacin de conjuntos anidados.

Maxima

He aqu un conjunto al que se le eliminan todos los niveles.

( %i1) flatten({4,{1,3},{4,{7,8}},10}); ( %o1) {1, 3, 4, 7, 8, 10}

Maxima

Esto da todas las particiones de del mismo

{a, b, c};

y, seguidamente las descomposiciones

{a, b, c}

en dos conjuntos no vacos disjuntos.

( %i2) set_partitions({a,b,c}); ( %o2) {{{a} , {b} , {c}} , {{a} , {b, c}} , {{a, b} , {c}} , {{a, b, c}} , {{a, c} , {b}}} ( %i3) set_partitions({a,b,c},2); ( %o3) {{{a} , {b, c}} , {{a, b} , {c}} , {{a, c} , {b}}}

13.7 Operaciones con conjuntos


Las ms comunes operaciones matemticas con conjuntos estn implementadas en

Maxima.

Sec. 13.7. Operaciones con conjuntos

169

union(conj1 , . . . , conjn ) intersection(conj1 , . . . , conjn ) setdifference(conj1 , conj2 ) powerset(conj) subsetp(conj1 , conj2 ) setequalp(conj1 , conj2 ) symmdifference(conj1 , conj2 ) cartesian_product( conj1 , . . . , conjn ) disjointp(conj1 , conj2 ) equiv_classes(conj, F )

devuelve la unin de los conjuntos

conj1 , . . . , conjn
devuelve la interseccin de los conjuntos

conj1 , . . . , conjn

devuelve la diferencia de los conjuntos

conj1 , conj2
devuelve el conjunto potencia de devuelve

conj

true true

si y slo si el conjunto

conj1 conj1

es un subconjunto de

conj2

devuelve y

si y slo los conjuntos son iguales

conj2

devuelve la diferencia simtrica de los conjuntos

conj1 , conj2 conj1 , . . . , conjn


en forma

devuelve el producto cartesiano de los conjuntos de listas devuelve

true

si y slo si los conjuntos son disjuntos

conj1

conj2

devuelve el conjunto de las clases de equivalencia del conjunto

conj

respec-

to de la relacin de equivalencia

Operaciones con conjuntos.

Maxima

Aqu se denen los conjuntos

B.

( %i1) A:{a,b,c,d}$ B:{c,d,e,f,g}$

Maxima

Esto da la unin de

B.

( %i3) union(A,B); ( %o3) {a, b, c, d, e, f, g}

170

Cap. 13. Conjuntos

Maxima

Y esto la interseccin.

( %i4) intersection(A,B); ( %o4) {c, d}

Maxima

La diferencia

AB

se calcula as.

( %i5) setdifference(A,B); ( %o5) {a, b}

Maxima

En este caso las diferencias simtricas

son iguales.

( %i6) symmdifference(A,B); ( %o6) {a, b, e, f, g}

Maxima

He aqu el conjunto potencia del conjunto

A.

( %i7) powerset(A); ( %o7) {{} , {a} , {a, b} , {a, b, c} , {a, b, c, d} , {a, b, d} , {a, c} , {a, c, d} , {a, d} , {b} , {b, c} , {b, c, d} , {b, d} , {c} , {c, d} , {d}}

Maxima

Esto da el producto cartesiano

A B.

( %i8) cartesian_product(A,B); ( %o8) {[a, c] , [a, d] , [a, e] , [a, f ] , [a, g] , [b, c] , [b, d] , [b, e] , [b, f ] , [b, g] , [c, c] , [c, d] , [c, e] , [c, f ] , [c, g] , [d, c] , [d, d] , [d, e] , [d, f ] , [d, g]}

Sec. 13.8. Funciones adicionales para conjuntos

171

Maxima

Esto indica que los conjuntos

no son disjuntos.

( %i9) disjointp(A,B); ( %o9) f alse

Maxima

En este ejemplo, las clases de equivalencia son nmeros que dieren en un mltiplo de

3.

( %i10) equiv_classes({1,2,3,4,5,6,7},lambda([s,t], mod(s-t,3)=0)); ( %o10) {{1, 4, 7} , {2, 5} , {3, 6}}

13.8 Funciones adicionales para conjuntos


setp(expr) emptyp(conj) cardinality(conj) map(f, {a1 , . . . , an }) map(f, {a1 , . . . , an } , {b1 , . . . , bn } , . . .)
Algunas funciones adicionales.
devuelve

true

conjunto de devuelve

Maxima

si y slo si

expr conj

es un

true

si y slo si

es el

conjunto vaco devuelve el nmero de elementos del conjunto devuelve

conj {f (a1 ), . . . , f (an )} {f (a1 , b1 , . . .),


que los siempre

devuelve el conjunto

. . . , f (an , bn , . . .)},

conjuntos estn bien ordenados

Maxima

He aqu el cardinal de un conjunto.

( %i1) cardinality({a,b,c,a}); ( %o1) 4

172

Cap. 13. Conjuntos

Maxima

Para conjuntos bien ordenados, al aplicar la funcin acorde con el ordenamiento de tales conjuntos.

map,

se obtiene un resultado

( %i2) map(f,{a,b,c},{x,y,z}); ( %o2) {f (a, x), f (b, y), f (c, z)}

Maxima

En este caso primero son ordenados los conjuntos y luego devuelve un resultado que coincide con el de

( %o37)

( %i3) map(f,{c,a,b},{y,x,z}); ( %o3) {f (a, x), f (b, y), f (c, z)}

CAPTULO

14

Grcos

Maxima Maxima

no ha sido programado para elaborar sus propios grcos, de

modo que alternativamente utiliza un programa externo que realiza esta tarea. El usuario se limita a ordenar el tipo de grco deseado y se encarga de comunicrselo al programa grco que est activo en ese momento, que por defecto ser grca que utiliza Las funciones

Maxima

es

Gnuplot. La otra aplicacin Openmath 1 .


son funciones para obtener gr-

plot2d y plot3d2

cos que estn denidas en el propio ncleo de llamado

Maxima

(tngase pre-

sente que existen otras funciones similares denidas en un paquete

draw3 ).

Lo antes mencionado ocasiona que los grcos generados con las funciones

plot2d
a

plot3d

se muestren en una ventana aparte del

cuaderno de trabajo actual. No obstante, en contraparte, niendo

wxMaxima

incorpora funciones alternativas, cuyos nombres se obtienen antepo-

wx

plot2d

plot3d,

respectivamente. La diferencia con las

anteriores es que stas funciones devuelven todos los grcos en el cuaderno de trabajo actual.

1 Tanto Gnuplot 2 Con plot2d 3 El


y

como Openmath son softwares libres y una copia de cada uno

de ellos es distribuida conjuntamente con Maxima.

plot3d

es posible dar instrucciones tanto a Gnuplot como a

Openmath sin que sea necesario tener conocimiento alguno de la sintaxis de estos
programas. paquete y

ste incorpora las funciones a

plot2d

draw (ver el captulo 16) est orientado exclusivamente a Gnuplot. draw2d y draw3d, las cuales dan resultados similares plot3d. Adems incorpora funciones para gracar funciones denidas

implcitamente.

173

174

Cap. 14. Grcos

14.1 Grcos bsicos


Por comodidad, la mayora de los ejemplos de esta seccin se ejecutarn con las funciones incorporadas en las funciones estndar de

wxMaxima ;

sin embargo,

todos estos ejemplos pueden ser ejecutados sin ningn problema con

Maxima.

plot2d(f, [x, xmin , xmax ]) plot2d([f1 , . . . , fn ] , [x, xmin , xmax ]) wxplot2d(f, [x, xmin , xmax ]) wxplot2d([f1 , . . . , fn ] , [x, xmin , xmax ])
Trazado bsico de funciones.

muestra un grco de

y = f (x),

con

xmin x xmax ,
dependiente

en una ventana in-

muestra un grco de

. . . , y = fn (x),

con

y = f1 (x), xmin x xmax , y = f (x),


con

en una ventana independiente muestra un grco de

xmin x xmax ,
trabajo actual

en el cuaderno de

muestra un grco de

. . . , y = fn (x),

con

y = f1 (x), xmin x xmax ,

en el cuaderno de trabajo actual

Maxima

Esto traza un grco de hasta

sen(x)

como una funcin de

x.

Para

variando desde

2 .

( %i1) wxplot2d(sin(x),[x,0,2* %pi]);

( %t1)

( %o1)

Sec. 14.1. Grcos bsicos

175

Maxima

Puede darse una lista de funciones para que sean trazadas. Por defecto, a cada funcin se le asigna un color especco.

( %i2) wxplot2d([sin(x),sin(2*x),sin(3*x)], [x,0,2* %pi]);

( %t2)

( %o2)

Maxima

Aqu se utiliza la funcin Bessel,

create_list
1

para generar una lista de las funciones de hasta

Jn (x),

con

variando desde

4.

Luego se devuelve la grca de

dichas funciones.

( %i3) wxplot2d(create_list(bessel_j(n,x),n,1,4), [x,0,10]);

( %t3)

( %o3)

176

Cap. 14. Grcos

14.2 Opciones
Hay muchas opciones para escoger en el trazado de grcos. La mayora de las veces, la aplicacin grca invocada por

Maxima

proba-

blemente tomar opciones bastante buenas. Sin embargo, si se quiere obtener los mejores dibujos posibles para objetivos particulares, debera ayudarse a la aplicacin en particular en la eleccin de algunas de sus opciones. Hay un mecanismo general para especicar opciones en las funciones de argumentos de una funcin, como una secuencia de la forma

Maxima. Cada opcin tiene un nombre denido. Como ltimos


plot2d (wxplot2d), se puede incluir [nombre, valor] para especicar los valores

de varias opciones. A cualquier opcin para la cual no se indique un valor explcito se le asigna su valor por defecto.

plot2d(f, [x, xmin , xmax ] , [opcion, valor])

devuelve un grco, especicando un valor particular para una opcin, en otra ventana

Eleccin de una opcin para el trazado de un grco.

Opcin
y nticks

Val. por defecto


no presenta

Descripcin
rango vertical del grco nmero inicial de puntos utilizados por el procedimiento adaptativo para la representacin de funciones

29

adapt_depth

10

nmero mximo de particiones utilizado por el algoritmo adaptativo de representacin grca

xlabel ylabel

x
nombre

etiqueta del eje horizontal en grcos 2d

funcin , dada

de

la

etiqueta del eje vertical en grcos 2d

Algunas de las opciones de plot2d (wxplot2d).

Sec. 14.2. Opciones

177

Opcin
logx

Val. por defecto


no presenta

Descripcin
hace que el eje horizontal en los grcos 2d se dibuje en la escala logartmica (no necesita de parmetros adicionales)

logy

no presenta

hace que el eje vertical en los grcos 2d se dibuje en la escala logartmica (no necesita de parmetros adicionales)

legend

nombre

funcin , dada

de

la

etiquetas para las expresiones de los grcos 2d. Si hay ms expresiones que etiquetas, stas se repetirn

style gnuplot_ preamble plot_format gnuplot_term

lines,1,1   gnuplot default

estilos a utilizar para las funciones o conjuntos de datos en grcos 2d introduce el dibujo determina qu programa grco se va a utilizar establece el terminal de salida para Gnuplot; algunos valores posibles son: instrucciones de

gnuplot antes de que se haga

dumb, png, jpg, eps, pdf, gif, svg, etc. (esta opcin nicamente puede utilizarse con con

plot_realpart run_viewer

false true

si

plot2d, y no wxplot2d) plot_realpart vale true,

se representar la parte real de un valor complejo controla si el visor apropiado para la salida grca debe ejecutarse o no

Algunas de las opciones de plot2d (wxplot2d).

178

Cap. 14. Grcos

Maxima

He aqu un grco para el cual todas las opciones tienen asignados sus valores por defecto.

( %i1) wxplot2d(sin(x^2),[x,0,3]);

( %t1)

( %o1)

Maxima

La instruccin cin

set size ratio 1 iguala las escalas para los ejes x e y ; y la instrucset grid aade una rejilla al grco. Ambas instrucciones corresponden a la opcin gnuplot_preamble.

( %i2) wxplot2d(sin(x^2),[x,0,3],[gnuplot_preamble, set size ratio 1; set grid]);

( %t2)

( %o2)

Sec. 14.2. Opciones

179

Maxima

Esto especica el estilo del grco y la etiqueta para el eje y.

( %i3) wxplot2d(sin(x^2),[x,0,3],[style,[points,3,2,7]], [ylabel,y]);

( %t3)

( %o3)

Maxima

Las expresiones que se dan como etiquetas puede ser cualquier porcin de texto, pero sta debe ponerse entre comillas.

( %i4) wxplot2d(sin(x^2),[x,0,3], [xlabel,Porcin de texto para x], [ylabel,Porcin de texto para y]);

( %t4)

( %o4)

180

Cap. 14. Grcos

Maxima

Es posible trazar funciones que tienen singularidades. Para este efecto resulta bastante til la opcin

que permite indicar el rango.

( %i5) wxplot2d(tan(x),[x,-3,3],[y,-10,10]);
plot2d: some values were clipped.

( %t5)

( %o5)

14.3 Grcos de puntos y lneas


Con

plot2d (wxplot2d) pueden gracarse puntos del plano (aislados)

o poligonales que unen puntos del plano.

plot2d([ discrete, [[x1 , y1 ] , . . . , [xn , yn ]] ] , [style, points]) plot2d([ discrete, [x1 , . . . , xn ] , [y1 , . . . , yn ] ] , [style, points]) plot2d([ discrete, [[x1 , y1 ] , . . . , [xn , yn ]] ] , [style, lines])

devuelve el grco de los puntos aislados

(x1 , y1 ), . . . (xn , yn )

devuelve el grco de los puntos aislados

(x1 , y1 ), . . . (xn , yn )

devuelve el grco de una poligonal que une los puntos

(x1 , y1 ), . . . (xn , yn )

Grcos de puntos aislados y poligonales.

Sec. 14.3. Grcos de puntos y lneas

181

plot2d([ discrete, [x1 , . . . , xn ] , [y1 , . . . , yn ] ] , [style, lines]) plot2d([ discrete, [[x1 , y1 ] , . . . , [xn , yn ]] ] ) plot2d([ discrete, [x1 , . . . , xn ] , [y1 , . . . , yn ] ] )

devuelve el grco de una poligonal que une los puntos

(x1 , y1 ), . . . (xn , yn )

devuelve el grco de una poligonal que une los puntos

(x1 , y1 ), . . . (xn , yn ) (x1 , y1 ), . . . (xn , yn )

devuelve el grco de una poligonal que une los puntos

Grcos de puntos aislados y poligonales.

Maxima

De esta forma se graca una lista de puntos aislados.

( %i1) pts:create_list([i,sin(i)],i,0,5); ( %o1) [[0, 0] , [1, sin(1)] , [2, sin(2)] , [3, sin(3)] , [4, sin(4)] , [5, sin(5)]] ( %i2) wxplot2d([discrete,pts],[style,points]);

( %t2)

( %o2)
Cabe destacar que los estilos ros enteros positivos de la forma

points

lines

tambin aceptan (en el caso de

opciones. stas deben ingresarse como una secuencia de tres nme-

points),
segundo,

[points n1 , n2 , n3 ]

o dos nmeros enteros positivos de la forma

(en el caso de

[lines n1 , n2 ] lines). En ambos casos el primer valor, n1 , correspon-

azul, 2 rojo, 3 verde, 4 violeta, 5 points est el tercer valor, n3 , que corresponde a la forma en que se visualiza el punto (1 disco, 2 crculo, 3 cruz, 4 aspa, 5 asterisco, 6 cuadrado relleno,

de al tamao de los puntos o grosor de la lnea, segn sea el caso; el

negro, 6 celeste ).

n2 ,

al color (1

Finalmente para

182

Cap. 14. Grcos

7 cuadrado sin rellenar, 8 tringulo relleno, 9 tringulo sin rellenar, 10 tringulo relleno invertido, 11 tringulo sin rellenar invertido, 12 rombo relleno, 13 rombo sin rellenar ).

Maxima

Aqu se muestran los puntos de la salida color y forma de los mismos.

%o9 con opciones que cambian el tamao,

( %i3) wxplot2d([discrete,pts],[style,[points,3,2,5]]);

( %t3)

( %o3)

Maxima

Aqu se muestran los puntos de la salida

%o9

unidos por una lnea quebrada.

( %i4) wxplot2d([discrete,pts],[style,lines]);

( %t4)

( %o4)

Sec. 14.4. Grcos paramtricos y polares

183

14.4 Grcos paramtricos y polares


plot2d([parametric, fx , fy , [t, tmin , tmax ]]) plot2d([ [parametric, fx , fy , [t, tmin , tmax ]] , [parametric, gx , gy , [s, smin , smax ]] , . . .])
traza un grco paramtrico

traza varias curvas paramtricas juntas

Grcos de curvas denidas en forma paramtrica.

plot2d(f (t), [t, tmin , tmax ] , [gnuplot_preamble, set polar]) plot2d([f (t), g(t), . . .] [t, tmin , tmax ] , [gnuplot_preamble, set polar])

traza un grco polar

traza varias curvas polares juntas

Grcos de curvas denidas en forma polar.

Maxima

Esto devuelve la grca de la curva

t (cos(t), sen(t))

para

t [0, 2].

( %i1) wxplot2d([parametric,cos(t),sin(t),[t,0,2* %pi]]);

( %t1)

( %o1)

184

Cap. 14. Grcos

Maxima

Utilizando las opciones adecuadas es posible mejorar la presentacin de la salida

( %t1)

( %i2) wxplot2d( [parametric,cos(t),sin(t),[t,0,2* % pi]], [gnuplot_preamble,set size ratio 1], [nticks,100] );

( %t2)

( %o2)

Maxima

Esto devuelve la grca de

= sen(2t).

( %i3) wxplot2d(sin(2*t),[t,0,2* %pi], [gnuplot_preamble,set polar],[x,-1,1]);

( %t3)

( %o3)

Sec. 14.5. Combinacin de grcos

185

14.5 Combinacin de grcos


Adicionalmente, la funcin sistema coordenado.

plot2d (wxplot2d) permite combinar va-

rios tipos de grcos (salvo los polares) y presentarlos en un mismo

Maxima

Aqu se combinan varios tipos de grcos.

( %i1) pts:create_list([i,sin(i)] , i, 0, 5) $ ( %i2) wxplot2d([ [parametric,cos(t),sin(t)],[t,0,2* %pi] sin(x^2), [discrete,pts]] [x,-2,6],[y,-2,6], [style,lines,lines,points] [gnuplot_preamble,set size ratio 1]);
plot2d: expression evaluates to non-numeric value everywhere in plotting range.

( %t2)

( %o2)

14.6 Grcos de supercies tridimensionales


Para gracar supercies en Es preciso mencionar

R3 se utiliza la funcin plot3d (wxplot3d). que, al utilizar la funcin wxplot3d el grco

resultante ser mostrado en el cuaderno de trabajo actual; no obstante, se pierde la interaccin en tiempo real con el grco. Esto no sucede si se utiliza la funcin

plot3d,

ya que en este caso basta con

186

Cap. 14. Grcos

hacer clic sobre la gura y, sin soltar el botn del mouse, arrastrarlo para que la supercie gire en tiempo real.

plot3d(f, [x, xmin , xmax ] , muestra un grco de z = f (x, y), con [y, ymin , ymax ]) xmin x xmax y ymin y ymax ,
en una ventana independiente; en esta ventana es posible interactuar en tiempo real con dicho grco

wxplot3d(f, [x, xmin , xmax ] , [y, ymin , ymax ])

muestra un grco de

xmin x xmax

z = f (x, y), con ymin y ymax ,

en el cuaderno de trabajo actual y no hay interaccin en tiempo real con el grco

Trazado bsico de funciones 3D.

Al igual que posibles.

plot2d (wxplot2d),

la funcin

plot3d (wxplot3d)

tambin incluye una serie de opciones para obtener los mejores dibujos

Maxima

Esto traza un grco de la funcin

f (x, y) = sen(xy).

( %i1) wxplot3d(sin(x*y),[x,0,3],[y,0,3]);

( %t1)

( %o1)

Sec. 14.6. Grcos de supercies tridimensionales

187

Opcin
grid transform_xy gnuplot_term gnuplot_ preamble plot_format

Val. por defecto


30, 30

Descripcin
establece el nmero de puntos de la rejilla en las direcciones

false default   gnuplot

se usa para transformar las tres coordenadas similar a similar a

plot2d plot2d plot2d

(pg. 177) (pg. 177)

similar a

(pg. 177)

Algunas de las opciones de plot3d (wxplot3d)

Maxima

Esto traza un grco de

f (x, y) = sen(xy)

con el programa grco

openmath.

( %i2) plot3d(sin(x*y),[x,0,3],[y,0,3], [plot_format,openmath]); ( %o2)

Figura 14.1:

Grco obtenido a partir de

( %i2)

188

Cap. 14. Grcos

Maxima

Esto traza un grco tridimensional de la supercie denida por

r033 cos( th ) 3

en

coordenadas cilndricas. En este caso se ha realizado una transformacin de coordenadas. El usuario puede denir sus propias transformaciones usando la funcin

make_transform(vars, fx , fy , fz ). Por ejemplo, aqu se ha usado la transformacin


polar_to_xy : make_transform([r, th, z] , r cos(th), r sin(th), z).

( %i3) wxplot3d(r^.33*cos(th/3), [r,0,1],[th,0,6* %pi], [grid,12,80], [transform_xy,polar_to_xy]);

( %t3)

( %o3)

plot3d (wxplot3d)
car curvas en

tambin permite trazar la grca de una su-

percie denida en forma paramtrica; sin embargo, no permite gra-

R3 .

plot3d([x(u, v), y(u, v), z(u, v)] , [u, umin , umax ] , [v, vmin , vmax ]) wxplot3d([x(u, v), y(u, v), z(u, v)] , [u, umin , umax ] , [v, vmin , vmax ])

traza el grco de una supercie paramtrica en una ventana independiente, siendo posible la interaccin en tiempo real con dicho grco traza el grco de una supercie paramtrica en el cuaderno de trabajo actual, siendo imposible la interaccin en tiempo real con dicho grco

Trazado bsico de supercies denidas en forma paramtrica.

Sec. 14.6. Grcos de supercies tridimensionales

189

Maxima

Esto devuelve la grca de la esfera unitaria denida paramtricamente mediante

(u, v) (sen u sen v, cos u sen v, cos v), 0 u 2 , v 2

. 2

( %i4) wxplot3d([cos(u)*cos(v),sin(u)*cos(v),sin(v)], [u,0,2* %pi],[v,- %pi/2, %pi/2]);

( %t4)

( %o4)

Maxima

Utilizando las opciones adecuadas es posible mejorar la presentacin de la salida

%o21.

( %i5) wxplot3d([cos(u)*cos(v),sin(u)*cos(v),sin(v)], [u,0,2* %pi],[v,- %pi/2, %pi/2], [gnuplot_preamble,set size ratio 1]);

( %t5)

( %o5)

190

Cap. 14. Grcos

14.7 Grcos de densidad y contornos


Un grco de contorno le da esencialmente un mapa topogrco de una funcin. Los contornos unen puntos sobre la supercie que tienen la misma altura. El valor por defecto permite obtener contornos correspondientes a una secuencia de valores de

igualmente espaciados.

plot3d(f (x, y), [x, xmin , xmax ] , [y, ymin , ymax ] , [gnuplot_preamble, set pm3d map]) contour_plot(f (x, y), [x, xmin , xmax ] , [y, ymin , ymax ])

traza

un

grco

de

densidad

de

f (x, y) en el rectngulo [xmin , xmax ] [ymin , ymax ]

dibuja de

las

curvas

de

nivel

f (x, y) en el rectngulo [xmin , xmax ] [ymin , ymax ] (cualesquiera otros argumentos adicionales se tratan como en

plot3d)

Grcos de contornos.

Maxima

Esto traza un grco de densidad de la funcin

f (x, y) = sen(xy)

en el rectngulo

[0, 3] [0, 3].

( %i1) wxplot3d(sin(x*y),[x,0,3],[y,0,3], [gnuplot_preamble,set pm3d map]);

( %t1)

( %o1)

Sec. 14.8. Grcos animados

191

Maxima

He aqu un grco de contorno de

f (x, y) = x2 + y 2 1.

( %i2) contour_plot(x^2+y^2-1,[x,-1,1],[y,-1,1]);

( %t2)

( %o2)

14.8 Grcos animados


with_slider4 con la cual se genera un grco idntico al que se genera con wxplot2d,
torno de Para tal n se utiliza la funcin sin embargo dicho grco puede ser animado selecionndolo y pulsando luego el botn Tambin es posible crear animaciones, aunque nicamente en el en-

wxMaxima.

Comenzar animacin,

del cuadro de controles,

de la barra de herramientas.

Figura 14.2:

Cuadro de controles, ubicado en la barra de herramientas, para la animacin de grcos.

with_slider
Obtencin de grcos animados.

funcin

wxplot2d

para

animar

grcos

de

with_slider_draw y with_slider_draw3d draw3d del paquete draw.

4 Es

importante sealar que adicionalmente estan incluidas las funciones relacionadas con las funciones

draw

192

Cap. 14. Grcos

Maxima

Esto genera un grco listo para ser animado. Para conseguir la animacin primero se selecciona el grco y luego se pulsa el botn , del cuadro de controles, y , del

automticamente sta es generada. Para detenerla basta pulsar el botn

mismo cuadro. Tambin es posible navegar a travs de cada cuadro de la animacin con tan slo arrastrar a voluntad el botn el grco. , despus de haber seleccionado

( %i1) with_slider(a,[0,1,2,3,4,5],sin(x+a), [x,-2* %pi,2* %pi],[y,-1.5,1.5],[color,red]);

( %t1)

( %o1)

Maxima

He aqu otro grco listo para animar.

( %i2) with_slider(f,[x,x^2,x^3,x^4],f,[x,-2,2]);

( %t2)

( %o2)

Sec. 14.8. Grcos animados

193

Maxima

Este es un grco ms listo para animar.

( %i3) with_slider(a,[0,1,2,3,4,5], [parametric,sin(t),sin(2*(t+a)),[t,0,2* %pi]], [x,-1.5,1.5],[y,-1.5,1.5],[color,red], [nticks,50]);

( %t3)

( %o3)

CAPTULO

Utilidades de los menes de

wxMaxima

15

wxMaxima

contiene mens y cuadros de dilogo para realizar las ta-

reas ms rutinarias, facilitando as al usuario novel el explorar las caractersticas de

Maxima.

En este captulo repasaremos las principales opciones de los menes incorporados en la barra de menes de

wxMaxima.

15.1 El men Archivo


El men

Archivo

incluye las opciones (ver Fig. 15.1):

Abrir

Permite abrir una sesin previamente guardada, Permite abrir una sesin recientemente guar-

Abrir sesin reciente


dada,

Guardar

Permite guardar la sesin actual, Permite guardar, con otro nombre, la sesin actual, Permite inicializar un paquete indicando su ubica-

Guardar como
cin,

Cargar paquete

Archivo por lotes

Permite inicializar y traducir un paquete, de ex-

tensin mac, indicando su ubicacin, 194

Sec. 15.1. El men

Archivo

195

Figura 15.1:

Despliegue de opciones del men

Archivo.

Figura 15.2:

Eleccin de la opcin

Cargar paquete.

Exportar
18),

A Permite exportar archivos al L T X y HTML (ver Cap. E

Imprimir Salir

Permite realizar la impresin del cuaderno actual,

Finaliza la sesin actual.

Por ejemplo, la gura 15.2 muestra la eleccin de la opcin Cargar paquete (tambin puede hacerse presionando en simultneo Ctrl+L). Despus de elegir tal opcin aparece el cuadro de la gura 15.3 en el que se elegir el paquete a cargar. Luego de indicar el tipo (que puede ser mac o lisp) y el nombre del paquete (teniendo en cuenta la ruta

. Abrir En
1 El

especca de donde esta guardado el mismo) se da clic en el botn nuestro caso elegiremos el paquete

table.lisp.1
puede descargarse des-

http://sourceforge.net/apps/phpbb/maxima/viewtopic.php?f=3&t=5&sid= 716969b0736cc8416d959fdc5aded01e
de:

autor

de

ste

paquete

es

Ziga

Lenarcic

196

Cap. 15. Utilidades de los menes de wxMaxima

Figura 15.3:

Cuadro para elegir el paquete a cargar.

Maxima

He aqu la sentencia que aparece despus de haber elegido el paquete y presionar

. Abrir

table.lisp

( %i1) load(D:/maximapackages/table.lisp)$

Maxima

Ahora es posible usar la funcin con

table para generar una lista de los valores sen(t),


. 4

variando de

y un incremento de

( %i2) table(sin(t),[t,0,2* %pi, %pi/4]); 1 1 1 1 ( %o2) [0, 2 , 1, 2 , 0, 2 , 1, 2 , 0]

Maxima

En este caso se asume que el lmite inferior es

1.

( %i3) table(i^2,[i,5]); ( %o3) [1, 4, 9, 16, 25]

Sec. 15.2. El men

Editar

197

15.2 El men Editar


El men

Editar

incluye las opciones (ver Fig. 15.4):

Deshacer Cortar Copiar

Deshace cualquier entrada previa de una celda actual,

Corta cualquier entrada previa, Copia cualquier entrada previa, Copia la seleccin de una salida (o un conjunto

Copiar como texto

de celdas) como texto,

Copiar como LaTeX Copiar como imagen Pegar

Copia la seleccin de una salida (o un con-

A junto de celdas) como cdigo L T X, E

Copia la seleccin de una salida (o un con-

junto de celdas) como imagen, Permite pegar el contenido del portapapeles en el cuaderno

actual,

Buscar

Permite buscar una expresin en el cuaderno actual, Selecciona el contenido de todas las celdas del

Seleccionar todo

cuaderno actual actual,

Guardar seleccin en imagen Ampliar

Guarda la seleccin de una salida

(o un conjunto de celdas) como imagen, Permite ampliar el tamao de los caracteres del cuaderno

actual,

Disminuir

Permite disminuir el tamao de los caracteres del cua-

derno actual,

Establecer aumento Pantalla completa Preferencias

Permite establecer el aumento del tamao de

los caracteres del cuaderno actual, Permite realizar una vista en pantalla completa

del cuaderno actual, Permite editar la conguracin de las opciones y esti-

los (ver Sec. 3.3).

198

Cap. 15. Utilidades de los menes de wxMaxima

Figura 15.4:

Despliegue de opciones del men

Editar.

A modo de ejemplo, seleccionaremos las celdas del cuaderno de la gura 15.5 luego elegimos la opcin

Copiar como LaTeX del men

Editar (ver Fig. 15.6). Al pegar el contenido del portapapeles en algn


A editor de L T X, y compilar, se obtiene la salida que se muestra a E continuacin:

Salida obtenida, con el cdigo guardado, mediante un editor de L T X E

(%i1) load("D:/maximapackages/table.lisp")$ (%i2) table(sin(t),[t,0,2*%pi,%pi/4]);


( %o2)

1 1 1 1 [0, , 1, , 0, , 1, , 0] 2 2 2 2

(%i3) table(i^2,[i,5]);
( %o3)

[1, 4, 9, 16, 25]

En cambio, si se elige la opcin

Guardar seleccin en imagen

del mismo men, y se siguen las respectivas indicaciones, se obtiene un archivo png (ver Fig. 15.7), que puede insertarse luego en cualquier documento.

Sec. 15.2. El men

Editar

199

Figura 15.5:

Cuaderno para el ejemplo de esta seccin.

Figura 15.6:

Eligiendo la opcin opcin men

Editar.

Copiar como LaTeX

del

Figura 15.7:

Imagen guardada mediante la opcin

cin en imagen del men Editar.

Guardar selec-

200

Cap. 15. Utilidades de los menes de wxMaxima

15.3 El men Celda


El men

Editar

incluye las opciones (ver Fig. 15.8): Evala las celdas seleccionadas del cuaderno actual, Evala todas las celdas del cuaderno ac-

Evaluar celdas
tual,

Evaluar todas las celdas

Borrar todos los resultados


actual,

Borrar todas las salidas del cuaderno

Copiar entrada anterior


actual,

Copia la entrada previa en el cuaderno

Autocompletar

Muestra un conjunto de posibles trminos que com-

pletaran la entrada actual,

Mostrar plantilla

Muestra un conjunto de posibles plantillas que

completaran la entrada actual,

Nueva celda de entrada Nueva celda de texto


tual (ver Sec. 3.2),

Inserta una celda de entrada en el cua-

derno actual(ver Sec. 3.2), Inserta una celda de texto el cuaderno ac-

Nueva celda de subseccin Nueva celda de seccin


actual (ver Sec. 3.2),

Inserta una celda de subseccin el cua-

derno actual (ver Sec. 3.2), Inserta una celda de seccin el cuaderno

Nueva celda de ttulo


tual (ver Sec. 3.2),

Inserta una celda de ttulo el cuaderno ac-

Insertar salto de pgina


actual,

Inserta un salto de pgina en el cuaderno

Insertar imagen
cuaderno),

Permite insertar una imagen en el cuaderno ac-

tual (cabe destacar que tal imagen no prevalece al guardar el

Instruccin anterior

Permite navegar hacia atrs entre las instruc-

ciones dadas en el cuaderno actual (al estilo MatLab),

Sec. 15.3. El men

Celda

201

Figura 15.8:

Despliegue de opciones del men

Celda.

Figura 15.9:

Activando la opcin

Autocompletar.

Siguiente instruccin

Permite navegar hacia adelante entre las ins-

trucciones dadas en el cuaderno actual (al estilo MatLab).

Por ejemplo, si se desea calcular puede usarse la opcin

cos(x) dx

y no se recuerda el

comando especco, pero si se recuerda que empieza con

Autocompletar

int, entonces

funciones entre las que gura: cambio, si se elige la opcin de plantillas (ver).

Mostrar plantilla, aparecer una lista

integrate (ver Figs. 15.9 y 15.10). En

para obtener una lista de

202

Cap. 15. Utilidades de los menes de wxMaxima

Figura 15.10:

Lista de funciones que empiezan con

int.

Figura 15.11:

Lista de plantillas que empiezan con

int.

Figura 15.12:

Plantilla para calcular una integral indenida.

Sec. 15.4. El men

Maxima

203

15.4 El men Maxima


El men

Maxima

incluye las opciones (ver Fig. 15.13):

Paneles

rales, Estadstica, Historial, Insertar celda mientas,


Interrumpe el clculo actual, Reinicia

Permite mostrar u ocultar paneles para

Matemticas geneBarra de Herra-

Interrumpir

Reiniciar Maxima Limpiar memoria


riables,

Maxima

sin salir de

wxMaxima

Elimina todas las asignaciones de todas las va-

Aadir ruta

Especica listas de directorios en los que deben buscar

la funciones

load, demo

y algunas otras,

Mostrar funciones Mostrar denicin


especca,

Genera una lista que contiene los nombres de

las funciones denidas por el usuario, Permite obtener la denicin de una funcin

Mostrar variables Borrar funcin Borrar variable

Genera una lista de todas las variables que el

usuario ha creado, Permite borrar todas o algunas de las funciones de-

nidas por el usuario, Permite borrar todas o algunas de las variables

creadas por el usuario,

Conmutar pantalla de tiempo


expresin,

Permite que el tiempo de clculo

y el tiempo de retardo se impriman junto con la salida de cada

Cambiar pantalla 2D Mostrar formato TeX

Permite seleccionar el algoritmo de salida

matemtica (ver Sec. 4.4), Devuelve la expresin actual en un formato

apropiado para para ser incorporado a un documento basado en T X (ver Sec. 18.1). E

204

Cap. 15. Utilidades de los menes de wxMaxima

Figura 15.13:

Despliegue de opciones del men

Maxima.

Figura 15.14:

Eligiendo el panel Matemticas Generales de la opcin

Paneles del men Maxima.

Por ejemplo para desplegar el panel mos dicho panel de la opcin 15.14 y 15.15)

Paneles del men Maxima (ver Figs.

Matemticas generales

elegi-

15.5 El men Ecuaciones


El men

Ecuaciones

incluye las opciones (ver Fig. 15.16):

Resolver
2 Eso

Permite resolver una ecuacin algebraica, Permite resolver una ecuacin,

Resolver (to_poly)
de Maxima.

es til cuando, por ejemplo, generamos sin querer un bucle en la ejecucin

Sec. 15.5. El men

Ecuaciones

205

Figura 15.15:

Panel Matemticas Generales desplegado.

Calcular raz

Permite aproximar una raz en un intervalo dado, Aproxima las races reales y complejas de

Races de un polinomio

un polinomio ingresado en la celda de entrada actual,

Races reales grandes de un polinomio


la celda de entrada actual,

Aproxima las races reales

y complejas, en formato bigoat, de un polinomio ingresado en

Resolver sistema lineal


lineales,

Permite resolver un sistema de ecuaciones

Resolver sistema algebraico


ciones algebraicas,

Permite resolver un sistema de ecua-

Eliminar variable Resolver EDO

Elimina variables de ecuaciones (o de expresio-

nes que se supone valen cero) tomando resultantes sucesivas, Permite resolver ecuaciones diferenciales ordinarias

de primer y segundo orden,

Problema de valor inicial (1)


primer orden,

Permite aadir condiciones de va-

lor inicial a la solucin de una ecuacin diferencial ordinaria de

Problema de valor inicial (2)


segundo orden,

Permite aadir condiciones de va-

lor inicial a la solucin de una ecuacin diferencial ordinaria de

206

Cap. 15. Utilidades de los menes de wxMaxima

Figura 15.16:

Despliegue de opciones del men

Ecuaciones.

Figura 15.17:

Uso de la opcin

Resolver EDO para dar solucin a


y = y.

la ecuacin diferencial

Problema de contorno

Permite aadir condiciones de frontera a la

solucin de una ecuacin diferencial ordinaria de segundo orden,

Resolver EDO con Laplace


de Laplace,

Permite resolver sistemas de ecuacio-

nes diferenciales ordinarias lineales utilizando la transformada

Condicin inicial

Permite asignar un determinado valor a cierta

expresin dada en un punto especco.

Por ejemplo, para resolver el problema de valor inicial

y(0) = 1;

de valor inicial (1) tal como se muestra en las guras .


Maxima

podemos usar las opciones

Resolver EDO

Problema

y = y,

Resultados obtenidos al seguir los procesos indicados en las guras 15.17 y 15.18.

( %i1) ode2('diff(y,x)=y,y,x); ( %o1) y = %c %ex

Sec. 15.6. El men

lgebra

207

Figura 15.18:

Uso de la opcin

Problema de valor inicial (1) pay(0) = 1


a la ecuacin

ra aadir la condicin inicial

diferencial de la gura 15.17 (aqu se asume que tal ecuacin gura en la entrada actual).

( %i2) ic1( %,x=0,y=1); ( %o2) y = %ex

15.6 El men lgebra


El men

lgebra

incluye las opciones (ver Fig. 15.19):

Generar matriz

Permite generar una matriz, Permite generar una ma-

Generar matriz a partir de expresin Introducir matriz Invertir matriz

triz a partir de una expresin en trminos de

i, j ,

Permite generar una matriz introduciendo sus

trminos en tiempo real, Devuelve la matriz inversa de una matriz actual-

mente denida,

Polinomio caracterstico Determinante

Permite generar el polinomio caracters-

tico de cierta matriz especicando la variable, Devuelve el determinante de la matriz actual, Devuelve los valores propios de la matriz actual, Devuelve los vectores propios de la matriz actual,

Valores propios Matriz adjunta

Vectores propios

Devuelve la matriz adjunta de la matriz actual,

208

Cap. 15. Utilidades de los menes de wxMaxima

Figura 15.19:

Despliegue de opciones del men

lgebra.

Trasponer matriz Construir lista Aplicar a lista

Devuelve la traspuesta de la matriz actual,

Permite construir una lista en trminos de cierta

expresin que depende de una variable, Permite aplicar un operador a una lista, Permite aplicar una funcin a cada uno de

Distribuir sobre lista

los elementos de una lista,

Distribuir sobre matriz

Permite aplicar una funcin a cada uno

de los elementos de una matriz.

Maxima

Aqu se dene una funcin annima.

( %i1) lambda([i,j],1/(i+j-1))$
Maxima

A continuacin, usando la opcin datos (ver Fig. 15.20) se obtiene:

Generar matriz

y llenando los respectivos

( %i2) A: genmatrix( %,3,3); 1 1 1 2 3 1 ( %o2) 1 3 1 2 4


1 3 1 4 1 5

Sec. 15.6. El men

lgebra

209

Figura 15.20:

Llenando los datos del cuadro asociado a la opcin

narar matriz.

Ge-

Figura 15.21:

Llenando los datos del cuadro asociado a la opcin

nerar matriz a partir de expresin.

Ge-

Figura 15.22:

Llenando los datos del cuadro asociado a la opcin

troducir matriz.

In-

Maxima

No obstante, usando la opcin

Generar matriz a partir de expresin y lle-

nando los respectivos datos (ver Fig. 15.21) se obtiene:

( %i3) B:genmatrix(lambda([i,j],1/(i+j-1)),3,3); 1 1 1 2 3 ( %o3) 1 1 1 2 3 4


1 3 1 4 1 5

210

Cap. 15. Utilidades de los menes de wxMaxima

Figura 15.23:

Introduciendo los elementos de la matriz, previamente creada, en tiempo real.

Figura 15.24:

Ingresando la funcin annima que se desea aplicar a cada uno de los elementos de la matriz actual.

Maxima

Eligiendo la opcin

Introducir matriz

y llenando los datos respectivos para

denir una matriz (15.22) es posible introducir, en tiempo real, cada uno de los elementos de dicha matriz (15.23).

( %i4) C: matrix( [-1,5,2], [1,0,4], [-2,-3,1] ); 1 5 2 0 4 ( %o4) 1 2 3 1

Sec. 15.7. El men

Anlisis

211

Maxima

Si se quiere aplicar una funcin a cada uno de los elementos de la matriz actual, por ejemplo la matriz

C,

puede usarse la opcin

Distribuir sobre matriz (15.24).

( %i5) matrixmap(lambda([h],x^h+1), %); 1 x5 + 1 x2 + 1 x +1 2 x4 + 1 ( %o5) x + 1 1 1 x+1 x2 + 1 x3 + 1

15.7 El men Anlisis


El men

Anlisis

incluye las opciones (ver Fig. 15.25):

Integrar

Permite calcular la integral indenida o denida de una

expresin,

Integracin Risch Cambiar variable Derivar

Permite calcular la integral indenida de una ex-

presin utilizando el caso trascendental del algoritmo de Risch, Permite efectuar un cambio de variable en una

integral indenida o denida de un expresin, Permite calcular la derivada

n-sima

de una expresin,

Calcular lmite

Permite calcular el lmite de una expresin, Permite encontrar una solucin aproximada para

Calcular mnimo
objetivo dada,

el problema de minimizacin sin restricciones de una funcin

Calcular serie
Taylor,

Permite expandir una expresin en un desarrollo de

Aproximacin de Pad

Permite obtener la lista de todas las fun-

ciones racionales que tienen el desarrollo de Taylor dado, en las que la suma de los grados del numerador y denominador es menor o igual que el nivel de truncamiento de la serie de potencias,

Calcular suma

Permite calcular la suma de los valores de una ex-

presin segn la variacin del respectivo ndice,

212

Cap. 15. Utilidades de los menes de wxMaxima

Calcular producto

Permite calcular el producto de los valores de

una expresin segn la variacin del respectivo ndice,

Transformada de Laplace

Permite calcular la transformada de La-

place de una expresin dada,

Transformada inversa de Laplace Mximo comn divisor


mios dados, mios dados,

Permite calcular la transfor-

mada inversa de Laplace de una expresin dada, Permite obtener el MCD de dos polino-

Mnimo comn mltiplo Dividir polinomios

Permite obtener el mcm de dos polino-

Permite calcular el cociente y el resto de la

divisin de dos polinomios dados,

Fracciones simples Expande una expresin en fracciones parciales, Fraccin continua Permite obtener una fraccin continua a partir
de la representacin en formato lista de la misma.

Figura 15.25:
Maxima

Despliegue de opciones del men

Anlisis.

Aqu se introduce una integral sin evaluar.

( %i1) 'integrate(sin(x)^2*cos(x),x); ( %o1)


cos (x) sin (x) dx
2

Sec. 15.7. El men

Anlisis

213

Figura 15.26:

Llenando los datos del cuadro asociado a la opcin

Cambiar variable.

Figura 15.27:

Llenando los datos del cuadro asociado a la opcin

Calcular suma.

Maxima

Despus de usar la opcin resultado:

Cambiar variable

(15.26) se obtiene el siguiente

( %i2) changevar( %,y=sin(x),y,x); ( %o2)


y 2 dy

Maxima

Despus de usar la opcin tado:

Calcular suma (15.27) se obtiene el siguiente resul-

( %i3) sum(1/k^2,k,1,inf),simpsum; ( %o3)


2 6

214

Cap. 15. Utilidades de los menes de wxMaxima

15.8 El men Simplicar


El men

Simplicar

incluye las opciones (ver Fig. 15.28):

Simplicar expresin
cionales,

Simplica una expresin actual y todas sus

subexpresiones, incluyendo los argumentos de funciones no ra-

Simplicar radicales Factorizar expresin Factorizar complejo Expandir expresin Expandir logaritmos
logexpand,

Simplica una expresin actual, que puede

contener logaritmos, exponenciales y radicales, convirtindola a una forma cannica, Factoriza una expresin actual, que puede

contener cualquier nmero de variables o funciones, en factores irreducibles respecto de los enteros, Factoriza un polinomio actual sobre los ente-

ros gaussianos (un entero gaussiano es de la forma a y b son nmeros enteros), Expande la expresin actual, Activa el valor

a + ib

donde

super

de la variable opcional

Contraer logaritmos
tual logartmica,

Realizar contracciones en una expresin ac-

Factoriales y gamma

Permite mostrar u ocultar paneles para Convertir a factoriales, Convertir a gamma, Simplicar factoriales y Combinar factoriales, Permite mostrar u ocultar paneles

Simplicacin trigonomtrica
para

Simplicar trigonometra, Reducir trigonometra, Expandir trigonometra y Forma cannica,


Permite mostrar u ocultar paneles para

Simplicacin compleja

Convertir a forma cartesiana, Convertir a forma polar, Calcular parte real, Calcular parte imaginaria, Demoivre y Exponencializar,
Permite realizar sustituciones en expresiones,

Sustituir

Sec. 15.8. El men

Simplicar

215

Figura 15.28:

Despliegue de opciones del men

Simplicar.

Evaluar formas nominales Conmutar lgebra


opcional

Permite evaluar formas cuya evalua-

cin a sido evitada por el operador comilla simple ',

algebraic para que se pueda hacer o no la simplica-

Permite conmutar el valor actual de la variable

cin de enteros algebraicos,

Aadir igualdad algebraica


algebraicos conocidos por

Permite aadir al anillo de enteros

Maxima

los elementos que son solu-

ciones de los polinomios ingresados,

Clculo del mdulo

Permite indicar el mdulo mediante el cual se

realizan las operaciones con nmeros racionales.

Maxima

Usando la opcin

Aadir igualdad algebraica e ingresando la respectiva igual-

dad en el cuadro asociado a dicha opcin (15.28) obtenemos:

( %i1) tellrat(a+1/a=sqrt(3)); ( %o1) [a2 3 a + 1]

216

Cap. 15. Utilidades de los menes de wxMaxima

Figura 15.29:

Llenando los datos del cuadro asociado a la opcin

Aadir igualdad algebraica.

Maxima

Ahora, es preciso incluir la siguiente sentencia para poder arribar al resultado que se desea mostrar.

( %i2) algebraic:true; ( %o2) true

Maxima

Finalmente, averiguamos el valor para implica : a4

a4 +

1 a4

a+

1 2 a

1 . Tngase presente que a4 2 = ( 3 2)2 2 = 1.

a+

1 a

( %i3) ratsimp(a^4+1/a^4); ( %o3) 1

15.9 El men Grcos


El men

Grcos

incluye las opciones (ver Fig. 15.30):

Grcos 2D Grcos 3D

Permite realizar grcos bidimensionales,

Permite realizar grcos tridimensionales,

Formato de grcos

Permite establecer el formato de los grcos.

Sec. 15.9. El men

Grcos

217

Figura 15.30:

Despliegue de opciones del men

Grcos.

Figura 15.31:

Llenando los datos del cuadro asociado a la opcin

Grcos.

Maxima

Llenando los datos del cuadro asociado a la opcin

Grcos 2D (ver Fig. 15.31)


x x sen(x).

se genera la sentencia adecuada para obtener la grca de

( %i1) wxplot2d([x*sin(x)],[x,-5,5])$

( %t1)

218

Cap. 15. Utilidades de los menes de wxMaxima

Figura 15.32:

Eligiendo, adicionalmente, el formato

openmath.

Maxima

Si se elije el formato

openmath

(ver Fig. 15.32) se genera la sentencia adecuada con el programa grco

para obtener la grca de Fig. 15.33).

x x sen(x)

openmath

(ver

( %i2) wxplot2d([x*sin(x)],[x,-5,5])$

Figura 15.33:

Grco obtenido a partir de

( %i2)

Sec. 15.10. El men

Numrico

219

15.10 El men Numrico


El men

Numrico

incluye las opciones (ver Fig. 15.34):

Conmutar salida numrica


resultado numricos,

Activa la variable

float para obtener

A real

Devuelve el valor numrico de la expresin actual, Convierte todos los nmeros y funciones

A real grande (bigoat) Establecer precisin


tante grandes .

numricas a nmeros decimales de punto otante grandes, Permite establecer el nmero de dgitos sig-

nicativos en la aritmtica con nmeros decimales de punto o-

Figura 15.34:
Maxima

Despliegue de opciones del men

Numrico.

Por defecto los resultados son simblicos.

( %i1) sqrt(2)+sqrt(3); ( %o1) 3 + 2

Maxima

Despus de activar la opcin

Conmutar salida numrica se obtiene el cdigo

adecuado para obtener resultados en forma numrica.

( %i2) if numer#false then numer:false else numer:true; ( %o2) true

220

Cap. 15. Utilidades de los menes de wxMaxima

Maxima

Ahora se obtienen resultados numricos.

( %i3) sqrt(2)+sqrt(3); ( %o3) 3.146264369941973

Figura 15.35:

Despliegue de opciones del men

Ayuda.

15.11 El men Ayuda


El men

Ayuda

incluye las opciones (ver Fig. 15.35):

Ayuda de Maxima

Muestra los libros de ayuda de

Maxima

que

estn disponibles en el sistema. Estos libros se pueden navegar de forma interactiva y en cada uno de ellos se pueden realizar bsquedas de palabras clave,

Ejemplo
ma,

Muestra un ejemplo de uso de cualquier funcin de

Maxi-

A propsito

Muestra funciones de

Maxima

similares a una palabra,

Mostrar sugerencias
wxMaxima,

Muestra una idea relacionada con el uso de

Tutoriales

Carga la pgina ocial de

wxMaxima, Maxima
que se

Informacin de compilacin
est usando,

Imprime un resumen de los parme-

tros que se usaron para construir la versin de

Sec. 15.11. El men

Ayuda

221

Informar de error
del proyecto

Imprime las versiones de

Maxima

y de

Lisp

proporciona un enlace a la pgina web sobre informe de fallos

Maxima,

Comprueba actualizaciones
wxMaxima,

Permite comprobar actualizaciones de

Acerca de...

Muestra informacin tcnica relacionada con el funcio-

namiento del programa.

CAPTULO

16

Grcos con draw

El paquete

draw

se distribuye conjuntamente con

tuye una interfaz que comunica de manera muy eciente

Gnuplot. Este paquete incorpora una considerable variedad de funcionmero de objetos grcos bidimensionales y tridimensionales. Para poder utilizar el paquete

Maxima y constiMaxima con

nes y opciones que permiten obtener la representacin de un amplio

moria, y para ello se utiliza la funcin

draw es preciso cargarlo en load (ver seccin 3.7).

la me-

load(draw) $ draw(gr2d, . . . , gr3d, . . . , opciones)

carga (inicializa) el paquete

draw

representa grcamente una serie de escenas; sus argumentos son objetos

gr2d

y/o

gr3d,

junto con algunas op-

ciones. Por defecto, las escenas se representan en una columna

draw2d(opciones, objeto_grco, . . .) draw3d(opciones, objeto_grco, . . .)

draw(gr2d(opciones, objeto_grco, . . .)) draw(gr3d(opciones, objeto_grco, . . .))


esta funcin es un atajo

esta

funcin

es

un

atajo

para

para

Inicializacin del paquete draw y descripcin de sus tres funciones principales.

222

Sec. 16.1. Objetos grcos bidimensionales

223

16.1 Objetos grcos bidimensionales


points([[x1 , y1 ], [x2 , y2 ], . . .]) points([x1 , x2 , . . .], [y1 , y2 , . . .]) points([y1 , y2 , . . .]) points(matrix([x1 , y1 ], [x2 , y2 ], . . .) bars([x1 , h1 , w1 ], . . .) polygon([[x1 , y1 ], [x2 , y2 ], . . .]) polygon([x1 , x2 , . . .], [y1 , y2 , . . .]) rectangle([x1 , y1 ], [x2 , y2 ]) quadrilateral([x1 , y1 ], [x2 , y2 ], [x3 , y3 ], [x4 , y4 ]) triangle([x1 , y1 ], [x2 , y2 ], [x3 , y3 ]) image(im, x0 , y0 , width, height) vector([p1 , p2 ], [v1 , v2 ]) label([cadena, x, y], . . .) ellipse(xc , yc , a, b, ang1 , ang2 )

puntos bidimensionales

puntos bidimensionales

equivale a

points([[1, y1 ], [2, y2 ], . . .])

puntos bidimensionales

dibuja barras verticales centradas en

xi ,

de alturas

hi

y anchos

wi

polgono

polgono

rectngulo

de

vrtices

opuestos

(x1 , y1 )

(x2 , y2 )

cuadriltero

tringulo

imagen

im

en la regin rectangular hasta

desde el vrtice

(x0 , y0 ) width, y0 + height)

(x0 +

vector

(v1 , v2 ) con punto de aplicacin (p1 , p2 )

etiquetas para grcos bidimensionales sector elptico de centro respectivamente, ngulo plitud

semiejes horizontal y vertical

(xc , yc ) con a y b,
en el

comenzando

ang1 y trazando un arco de amigual al ngulo ang2

Principales objetos grcos bidimensionales incorporados en draw.

224

Cap. 16. Grcos con

draw

explicit(f (x), x, xmin , xmax ) implicit(E(x, y), x, xmin , xmax , y, ymin , ymax ) parametric(fx , fy , t, tmin , tmax ) polar(r(), , min , max ) region(expr, x, xmin , xmax , y, ymin , ymax )

funcin explcita ma valores desde

f cuya variable x toxmin hasta xmax E


a ser represen-

expresin implcita

tada en el rectngulo

[xmin , xmax ]

[ymin , ymax ]
curva paramtrica bidimensional, cuyo parmetro

tmin

hasta

t tmax

toma valores desde

funcin polar valores desde

r cuya variable min hasta max

toma

regin del plano denida por desigualdades a ser representada en el rectngulo

[xmin , xmax ] [ymin , ymax ]

Principales objetos grcos bidimensionales incorporados en draw.

Las funciones

draw, draw2d
y

cas en una ventana de funciones la funcin

Gnuplot,

draw3d

devuelven las salidas grpermite utilizar las

aparte de la ventana de trabajo

actual. No obstante el entorno grco

wxdraw, wxdraw2d

wxdraw3d

wxMaxima

que s devuelven las salidas

en el cuaderno de trabajo actual. Debe tenerse presente que al utilizar

wxdraw3d, el punto de vista de la grca obtenida no puede

ser cambiado en tiempo real. En este captulo se van a mostrar los resultados mediante las funciones

wxdraw, wxdraw2d
y

wxdraw3d,

pero todos los ejemplos mos-

trados pueden ser ejecutados, sin ningn problema, con las funciones

draw, draw2d
Maxima

draw3d,

segn sea el caso.

Aqu se genera una lista de listas. Los elementos de la misma, generados aleatoriamente, representan las coordenadas de puntos del plano.

( %i1) p:create_list([random(20),random(50)],k,1,10); ( %o1) [[9, 9], [3, 39], [6, 26], [16, 3], [0, 21], [12, 9], [9, 18], [6, 45], [13, 43], [7, 28]]

Sec. 16.1. Objetos grcos bidimensionales

225

Maxima

Despus de aplicar la funcin

points

a la variable

p,

en la que se han almacenado

los puntos, se obtiene un objeto grco el cual puede gracarse con

draw2d.

( %i2) wxdraw2d( points(p) );

( %t2)

( %o2)

Maxima

Con

gr2d

draw

siempre se obtendr el mismo resultado que con

draw2d.

( %i3) wxdraw( gr2d(points(p)) );

( %t3)

( %o3)

draw no cuenta con una funcin especca, como line, para denir true a la opcin points_joined para unir los puntos dados mediante segmentos.
el objeto grco lnea; simplemente se asigna el valor

226

Cap. 16. Grcos con

draw

Maxima

Grca de los puntos

unidos mediante segmentos.

( %i4) wxdraw2d( points_joined=true, points( p ) );

( %t4)

( %o4)

Maxima

De esta forma se visualiza la grca de barras verticales.

( %i5) wxdraw2d( bars([0.8,5,0.4],[1.8,7,0.4],[2.8,-4,0.4]) );

( %t5)

( %o5)

Sec. 16.1. Objetos grcos bidimensionales

227

Maxima

As se visualiza la grca de un hexgono.

( %i6) wxdraw2d( polygon([ [1/2,sqrt(3)/2],[-1/2,sqrt(3)/2],[-1,0], [-1/2,-sqrt(3)/2],[1/2,-sqrt(3)/2],[1,0] ]) );

( %t6)

( %o6)

Maxima

De esta forma se visualiza la grca de un rectngulo.

( %i7) wxdraw2d( rectangle([0,0],[1,2]) );

( %t7)

( %o7)

228

Cap. 16. Grcos con

draw

Maxima

As se visualiza la grca de un cuadriltero.

( %i8) wxdraw2d( quadrilateral([1,1],[2,2],[3,-1],[2,-2]) );

( %t8)

( %o8)

Maxima

Y as, la grca de un tringulo.

( %i9) wxdraw2d( triangle([1,1],[2,2],[3,-1]) );

( %t9)

( %o9)

Sec. 16.1. Objetos grcos bidimensionales

229

Maxima

Aqu se obtiene la grca de una imagen.

( %i10) im:apply(matrix, makelist(makelist(random(200),i,1,30),i,1,30))$ ( %i11) wxdraw2d( image(im,0,0,30,30) );

( %t11)

( %o11)

Maxima

De esta manera se obtiene la grca del vector es el origen.

(10, 10),

cuyo punto de aplicacin

( %i12) wxdraw2d( vector([0,0],[10,10]) );

( %t12)

( %o12)

230

Cap. 16. Grcos con

draw

Maxima

Para insertar texto en un punto cualquiera de un grco se utiliza la funcin

label.

En este caso el punto de insercin es

(0, 0 3).

( %i13) wxdraw2d( label([Etiqueta,0,0.3]) );

( %t13)

( %o13)

Maxima

Esto devuelve la grca de un sector elptico, de origen, su semieje horizontal es

360 ,

cuyo centro es el

1,

su semieje vertical es

2.

( %i14) wxdraw2d( ellipse(0,0,1,2,0,360) );

( %t14)

( %o14)

Sec. 16.1. Objetos grcos bidimensionales

231

Maxima

De esta manera se obtiene la grca de la funcin

x x2 ,

con

1 x 1.

( %i15) wxdraw2d( explicit(x^2,x,-1,1) );

( %t15)

( %o15)

Maxima

Esto muestra la grca de la ecuacin

x3 + y 3 3xy = 0

en el rectngulo

[1, 2]

[1, 2].

( %i16) wxdraw2d( implicit(x^3+y^3-3*x*y=0,x,-1,2,y,-1,2) );

( %t16)

( %o16)

232

Cap. 16. Grcos con

draw

Maxima

Aqu se muestra la grca de la curva denida en forma paramtrica mediante

t (sin(t), sin(2t)),

con

0 t 2 .

( %i17) wxdraw2d( parametric(sin(t),sin(2*t),t,0,2* %pi) );

( %t17)

( %o17)

Maxima

Aqu se muestra la grca de la funcin denida en coordenadas polares mediante

t sen(t),

tal que

0 t 2 .

( %i18) wxdraw2d( polar(sin(2*t),t,0,2* %pi) );

( %t18)

( %o18)

Sec. 16.1. Objetos grcos bidimensionales

233

Maxima

Esto muestra la grca de los puntos de la regin satisfacen

1 x 1, 1 y 1

que

1 2

< x2 + y 2 < 1.

( %i19) wxdraw2d( region(1/2<x^2+y^2 and x^2+y^2<1, x,-1,1,y,-1,1) );

( %t19)

( %o19)

Maxima

Combinar objetos grcos bidimensionales es sencillo con

draw2d.

( %i20) wxdraw2d( parametric(t,t^2-1/2,t,-1,1), polar(sin(2*t),t,0,2* %pi) );

( %t20)

( %o20)

234

Cap. 16. Grcos con

draw

16.2 Opciones para los objetos grcos bidimensionales


16.2.1 Opciones locales
Las opciones locales slo son relevantes para objetos grcos especcos y para tal efecto deben digitarse antes de dicho objeto. Si una opcin grca es digitada antes de un objeto grco al cual no corresponde, no se produce ningn mensaje de error, simplemente la grca se muestra sin presentar alteracin alguna.

Opcin
point_size point_type points_joined

Val. por defecto


1

Descripcin
establece el tamao de los puntos dibujados (debe ser un nmero no negativo)

indica la forma que tendrn los puntos aislados

false

indica si los puntos aislados se unen mediante segmentos o no

Opciones de draw2d para el objeto grco points.

Opcin
fill_color fill_density

Val. por defecto


red
0

Descripcin
especica el color del relleno del polgono especica la transparencia

del color del relleno del polgono (asume valores entre y

1,

incluidos)

Opciones de draw2d para el objeto grco bars.

Sec. 16.2. Opciones para los objetos grcos bidimensionales

235

Opcin
nticks border transparent fill_color

Val. por defecto


29

Descripcin
indica el nmero de puntos a utilizar para generar las grcas

true false red

especica si debe dibujarse el borde o no establece si el polgono debe rellenarse o no especica el color del relleno del polgono

Opciones de draw2d para los objetos grcos bidimensionales polygon, rectangle, quadrilateral y triangle.

Opcin
palette

Val. por defecto


[7, 5, 15]

Descripcin
vector con sus componentes tomando valores enteros en el rango desde

36

+36

Opciones de draw2d para el objeto grco bidimensional image.

Opcin
head_both head_length head_angle head_type unit_vectors

Val. por defecto


false
2

Descripcin
indica si el vector ser bidireccional o no indica, en las unidades del eje los vectores

x, la longitud de las echas de


indica el ngulo, en grados, entre la echa y el segmento del vector

45

filled false

especica cmo se habrn de dibujar las echas de los vectores especica si los vectores se dibujan con mdulo unidad

Opciones de draw2d para el objeto grco vector.

236

Cap. 16. Grcos con

draw

Opcin
label_ alignment label_ orientation

Val. por defecto


center horizontal

Descripcin
especica el color que tendr el vector especica el color que tendr el vector

Opciones de draw2d para el objeto grco label.

Opcin
nticks adapt_depth

Val. por defecto


29

Descripcin
indica el nmero de puntos a utilizar para generar las grcas

10

indica el nmero mximo de particiones utilizadas por la rutina grca adaptativa

Opciones de draw2d para el objeto grco explicit.

Opcin
filled_func fill_color

Val. por defecto


false red

Descripcin
establece cmo se van a rellenar las regiones limitadas por las grcas especica el color para rellenar las regiones limitadas por las grcas

Opciones de draw2d para el objeto grco explicit.

Opcin
ip_grid ip_grid_in

Val. por defecto


[50, 50] [5, 5]

Descripcin
establece la rejilla del primer muestreo para la grca establece la rejilla del segundo muestreo para la grca

Opciones de draw2d para el objeto grco implicit.

Sec. 16.2. Opciones para los objetos grcos bidimensionales

237

Opcin
nticks

Val. por defecto


29

Descripcin
indica el nmero de puntos a utilizar para generar las grcas

Opciones de draw2d para los objetos grcos bidimensionales parametric y polar.

Opcin
fill_color x_voxel

Val. por defecto


red 10

Descripcin
especica el color del relleno del polgono es el nmero de particiones en la direccin

a utilizar

por el algoritmo utilizado para gracar regiones denidas por desigualdades y operadores booleanos

y_voxel

10

es el nmero de particiones en la direccin

a utilizar

por el algoritmo utilizado para gracar regiones denidas por desigualdades y operadores booleanos

Opciones de draw2d para el objeto grco bidimensional region.

16.2.2 Opciones locales genricas


Las opciones locales genricas son opciones comunes a todos los objetos grcos bidimensionales. Aunque hay excepciones que cabe destacar, por ejemplo las opciones

line_width

line_type

que, por

razones obvias, nicamente no son relevantes con los objetos grcos

point

label.

238

Cap. 16. Grcos con

draw

Opcin
color line_width line_type key

Val. por defecto


black

Descripcin
especica el color para dibujar lneas, puntos y bordes de polgonos

indica el ancho de las lneas a dibujar

solid 

indica cmo se van a dibujar las lneas (valores posibles son

solid

dots)

indica la clave del grco en la leyenda

Opciones locales genricas de draw2d.

16.2.3 Opciones globales


Las opciones globales se caracterizan porque afectan a toda la escena y su posicin dentro de la descripcin de sta no reviste importancia.

Opcin
proportional_ axes

Val. por defecto


none

Descripcin
indica si una escena bidimensional se dibujar con los ejes proporcionales bles: a sus longitudes relativas (valores posi-

none

xy)

xrange yrange logx

auto auto false

permite especicar un intervalo para

auto auto

(valores posibles:

[xmin , xmax ])

permite especicar un intervalo para y

(valores posibles:

[ymin , ymax ])

permite especicar si el eje rtmica

se dibujar en la escala loga-

Algunas opciones globales de draw2d.

Sec. 16.2. Opciones para los objetos grcos bidimensionales

239

Opcin
logy terminal

Val. por defecto


false screen

Descripcin
permite especicar si el eje rtmica selecciona a utilizar (valores el por posibles terminal

se dibujar en la escala loga-

Gnuplot

screen, png, jpg, eps, eps_color, pdf, pdfcairo, gif, animated_gif, wxt y aquaterm) file_name maxima_out
indica el nombre del chero en el que los terminales

son:

png, jpg, eps, eps_color, pdf, pdfcairo, etc. guardarn el


grco permite seleccionar el tipo de fuente a utilizar por el terminal

font font_size grid title xlabel ylabel xtics



12

permite seleccionar el tamao de la fuente a utilizar por el terminal

false    auto

permite especicar si se dibujar una rejilla sobre

xy

almacena una cadena con el ttulo de la escena almacena una cadena con la etiqueta del eje

almacena una cadena con la etiqueta del eje

controla la forma en la que se dibujarn las marcas del eje (valores posibles:

auto, none, [inicio, inc, f in], {n1 , n2 , . . .} y tambin {[label1, n1 ], [label1, n1 ], . . .})
Algunas opciones globales de draw2d.

240

Cap. 16. Grcos con

draw

Opcin
xtics_axis

Val. por defecto


false

Descripcin
indica si las marcas y sus etiquetas se dibujan sobre el propio eje

x, o se colocan a lo

largo del borde del grco

ytics ytics_axis xaxis xaxis_width xaxis_type xaxis_color yaxis yaxis_width yaxis_type yaxis_color file_bgcolor

auto false false


1

similar que eje

xtics pero con el xtics_axis


pero

similar que con el eje

especica si se dibujar el eje

indica el ancho del eje

dots black false


1

indica cmo se debe dibujar

solid

el eje

dots)

(valores admisibles:

indica el color para el eje

especica si se dibujar el eje

indica el ancho del eje similar que con el eje

y
pero

dots black xffffff

xaxis_type

indica el color para el eje

establece el color de fondo (en cdigo hexadecimal para los terminales y

gif

png, jpg

rgb )

delay

establece el retraso en centsimas de segundo entre imgenes en los cheros mados

gif

ani-

eps_width

12

indica el ancho (en por los terminales

cm )
eps

del y

archivo Postscript generado

eps_color eps_height
12

indica el largo (en chivo Postscript

cm ) del ar-

Algunas opciones globales de draw2d.

Sec. 16.2. Opciones para los objetos grcos bidimensionales

241

Opcin
pdf_width

Val. por defecto


21 0

Descripcin
especica el ancho (en do por los terminales

cm )
y

del documento PDF genera-

pdfcairo pdf_height pic_width


29 7 640

pdf

especica el largo (en documento PDF

cm ) del

especica la anchura del chero de imagen de bits generado por los terminales

jpg pic_height user_preamble


640

png y

especica el largo del chero de imagen de bits



inserta cdigo

Gnuplot

Algunas opciones globales de draw2d.

16.2.4 Ejemplos ilustrativos


Maxima

Aqu se usa

user_preamble

para insertar cdigo Gnuplot. El resultado, en este

caso, equivale a asignar el valor

xy

a la opcin

proportional_axes.

( %i1) wxdraw2d( parametric(cos(t),sin(t),t,0,2* %pi), user_preamble=set size ratio 1 );

( %t1)

( %o1)

242

Cap. 16. Grcos con

draw

Maxima

He aqu la regin encerrada por las parbolas

y = x2

y = 1 x2 .

( %i2) wxdraw2d( fill_color=yellow, region(x^2<y and y<1-x^2,x,-1,1,y,0,1), line_width=3, key=1-x^2, explicit(1-x^2,x,-sqrt(2)/2,sqrt(2)/2), key=x^2, color=red, explicit(x^2,x,-sqrt(2)/2,sqrt(2)/2) );

( %t2)

( %o2)

Maxima

Aqu se resuelve un sistema de ecuaciones para encontrar los puntos de interseccin de las curvas denidas por

x2 + y 2 = 1

y 2x2 +

3 2

= 0.

( %i3) sol:solve([x^2+y^2=1,y-2*x^2+3/2=0],[x,y]); 5+5 5+5 51 ( %o3) x = ,y = 4 , x= , y = 51 , 3 3 4 22 22 x = 5 5 , y = 5+1 , x = 5 5 , y = 5+1 3 3 4 4


22 22

Sec. 16.2. Opciones para los objetos grcos bidimensionales

243

Maxima

Esto almacena las coordenadas de los puntos de interseccin, previamente calculados, en la variable

pts.

( %i4) pts:map(lambda([h],subst(h,[x,y])),sol); 5+5 5+5 ( %o4) , 51 , , 51 , 5 5 , 5+1 , 3 3 3 4 4 4 22 22 22 5 5 , 5+1 3 4


22

Maxima

He aqu un grco de las curvas denidas por los respectivos puntos de interseccin.

x2 + y 2 = 1

y 2x2 +

3 2

=0

( %i5) wxdraw2d( line_width=2, color=blue, implicit(x^2+y^2=1,x,-1.5,1.5,y,-1.5,1.5), color=red, implicit(y-2*x^2+3/2=0,x,-1.5,1.5, y,-1.5,1.5) color=black point_size=1.5, point_type=7, points(pts), );

( %t5)

( %o5)

244

Cap. 16. Grcos con

draw

Maxima

Aqu se dene la curva paramtrica

a.

( %i6) a(t):=[t,sin(t)] $

Maxima

Esto dene el campo vectorial tangente asociado a la curva

a.

( %i7) define( a (t),diff(a(t),t) ) $

Maxima

Aqu se construyen la lista

de vectores tangentes a la curva

y la lista

de

puntos de aplicacin de stos. Los valores de la lista

t0 ,

para tal construccin, son tomados

t0.

( %i8) t0:create_list(i* %pi/4,i,0,8) $ ( %i9) T:create_list( vector(a(i),a (i)),i,t0 ) $ ( %i10) P:map(a,t0) $

Maxima

Aqu se denen los objetos grcos curva, a partir de

a,

un conjunto de vectores

unitarios tangentes a sta y los puntos de aplicacin de los mismos.

( %i11) objetos: [ color=red, apply( parametric,append(a(t),[t,0,2* %pi]) ), color=blue,head_length=0.2, head_angle=10, unit_vectors=true,T, color=green, point_type=7,points(P), proportional_axes=xy, title=Campo vectorial tangente ]$

Sec. 16.2. Opciones para los objetos grcos bidimensionales

245

Maxima

De esta manera se gracan los objetos grcos previamente denidos.

( %i12) wxdraw2d(objetos);

( %t12)

( %o12)

Maxima

A continuacin se construye la lista

de vectores normales a la curva

a.

( %i13) J(v):=[-last(v),first(v)] $ ( %i14) N:create_list( vector(a(i),J(a (i))),i,t0 ) $

Maxima

Aqu se denen los objetos grcos curva, a partir de

a,

un conjunto de vectores

unitarios tangentes a sta, un conjunto de vectores unitarios normales a la misma y los puntos de aplicacin de los vectores.

( %i15) objetos: [ color=red, apply(parametric,append(a(t),[t,0,2* %pi])), head_length=0.2,head_angle=10, unit_vectors=true, color=blue,T, color=yellow,N, color=green,point_type=7,points(P), proportional_axes=xy, title=Campos vectoriales tangente y normal ]$

246

Cap. 16. Grcos con

draw

Maxima

De esta manera se gracan los objetos grcos previamente denidos.

( %i16) wxdraw2d(objetos);

( %t16)

( %o16)
Maxima

He aqu un grco polar mejorado.

( %i17) wxdraw2d(color=blue,nticks=100, polar(sin(2*t),t,0,2* %pi)) $

( %t17)

16.3 Objetos grcos tridimensionales


points([[x1 , y1 , z1 ], . . .])
puntos tridimensionales

Principales objetos grcos tridimensionales incorporados en draw.

Sec. 16.3. Objetos grcos tridimensionales

247

points([x1 , x2 , . . .], [y1 , y2 , . . .], [z1 , z2 , . . .]) points(matrix( [x1 , y1 , z1 ], [x2 , y2 , z2 ], . . .) vector([p1 , p2 , p3 ], [v1 , v2 , v3 ]) label([cadena, x, y, z], . . .) explicit(f (x, y), x, xmin , xmax , y, ymin , ymax ) implicit(E(x, y, z), x, xmin , xmax , y, ymin , ymax ) z, zmin , zmax ) parametric(fx , fy , fz t, tmin , tmax ) parametric_surface( fx , fy , fz , u, umin , umax , v, vmin , vmax ) cylindrical(r(z, ), z, zmin , zmax , , min , max ) spherical(r(, ), , min , max , , min , max ) mesh(m, x0 , y0 , ancho, largo)

puntos tridimensionales

puntos tridimensionales

vector cin

(v1 , v2 , v3 ) con punto de aplica(p1 , p2 , p3 )

etiquetas para grcos tridimensionales funcin explcita tisfacen

f cuyas variables saxmin x xmax y ymin E


a ser representa-

y ymax
expresin implcita

[xmin , xmax ] [ymin , ymax ] [zmin , zmax ]


da en el paraleleppedo curva paramtrica tridimensional, cuyo parmetro

satisface

tmin t

tmax
supercie denida paramtricamente, cuyos parmetros satisfacen

umin

u umax
tisfacen

vmin v vmax

funcin cilndrica

r cuyas variables sazmin z zmax y min

max
funcin esfrica tisfacen

r cuyas variables samin max y min

max
dene un grco tridimensional de la matriz las abscisas van desde

m (los valores z se toman de m, x0 hasta x0 + ancho y las ordenadas desde y0 hasta y0 + largo) fr

tube(fx , fy , fz , fr , t, tmin , tmax )

supercie tubular de radio

Principales objetos grcos tridimensionales incorporados en draw.

248

Cap. 16. Grcos con

draw

Maxima

Aqu se genera, en forma aleatoria, un conjunto de puntos tridmensionales. Luego se muestra la grca de los dichos puntos.

( %i1) p:create_list(map(random,[20,50,30]),k,1,10) $ ( %i2) wxdraw3d( points( p ) );

( %t2)

( %o2)

Maxima

Asignando el valor

true

a la opcin

plot_joined

se obtiene la poligonal que une

los puntos almacenados en

p.

( %i3) wxdraw3d( points_joined=true, points( p ) );

( %t3)

( %o3)

Sec. 16.3. Objetos grcos tridimensionales

249

Maxima

Aqu se muestra la grca del vector cuyo punto de aplicacin es el origen y cuya parte vectorial es

(1, 1, 1).

( %i4) wxdraw3d( vector([0,0,0],[1,1,1]) );

( %t4)

( %o4)

Maxima

He aqu un texto insertado en el punto

(0, 0, 1).

( %i5) wxdraw3d( label([Etiqueta,0,0,1]) );

( %t5)

( %o5)

250

Cap. 16. Grcos con

draw

Maxima

Esto muestra la grca de la funcin

(x, y) sen x + sen(xy),

con

0 x 2

0 y 2 .

( %i6) wxdraw3d( explicit(sin(x)+sin(x*y),x,0,2* %pi,y,0,2* %pi) );

( %t6)

( %o6)

Maxima

Aqu se muestra la grca de la supercie generada a partir de la ecuacin

x2 + y 2 4)2 + z 2 = 4,

con

6 x 6, 6 y 6

2 z 2.

( %i7) wxdraw3d( implicit((sqrt(x^2+y^2)-4)^2+z^2=4,x,-6,6, y,-6,6,z,-2,2) );

( %t7)

( %o7)

Sec. 16.3. Objetos grcos tridimensionales

251

Maxima

Esta es la grca de la curva

t t (cos t, sen t, 8 ),

con

0 t 4 .

( %i8) wxdraw3d( parametric(cos(t),sin(t),t/8,t,0,4* %pi) );

( %t8)

( %o8)

Maxima

Aqu

se

muestra

la

grca

de

la con

supercie

denida y

cos v) cos u, (2 + cos v) sin u, sin v),

0 u 2

por (u, v) ((2 + 0 v 2 .

( %i9) wxdraw3d( parametric_surface((2+cos(v))*cos(u), (2+cos(v))*sin(u),sin(v), u,0,2* %pi,v,0,2* %pi) );

( %t9)

( %o9)

252

Cap. 16. Grcos con

draw

Maxima

Esta es la grca de la supercie denida en coordenadas cilndricas mediante

(z, t) cos z ,

con

2 z 2

0 t 2 .

( %i10) wxdraw3d( cylindrical(cos(z),z,-2,2,t,0,2* %pi) );

( %t10)

( %o10)

Maxima

He aqu la grca de la supercie denida en coordenadas esfricas mediante

(a, t) 1,

con

0 a 2

0 t .

( %i11) wxdraw3d( spherical(1,a,0,2* %pi,t,0, %pi) );

( %t11)

( %o11)

Sec. 16.3. Objetos grcos tridimensionales

253

Maxima

Esta es la grca de un objeto geomtrico tridimensional de tipo

mesh.

( %i12) m:apply(matrix,create_list(create_list(k^2+i^2, k,-5,5),i,-5,5)) $ ( %i13) wxdraw3d( mesh(m,0,0,-5,5) );

( %t13)

( %o13)

Maxima

He aqu la grca de la supercie tubular, de radio curva

cos

t 2 , generada por la 10

t (cos t, t, 0),

con

0 t 4 .

( %i14) wxdraw3d( tube(cos(t),t,0,cos(t/10)^2,t,0,4* %pi) );

( %t14)

( %o14)

254

Cap. 16. Grcos con

draw

16.4 Opciones para objetos grcos tridimensionales


16.4.1 Opciones locales
Para los objetos grcos mismas en

points y label las opciones locales son las draw2d y draw3d. En cambio para el objeto grco vector las opciones head_length y head_angle nicamente son relevantes en draw2d (vea la subseccin 16.2.1). Por este motivo, en esta seccin, no se presentan tablas de opciones para los tres objetos grcos mencionados.

Opcin
xu_grid yv_grid

Val. por defecto


30

Descripcin
indica el nmero de coordenadas de

para formar la re-

jilla de puntos muestrales

30

indica el nmero de coordenadas de

para formar la re-

jilla de puntos muestrales

Opciones de draw3d para explicit, parametric_surface, cylindrical, spherical y tube.

Opcin
x_voxel y_voxel z_voxel

Val. por defecto


10

Descripcin
indica el nmero de voxels en la direccin

a utilizar por el

algoritmo implementado

10

indica el nmero de voxels en la direccin

y z

a utilizar por el

algoritmo implementado

10

indica el nmero de voxels en la direccin a utilizar por el algoritmo implementado

Opciones de draw3d para implicit.

Sec. 16.4. Opciones para objetos grcos tridimensionales

255

Opcin
nticks

Val. por defecto


29

Descripcin
indica el nmero de puntos a utilizar para generar las grcas

Opciones de draw3d para parametric.

16.4.2 Opciones locales genricas


Vea la subseccin 16.2.2.

16.4.3 Opciones globales


proportional_axes todas las opciones glodraw2d son las mismas de draw3d (vea la subseccin 16.2.3). Adems draw3d incorpora opciones que complentan, de forma natural, las incorporadas en draw2d. Por ejemplo, estan las opciones zrange, logz, zlabel, ztics, zaxis, zaxis_type y zaxis_color.
A excepcin de la opcin bales de Otras opciones se describen a continuacin.

Opcin
xyplane

Val. por defecto


false

Descripcin
coloca el plano lor

xy

en escenas se colo-

tridimensionales (para el va-

false, el plano xy

ca automticamente; en cambio, si toma un valor real, ste intersectar con el eje ese nivel)

rot_vertical

60

indica el ngulo (en grados) de la rotacin vertical (alrededor del eje

x)

para situar

el punto del observador en las escenas tridimensionales (el ngulo debe pertenecer al intervalo

[0, 180])

Algunas opciones globales de draw3d.

256

Cap. 16. Grcos con

draw

Opcin

Val. por defecto

Descripcin
indica el ngulo (en grados) de la rotacin horizontal (alrededor del eje

rot_horizontal 30

z)

para si-

tuar el punto del observador en las escenas tridimensionales (el ngulo debe pertenecer al intervalo

[0, 360])

axis_3d palette

true color

indica si los ejes sibles

x, y

z, tra-

dicionales, permanecern vi-

es un vector de longitud tres con sus componentes tomando valores enteros en el rango da ra desde valor

36
es un

+36;
ndice

capa-

seleccionar

una

frmu-

la que transforma los niveles numricos en las componentes cromticas rojo, verde y azul (palette y

= gray palette = color son atajos para palette = [3,3,3] y palette = [7,5,15], respectivamente)

enhanced3d

false

si

enhanced3d

vale

true,

los de

objetos grcos se colorearn

Gnuplot.
presin

activando el modo a

pm3d

cepto en

enhanced3d (eximplicit), sta se

Si se da una ex-

utilizar para asignar colores de acuerdo con el valor de

palette; las variables de esta


expresin deben ser las mismas que luego se utilicen para la descripcin de la supercie

Algunas opciones globales de draw3d.

Sec. 16.4. Opciones para objetos grcos tridimensionales

257

Opcin
surface_hide contour

Val. por defecto


false none

Descripcin
establece si las partes ocultas se mostrarn o no en las supercies permite decidir dnde colocar las lneas de nivel (valores posibles:

surface, both contour_levels 5

none, base, map)

controla cmo se dibujarn las lneas de nivel (valores po-

n, [inicio, inc, f in] {n1 , n2 , . . .}


sibles:

Algunas opciones globales de draw3d.

16.4.4 Ejemplos ilustrativos


Maxima

Aqu se han cambiado los valores por defecto de dos opciones de tado se aprecia al mostrar los puntos generados en

draw3d. El resul-

( %i30)

( %i1) wxdraw2d( enhanced3d=true, point_type=7,point_size=2, points( p ) );

( %t1)

( %o1)

258

Cap. 16. Grcos con

draw

Maxima

Esto dene una curva, algunos puntos sobre sta y algunos vectores tangentes a la misma.

( %i2) ( %i3) ( %i4) ( %i5) ( %i6)

a(t):=[cos(t),sin(t),t/8] $ define( a (t),diff(a(t),t) ) $ t0:create_list(i* %pi/4,i,0,16) $ T:create_list( vector(a(i),a (i)),i,t0 ) $ P:map(a,t0) $

Maxima

He aqu la grca de todos los objetos grcos tridimensionales previamente denidos.

( %i7) objetos: [ nticks=100,color=red, apply(parametric, append(a(t),[t,0,4* %pi]) ), color=blue,unit_vectors=true,T, color=green,point_type=7,points(P), user_preamble=set size ratio 1, title=Campo vectorial tangente xyplane=0,axis_3d=false, xtics=false,ytics=false,ztics=false, xaxis=true,yaxis=true,zaxis=true, xlabel=x,ylabel=y,zlabel=z ]) $ ( %i8) wxdraw3d(objetos);

( %t8)

( %o8)

Sec. 16.4. Opciones para objetos grcos tridimensionales

259

Maxima

Esta es la grca de

( %t35)

despus de cambiar algunas opciones.

( %i9) wxdraw3d( xu_grid=150, yv_grid=150, enhanced3d=cos(x*y), explicit(sin(x)+sin(x*y),x,0,2* %pi,y,0,2* %pi) );

( %t9)

( %o9)

Maxima

Esta es la grca de

( %t35)

despus de ms cambios de opciones.

( %i10) wxdraw3d( xu_grid=150,yv_grid=150, palette=[6,5,15],enhanced3d=sin(x*y), explicit(sin(x)+sin(x*y),x,0,2* %pi,y,0,2* %pi) );

( %t10)

( %o10)

260

Cap. 16. Grcos con

draw

Maxima

He aqu la supercie obtenida en

( %t36)

( %i11) wxdraw3d( x_voxel=17,y_voxel=17, z_voxel=15, palette=[12,5,27], enhanced3d=true, implicit((sqrt(x^2+y^2)-4)^2+z^2=4,x,-6,6, y,-6,6,z,-2,2) );

( %t11)

( %o11)

16.5 Fijacin de valores para opciones


En algunas ocasiones se requiere dibujar varios grcos con las mismas opciones y para evitar escribirlas en cada escena puede optarse por jar, inicialmente, los valores deseados para dichas opciones. Para hacer factible esto

draw

cuenta con una funcin especca.

set_draw_defaults( opcin grca,..., opcin grca,...)


Fijando valores para opciones.

ja los valores para las opciones grcas del usuario (llamando a la funcin sin argumentos se borran las opciones jadas por el usuario)

Sec. 16.6. Grcos mltiples

261

Maxima

Aqu se jan los valores de algunas opciones.

( %i1) set_draw_defaults( surface_hide=true, color=blue, grid=true, line_width=2 );

Maxima

A continuacin se graca una parbola sin especicaciones para ninguna opcin.

( %i2) wxdraw2d( explicit(x^2,x,-2,2) );

( %t2)

( %o2)

16.6 Grcos mltiples


Opcin
columns

Val. por defecto


1

Descripcin
indica el nmero de columnas a considerar cuando se realizan grcos mltiples

Opcin para grcos mltiples.

262

Cap. 16. Grcos con

draw

Maxima

Esto dene dos escenas una bidimensional y otra tridmensional.

( %i1) f1:gr2d(explicit(sin(x),x,0,2* %pi)) $ ( %i2) f2:gr3d(explicit(sin(x)+sin(y),x,0,2* %pi, y,0,2* %pi)) $

Maxima

Con

draw

la dos escenas previas se presentan por defecto en una sola columna.

( %i3) wxdraw(f1,f2) $

( %t3)

( %o3)

Maxima

Con la opcin

columns

es posble cambiar el nmero de columnas.

( %i4) wxdraw(f1,f2,columns=2) $

( %t4)

( %o4)

Sec. 16.7. Grcos animados

263

Maxima

De esta manera se borran las opciones que fueron jadas en

( %i51)

( %i5) set_draw_defaults() $

Maxima

El aspecto de las grcas luce ahora diferente, pues se han restituido los valores por defecto de las opciones.

( %i6) wxdraw(f1,f2,columns=2) $

( %t6)

( %o6)

16.7 Grcos animados


Del mismo modo que en la seccin 14.8 se pueden crear animaciones nicamente en el entorno de las funciones

with_slider_draw y with_slider_draw3d con las cuales se generan grcos idnticos a los que se generan con wxplot2d y wxplot3d, respectivamente, sin embargo tales grcos pueden ser animados despus de seleccionarlos y pulsar, luego, el botn Comenzar animacin, del cuadro de controles, de la barra de herramientas.

wxMaxima.

En este caso se utilizan

Figura 16.1:

Cuadro de controles, ubicado en la barra de herramientas, para la animacin de grcos.

264

Cap. 16. Grcos con

draw

with_slider_draw with_slider_draw3d

funcin

wxdraw2d
funcin

para

animar

grcos

de

wxdraw3d

para

animar

grcos

de

Obtencin de grcos animados con draw.

Maxima

Esto genera un grco listo para ser animado. Para conseguir la animacin primero se selecciona el grco y luego se pulsa el botn , del cuadro de controles, y , del

automticamente sta es generada. Para detenerla basta pulsar el botn

mismo cuadro. Tambin es posible navegar a travs de cada cuadro de la animacin con tan slo arrastrar a voluntad el botn el grco. , despus de haber seleccionado

( %i1) with_slider_draw( a,[0,1,2,3,4,5], color=red,line_width=2,yrange=[-1.5,1.5], explicit(sin(x+a),x,-2* %pi,2* %pi) );

( %t1)

( %o1)

Maxima

A continuacin se dene la funcin inja

/* para calcular el producto vectorial.

( %i2) infix(/*) $ ( %i3) /*(a,b):=[a[2]*b[3]-b[2]*a[3], b[1]*a[3]-a[1]*b[3],a[1]*b[2]-b[1]*a[2]] $

Sec. 16.7. Grcos animados

265

Maxima

Esto dene la curva

a,

su primera derivada y su segunda derivada.

( %i4) a(t):=[cos(t),sin(t),t/8] $ ( %i5) define( a (t),diff(a(t),t) ) $ ( %i6) define( a (t),diff(a(t),t,2) ) $

Maxima

Al animar la siguiente secuencia de cuadros se visualiza el tiedro de Frenet recorriendo la curva

a.

( %i7) with_slider_draw3d( t,create_list(i* %pi/4,i,0,16), color=dark-red,nticks=50, parametric(cos(u),sin(u),u/8,u,0,4* %pi), unit_vectors=true, color=blue, vector(a(t),a (t)), color=yellow, vector(a(t),a (t)/*a (t)), color=red, vector(a(t),(a (t)/*a (t))/*a (t)), color=green,point_type=7, points([a(t)]), xrange=[-1.5,1.5],yrange=[-1.5,1.5], zrange=[0,3], user_preamble=set size ratio 1);

( %t7)

( %o7)

266

Cap. 16. Grcos con

draw

Maxima

Esta es la animacin de un morsmo entre la esfera y el toro.

( %i8) with_slider_draw3d( a,create_list(i/8,i,0,8), surface_hide=true, user_preamble=set size ratio 1, xtics=false,ytics=false,ztics=false, axis_3d=false, rot_vertical=80,rot_horizontal=100, parametric_surface( (1-a)*cos(t)*sin(u/2)-(a*sin(u))/3, (a*sin(t)*(2-cos(u)))/3+ (1-a)*sin(t)*sin(u/2), (a*cos(t)*(2-cos(u)))/3+(1-a)*cos(u/2), t,0,2* %pi,u,0,2* %pi) );

( %t8)

( %o8)

CAPTULO

17

Campos de direcciones con plotdf

El paquete

plotdf

permite crear grcos de campos de direcciones

para Ecuaciones Diferenciales Ordinarias (EDO) de primer orden, o para un sistema de dos EDO's autnomas, de primer orden. Como se trata de un paquete adicional, para poder usarlo debe cargarlo primero con el comando cesario que

Xmaxima

load(plotdf). wxplotdf).

Tambin es ne-

est instalado, a pesar de que ejecute

desde otra interface diferente (esto quiere decir que con no puede usarse una funcin como

Maxima wxMaxima

Maxima

Inicializacin del paquete

plotdf.

( %i9) load(plotdf)$

Maxima

Campo de direcciones de la ecuacin diferencial pasa por

y = ex + y

y la solucin que

(2, 0.1).

( %i10) plotdf(exp(-x)+y,[trajectory_at,2,-0.1]); ( %o10) 0

267

268

Cap. 17. Campos de direcciones con

plotdf

Figura 17.1:

Grco obtenido con

( %i10)

Maxima

Campo de direcciones de la ecuacin diferencial condicin inicial

y = x y2

y la solucin de

y(1) = 3.

( %i11) plotdf(x-y^2,[xfun,sqrt(x);-sqrt(x)], [trajectory_at,-1,3], [direction,forward], [yradius,5],[xcenter,6]); ( %o11) 0

Maxima

=y (x, y) = (6, 0), con una barra de deslizamiento que permitir cambiar el valor de m interactivamente (k permanece jo a 2.)
Campo de direcciones de un oscilador armnico, denido por las ecuaciones

dy y dt

dx dt

kx , y la curva integral que pasa por m

( %i12) plotdf([y,-k*x/m],[parameters,m=2,k=2], [sliders,m=1:5], [trajectory_at,6,0]); ( %o12) 0

269

Figura 17.2:

Grco obtenido con

( %i11)

Figura 17.3:

Grco obtenido con

( %i12)

270

Cap. 17. Campos de direcciones con

plotdf

Figura 17.4:
Maxima

Grcos obtenido con

( %i13)

Campo de direcciones de un pndulo amortiguado, incluyendo la solucin para condiciones iniciales dadas, con una barra de deslizamiento que se puede utilizar para cambiar el valor de la masa, m, y con el grco de las dos variables de estado como funciones del tiempo

( %i13) plotdf([y,-g*sin(x)/l - b*y/m/l], [parameters,g=9.8,l=0.5,m=0.3,b=0.05], [trajectory_at,1.05,-9],[tstep,0.01], [xradius,6],[yradius,14],[xcenter,-4], [direction,forward],[nsteps,300], [sliders,m=0.1:1], [versus_t,1]); ( %o13) 0

CAPTULO

18

Archivos y operaciones externas

18.1 Generacin de expresiones y archivos TEX


T X, puede encontrar conveniente usar la funcin tex para convertir E expresiones de en forma conveniente de entrada para T X. E Si el usuario quiere combinar su trabajo con material existente en

Maxima

El resultado que as se obtiene es un fragmento de cdigo que puede incluirse en un documento mayor, pero que no puede ser procesado aisladamente.

tex(expr ) tex(expr ,false) tex(expr,destino )


Salidas de Maxima para TEX

imprime en la consola la representacin en T X de E de cadena aade la salida al archivo

expr

devuelven el cdigo T X en formato E

destino

Maxima

He aqu una expresin, impresa en forma estndar de Maxima.

( %i1) (x+y)^2/sqrt(x*y); ( %o1)


(y+x)2 xy

271

272

Cap. 18. Archivos y operaciones externas

Maxima

He aqu la expresin previa en forma de entrada para T X. E

( %i2) tex( %); $${{\left(y+x\right)^2}\over{\sqrt{x\,y}}}$$ ( %o2) f alse

Maxima

Esto aade la expresin cado en

d:/maximatex/.

(y + x)2 , xy

traducida a T X, al archivo E

ejemplo.tex

ubi-

( %i3) tex((x+y)^2/sqrt(x*y), d:/maximatex/ejemplo.tex); ( %o3) f alse

texput(a,f ) get_tex_ environment(op ) set_tex_ environment(op,antes,

establece el formato, en T X, del toE mo , el cual puede ser un smbolo o

el nombre de un operador devuelve el entorno T X que se aplica E al operador . Si no se ha asignado

op

ningn entorno, devolver el que tenga por defecto asigna el entorno T X al operador E

op

despus )
devuelve el entorno T Xque se aplica E a expresiones para las cuales el operador de mayor rango no tiene entorno T Xasignado E

get_tex_environment_ default( ) set_tex_environment_ default(antes,


Salidas de Maxima para TEX

asigna el entorno T Xpor defecto E

despus )

Sec. 18.1. Generacin de expresiones y archivos T X E

273

Maxima

De esta forma se asigna cdigo T Xpara una variable. E

( %i4) texput(s,\\sqrt{2}); ( %o4) \sqrt{2}

Maxima

Ahora puede usarse la asignacin anterior para generar ms cdigo T X. E

( %i5) tex(s+1/2); $$\sqrt{2}+{{1}\over{2}}$$ ( %o5) f alse

Maxima

El entorno T X aplicado, por defecto, a expresiones, en Maxima, es $$ $$. E

( %i6) tex(3/4); $${{3}\over{4}}$$ ( %o6) f alse

Maxima

Con la funcin set_tex_environment_default es posible cambiar el entorno T X. E En este caso se ha anulado todo entorno.

( %i7) set_tex_environment_default( ,  ); ( %o7) [ , ]

Maxima

He aqu el resultado del nuevo cdigo T X. E

( %i8) tex(3/4); {{3}\over{4}} ( %o8) f alse

Adems de traducir expresiones individuales a T X, tamE A bin traduce cuadernos completos a documentos pdf L T X. Para ello E el usuario debe digitar el nombre que asignar al archivo resultante,

Maxima

274

Cap. 18. Archivos y operaciones externas

as como la respectiva extensin, ventana del

tex,

en la casilla

Exportar que men Archivo.

aparece despus de elegir la opcin

Nombre de la Exportar

Figura 18.1:

Primer paso para exportar un cuaderno.

Figura 18.2:

A E Exportando un cuaderno como documento pdf L T X

18.2 Generacin de archivos HTML


Adicionalmente,

Maxima

brinda capacidades para convertir cuader-

nos completos a pginas web. El proceso que debe seguirse para la traduccin es el mismo que se sigui en la pgina 273, pero en este caso la extensin ser

html.

Sec. 18.3. Generacin de expresiones Lisp y Fortran

275

18.3 Generacin de expresiones Lisp y Fortran


Si el usuario tiene programas escritos en Lisp o Fortran, puede ser que quiera tomar frmulas que ha generado en en el cdigo original de sus programas.

Maxima e insertarlas Maxima permite convertir

expresiones matemticas en expresiones Lisp y Fortran.

:lisp $ %in fortran(expr )

escribe para Lisp la expresin a la que hace referencia la etiqueta %i escribe

expr

para Fortran

Salidas de Maxima para Lisp y Fortran.

Maxima

Aqu se obtienen expresiones para Lisp y Fortran.

( %i1) x^2+2*x+1; ( %o1) x2 + 2 x + 1 ( %i2) :lisp $ %i9; ((MPLUS) ((MEXPT) $X 2) ((MTIMES) 2 $X) 1) ( %i3) fortran(x^2+2*x+1); x 2 + 2 x + 1 ( %o3) done

CAPTULO

Programacin con

Maxima

19
Ma-

xima
ma.

La elaboracin de programas con el lenguaje de programacin de

permite al usuario denir sus propias funciones. De esta manera

se hace posible la automatizacin de secuencias de operaciones que son tiles para abordar la solucin de un determinado tipo de proble-

Adems, es posible implementar varias funciones, relacionadas con cierto tema, y guardarlas en un solo archivo que luego se pueda ejecutar sin necesidad de visualizar todo el cdigo elaborado. A tal archivo se le conoce como

paquete 1

de funciones.

19.1 Operadores relacionales y lgicos


De manera similar que cualquier lenguaje de programacin

Maxima

incluye operadores relacionales y lgicos, as como estructuras de control (que se utilizan para controlar el ujo del programa en una rutina). En

Maxima, los operadores lgicos pueden ser injos o prejos. Un


and
cuya sintaxis es

operador recibe el nombre de injo cuando ste debe escribirse entre los operandos, por ejemplo el operador para ciertos operandos

p and q ,

q.

Por otra parte, un operador prejo es

1 Del

ingls package. Un paquete es almacenado en forma automtica por Ma-

xima como archivo de extensin


lenguaje de programacin

Lisp.

lisp

y el cdigo es convertido internamente al

276

Sec. 19.1. Operadores relacionales y lgicos

277

aquel que debe escribirse antes del operando, por ejemplo el operador

not

cuya sintaxis es

not p,

para cierto operando

p.

Cabe destacar que, en

Maxima,

casi todos los operadores lgicos

son injos y nicamente hay un operador lgico prejo.

Operador
menor que menor o igual que igualdad (sintctica) negacin de

Smbolo
< <= = #

Tipo
operador relacional injo operador relacional injo operador relacional injo operador relacional injo operador relacional injo operador relacional injo operador relacional injo operador relacional injo operador lgico injo operador lgico injo operador lgico prejo

igualdad (por valor) negacin de

equal

mayor o igual que mayor o igual que y o no

equal notequal >= >= and or not

Operadores relacionales y lgicos.

Controlador
if for

Descripcin
permite, mediante una condicin, que se ejecute o no se ejecute determinada tarea o lnea de cdigo es utilizado para generar una repeticin de instrucciones entre un nmero inicial y un nmero nal que deben ser indicados o, tambin, entre un conjunto de elementos de una lista

while unless do

repetir sin detenerse un determinado cdigo mientras se cumpla una condicin repetir sin detenerse un determinado cdigo hasta que se cumpla una condicin se utiliza para realizar iteraciones con y

unless

for, while

Principales estructuras de control.

278

Cap. 19. Programacin con Maxima

Maxima

He aqu un ejemplo sencillo en el que se muestra la sintaxis de

if.

( %i1) if 2=3 then 1; ( %o1) f alse ( %i2) if 3=3 then 1; ( %o2) 1

Maxima

En este ejemplo se aade el resultado ha obtener en caso de que la condicin sea falsa.

( %i3) if 2=3 then 1 else 3; ( %o3) 3

de las entradas

( %i1) y ( %i2) equivalen a las expresiones: if 2 = 3 then 1 else false y if 3 = 3 then 1 else false,

Tngase en cuenta que las expresiones consideradas en los ejemplos

respectivamente.

Maxima

Aqu se obtiene el valor ligado a la expresin verdadera ms prxima (en este caso

3 = 3). Si todas las expresiones fuesen falsas, entonces se obtendra el ltimo valor (en este caso 4).

( %i4) if 2=3 then 1 elseif 3=3 then 5 else 4; ( %o4) 5

Maxima

Mediante este otro ejemplo se muestra la sintaxis de

for.

( %i5) for i:1 thru 5 step 2 do print(i); 1 3 5 ( %o5) done

Sec. 19.2. Operadores y argumentos

279

Maxima

Si no se indica el paso (incremento) se asume uno, por defecto.

( %i6) for i:1 thru 5 do print(i); 1 2 3 ( %o6) done

Maxima

Para inicializar el contador en

while

se utiliza

for.

( %i7) for i:1 while i<=3 do print(i); 1 2 3 ( %o7) done

Maxima

Para inicializar el contador en

unless

tambin se utiliza

for.

( %i8) for i:1 unless i>=4 do print(i); 1 2 3 ( %o8) done

19.2 Operadores y argumentos


Casi todo en

Maxima

es un objeto de la forma

fun(a1 , . . . , an ),
es decir, una expresin que comprende un operador como argumentos de ste,

a1 , . . . , an .

Las funciones

op

args

fun

y los

permiten

averiguar la estructura de las expresiones.

280

Cap. 19. Programacin con Maxima

op(expr) args(expr)

permite obtener el operador de la expresin

expr

permite obtener una lista cuyos elementos son los argumentos de la expresin

expr

Obtencin del operador y de los argumentos de una expresin.

Maxima

Aqu se dene la expresin

a + b,

la cual es almacenada en la variable

expr.

( %i1) expr:a+b; ( %o1) b + a

Maxima

A continuacin, con la primera operacin se obtiene el operador de la expresin previamente denida; y en la segunda, se obtiene una lista con los argumentos de dicha expresin.

( %i2) op(expr); ( %o2) + ( %i3) args(expr); ( %o3) [b, a]

Maxima

Es posible reconstruir la expresin usando la funcin

apply.

( %i4) apply(op(expr),args(expr)); ( %o4) b + a

Maxima

Esto dene otra expresin.

( %i5) expr:ejemplo(x,y,z); ( %o5) ejemplo(x, y, z)

Sec. 19.2. Operadores y argumentos

281

Maxima

Aqu, nuevamente, se obtienen el operador y los argumentos de la expresin.

( %i6) op(expr); ( %o6) ejemplo ( %i7) args(expr); ( %o7) [x, y, z]

Maxima

Tambin es posible reconstruir la ltima expresin usando la funcin

apply.

( %i8) apply(op(expr),args(expr)); ( %o8) ejemplo(x, y, z)

Maxima

Algunas expresiones (plot2d,

integrate,

etc.) requieren de una comilla simple.

( %i9) expr:'plot2d(x^2,[x,-1,1]); ( %o9) plot2d(x2 , [x, 1, 1])

Maxima

Ahora si es posible obtener el operador y los argumentos de la expresin.

( %i10) op(expr); ( %o10) plot2d ( %i11) args(expr); ( %o11) x2 , [x, 1, 1]

Maxima

Tambin las listas y los conjuntos son objetos de la forma se almacena una lista cualquiera en la variable

fun(a1 , . . . , an ). Aqu

expr.

( %i12) expr:[a,b,c,d]; ( %o12) [a, b, c, d]

282

Cap. 19. Programacin con Maxima

Maxima

Aqu tambin se obtienen el operador y una lista con los argumentos.

( %i13) op(expr); ( %o13) [ ( %i14) args(expr); ( %o14) [a, b, c, d]

19.3 Programacin funcional


La uso de funciones.

map, lambda
funcional.

programacin funcional Maxima

es la programacin que pone nfasis en el incluye las funciones predenidas

apply,

que permiten apreciar la potencia de la programacin

apply(f, [expr1 , . . . , exprn ]) map(f, expr1 , . . . , exprn )

construye

evala

la

expresin

f (arg1 , . . . , argn )
devuelve una expresin cuyo operador principal es el mismo que aparece en las expresiones aplicar

expr1 , . . . , exprn

pero

cuyas subpartes son los resultados de

a cada una de las subpartes

de las expresiones

lambda([x1 , . . . , xm ] , expr1 , . . . , exprn ) lambda([ [L] ] , expr1 , . . . , exprn ) lambda([ x1 , . . . , xm , [L] ] , expr1 , . . . , exprn )

dene y devuelve una expresin lambda (es decir, una funcin annima) con argumentos ve el valor

x1 , . . . , xm ; la cual devuelexprn L;
la cual

dene y devuelve una expresin lambda con argumento opcional devuelve el valor

exprn x1 , . . . , x m ,
argu-

dene y devuelve una expresin lambda con argumentos mento opcional valor

L;

la cual devuelve el

exprn

Funciones predenidas para programacin funcional.

Sec. 19.3. Programacin funcional

283

Maxima

Aqu se dene la funcin

G,

la cual es aplicada luego a una lista cuyos elementos

pasan a ser los argumentos de

G.

( %i1) G(x,y,z):=x^2+y^2+z^2 $ ( %i2) apply(G,[x-y,a+b,u]); ( %o2) (x y)2 + u2 + (b + a)2

Maxima

En este caso se aplica la funcin predenida

min.

( %i3) apply(min,[7,9,3,4]); ( %o3) 3

Maxima

Esto dene la funcin

y luego la mapea en una lista.

( %i4) F(x):=x^3-1 $ ( %i5) map(F,[2,3,5,a]); ( %o5) 7, 26, 124, a3 1

Maxima

Aqu se muestra la denicin de una funcin lambda argumentos.

f,

la misma que posee dos

( %i6) f:lambda([x,y],x+y) $ ( %i7) f(a,b); ( %o7) b+a

Maxima

Ahora se dene una funcin lambda con argumento opcional.

( %i8) f:lambda([ [x] ],x^2) $ ( %i9) f(p); ( %o9) p2 ( %i10) f(p,q,r,s,t);

284

Cap. 19. Programacin con Maxima

( %o10) p2 , q 2 , r2 , s2 , t2

Maxima

En este ejemplo se dene una funcin lambda con dos argumentos y un argumento opcional. Luego esta funcin es evaluada en tres argumentos y se obtiene una lista con el resultado esperado, no obstante al evaluar la funcin en ms argumentos se obtiene una lista con tantos elementos como argumentos adicionales hay.

( %i11) f:lambda([ x,y,[z] ],x*z+y) $ ( %i12) f(p,q,r); ( %o12) [p r + q] ( %i13) f(p,q,r,s,t,u,v,w); ( %o13) [p r + q, p s + q, p t + q, p u + q, p v + q, p w + q]

19.4 Implementacin del paquete: ejemplo


En esta seccin se implementar el paquete las funciones
Maxima

triangulo

ejemplo, que incorporar circunferencia.


Esta funcin permite calcular el rea de un

Aqu se dene la funcin

triangulo.

tringulo y el baricentro de un conjunto de puntos de

R2

, dados. Adems, si los

puntos son colineales, devuelve el mensaje: Los puntos son colineales.

( %i1) triangulo(pts):= block([f:lambda([h],endcons(1,h)),pts1,M,d,a], pts1:map(f,pts), M:apply(matrix,pts1), d:determinant(M), a:abs(d/2), if d=0 then string(Los puntos son colineales) else (b:apply(+,pts)/3, [sconcat(Area,: ,a, ,u^2), sconcat(Baricentro,: ,b)]) )$

Sec. 19.4. Implementacin del paquete:

ejemplo

285

Maxima

Dado el conjunto de puntos del plano cin

{(1, 2), (3, 1), (2, 3)},

no colineales, la fun-

triangulo

devuelve el rea y las coordenadas del baricentro del tringulo

denido por los puntos dados.

( %i2) p:[ [1,2],[3,-1],[2,3] ] $ ( %i3) triangulo(p); ( %o3) [ Area : 5/2 u2, Baricentro : [2, 4/3] ]

Maxima

Para visualizar los grcos se utilizar el paquete

draw.

( %i4) load(draw) $

Maxima

Esto muestra la grca del tringulo previamente analizado, conjuntamente con el punto que corresponde al baricentro del mismo.

( %i5) wxdraw2d( color=red,fill_color=white,line_width=2, polygon(p), point_type=6,color=blue, points([ [2,4/3] ]), user_preamble=set size ratio 1 );

( %t5)

( %o5)

286

Cap. 19. Programacin con Maxima

Maxima

Puesto que, en este caso, los puntos del conjunto les, la funcin

{(1, 1), (2, 2), (3, 3)}

son colinea-

triangulo

devuelve un mensaje indicando ste hecho.

( %i6) p:[ [1,1],[2,2],[3,3] ] $ ( %i7) triangulo(p); ( %o7) Los puntos son colineales

Maxima

Aqu se dene la funcin

circunferencia

que permite obtener la ecuacin de la

circunferencia denida por tres puntos dados.

( %i8) circunferencia(pts):= block([f:lambda([h],endcons(1,h)), g:lambda([h],cons(h[1]^2+h[2]^2,h)), pts1,M,d,eq], pts1:map(f,pts), M:apply(matrix,pts1), d:determinant(M), if d=0 then string(Los puntos son colineales), else (aux:map(g,cons([x,y,1],pts1)), M:apply(matrix,aux), d:determinant(M), eq:expand(d), expand(eq/coeff(eq,x^2))=0) )$

Maxima

Dado el conjunto de puntos del plano cin

{(1, 2), (3, 1), (2, 3)},

no colineales, la fun-

circunferencia

devuelve la ecuacin de la circunferencia denida por estos

puntos.

( %i9) p:[ [1,2],[3,-1],[2,3] ] $ ( %i10) circunferencia(p); ( %o10) y 2 11 y + x2 29 x + 26 = 0 5 5 5

Sec. 19.4. Implementacin del paquete:

ejemplo

287

Maxima

Esto muestra la grca de la circunferencia previamente analizada, conjunatmente con los puntos que la denen.

( %i11) wxdraw2d( implicit(circunferencia(p),x,0,6,y,-2,4), point_type=6,color=red,point_size=1, points(p), user_preamble=set size ratio 1 );

( %t11)

( %o11)

Maxima

Igual que con la funcin

triangulo, para el conjunto de puntos del plano {(1, 1), (2, 2), (3, 3)}, la funcin circunferencia devuelve un mensaje indicando que stos

son colineales.

( %i12) p:[ [1,1],[2,2],[3,3] ] $ ( %i13) circunferencia(p); ( %o13) Los puntos son colineales

Hasta aqu se han denido, y se ha vericado el correcto funcionamiento de, las funciones nombre

triangulo

circunferencia.

Seguida-

mente se guardar la denicin de estas funciones en un chero de

ejemplo

y de extensin

lisp, el cual constituir un ejemplo de

un paquete de funciones denido por el usuario. Naturalmente, si el usuario desea puede copiar solamente la denicin de las citadas funciones y luego guardarlas sin necesidad de copiar y ejecutar los ejemplos.

288

Cap. 19. Programacin con Maxima

Maxima

Esto

guarda

todas

las

funciones

denidas

por

el

usuario

en

el

archivo

ejemplo.lisp. El directorio donde se guardar el chero es indicado por el usuario, en este caso ste es: d:/maximapackages.

( %i14) save(d:/maximapackages/ejemplo.lisp, functions) $

Una vez que se ha guardado la denicin de las funciones en el mencionado chero es posible inicializarlo como si se tratara de cualquier paquete incorporado en

Maxima.

En este caso se asume que el usuario ha cerrado el cuaderno de trabajo actual de el cual inicializar el paquete
Maxima

Maxima y luego ha abierto un nuevo cuaderno desde


ejemplo.lisp.

Esto inicializa el paquete (vea 15.1).

ejemplo.lisp

desde el directorio en el que se guard

( %i15) load(d:/maximapackages/ejemplo.lisp) $
Maxima

Ahora es posible ejecutar cualquiera de las funciones incorporadas en el paquete

ejemplo.lisp

sin necesidad de exponer el cdigo del mismo.

( %i16) p:[ [0,0],[2,0],[1,sqrt(3)] ] $ ( %i17) triangulo(p); ( %o17) [ Area : sqrt(3) u2, Baricentro : [1, 1/sqrt(3)] ]

Bibliografa

[1] Fokker,

//people.cs.uu.nl/jeroen/courses/fpsp.pdf

J.

PROGRAMACIN

FUNCIONAL.

http:

(1996).

[2] Rodrguez, J. R. MAXIMA CON WXMAXIMA: SOFTWARE

uca.es/repos/maxima
5.18.

LIBRE EN EL AULA DE MATEMTICAS. (2007).

http://knuth.

[3] Rodrguez, M. y Villate, J. MANUAL DE MAXIMA ver.

html

http://maxima.sourceforge.net/es/documentation.
M. PRIMEROS PASOS EN MAXIMA.

(2009).

[4] Rodrguez,

telefonica.net/web2/biomates/maxima/max.pdf
MA.

www.

(2008).

[5] Rodrguez, M. SOFTWARE MATEMTICO BSICO: MAXI-

pdf

www.telefonica.net/web2/biomates/maxima/i-math.

(2008).

[6] Rodrguez, M. MAXIMA: UNA HERRAMIENTA DE CLCULO.

pdf

http://softwarelibre.uca.es/cursos/maxima/cadiz.

(2006).

289