Académique Documents
Professionnel Documents
Culture Documents
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
1 1.5
2 2.5
3 0
0.5
R. Ipanaqu
e upublicaciones t med ne
https://sites.google.com/site/ripanaque robertchero@hotmail.com
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
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
Maxima
12
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 14 17 20 23 23 24 25 25
La estructura de
Maxima
Comentarios . . . . . . . . . . . . . . . . . . . . . . . . Paquetes en
Maxima
. . . . . . . . . . . . . . . . . . .
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
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 . . . . . . . . . . . . . .
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
. . . . . . . . . . . . . . . . . . . . . . . .
ndice
vii
85 87 92 94 95 97 99 102 103
7.12. Sistemas de ecuaciones diferenciales ordinarias lineales 7.13. Series de potencias . . . . . . . . . . . . . . . . . . . . 7.14. Transformada de Laplace . . . . . . . . . . . . . . . .
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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
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
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
wxMaxima
194
194 197 200 203 204 207 211 214 216 219 220
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ecuaciones
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
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.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
267 271
271 274 275
19.Programacin con
Maxima
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
276
276 279 282 284
19.1. Operadores relacionales y lgicos 19.2. Operadores y argumentos 19.3. Programacin funcional
ejemplo
. . . . . . . . .
Prlogo
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
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
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,
Ma-
R. Ipanaqu
Piura, Per
CAPTULO
Obtencin de
Maxima
Maxima
Maxima
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 ).
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.
Figura 1.1:
Maxima-5.25.1.exe.
Maxima
Maxima-5.25.1.exe que es
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
Figura 1.2:
Maxima-5.25.1.exe.
Ejecutar .
Figura 1.3:
3. Seleccionar el idioma (g. 1.4).
Cuadro de vericacin.
Figura 1.4:
cuadro
Bienvenido
5. Seleccionar la opcin
Acepto el acuerdo
do de Licencia.
7. Seleccionar la carpeta en la cual se quiere instalar Maxima (generalmente se deja la carpeta que aparece por defecto) y luego
Figura 1.5:
Cuadro
xima.
Figura 1.6:
Cuadro
Acuerdo de Licencia.
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-
Figura 1.7:
Cuadro
Informacin.
Figura 1.8:
Cuadro
Maxima
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
Maxima
Instalar del
Figura 1.9:
Cuadro
Figura 1.10:
(g. 1.12).
Cuadro
Maxima
Figura 1.11:
Cuadro
Figura 1.12:
Cuadro
XMaxima
wxMaxima )
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).
Figura 1.13:
Cuadro
Informacin.
Figura 1.14:
Cuadro
Figura 1.15:
CAPTULO
Funcionamiento de
Maxima
Maxima
Maxima
Shift
Enter
salir de
Maxima
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
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
( %in )
, la procesa y devuelve la
( %on )
10
Maxima
El usuario digita
1+1, luego naliza su entrada con Shift . Maxima aade Enter punto y coma al nal de sta, la etiqueta con ( %i1) , la procesa e inmediatamente despus devuelve la respectiva salida etiquetada con ( %o1) .
wxMaxima.
El ncleo de
Maxima
Enter
quit();
Maxima
Con una interfaz basada en texto, el usuario interacta con su ordenador digitando texto mediante el teclado. Para inicializar el comando
xima
maxima
Maxima
( %i1),
Ma-
esta lista para que el usuario haga su entrada. ste puede entonces digitar su entrada, terminndola con ; y presionando luego Enter .
Maxima
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
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
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 )
Maxima
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
Maxima.
En
Windows se instala automticamente. Presenta algunas ventajas como la integracin en formato HTML de manuales de ayuda. Sin em12
13
Figura 3.1:
bargo, tambin tiene algunas desventajas con respecto a otras interfaces ms modernas.
wxMaxima 1 ,
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
http://wxmaxima.sourceforge.net
14
Figura 3.2:
wxMaxima
documentos interactivos
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.
wxMaxima
15
Figura 3.3:
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
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
16
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.
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:
mientras que el que se entiende para ser ledo como solamente de texto est en estilo Text (texto).
wxMaxima
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
Figura 3.9:
Cuadro 3.1:
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.
wxMaxima
Estilo
19
Cuadro 3.2:
Estilos
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:
20
Figura 3.11:
ndice
de la
Ayuda
de Maxima
Todas las funciones incorporadas en formas. La ms usada es desde el men que da acceso a la opcin
estn descritas en el
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
false
describe
devuelve
true
si en-
en caso contrario.
21
describe(string )
encuentra el elemento, si existe, cuyo ttulo coincide exactamente con culas y minsculas)
string
describe(string,exact ) describe(string,inexact )
equivale a
describe(string )
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
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
Maxima
Esta sentencia encuentra todos los elementos documentados que contienen en sus ttulos. No devuelve
"plus"
true
false
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>)
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
wxMaxima.
opcin
Para reiniciar
Maxima
sin salir de
Reiniciar Maxima
del men
Maxima.
Figura 3.12:
3.6 Comentarios
Los comentarios son toda una serie de caracteres que no afectan los clculos. En y
Maxima
/.
24
/comentario /
Escribiendo comentarios.
comentario
es inter-
Maxima
3.7 Paquetes en
Maxima
Maxima
Maxima
es que es un
sistema extensible, hay una cierta cantidad de funciones incorporadas pero, usando el lenguaje de programacin de siempre es posible aadir ms funciones.
Maxima,
Maxima
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
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)$
25
Maxima
Maxima
concierne, no hay en realidad ninguna diferencia entre las funciones denidas en paquetes y las funciones incorporadas en
Maxima.
Maxima
se perca-
( %i1) sqrt(4,5);
sqrt: wrong number of arguments. - - an error. To debug this try: debugmode(true);
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
Clic en el botn
+ C Ctrl
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
Con
( %i3) (2+3)^3-4*(6+7);
26
27
( %o3) 73
x ^y
x y x x /y x y z x +y +z
Maxima,
2300 .
mado, tal como lo dara una calculadora, para ello puede usar la fun-
float
o la variable
numer
Maxima
28
float(expr )
expr expr
equivale a
float(expr )
expr
Maxima
Maxima
numer
no es til.
Maxima
Maxima
float
como con
numer,
29
Maxima
asume que es
Maxima
Maxima
Esto es tomado como un nmero racional exacto, y es llevado a una fraccin irreducible.
Maxima
Cuando el usuario digita un nmero con un punto decimal explcito, Maxima produce un resultado numrico aproximado.
Maxima
Aqu, la presencia del punto decimal seguido del cero hace que Maxima d un resultado numrico aproximado.
Maxima
Cuando cualquier nmero en una expresin aritmtica es digitado con un punto decimal seguido del cero, el usuario obtiene un resultado numrico aproximado.
30
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 )
( x) (ex ) (loge x)
logaritmo neperiano
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
1, 2, . . . , n ) 1 3 . . . n (n
(
impar)
24. . .n
par)
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
mximo, mnimo de
x,y,. . .
factores primos de
Maxima
se colocan
Maxima
empie-
31
Maxima
Esto da
loge 15.7.
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.
Maxima
Esto devuelve
64
Maxima
6.
Maxima
La presencia explcita de un punto decimal seguido de un cero le indica a Maxima que d un resultado numrico aproximado.
Maxima
( %i6) sqrt(6);
32
( %o6)
Maxima
40 39 . . . 1.
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
2 .
sen(/2).
33
float, numer
Maxima
Maxima
Maxima
con cualquier
valor numrico de
expr
calculado con
fecto es 16)
Maxima
Maxima
Esto devuelve
con 50 dgitos.
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
Maxima
La cantidad
21000
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
Maxima
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.
con
( %i5) fpprec : 200$ bfloat( %pi); ( %o5) 3.141592653589793238462643383279502884197169399 37510582097494459230781640628620899862803482534 21170679821480865132823066470938446095505822317 25359408128481117450284102701938521105559644622 948954930382b0
35
Figura 4.1:
Seleccionando
ascii
%i,
igual a
Maxima
i
variable llamada
i,
pero
1 . Note no 1.
que una
x+iy
en
el argumento
|z |ei
Maxima
2i.
36
( %o2) 6 %i 2
Maxima
( %i3) exp(11+5* %i),rectform; ( %o3) %e11 %i sin (5) + %e11 cos (5)
Maxima
CAPTULO
Generacin de clculos
Maxima,
_ y % siempre hacen
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
%i n
Maxima
(sec. 3.5).
Maxima
38
Maxima
( %o1)
( %o3)
( %o2)
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
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)
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.
39
variables
sqrt(pi).
40
x : valor x : y : valor
x x
e
y
e
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.
Maxima.
Si el usuario pusiera
tenga el valor
5,
x:5, Maxima
asume
se le indique explcitamente otra cosa. Para evitar los errores, deben quitarse los valores denidos en cuanto se haya terminado de usarlos.
usarlos.
Maxima
Maxima
41
Maxima
x3
Maxima.
3x
( %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.
Esto_Es_Una_Variable,
estoesunavariable, esto_es_una_variable]
42
Maxima
Maxima
Con
kill(all)
Maxima
Esta vez
values
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).
43
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
Esto realiza tres operaciones en una misma lnea y muestra todos los resultados.
Esto realiza tres operaciones en una misma lnea sin mostrar resultados.
Esto realiza tres operaciones en una misma lnea y muestra el resultado de la ltima operacin.
Maxima
Maxima
muestre la salida.
expr $
Inhibiendo la salida.
44
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
( %i12) % ( %o12) 52
expr
Evitando la evaluacin.
45
Maxima
Maxima
integrate
Maxima
Maxima
Maxima
46
Maxima
CAPTULO
Clculos algebraicos
Maxima
Maxima
Maxima
4 + 36 1 39 7x 3x + 6 4x + 6
48
Maxima
Maxima
Maxima realiza automticamente simplicaciones algebraicas bsicas. Aqu combina a x2 y a 4x2 para dar 3x2 .
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
Maxima
Maxima reordena y combina trminos usando las reglas estndares del lgebra.
Maxima
Maxima
La funcin
expand
49
Maxima
factor
hace lo inverso de
expand.
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 .
Maxima
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
( x + 1)4
por
(x +1)2 .
Maxima
Maxima no conoce ninguna regla para esta expresin, as que deja expresin en
la forma original que usted le dio.
50
Maxima
A menudo, sin embargo, se necesita sustituir un smbolo como aunque puede que sea una expresin. Para sustituir el smbolo
x,
con un valor determinado; el usuario puede utilizar la funcin una sintaxis alternativa de la misma.
1 + 2x, ev o
reemplaza
exp
por
valor
en la expresin
reemplaza
exp
por
valor
en la expresin
x=3
en la expresin
1 + 2x.
2 y.
Maxima trata las reglas de sustitucin como cualquier otra expresin simblica.
( %i3) x=y+3;
51
( %o3) x = y + 3
Maxima
x2 9.
Maxima
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.
3,
cuando aparezca.
x.
Ahora
1+a
x.
( %i8) x:a+1;
52
( %o8) a + 1
Maxima
Ahora
es reemplazado por
a + 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.
Maxima
El smbolo
Maxima
x.
53
Maxima
Ahora
no tiene ningn valor denido, as que puede ser utilizado como variable
puramente simblica.
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,
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
t.
Maxima
x.
54
Maxima
x.
Maxima
cuando
es sustituido por
%pi,
y luego evala el
Maxima
No obstante, el smbolo
( %i17) t; ( %o17) x2 + 1
x + 2x + 1. Maxima
2
(x + 1)2
puede ser
de funciones para hacer conversiones entre las diferentes formas de expresiones algebraicas.
Maxima
55
expand(expr )
equivale a escribe
expand(expr )
como un producto de fac-
expr
factor(expr )
Maxima
factor
Maxima
expand.
Maxima
factor
Maxima
factor
x4 + 1
56
Maxima
En este caso,
expand
rat(expr ) ratsimp(expr )
convierte cional
expr
simplica la expresin
expr
y todas
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 )
ratsimp
Maxima
He aqu la integral de
1 . x4 1
( %i1) integrate(1/(x^4-1),x);
57
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.
1 4 (x1)
Maxima
ratsimp
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.
= %e(log x+1)
log2 x
Maxima
ratsimp
= %e x2
ratsimp
puede no
58
fullratsimp.
ratsimp,
expresion.
Maxima
En general,
Maxima
Con
ratsimp
Maxima
Con
fullratsimp
Maxima
expand, factor
ratsimp.
Sin embargo,
59
cuando se tiene expresiones racionales que contienen cocientes, puede ser necesario utilizar otras funciones.
expr
var1 , . . . , varn
en fraccio-
var
Maxima
He aqu una expresin racional, la cual puede ser escrita en varias formas diferentes.
Maxima
expandwrt
forma factorizada.
3x (x3)2 (x+1)
2 (x3)2 (x+1)
Maxima
expand
3x x3 5 x2 +3 x+9
2 x3 5 x2 +3 x+9
60
Maxima
partfrac
5 (x3)2
+1
Maxima
factor
collectterms(expr,var )
var
Maxima
Maxima
x.
Maxima
y.
( %i8) collectterms(v,y);
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
arbitrarios de reglas de transformacin para hacer diversas conversiones . Sin embargo, hay algunas funciones incorporadas adicionales de
Maxima
trigexpand(expr )
expande funciones trigonomtricas e hiperblicas de sumas de ngulos y de mltiplos de ngulos presentes en la expresin
expr
tan, sec,
etc.
trigreduce(expr,var )
var,
transformndolos en
var
trigreduce(expr )
si no se introduce el argumento de
var,
expr
expr ,trigreduce
equivale a
trigreduce(expr )
1 Para
scsimp
defrule
en la ayuda de Maxima.
62
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 )
equivale a
rectform(expr )
r % e %i reales
equivalente a
expr,
con
equivale a
polarform(expr )
simplica la expresin
radcan(expr )
n, se extraen
logcontract(expr )
analiza do ma en la
4x2 2x)
expresin de
expr
la
refor-
transforman-
a1*log(b1)+a2*log(b2)+c
de la forma
expr ,logcontract
63
Maxima
Esto expande la expresin trigonomtrica, escribindola de modo que todas las funciones tengan argumento x.
Maxima
Maxima
son reales.
Maxima
Con
logcontract
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.
( %i13) sqrt(x^5*y/w^3);
64
( %o13)
x5 y w3
Maxima
radcan
hace la expansin.
w2
Maxima
Maxima
pasa
pred1 , . . . , predn
assume
65
Maxima
assume
devuelve una lista con los predicados que han sido aadidos al contexto.
Maxima
Maxima
facts
Maxima
forget
Maxima
forget,
la llamada
facts()
devuelve una
66
xn
en
expr
puede omitirse si es
hipow
en
expr
(si
no aparece en
expr,
devuelve 0)
expr
que se espe-
n1 , . . . , nk (priparte n1 de expr,
del resultado an-
n2
terior, y as sucesivamente)
Maxima
Maxima
Esto da el coeciente de
en
e.
Maxima
hipow(expr ,y)
da la mayor potencia de
e.
( %i4) part(e,4);
67
( %o4) 9 x2
num(expr ) denom(expr )
devuelve el numerador de
expr
devuelve el
Maxima
Maxima
denom
selecciona el denominador.
Maxima
denom
CAPTULO
Matemticas simblicas
La capacidad de
Maxima
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 m f l m f l m f
xx+ 0
xx 0
Maxima
He aqu la expresin
sen x . x
Maxima
( %i2) f,x=0;
68
69
( %o2)
Maxima
Si se evala
sen(x) para un x
Maxima
+
indenido indenido pero acotado innitesimal mayor que cero innitesimal menor que cero innito complejo
La funcin
para simplicar expresiones en las que aparecen los smbolos especiales para lmites.
Maxima
1 ().
70
Maxima
He aqu la simplicacin de una expresin que incluye un innitesimal mayor que cero.
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-
con
Maxima
He aqu la derivada
xn
con respecto a
x.
Maxima
x.
71
( %o3) (n 2) (n 1) n xn3
Maxima
diff(f )
diff(f,x ) es como
d dx f ,
es como
df .
Maxima
d(xn ). delx
deln
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
ma
f.
Maxi-
depends.
Maxima
f (x2 ).
Maxima
72
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)
()
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
Maxima
u(x)
v (x).
Maxima
d dx
(uv ),
donde
u = u(x)
v = v (x).
d dx
u v
Maxima
( %i9) dependencies;
73
Maxima
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
f dx =
gdx
(x, y ) = 0
depende de
y)
en la expresin
expr
que
Integracin.
%c
Maxima
xn dx,
Maxima, pregunta si
n+1 = 0
n + 1 = 0.
En
n + 1 = 0,
es decir,
n = 1.
Is
n+1
74
( %o1)
xn+1 n+1
Maxima
He aqu la integral
xn dx,
cuando
n = 1.
Is
n+1
( %o2) log(x)
Maxima
Maxima
Recurdese que
logcontract
Maxima
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
75
Maxima
Esta integral puede ser expresada slo en trminos de una funcin dilogartmica1 .
Maxima
erf2 .
Maxima
Esta integral simplemente no puede ser expresada en trminos de funciones matemticas estndares. Por consiguiente, Maxima la deja como est.
Maxima
b
He aqu la integral denida
sin(2 b)2 b 4
Maxima
76
Maxima
xx dx
Maxima
1
Esto evala la integral mltiple
x 0
(x2 + y 2 ) dy dx.
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
= %c1 cos(x)
Maxima
integration_constant
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);
77
( %o15)
x3 3
= K2 cos x
Maxima
integration_constant_counter.
Maxima
= K1 cos x
Es posible realizar un cambio de variable en una integral indenida o denida usando la funcin
changevar.
Para que
Maxima
pueda
Maxima
%e
dy
Maxima
%e
dy
78
Maxima
z %ez dz
2
imax imin
en
Maxima
7
Esto construye la suma
xi . i i=1
x6 6
x5 5
x4 4
x3 3
x2 2
+x
Maxima
n
Esto devuelve la suma
i2
i=1
( %i2) sum(i^2,i,1,n);
n
( %o2)
i=1
i2
Maxima
Agregando
simpsum
n.
( %i3) sum(i^2,i,1,n),simpsum;
79
( %o3)
2 n3 +3 n2 +n 6
Maxima
Combinando
simpsum
con
factor
Maxima
Maxima tambin puede dar un resultado exacto para esta suma innita.
Maxima
3
Esta es la suma mltiple
xi y j .
i=1 j =1
Maxima
Esta es una suma para la cual los valores del ndice de variacin no estn equiincrementados.
el producto
imax imin
f (i)
Maxima
( %i8) prod(x+i,i,1,4);
80
( %o8) (x + 1) (x + 2) (x + 3) (x + 4)
Maxima
Agregando de
simpproduct
n.
Maxima
( %i10) product(integrate(x^k,x,0,1),k,1,n);
n
( %o10)
k=1
1 k+1
changevar
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
j.
( %o11)
j =2
f (j + 2) xj
Maxima
j =i2
en la suma anterior.
81
n+2
( %o12)
i=0
f (i) xi2
Maxima
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
f (k ) xk
compare(x,y )
compara
devuelve
<
82
Maxima
Maxima
Maxima
Maxima
equal.
83
Maxima
a < b < c.
Maxima
Al pretender evaluar una desigualdad como la siguiente, Maxima devuelve un mensaje de error.
expr2
si
cond
expr1
es
false
si
cond
es
true,
Maxima
a < b < c,
en Maxima, es usando el
and.
Maxima
q,
Maxima no sabe si
( %i11) p and q;
84
( %o11) p q
7.6 Ecuaciones
En
el smbolo
expr1 = expr2
expr1 expr2
Maxima
x=y
x:y con x=y (ver x:y es una declaracin imperativa que ori-
Con
lhs3
Con
rhs
85
ecu
de
Maxima
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
3 %i+1 i 1 ,x = 3% ,x 2 2 3 % i 1 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
( %o3) 0 = x5 4 x + 2
Maxima
Maxima
He aqu una lista de dos ecuaciones simultneas, para que sean resueltas en las variables x e y.
Maxima
x=
Maxima
Con
rectform
x=
11 %i 2
3 2, y =
11 %i 3 2 2, y = %i 11 3 2 2 , [x
11 %i 2
3 2
= 0, y = 2]
87
y 3 3 x y + x3 = 0
a la variable
e.
Maxima
y (x).
Maxima
Ahora se deriva
d dx
y 3 y + 3 x2 = 0
Maxima
d dx
y.
y=
y x2 y 2 x
to_poly_solver4
Maxima
para solucionar
4 El
paquete
to_poly_solver
caciones de sus funciones puedan cambiar en el futuro, o que algunas de estas funciones puedan ser incorporadas a otras partes de Maxima.
88
inicializa el paquete
to_poly_solver
de in-
simpfuncs
etc.
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
to_poly_solver.
( %i1) load(to_poly_solver)$
Maxima
31 i+3 ] 4
Maxima
89
Maxima
( %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
Maxima
Al asignar el valor
true
a la opcin
use_grobner,
se obtiene la solucin.
7+1 2 ], [x
7+1 2 ,y
71 2 ]
Maxima
Maxima
parameters
la solucin es formal.
( %i8) to_poly_solve(a*x=x,x,parameters=[a]);
90
( %o8) %union ( %if (a 1 = 0, [x = %c50], %union ()) , %if (a 1#0, [x = 0], %union ()))
Maxima
x+
x=
3 2
x . Note x+ x
Maxima
= 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].
Maxima
Solucin de la ecuacin
cos(x) sin(x)+1
sin(x)+1 cos(x)
=4
91
( %o12) %union [x = 2 %z 60 3 ], [x = 2 %z 62 + 3 ]
Maxima
Maxima
No obstante, la funcin
nicedummies
( %o14)
con
( %o12)
).
Maxima
sin x +
= cos x
. 4
Maxima
tan x = cot x.
+ 4]
Maxima
92
Maxima
Maxima
to_poly_solve.
( %i19) to_poly_solve(exp(x^2-1)-x=0,x);
Unable to solve Unable to solve Unable to solve
x = 0], [x]
to_poly_solver
de eliminael las lineales de para resolver
algoritmo Fourier
inecuaciones
93
Maxima
e < x < .
Maxima
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
( %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
< 0.
Maxima
1 x
( %i7) fourier_elim([x-1/x>=0],[x]);
94
Maxima
|x+2| |x1|
< 1.
Maxima
fourier_elim
( %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]
solve_rat_ineq.
load(solve_rat_ineq)$ solve_rat_ineq(ineq )
Maxima
95
Maxima
(y 3 1)(y + 3)2 0.
Maxima
< 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
x1>
1 . x
5+1 2 ]]
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
96
Maxima
y '(x) = ay (x) + 1.
En esta solucin
%c
ea x
Maxima
Si se incluye una condicin inicial apropiada, entonces no hay ninguna constante en la solucin.
Maxima
%k 1
%k2
de frontera.
= x + %k2
Maxima
Maxima
=x
97
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
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
Maxima
( %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
(y (0)x(0)) %et , 2
(y (0)+x(0)) %et 2
(y (0)x(0)) %et 2
98
Maxima
x(0) = 1, y (0) = 0
al
Maxima
Al volver a resolver el sistema se obtienen las soluciones con las condiciones iniciales dadas.
%e t 2 , y (t)
%e t 2
%et 2
Maxima
e x x2 ,
d3 y dx3
y dy 3d + 3 dx y = dx2
=1 =0 . = 2
y (x) 3
d2 d x2
y (x) + 3
d dx
y (x) y (x) = x2 ex
x 2 ex 2
x ex + ex
99
expr
en un desa-
taylor(expr, [x1 , x2 , . . .] , a, n)
x1 , x2 , . . . (a, a, . . .)
riables
n1 , n2 , . . .
equivale
desarrolla de es
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
0,
hasta los
3.
100
Maxima
Maxima conoce las expansiones en serie de potencias para una gran cantidad
funciones matemticas.
Maxima
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
x3 6
Maxima
Cuando se hacen operaciones en una serie de potencias, el resultado es calculado slo en el orden apropiado en x.
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.
13 x2 2
+ 5x + 2
Maxima
13 x2 2
+ 5x + 2
Maxima
Al aplicar
expand
455 x5 6
1207 x4 12
265 x3 3
+ 51 x2 + 20 x + 4
Maxima
++ 1
y 12
2
y2 2
x + y 2 +
y3 12
x2 +
1 6 +
x3 +
102
powerseries(expr, x, a)
expr
para
Maxima
+ 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.
+ cos(1)
expr
parmetro de transformacin
s s
y pa-
expr t.
con respecto de
Transformadas de Laplace.
103
Maxima
Maxima
solve_rec
coecientes polinomiales.
Maxima
solve_rec.
( %i1) load(solve_rec)$
Maxima
Maxima
( %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
Maxima
Maxima
Maxima
CAPTULO
Matemticas numricas
ecu1 , . . . , ecum x1 , . . . , x n
ecu para
la variable
ecu [a, b]
en
Maxima
solve
Maxima
algsys
( %i2) algsys([2-4*x+x^5=0],[x]);
105
106
Maxima
La opcin
realonly:true
Si las ecuaciones involucran slo funciones lineales o polinmicas, entonces puede usarse
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
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
( %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.
107
Maxima
find_root
b a
f dx
numricamente la integral
calcula
f dx
numricamente la integral
calcula
f dx
numricamente la integral
calcula
f dx
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
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
integracin.
Maxima
quad_qagi.
CAPTULO
Funciones y programas
Maxima.
Maxima
Maxima.
f.
Maxima
Maxima
110
Maxima
Maxima
Puede usarse
en un clculo.
Maxima
f.
dene la funcin
f f f
muestra la denicin de
es una variable que contiene los nombres de las funciones denidas por el usuario
Maxima
111
Maxima
hump
Maxima
hump,
Maxima
(xxmax)2 xmax
Maxima
hump.
fi fi
muestra las deniciones de todas las funciones denidas por el usuario borra todas las deniciones de todas la funciones denidas por el usuario
112
Maxima
g.
Maxima
g).
Maxima
g).
Maxima
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
riable de argumentos (funciones de argumento variable) y funciones que se aplican directamente a listas (funciones
array ).
113
dene la funcin
gumentos es variable dene la funcin array mento es una lista dene la funcin array lista cuyo argu-
Maxima
Maxima
Esto evala
en un solo argumento.
Esto evala
en dos argumentos.
Maxima
G.
Maxima
Aqu se evala
en la lista
[2, 3]
( %i20) G[2,3];
114
( %o20) 13
Maxima
Maxima
en la lista
[4, 3].
F F1 , . . . , Fn
Maxima
( %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
denida en
( %i17)
( %i24) remfunction(F);
115
( %o24) [F ]
Maxima
Esto borra la denicin de todas las funciones array denidas por el usuario.
Maxima
annimas
que son de mucha utilidad en contextos vinculados con la programacin. La funcin para denirlas es
lambda.
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.
dispfun.
( %i29) dispfun(all);
116
( %o29) [ ]
En muchas clases de clculos, el usuario puede encontrarse digitando la misma entrada a tencias de entrada.
mucha digitacin deniendo una funcin que contiene todas las sen-
Maxima
Maxima
Maxima
exprod
( %i32) exprod(n):=expand(product(x+i,i,1,n)) $
Maxima
product
expand.
Maxima
dimientos que ejecutan las sentencias dadas por el usuario. Es posible incluir varios pasos en los procedimientos, separados por comas.
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.
Maxima
(expr1 , expr2 , . . .)
block([a, b, . . .] , proc)
Construccin de procedimientos.
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.
Maxima
La funcin
t escapa,
118
Maxima
u.
( %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.
por
3.
( %i1) defrule(regtran1,x,3);
119
( %o1) regtran1 : x 3
Maxima
regtran1
Maxima
f(x).
sta no afecta a
f(y).
Maxima
f(t)
Maxima
Maxima
120
( %t8) regtran2 : f (x) p ( %t8) patron : f (t) t2 ( %o8) [ %t51, %t52, %t53]
Maxima
regtran1,
regtran2
patron.
Maxima
Esto indica que todas las deniciones de las reglas han sido borradas.
Maxima
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
f(x)
f(y).
f(x),
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) =
121
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
Maxima
f.
Maxima
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)
122
ev
x1 , . . . , x n
y cuerpo
f con expr
f con expr
argumentos
x1 , . . . , x n
y cuerpo
Maxima
x2 + 1
en la variable
ex.
Maxima
a partir de
ex.
Maxima
define
a partir de
ex
si se
( %i4) define(g(x),ex) $ ( %i5) g(8); ( %o5) 65 define se aprecia al denir funciones a par-
123
Maxima
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
Maxima
Maxima
f ,
define
(re-
( %i10) define(f'(x),diff(f(x),x)) $
Maxima
124
Maxima
if.
Maxima
f (x) =
x2 , x,
x < 2, x 2.
Maxima
Maxima
125
Maxima
( %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
( %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) )$
2, x g (x) = x, 1 x,
Maxima
( %i8) f(x)+g(x); ( %o8) (if x >= 2 then return ( x)) + (if 3 <= x and x < 5 then return (1 x))
nessy , el cual est en proceso de desarrollo, que puede resultar til en ciertos casos.
Maxima
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
Maxima
f (x) =
x2 , x,
x < 2, x 2.
Maxima
Maxima
Una evaluacin simblica nos deja ver las funciones utilizadas por el autor para manipular las funciones denidas a trozos.
t unit_spike (t 2)
Maxima
Con la funcin
pwsimp
127
Maxima
f (2);
3 .
22
2x
1
3
22 1 2 x
Maxima
He aqu integracin.
Maxima
2, x g (x) = x, 1 x,
Maxima
128
Maxima
No obstante, al calcular
f (x) + g (x)
se aprecia que
f (3) + g (3) = 42 2
) ] ) ] ) ] ) ] )
42 3 2 x + x + 1 5 x
x2 4 2 x2 3 2 2 2 x
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
Maxima
Lisp 1 .
es
Lisp.
Maxima
Maxima
Maxima
129
130
Maxima
Maxima
es reemplazado por
3.
La mayora de funciones matemticas incorporadas en mente sobre cada elemento de una lista.
Maxima
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 , . . .)
i i
variando
imin
imax
variando
list
ndice
(i, j, . . .) variando del valor mnimo al valor mximo que le han sido asociados genera una lista con cada ndice
131
Maxima
i2 ,
con
variando de
6.
Maxima
sen
n 5
para
variando de
4.
Maxima
( %i6)
Maxima
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.
x5 + 10
Maxima
variando desde
hasta
en pasos de
0.25
( %i6) create_list(0.25*i,i,1,4)$
132
Maxima
create_list.
Maxima
xi + y j
con
variando desde
hasta
variando desde
hasta
2.
Maxima
x.
Maxima
133
list [ i ]
el
i-simo
elemento de
list
(el primer
elemento es
list [ 1 ])
part(list, [ i, j, . . . ]) part(list, i1 , . . . , ik )
i, j, . . .
de
list list
Maxima
Maxima
Maxima
u.
134
Maxima
u.
u.
2 2,
y le da el nombre
m.
Maxima
Maxima
( %i9) part(m,1,2);
135
( %o9) 1
Maxima
2 2 2.
( %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
u [ i ].
part(u, i) u [ i ] u [ i ] : valor
Operando listas como arrays.
i -simo
elemento de la lista
Maxima
Maxima
136
Maxima
se ha modicado.
de la
P (x)
es verdadero
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
Maxima
[a, 1, 3, b, 7]
Maxima
Esto da una lista de todas posiciones, de la lista tran elementos de tipo simblico.
[a, 1, 3, b, 7],
( %i2) sublist_indices([a,1,3,b,7],symbolp);
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],
Maxima
es un elemento de
[11, 1, 2, 4, 5, 5].
Maxima
3,
no lo es.
Maxima
list1
list2
alternados
138
Maxima
Maxima
He aqu la combinacin de dos listas de diferente longitud (join ignora los elementos sobrantes de la lista de mayor longitud).
list list
en forma
de acuer-
list
devuelve un conjunto con todas las permutaciones distintas de los miembros de
list list
sin redundancias, es de-
devuelve
Maxima
Esto ordena los elementos de una lista en forma estndar. En casos simples como ste el ordenamiento es alfabtico o numrico.
139
Maxima
Maxima
Aqu se ordenada los elementos de la lista segn sea la norma de cierto elemento menor que la norma del posterior.
Maxima
Maxima
[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
140
list1
seguidos de los de
list2 , . . . , listn
agrega agrega borra
elem elem
list
list
elem
de la lista
list
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.
Maxima
Aqu se inserta
Maxima
141
Maxima
Esto devuelve una lista dada con los dos primeros elementos borrados.
Maxima
Esto devuelve una lista dada con los dos ltimos elementos borrados.
list list
en dos listas;
x,
Maxima
Maxima
a, b, a2 + 1, c
142
expr list
es una lista
devuelve la longitud de
list list1
y
list2
evala
f (an , bn , . . .)]
aplica la funcin los elementos del producto cartesiano
Maxima
Con la funcin
length
Maxima
apply
Maxima
map.
143
Maxima
map.
Maxima
outermap.
Maxima
map
( %i26)
( %i28)
p
de la seccin 9.1) para obtener una lista que contiene con cada una de las sublistas de
q.
CAPTULO
11
Arrays
n,
que de-
crea un array con sus elementos del tipo especicado (el tipo puede ser
fixnum
flonum)
A
rellena el array
Maxima
de dimensin
2.
145
Maxima
Maxima
Maxima
Maxima
Maxima
Maxima
146
Maxima
subindicada con
hola.
subindicada con
adios.
t.
Maxima
t.
CAPTULO
12
Matrices
matrix
que
Maxima
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)
mn
mn
generada
f m n,
n
devuelve una matriz rectangular
mn
con todos sus elementos iguales a cero devuelve una matriz diagonal de orden todos ellos iguales a
147
148
in
por
un mensaje de error)
Maxima
Maxima
Maxima
Con
apply
Maxima
( %i4) a[i,j]:=i-2*j $
149
Maxima
Maxima
Maxima
3.
150
Mi,j
de
Maxima
Maxima
A1,2 .
Maxima
3.
Maxima
151
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.
M
devuelve la traza de la matriz cuadrada
M
devuelve el menor
(i, j )
de la matriz
M
devuelve la matriz adjunta de la matriz
M
aade la(s) la(s) dada(s) por la(s) lista(s) (o matrices) a la matriz devuelve la triz
M.
M.
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
i1 , . . . , 1m
y columnas
j1 , . . . , j n
han
sido eliminadas
152
cin gaussiana devuelve la matriz que resulta de relizar la transformacin con las las
Fi
Fj
de la matriz
Fi Fi Fj M
y
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.
de la
M A
y
Maxima
22
de variables simblicas.
Maxima
He aqu la transpuesta de
A.
153
Maxima
Esto da la inversa de
en forma simblica.
Maxima
Esto da el determinante de
A.
3 3.
Maxima
Esto da su inversa.
Maxima
154
Maxima
de orden
4 5.
Maxima
de la matriz
y devuelve la matriz
Maxima
F2 F2 + F1
en la matriz
y devuelve la matriz
Maxima
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
M,
respectiva-
verica si
expr
devuelve la
p -norma
inf
frobenius
son
M. 1,
devuelve
la donde
matriz
m n
mat_unblocker(M ) outermap(f, M1 , . . . , Mn )
a cada uno de
M1 M2 . . . Mn
Ms funciones para matrices.
Maxima
He aqu la matriz
D.
156
2 ( %o3) 0 2
0 2 0
2 0 2
0 2 0
Maxima
D.
Maxima
matrixp
Maxima
B.
Maxima
A, B
( %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);
157
( %o9)
c1,1 c2,1
c1,2 c2,2
c1,3 c2,3
Maxima
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
Maxima
Con
outermap
mat_unblocker
158
( %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
de
x1 , . . . , x n
lineales
ecuaciones
eq1 , . . . , eqm
Funciones para generar matrices asociadas a sistemas de ecuaciones.
Maxima
Maxima
159
Maxima
F2 F2 1 F 2 1
partir de ste ltimo resultado se deduce que la solucin del sistema de ecuaciones lineales, dado, ser
y=1
x = 2.
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-
eigenvectors(M )
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
Maxima
3 3.
160
Maxima
C.
Maxima
C.
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.
CAPTULO
13
Conjuntos
set y cuyos argumentos son los elementos del mismo (ver seccin
Maxima
Maxima
listas, lo que permite trabajar con conjuntos cuyos elementos puedan ser tambin conjuntos o listas.
Maxima
cin.
juntos, como la interseccin o la unin. No obstante, debe tenerse en cuenta que los conjuntos deben ser nitos y denidos por enumera-
a1 , . . . , an
equivale a
set(a1 , . . . , an ) set()
f , siendo vars una f y s un conjunto
genera un conjunto cuyos miembros se generan a partir de o lista de listas lista de variables de
162
Maxima
a, b, c, d.
Maxima
Al ingresar un conjunto cuyos elementos estn desordenados y repetidos, stos son ordenados y unicados de forma automtica.
Maxima
La funcin
makeset
Maxima
makeset.
Maxima
Maxima
( %i6) x^{1,2,3};
163
( %o6) x{1,2,3}
Maxima
list
conj
listify(conj ) full_listify(conj )
conj
por operadores de
conj
Maxima
Maxima
( %i2) listify({a,b,c,d});
164
( %o2) [a, b, c, d]
Maxima
Maxima
Considerando que, cualquier lista puede convertirse a conjunto, entonces puede usarse
create_list
convertir la lista obtenida a conjunto. De esta manera se tiene una forma indirecta para generar conjuntos.
i -simo
conj
respetando el ordenamien-
conj conj
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);
165
( %o1) a
Maxima
( %i2) part({b,c,c,d,a},5);
part: fell o the end. - - an error. To debug this try: debugmode(true);
subset(conj, P ) subsetp(conj1 , conj2 ) elementp(x, conj ) member(x, conj ) freeof(x, conj ) freeof(x1 . . . , xn , conj )
conj
P
devuelve devuelve
si y slo si si y slo si
conj
si y slo si
conj
conj
equivale a f reeof (x1 ; conj ) and . . . and f reeof (xn ; conj )
Maxima
{1, 2, 3, 4, 5, 7}
, el subconjunto de todos
( %i1) subset({1,2,3,4,5,7},evenp);
166
( %o1) {2, 4}
Maxima
tales que
t < 4.
Maxima
tales que
mod(t, 3) = 1.
Maxima
Maxima
pertenece al conjunto
{2, 4, 5, 7}.
Maxima
La funcin genrica
member
167
Maxima
La funcin genrica
f reeof
indica que
{2, 4, 5, 7}.
Maxima
La funcin genrica
f reeof
indica que
Maxima.
conj conj
con el ele-
x x
Maxima
en el conjunto
{1, 4, 7}.
Maxima
de
{1, 4, 7}.
168
conj
Maxima
Maxima
{a, b, c};
{a, b, c}
( %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}}}
Maxima.
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 )
conj1 , . . . , conjn
devuelve la interseccin de los conjuntos
conj1 , . . . , conjn
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
conj2
true
conj1
conj2
conj
respec-
to de la relacin de equivalencia
Maxima
B.
Maxima
Esto da la unin de
B.
170
Maxima
Y esto la interseccin.
Maxima
La diferencia
AB
se calcula as.
Maxima
son iguales.
Maxima
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
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 ]}
171
Maxima
no son disjuntos.
Maxima
En este ejemplo, las clases de equivalencia son nmeros que dieren en un mltiplo de
3.
true
conjunto de devuelve
Maxima
si y slo si
expr conj
es un
true
si y slo si
es el
devuelve el conjunto
. . . , f (an , bn , . . .)},
Maxima
172
Maxima
Para conjuntos bien ordenados, al aplicar la funcin acorde con el ordenamiento de tales conjuntos.
map,
se obtiene un resultado
Maxima
En este caso primero son ordenados los conjuntos y luego devuelve un resultado que coincide con el de
( %o37)
CAPTULO
14
Grcos
Maxima Maxima
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
plot2d y plot3d2
Maxima
(tngase pre-
draw3 ).
Lo antes mencionado ocasiona que los grcos generados con las funciones
plot2d
a
plot3d
wxMaxima
wx
plot2d
plot3d,
anteriores es que stas funciones devuelven todos los grcos en el cuaderno de trabajo actual.
plot3d
Openmath sin que sea necesario tener conocimiento alguno de la sintaxis de estos
programas. paquete y
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
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
muestra un grco de
. . . , y = fn (x),
con
xmin x xmax ,
trabajo actual
en el cuaderno de
muestra un grco de
. . . , y = fn (x),
con
Maxima
sen(x)
x.
Para
variando desde
2 .
( %t1)
( %o1)
175
Maxima
Puede darse una lista de funciones para que sean trazadas. Por defecto, a cada funcin se le asigna un color especco.
( %t2)
( %o2)
Maxima
create_list
1
Jn (x),
con
variando desde
4.
dichas funciones.
( %t3)
( %o3)
176
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
de varias opciones. A cualquier opcin para la cual no se indique un valor explcito se le asigna su valor por defecto.
devuelve un grco, especicando un valor particular para una opcin, en otra ventana
Opcin
y nticks
Descripcin
rango vertical del grco nmero inicial de puntos utilizados por el procedimiento adaptativo para la representacin de funciones
29
adapt_depth
10
xlabel ylabel
x
nombre
funcin , dada
de
la
177
Opcin
logx
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
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
dumb, png, jpg, eps, pdf, gif, svg, etc. (esta opcin nicamente puede utilizarse con con
plot_realpart run_viewer
false true
si
se representar la parte real de un valor complejo controla si el visor apropiado para la salida grca debe ejecutarse o no
178
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.
( %t2)
( %o2)
179
Maxima
( %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
Maxima
Es posible trazar funciones que tienen singularidades. Para este efecto resulta bastante til la opcin
( %i5) wxplot2d(tan(x),[x,-3,3],[y,-10,10]);
plot2d: some values were clipped.
( %t5)
( %o5)
plot2d([ discrete, [[x1 , y1 ] , . . . , [xn , yn ]] ] , [style, points]) plot2d([ discrete, [x1 , . . . , xn ] , [y1 , . . . , yn ] ] , [style, points]) plot2d([ discrete, [[x1 , y1 ] , . . . , [xn , yn ]] ] , [style, lines])
(x1 , y1 ), . . . (xn , yn )
(x1 , y1 ), . . . (xn , yn )
(x1 , y1 ), . . . (xn , yn )
181
plot2d([ discrete, [x1 , . . . , xn ] , [y1 , . . . , yn ] ] , [style, lines]) plot2d([ discrete, [[x1 , y1 ] , . . . , [xn , yn ]] ] ) plot2d([ discrete, [x1 , . . . , xn ] , [y1 , . . . , yn ] ] )
(x1 , y1 ), . . . (xn , yn )
Maxima
( %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
points),
segundo,
[points n1 , n2 , n3 ]
(en el caso de
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,
negro, 6 celeste ).
n2 ,
al color (1
Finalmente para
182
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
( %i3) wxplot2d([discrete,pts],[style,[points,3,2,5]]);
( %t3)
( %o3)
Maxima
%o9
( %i4) wxplot2d([discrete,pts],[style,lines]);
( %t4)
( %o4)
183
plot2d(f (t), [t, tmin , tmax ] , [gnuplot_preamble, set polar]) plot2d([f (t), g (t), . . .] [t, tmin , tmax ] , [gnuplot_preamble, set polar])
Maxima
t (cos(t), sen(t))
para
t [0, 2 ].
( %t1)
( %o1)
184
Maxima
( %t1)
( %t2)
( %o2)
Maxima
= sen(2t).
( %t3)
( %o3)
185
Maxima
( %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)
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,
186
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
muestra un grco de
xmin x xmax
plot2d (wxplot2d),
la funcin
plot3d (wxplot3d)
tambin incluye una serie de opciones para obtener los mejores dibujos
Maxima
f (x, y ) = sen(xy ).
( %i1) wxplot3d(sin(x*y),[x,0,3],[y,0,3]);
( %t1)
( %o1)
187
Opcin
grid transform_xy gnuplot_term gnuplot_ preamble plot_format
Descripcin
establece el nmero de puntos de la rejilla en las direcciones
similar a
(pg. 177)
Maxima
f (x, y ) = sen(xy )
openmath.
Figura 14.1:
( %i2)
188
Maxima
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
( %t3)
( %o3)
plot3d (wxplot3d)
car curvas en
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
189
Maxima
. 2
( %t4)
( %o4)
Maxima
%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
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
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
f (x, y ) = sen(xy )
en el rectngulo
( %t1)
( %o1)
191
Maxima
f (x, y ) = x2 + y 2 1.
( %i2) contour_plot(x^2+y^2-1,[x,-1,1],[y,-1,1]);
( %t2)
( %o2)
wxMaxima.
Comenzar animacin,
de la barra de herramientas.
Figura 14.2:
with_slider
Obtencin de grcos animados.
funcin
wxplot2d
para
animar
grcos
de
4 Es
importante sealar que adicionalmente estan incluidas las funciones relacionadas con las funciones
draw
192
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
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
( %t1)
( %o1)
Maxima
( %i2) with_slider(f,[x,x^2,x^3,x^4],f,[x,-2,2]);
( %t2)
( %o2)
193
Maxima
( %t3)
( %o3)
CAPTULO
wxMaxima
15
wxMaxima
Maxima.
En este captulo repasaremos las principales opciones de los menes incorporados en la barra de menes de
wxMaxima.
Archivo
Abrir
Permite abrir una sesin previamente guardada, Permite abrir una sesin recientemente guar-
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
195
Figura 15.1:
Archivo.
Figura 15.2:
Eleccin de la opcin
Cargar paquete.
Exportar
18),
Imprimir Salir
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
. En Abrir
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
Figura 15.3:
Maxima
. Abrir
table.lisp
( %i1) load(D:/maximapackages/table.lisp)$
Maxima
variando de
y un incremento de
Maxima
1.
Editar
197
Editar
Corta cualquier entrada previa, Copia cualquier entrada previa, Copia la seleccin de una salida (o un conjunto
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
(o un conjunto de celdas) como imagen, Permite ampliar el tamao de los caracteres del cuaderno
actual,
Disminuir
derno actual,
los caracteres del cuaderno actual, Permite realizar una vista en pantalla completa
198
Figura 15.4:
Editar.
A modo de ejemplo, seleccionaremos las celdas del cuaderno de la gura 15.5 luego elegimos la opcin
1 1 1 1 [0, , 1, , 0, , 1, , 0] 2 2 2 2
(%i3) table(i^2,[i,5]);
( %o3)
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.
Editar
199
Figura 15.5:
Figura 15.6:
Editar.
del
Figura 15.7:
Guardar selec-
200
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,
Autocompletar
Mostrar plantilla
derno actual(ver Sec. 3.2), Inserta una celda de texto el cuaderno ac-
derno actual (ver Sec. 3.2), Inserta una celda de seccin el cuaderno
Insertar imagen
cuaderno),
Instruccin anterior
Celda
201
Figura 15.8:
Celda.
Figura 15.9:
Activando la opcin
Autocompletar.
Siguiente instruccin
cos(x) dx
y no se recuerda el
Autocompletar
int, entonces
funciones entre las que gura: cambio, si se elige la opcin de plantillas (ver).
202
Figura 15.10:
int.
Figura 15.11:
int.
Figura 15.12:
Maxima
203
Maxima
Paneles
Interrumpir
Maxima
sin salir de
wxMaxima
Aadir ruta
la funciones
load, demo
y algunas otras,
las funciones denidas por el usuario, Permite obtener la denicin de una funcin
apropiado para para ser incorporado a un documento basado en T EX (ver Sec. 18.1).
204
Figura 15.13:
Maxima.
Figura 15.14:
Por ejemplo para desplegar el panel mos dicho panel de la opcin 15.14 y 15.15)
Matemticas generales
elegi-
Ecuaciones
Resolver
2 Eso
Resolver (to_poly)
de Maxima.
Ecuaciones
205
Figura 15.15:
Calcular raz
Permite aproximar una raz en un intervalo dado, Aproxima las races reales y complejas de
Races de un polinomio
nes que se supone valen cero) tomando resultantes sucesivas, Permite resolver ecuaciones diferenciales ordinarias
206
Figura 15.16:
Ecuaciones.
Figura 15.17:
Uso de la opcin
la ecuacin diferencial
Problema de contorno
Condicin inicial
y (0) = 1;
Resolver EDO
Problema
y = y,
Resultados obtenidos al seguir los procesos indicados en las guras 15.17 y 15.18.
lgebra
207
Figura 15.18:
Uso de la opcin
diferencial de la gura 15.17 (aqu se asume que tal ecuacin gura en la entrada actual).
lgebra
Generar matriz
i, j ,
mente denida,
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,
Vectores propios
208
Figura 15.19:
lgebra.
expresin que depende de una variable, Permite aplicar un operador a una lista, Permite aplicar una funcin a cada uno de
Maxima
( %i1) lambda([i,j],1/(i+j-1))$
Maxima
Generar matriz
lgebra
209
Figura 15.20:
narar matriz.
Ge-
Figura 15.21:
Ge-
Figura 15.22:
troducir matriz.
In-
Maxima
210
Figura 15.23:
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
denir una matriz (15.22) es posible introducir, en tiempo real, cada uno de los elementos de dicha matriz (15.23).
Anlisis
211
Maxima
Si se quiere aplicar una funcin a cada uno de los elementos de la matriz actual, por ejemplo la matriz
C,
Anlisis
Integrar
expresin,
presin utilizando el caso trascendental del algoritmo de Risch, Permite efectuar un cambio de variable en una
n-sima
de una expresin,
Calcular lmite
Permite calcular el lmite de una expresin, Permite encontrar una solucin aproximada para
Calcular mnimo
objetivo dada,
Calcular serie
Taylor,
Aproximacin de Pad
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
212
Calcular producto
Transformada de Laplace
mada inversa de Laplace de una expresin dada, Permite obtener el MCD de dos polino-
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
Anlisis.
Anlisis
213
Figura 15.26:
Cambiar variable.
Figura 15.27:
Calcular suma.
Maxima
Cambiar variable
Maxima
214
Simplicar
Simplicar expresin
cionales,
Simplicar radicales Factorizar expresin Factorizar complejo Expandir expresin Expandir logaritmos
logexpand,
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,
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
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
Simplicar
215
Figura 15.28:
Simplicar.
Maxima
Maxima
Usando la opcin
216
Figura 15.29:
Maxima
Ahora, es preciso incluir la siguiente sentencia para poder arribar al resultado que se desea mostrar.
Maxima
a4 +
1 a4
a+
1 2 a
a+
1 a
Grcos
Grcos 2D Grcos 3D
Formato de grcos
Grcos
217
Figura 15.30:
Grcos.
Figura 15.31:
Grcos.
Maxima
( %i1) wxplot2d([x*sin(x)],[x,-5,5])$
( %t1)
218
Figura 15.32:
openmath.
Maxima
Si se elije el formato
openmath
x x sen(x)
openmath
(ver
( %i2) wxplot2d([x*sin(x)],[x,-5,5])$
Figura 15.33:
( %i2)
Numrico
219
Numrico
Activa la variable
A real
Devuelve el valor numrico de la expresin actual, Convierte todos los nmeros y funciones
numricas a nmeros decimales de punto otante grandes, Permite establecer el nmero de dgitos sig-
Figura 15.34:
Maxima
Numrico.
Maxima
220
Maxima
Figura 15.35:
Ayuda.
Ayuda
Ayuda de Maxima
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,
Maxi-
A propsito
Muestra funciones de
Maxima
Mostrar sugerencias
wxMaxima,
Tutoriales
wxMaxima, Maxima
que se
Informacin de compilacin
est usando,
Ayuda
221
Informar de error
del proyecto
Maxima
y de
Lisp
Maxima,
Comprueba actualizaciones
wxMaxima,
Acerca de...
CAPTULO
16
El paquete
draw
Gnuplot. Este paquete incorpora una considerable variedad de funcionmero de objetos grcos bidimensionales y tridimensionales. Para poder utilizar el paquete
la me-
draw
gr2d
y/o
gr3d,
esta
funcin
es
un
atajo
para
para
222
223
puntos bidimensionales
puntos bidimensionales
equivale a
puntos bidimensionales
xi ,
de alturas
hi
y anchos
wi
polgono
polgono
rectngulo
de
vrtices
opuestos
(x1 , y1 )
(x2 , y2 )
cuadriltero
tringulo
imagen
im
desde el vrtice
(x0 +
vector
etiquetas para grcos bidimensionales sector elptico de centro respectivamente, ngulo plitud
(xc , yc ) con a y b,
en el
comenzando
224
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 )
expresin implcita
tada en el rectngulo
[xmin , xmax ]
[ymin , ymax ]
curva paramtrica bidimensional, cuyo parmetro
tmin
hasta
t tmax
toma
Las funciones
draw, draw2d
y
Gnuplot,
draw3d
wxdraw, wxdraw2d
wxdraw3d
wxMaxima
ser cambiado en tiempo real. En este captulo se van a mostrar los resultados mediante las funciones
wxdraw, wxdraw2d
y
wxdraw3d,
trados pueden ser ejecutados, sin ningn problema, con las funciones
draw, draw2d
Maxima
draw3d,
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]]
225
Maxima
points
a la variable
p,
draw2d.
( %t2)
( %o2)
Maxima
Con
gr2d
draw
draw2d.
( %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
draw
Maxima
( %t4)
( %o4)
Maxima
( %t5)
( %o5)
227
Maxima
( %t6)
( %o6)
Maxima
( %t7)
( %o7)
228
draw
Maxima
( %t8)
( %o8)
Maxima
( %t9)
( %o9)
229
Maxima
( %t11)
( %o11)
Maxima
(10, 10),
( %t12)
( %o12)
230
draw
Maxima
label.
(0, 0 3).
( %t13)
( %o13)
Maxima
360 ,
cuyo centro es el
1,
su semieje vertical es
2.
( %t14)
( %o14)
231
Maxima
x x2 ,
con
1 x 1.
( %t15)
( %o15)
Maxima
x3 + y 3 3xy = 0
en el rectngulo
[1, 2]
[1, 2].
( %t16)
( %o16)
232
draw
Maxima
t (sin(t), sin(2t)),
con
0 t 2 .
( %t17)
( %o17)
Maxima
t sen(t),
tal que
0 t 2 .
( %t18)
( %o18)
233
Maxima
1 x 1, 1 y 1
que
1 2
< x2 + y 2 < 1.
( %t19)
( %o19)
Maxima
draw2d.
( %t20)
( %o20)
234
draw
Opcin
point_size point_type points_joined
Descripcin
establece el tamao de los puntos dibujados (debe ser un nmero no negativo)
false
Opcin
fill_color fill_density
Descripcin
especica el color del relleno del polgono especica la transparencia
1,
incluidos)
235
Opcin
nticks border transparent fill_color
Descripcin
indica el nmero de puntos a utilizar para generar las grcas
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
Descripcin
vector con sus componentes tomando valores enteros en el rango desde
36
+36
Opcin
head_both head_length head_angle head_type unit_vectors
Descripcin
indica si el vector ser bidireccional o no indica, en las unidades del eje los vectores
45
filled false
especica cmo se habrn de dibujar las echas de los vectores especica si los vectores se dibujan con mdulo unidad
236
draw
Opcin
label_ alignment label_ orientation
Descripcin
especica el color que tendr el vector especica el color que tendr el vector
Opcin
nticks adapt_depth
Descripcin
indica el nmero de puntos a utilizar para generar las grcas
10
Opcin
filled_func fill_color
Descripcin
establece cmo se van a rellenar las regiones limitadas por las grcas especica el color para rellenar las regiones limitadas por las grcas
Opcin
ip_grid ip_grid_in
Descripcin
establece la rejilla del primer muestreo para la grca establece la rejilla del segundo muestreo para la grca
237
Opcin
nticks
Descripcin
indica el nmero de puntos a utilizar para generar las grcas
Opcin
fill_color x_voxel
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
a utilizar
por el algoritmo utilizado para gracar regiones denidas por desigualdades y operadores booleanos
line_width
line_type
que, por
point
label.
238
draw
Opcin
color line_width line_type key
Descripcin
especica el color para dibujar lneas, puntos y bordes de polgonos
solid
solid
dots)
Opcin
proportional_ axes
Descripcin
indica si una escena bidimensional se dibujar con los ejes proporcionales bles: a sus longitudes relativas (valores posi-
none
xy)
auto auto
(valores posibles:
[xmin , xmax ])
(valores posibles:
[ymin , ymax ])
239
Opcin
logy terminal
Descripcin
permite especicar si el eje rtmica selecciona a utilizar (valores el por posibles terminal
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:
12
false auto
xy
almacena una cadena con el ttulo de la escena 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
draw
Opcin
xtics_axis
Descripcin
indica si las marcas y sus etiquetas se dibujan sobre el propio eje
x, o se colocan a lo
ytics ytics_axis xaxis xaxis_width xaxis_type xaxis_color yaxis yaxis_width yaxis_type yaxis_color file_bgcolor
solid
el eje
dots)
(valores admisibles:
y
pero
xaxis_type
gif
png, jpg
rgb )
delay
gif
ani-
eps_width
12
cm )
eps
del y
eps_color eps_height
12
cm ) del ar-
241
Opcin
pdf_width
Descripcin
especica el ancho (en do por los terminales
cm )
y
cm ) del
especica la anchura del chero de imagen de bits generado por los terminales
png y
inserta cdigo
Gnuplot
Aqu se usa
user_preamble
xy
a la opcin
proportional_axes.
( %t1)
( %o1)
242
draw
Maxima
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.
243
Maxima
Esto almacena las coordenadas de los puntos de interseccin, previamente calculados, en la variable
pts.
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
draw
Maxima
a.
( %i6) a(t):=[t,sin(t)] $
Maxima
a.
Maxima
y la lista
de
t0 ,
t0.
Maxima
a,
un conjunto de vectores
( %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 ]$
245
Maxima
( %i12) wxdraw2d(objetos);
( %t12)
( %o12)
Maxima
a.
Maxima
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
draw
Maxima
( %i16) wxdraw2d(objetos);
( %t16)
( %o16)
Maxima
( %t17)
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
y ymax
expresin implcita
satisface
tmin t
tmax
supercie denida paramtricamente, cuyos parmetros satisfacen
umin
u umax
tisfacen
vmin v vmax
funcin cilndrica
max
funcin esfrica tisfacen
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
248
draw
Maxima
Aqu se genera, en forma aleatoria, un conjunto de puntos tridmensionales. Luego se muestra la grca de los dichos puntos.
( %t2)
( %o2)
Maxima
Asignando el valor
true
a la opcin
plot_joined
p.
( %t3)
( %o3)
249
Maxima
Aqu se muestra la grca del vector cuyo punto de aplicacin es el origen y cuya parte vectorial es
(1, 1, 1).
( %t4)
( %o4)
Maxima
(0, 0, 1).
( %t5)
( %o5)
250
draw
Maxima
con
0 x 2
0 y 2 .
( %t6)
( %o6)
Maxima
x2 + y 2 4)2 + z 2 = 4,
con
6 x 6, 6 y 6
2 z 2.
( %t7)
( %o7)
251
Maxima
t t (cos t, sen t, 8 ),
con
0 t 4 .
( %t8)
( %o8)
Maxima
Aqu
se
muestra
la
grca
de
la con
supercie
denida y
0 u 2
( %t9)
( %o9)
252
draw
Maxima
(z, t) cos z ,
con
2 z 2
0 t 2 .
( %t10)
( %o10)
Maxima
(a, t) 1,
con
0 a 2
0 t .
( %t11)
( %o11)
253
Maxima
mesh.
( %t13)
( %o13)
Maxima
cos
t 2 , generada por la 10
t (cos t, t, 0),
con
0 t 4 .
( %t14)
( %o14)
254
draw
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
Descripcin
indica el nmero de coordenadas de
30
Opcin
x_voxel y_voxel z_voxel
Descripcin
indica el nmero de voxels en la direccin
a utilizar por el
algoritmo implementado
10
y z
a utilizar por el
algoritmo implementado
10
255
Opcin
nticks
Descripcin
indica el nmero de puntos a utilizar para generar las grcas
Opcin
xyplane
Descripcin
coloca el plano lor
xy
en escenas se colo-
false, el plano xy
ca automticamente; en cambio, si toma un valor real, ste intersectar con el eje ese nivel)
rot_vertical
60
x)
para situar
el punto del observador en las escenas tridimensionales (el ngulo debe pertenecer al intervalo
[0, 180])
256
draw
Opcin
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
x, y
z, tra-
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
Gnuplot.
presin
activando el modo a
pm3d
cepto en
Si se da una ex-
257
Opcin
surface_hide contour
Descripcin
establece si las partes ocultas se mostrarn o no en las supercies permite decidir dnde colocar las lneas de nivel (valores posibles:
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)
( %t1)
( %o1)
258
draw
Maxima
Esto dene una curva, algunos puntos sobre sta y algunos vectores tangentes a la misma.
Maxima
( %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)
259
Maxima
Esta es la grca de
( %t35)
( %t9)
( %o9)
Maxima
Esta es la grca de
( %t35)
( %t10)
( %o10)
260
draw
Maxima
( %t36)
( %t11)
( %o11)
draw
ja los valores para las opciones grcas del usuario (llamando a la funcin sin argumentos se borran las opciones jadas por el usuario)
261
Maxima
Maxima
( %t2)
( %o2)
Descripcin
indica el nmero de columnas a considerar cuando se realizan grcos mltiples
262
draw
Maxima
Maxima
Con
draw
( %i3) wxdraw(f1,f2) $
( %t3)
( %o3)
Maxima
Con la opcin
columns
( %i4) wxdraw(f1,f2,columns=2) $
( %t4)
( %o4)
263
Maxima
( %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)
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.
Figura 16.1:
264
draw
with_slider_draw with_slider_draw3d
funcin
wxdraw2d
funcin
para
animar
grcos
de
wxdraw3d
para
animar
grcos
de
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
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
( %t1)
( %o1)
Maxima
265
Maxima
a,
Maxima
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
draw
Maxima
( %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
El paquete
plotdf
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-
desde otra interface diferente (esto quiere decir que con no puede usarse una funcin como
Maxima wxMaxima
Maxima
plotdf.
( %i9) load(plotdf)$
Maxima
y = ex + y
y la solucin que
(2, 0.1).
267
268
plotdf
Figura 17.1:
( %i10)
Maxima
y = x y2
y la solucin de
y (1) = 3.
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
269
Figura 17.2:
( %i11)
Figura 17.3:
( %i12)
270
plotdf
Figura 17.4:
Maxima
( %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
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.
expr
destino
Maxima
271
272
Maxima
Maxima
d:/maximatex/.
(y + x)2 , xy
ejemplo.tex
ubi-
op
ningn entorno, devolver el que tenga por defecto asigna el entorno T EX al operador
op
despus )
devuelve el entorno T EXque se aplica a expresiones para las cuales el operador de mayor rango no tiene entorno T EXasignado
despus )
273
Maxima
Maxima
Maxima
Maxima
Con la funcin set_tex_environment_default es posible cambiar el entorno T EX. En este caso se ha anulado todo entorno.
Maxima
Adems de traducir expresiones individuales a T tamEX, 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
tex,
en la casilla
Nombre de la Exportar
Figura 18.1:
Figura 18.2:
Maxima
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.
275
expr
para Fortran
Maxima
( %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.
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.
Maxima
incluye operadores relacionales y lgicos, as como estructuras de control (que se utilizan para controlar el ujo del programa en una rutina). En
operador recibe el nombre de injo cuando ste debe escribirse entre los operandos, por ejemplo el operador para ciertos operandos
p and q ,
q.
1 Del
Lisp.
lisp
276
277
aquel que debe escribirse antes del operando, por ejemplo el operador
not
cuya sintaxis es
not p,
p.
Maxima,
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
equal
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
278
Maxima
if.
Maxima
En este ejemplo se aade el resultado ha obtener en caso de que la condicin sea falsa.
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,
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).
Maxima
for.
279
Maxima
Maxima
while
se utiliza
for.
Maxima
unless
tambin se utiliza
for.
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
280
op(expr) args(expr)
expr
permite obtener una lista cuyos elementos son los argumentos de la expresin
expr
Maxima
a + b,
expr.
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.
Maxima
apply.
Maxima
281
Maxima
Maxima
apply.
Maxima
integrate,
Maxima
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.
282
Maxima
map, lambda
funcional.
apply,
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
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
283
Maxima
G,
G.
Maxima
min.
Maxima
Maxima
f,
Maxima
284
( %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 ]
triangulo
triangulo.
R2
( %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)]) )$
ejemplo
285
Maxima
no colineales, la fun-
triangulo
( %i2) p:[ [1,2],[3,-1],[2,3] ] $ ( %i3) triangulo(p); ( %o3) [ Area : 5/2 u2, Baricentro : [2, 4/3] ]
Maxima
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
Maxima
Puesto que, en este caso, los puntos del conjunto les, la funcin
son colinea-
triangulo
( %i6) p:[ [1,1],[2,2],[3,3] ] $ ( %i7) triangulo(p); ( %o7) Los puntos son colineales
Maxima
circunferencia
( %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
no colineales, la fun-
circunferencia
puntos.
ejemplo
287
Maxima
Esto muestra la grca de la circunferencia previamente analizada, conjunatmente con los puntos que la denen.
( %t11)
( %o11)
Maxima
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-
ejemplo
y de extensin
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
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.
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
ejemplo.lisp
( %i15) load(d:/maximapackages/ejemplo.lisp) $
Maxima
ejemplo.lisp
( %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).
uca.es/repos/maxima
5.18.
http://knuth.
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).
www.telefonica.net/web2/biomates/maxima/i-math.
(2008).
http://softwarelibre.uca.es/cursos/maxima/cadiz.
(2006).
289