Beruflich Dokumente
Kultur Dokumente
ISBN
ndice
Prlogo 1. Obtencin de
1.1. 1.2.
Descarga . . . . . . . . . . . . . . . . . . . . . . . . . . Instalacin . . . . . . . . . . . . . . . . . . . . . . . . .
Maxima
v
1
1 2
2. Funcionamiento de
2.1. 2.2.
Interfaz de cuaderno
Maxima
Maxima
9
9 10
. . . . . . . . . . . . . . . . . . .
La estructura de
Maxima
12
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 14 17 19 22 23 23 24 25
Comentarios . . . . . . . . . . . . . . . . . . . . . . . . Paquetes en
Maxima
. . . . . . . . . . . . . . . . . . .
4. Clculos numricos
4.1. 4.2. 4.3. 4.4. 4.5. Aritmtica . . . . . . . . . . . . . . . . . . . . . . . . . Resultados exactos y aproximados . . . . . . . . . . . Algunas funciones matemticas . . . . . . . . . . . . . Clculos con precisin arbitraria . . . . . . . . . . . .
26
26 27 30 33 35
Nmeros complejos . . . . . . . . . . . . . . . . . . . .
ii
ndice general
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 . . . . . . . . . . . . . . . . . . Transformacin de expresiones algebraicas . . . . . . . Simplicacin de expresiones algebraicas . . . . . . . . Expresiones puestas en diferentes formas . . . . . . . . Simplicacin con asunciones . . . . . . . . . . . . . . Seleccin de partes de expresiones algebraicas . . . . .
47
47 50 54 56 59 65 66
7. Matemticas simblicas
7.1. 7.2. 7.3. 7.4. 7.5. 7.6. 7.7. 7.8. 7.9. Lmites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diferenciacin . . . . . . . . . . . . . . . . . . . . . . . Integracin Sumas y Productos . . . . . . . . . . . . . . . . . . . . Operadores relacionales y lgicos Ecuaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
68 70 73 78 81 84 85 88 90 92 96
Solucin de Ecuaciones . . . . . . . . . . . . . . . . . . Ecuaciones diferenciales ordinarias Sistemas de ecuaciones diferenciales ordinarias lineales . . . . . . . . . . . . . . . .
8. Matemticas numricas
8.1. 8.2. Solucin numrica de ecuaciones Integrales numricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
97
97 99
9. Funciones y programas
9.1. 9.2. 9.3. Denicin de funciones . . . . . . . . . . . . . . . . . . Reglas de transformacin para funciones . . . . . . . . Funciones denidas a partir de expresiones . . . . . . .
101
101 111 114
10.Listas
10.1. Juntar objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2. Generacin de listas 10.3. Eleccin de elementos de una lista
117
117 118 121
ndice general
iii
10.4. Prueba y bsqueda de elementos de una lista 10.5. Combinacin de listas 10.6. Reordenamiento de listas 10.8. Reorganizacin de listas
. . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.7. Agregar y quitar elementos de una lista 10.9. Funciones adicionales para listas
11.Arrays 12.Matrices
12.1. Generacin de Matrices 12.3. Operaciones matriciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2. Elegir elementos de matrices . . . . . . . . . . . . . . . 12.4. Funciones adicionales para matrices 12.6. Autovalores y autovectores
132 136
136 138 139 144 147 148
13.Conjuntos
13.1. Generacin de conjuntos . . . . . . . . . . . . . . . . . 13.2. Conversiones entre conjuntos y listas . . . . . . . . . . 13.3. Eleccin de elementos de un conjunto . . . . . . . . . . . . . . . . . . 13.4. Prueba y bsqueda de elementos de un conjunto 13.5. Agregar y quitar elementos de un conjunto
150
150 152 153 154 156 157 157 160
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 . . . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . . . . . . .
162
163 165 169 172 174 174 179 180
183
184 192 192
iv
ndice
15.2.2. Opciones locales genricas . . . . . . . . . . . . 15.2.3. Opciones globales . . . . . . . . . . . . . . . . . 15.2.4. Ejemplos ilustrativos . . . . . . . . . . . . . . . 15.3. Objetos grcos tridimensionales 15.4.1. Opciones locales . . . . . . . . . . . . 15.4. Opciones para objetos grcos tridimensionales . . . . . . . . . . . . . . . . . . . . . 15.4.2. Opciones locales genricas . . . . . . . . . . . . 15.4.3. Opciones globales . . . . . . . . . . . . . . . . . 15.4.4. Ejemplos ilustrativos . . . . . . . . . . . . . . . 15.5. Fijacin de valores para opciones . . . . . . . . . . . . 15.6. Grcos mltiples 15.7. Grcos animados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
194 195 198 203 211 211 212 212 214 217 218 220
224
224 228 228
17.Programacin con
17.1. Operadores relacionales y lgicos 17.2. Operadores y argumentos 17.3. Programacin funcional
Maxima
229
. . . . . . . . . . . . 229 232 235 237 . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
ejemplo
. . . . . . . . .
BIBLIOGRAFA
242
Prlogo
Este manual da una introduccin al Software Libre Maxima v5. 21.1, presentndolo como un potente Sistema Algebraico Computacional (Computer Algebraic 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 quedan en el tintero los borradores para la futura elaboracin de un
vi
Introduccin
libro en el que se plasmen los resultados obtenidos en tal curso. Este manual se compone de diecisiete captulos en los cuales se describen resumidamente las principales caractersticas y las funciones incorporadas en el ncleo de paquete incorporado
draw,
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.
R. Ipanaqu
Piura, Per
Captulo 1 Obtencin de
Maxima
Maxima
Maxima
en el sistema
ellos 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 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 asociada 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.
Maxima-5.21.1.exe.
Maxima
Maxima-5.21.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-5.21.1.exe.
el botn
Ejecutar .
Aceptar (g.
Espaol)
1.4).
Siguiente del
cuadro Bienvenido al
Siguiente del
7. Seleccionar la carpeta en la cual se quiere instalar Maxima (generalmente se deja la carpeta que aparece por defecto) y luego
ma.
Siguiente del
(g. 1.9). 9. Seleccionar la carpeta del men Inicio en la cual se quiere ubi-
Maxima
Siguiente del
(g. 1.10).
Siguiente del
Instalar del
Maxima
Siguiente del
Finalizar del
cuadro Com-
Maxima
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).
Maxima.
Captulo 2 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 en el icono de inicio de
Maxima
creando
wxMaxima,
(input), luego presiona (en simultneo) las teclas Shift + Enter para que
Maxima
procese su entrada.
Shift
Maxima etiquetar
Maxima
desde un cuaderno,
( %in)
y despus de presionar
10
Maxima
El usuario digita cesa la entrada, despus etiqueta la entrada con salida etiquetada con
pro-
, y devuelve la respectiva
( %i1) ( %o1)
1+1; 2
wxMaxima.
El ncleo de
Maxima
; + Enter
quit();
entrada para
Maxima Maxima
salir de
Maxima
Con una interfaz basada en texto, el usuario interacta con su ordenador digitando texto mediante el teclado. Para inicializar el comando Cuando
maxima
Maxima
Maxima
signica que esta lista para que el usuario haga su entrada. ste puede entonces digitar su entrada, terminndola con
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.
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 embargo, tambin tiene algunas desventajas con respecto a otras inter12
13
faces 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.
Maxima
Un cuaderno que mezcla texto, grcos con entradas y salidas de Maxima.
wxMaxima
documentos interactivos
1 wxMaxima
http://wxmaxima.sourceforge.net
14
En algunos casos, puede que el usuario no necesite usar la interfaz de cuaderno, y que desee en cambio interactuar directamente con el ncleo de al ncleo.
Maxima
Un dilogo con Maxima usando una interfaz basada en texto.
wxMaxima
den verse interactivamente en la pantalla o imprimirse en papel. En los 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.
15
Maxima
Un cuaderno de wxMaxima como documento.
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.
Maxima
Haciendo clic sobre el botn que corresponde a la celda dominante se cierra el grupo, dejando slo la primera celda visible.
16
Maxima
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.
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.
Maxima
El recuadro muestra los menes y mtodos abreviados de teclas para insertar celdas con diferentes estilos.
17
Maxima
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.
wxMaxima
del men
denida para los estilos de los ttulos, secciones, etc. Sin embargo, es posible cambiar algunos aspectos de dicha conguracin haciendo clic en la opcin
Preferencias
Editar.
Maxima
Primer paso para congurar las opciones y estilos.
tana y
Preferencias se desplega la venConguracin de wxMaxima que incorpora dos pestaas: Opciones Estilo.
Despus de hacer clic en la opcin
18
Hacer coincidir los parntesis en los controles de texto (de la pestaa Opciones), Maxima cierra automticamente cualquier parntesis que
cin se abra en una celda de estilo Input. Al desactivar esta casilla, y ha-
cer clic en
ningn parntesis sino que esperar a que el usuario lo haga. En la pestaa tante intuitiva.
Aceptar ,
Maxima
Estilo
Maxima
Activando o desactivando las casillas de vericacin se cambia la conguracin de las opciones.
Por ejemplo, congurando los estilos con los valores indicados en las siguientes tablas se obtienen cuadernos con un aspecto elegante.
19
Estilos Nombre de funciones Celda de texto Celda de subseccin Celda de seccin Celda de ttulo Fondo de celda de texto Fondo
Tam. 12 12 16 18 24
Maxima
Un cuaderno de wxMaxima como documento, despus de haber editado la conguracin de estilo.
Maxima
estn descritas en el
20
Maxima.
Maxima
Un ejemplo de bsqueda de informacin bsica sobre una funcin en el la
ndice
de
Ayuda
de Maxima
describe2 .
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
describe,
2 describe
false
describe
devuelve
true
si en-
en caso contrario.
21
?name ??name
equivale a equivale a
describe("name")
describe("name",inexact)
Maxima
Esta sentencia da informacin de la funcin incorporada
max.
( %i1)
- -Funcin:
Si `get(trylevel, maxmin)' es
> |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
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
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)
lineal).
describe("plus",inexact);
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':
22
Maxima
Una vez elegidas las opciones (en este caso 0 y 2) la sentencia devuelve
true.
( %i2)
lineal).
describe("plus",inexact);
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 :
Detecta los segmentos poligonales almacenados en la variable global `boundaries_array' con al menos un vrtice dentro del rectngulo denido por los extremos izquierdo- y 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( %))$
-superior
-inferior derecho-.
( %o2)
true
3.5 Reinicio
La forma brusca de reiniciar
Maxima
es saliendo de
23
Maxima. Para reiniciar Maxima sin salir de Maxima Reiniciar Maxima del men Maxima.
se elige la opcin
Maxima
Reiniciando Maxima en una interfaz de cuaderno.
3.6 Comentarios
Los comentarios son toda una serie de caracteres que no afectan los clculos. En
Maxima
/. /comentario /
con esta sintaxis
comentario
es inter-
Maxima
Aqu se muestra un clculo y un comentario.
( %i3) ( %o3)
3.7 Paquetes en
Maxima
Maxima es que es un
24
en
Maxima
Maxima,
siempre es posible aadir ms funciones. Para muchos tipos de clculos, lo incorporado en la versin estndar de
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.
load(simplex); minimize_lp(x+y,[3x+2y>2,x+4y>3]); 9 7 1 [ , [y = , x = ]] 10 10 5
El hecho de que
Maxima
Maxima
concierne, no hay en realidad ninguna diferencia entre las funciones denidas en paquetes y las funciones incorporadas en
Maxima.
Maxima
se
25
Maxima
La funcin para calcular la raz cuadrada debe tener solamente un argumento.
( %i6)
sqrt(4,5);
Maxima
Clic en el botn
Ctrl C +
Maxima
Maxima
Aqu tenemos la suma de dos nmeros.
( %i1) ( %o1)
5.6+3.7; 9.3
Maxima
Con
( %i2) ( %o2)
5.6*3.7; 20.72
Maxima
Es posible digitar operaciones aritmticas haciendo uso de los parntesis.
( %i3) ( %o3)
(2+3)^3-4*(6+7); 73
26
27
x ^y
x y x x /y x y z x +y +z
Maxima,
Maxima
Maxima da un resultado exacto para
2300 .
( %i4) ( %o4)
Maxima
numer
ximado, tal como lo dara una calculadora, para ello puede usar la
float
o la variable
Maxima
Esto da un resultado numrico aproximado.
( %i5) ( %o5)
28
float(expr )
expr
equivale a
float(expr )
expr
expr
Maxima
Esta forma tambin da un resultado numrico aproximado.
( %i6) ( %o6)
Maxima
Para el clculo previo la constante
numer
no es til.
( %i7) ( %o7)
Maxima
Maxima puede dar resultados en trminos de nmeros racionales.
( %i8) ( %o8)
1/3+2/7; 13 21
Maxima
En este caso, tanto con aproximado.
float
como con
numer,
( %i9) ( %o9)
1/3+2/7,float; 0.61904761904762
29
( %i10) ( %o10)
1/3+2/7,numer; 0.61904761904762
Maxima
asume que es
Maxima
Maxima
Esto es tomado como un nmero racional exacto, y es llevado a una fraccin irreducible.
( %i11) ( %o11)
26/78; 1 3
Maxima
Cuando el usuario digita un nmero con un punto decimal explcito, Maxima produce un resultado numrico aproximado.
( %i12) ( %o12)
26.7/78; 0.34230769230769
Maxima
Aqu, la presencia del punto decimal seguido del cero hace que Maxima d un resultado numrico aproximado.
( %i13) ( %o13)
26.0/78; 0.33333333333333
Maxima
Cuando cualquier nmero en una expresin aritmtica es digitado con un punto decimal seguido del cero, el usuario obtiene un resultado numrico aproximado.
( %i14) ( %o14)
5.0+9/78-5/8; 4.490384615384615
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) (loge x)
(ex )
logaritmo neperiano
n! n !!
abs(x ) round(x ) mod(n,m ) floor(x ) random(x ) max(x,y , . . .), min(x,y , . . .) ifactor(n )
factorial de
1, 2, . . . , n) 13. . .n (n
(
impar)
24. . .n
par)
mdulo
entre
m)
(resto de la divisin de
mayor entero de
x
r, tal que 0 0 < r < x, si x R+
r < x,
si
xN
mximo, mnimo de
x,y,. . .
factores primos de
31
Maxima
Esto da
loge 15,7.
( %i15) ( %o15)
log(15.7); 2.753660712354262
Maxima
Maxima no tiene denida una funcin para el logaritmo de base 10 u otras bases.
Para salvar esta dicultad el usuario puede hacer uso de la igualdad matemtica
logb x = loge b . As, por ejemplo, lo siguiente devuelve un resultado numrico para e log2 1024.
log x
( %i16) ( %o16)
log(1024)/log(2),numer; 10.0
Maxima
Esto devuelve
64
( %i17) ( %o17)
sqrt(64); 8
Maxima
Esto da un valor numrico aproximado para
6.
( %i18) ( %o18)
sqrt(6),numer; 2.449489742783178
Maxima
La presencia explcita de un punto decimal seguido de un cero le indica a Maxima que d un resultado numrico aproximado.
( %i19) ( %o19)
sqrt(6.0); 2.449489742783178
32
Maxima
En este caso Maxima devuelve un nmero en forma simblica exacta.
( %i20) ( %o20)
sqrt(6); 6
Maxima
Aqu tenemos un resultado entero exacto para
40 39 . . . 1.
( %i21) ( %o21)
40!; 815915283247897734345611269596115894272000000000
Maxima
Esto da un valor numrico aproximado del factorial.
( %i22) ( %o22)
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
Maxima
Este es el valor numrico de
2 .
( %i23) ( %o23)
%pi^2,numer; 9.869604401089358
33
Maxima
Esto devuelve el valor exacto para
sen(/2).
( %i24) ( %o24)
sin( %pi/2); 1
float, numer
Maxima
Maxima
Maxima
con
valor numrico de
expr
calculado con
fecto es 16)
Maxima
Esto devuelve el valor numrico de
( %i25) ( %o25)
Maxima
Esto devuelve
con 50 dgitos.
( %i26) ( %o27)
34
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.
Maxima
La cantidad
163 esta bastante prxima a ser entera. Para vericar que el re-
sultado no es, de hecho, un entero, usted tiene que usar la precisin numrica suciente.
( %i28) ( %o29)
21000
do las sentencias aqu descritas encontrar que la salida se muestra truncada en la parte central, en la cual aparece un nmero que indica la cantidad de dgitos faltantes.
Maxima
Esto devuelve una salida de
( %i30) ( %o31)
Para obtener una salida completa se selecciona ascii como el algoritmo de salida matemtica de la opcin Cambiar pantalla 2D del men Maxima y luego se ejecutan las sentencias de ( %i30) . Tngase presente que el algoritmo de salida matemtica, previamente seleccionado (
ascii),
xml.
35
Maxima
Seleccionando
ascii
Maxima
Despus de cambiar el algoritmo de salida matemtica se devuelve la salida 200 dgitos.
con
( %i32) ( %o33)
%i,
igual a
Maxima
1.
Maxima
Esto devuelve como resultado el nmero imaginario
2i.
( %i34) ( %o34)
sqrt(-4); 2 %i
36
Maxima
Esto devuelve la divisin de dos nmeros complejos.
( %i35) ( %o35)
Maxima
Aqu tenemos el valor numrico de un exponencial complejo.
( %i36) ( %o36)
x+iy
en
el argumento
|z|ei
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
%in
salida ante-
%on
i -sima
Maxima
(sec. 3.5).
Maxima
Aqu se tienen las expresiones de la primera entrada y salida.
( %i1) ( %o1)
5^3; 125
37
38
Maxima
Esto agrega 6 a la expresin de la ltima salida.
( %i2) ( %o2)
%+6; 131
Maxima
Esto utiliza las dos expresiones de las salidas previas.
( %i3) ( %o3)
5+ %o1+ %; 261
Maxima
Esto suma las expresiones de las salidas 1 y 3.
( %i4) ( %o4)
Maxima
Aqu se eleva al cuadrado la expresin de la salida 2.
( %i5) ( %o5)
%o2^2; 17161
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)
39
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.
variables
Maxima
Esto inicializa el valor de la variable x con 6.
( %i6) ( %o6)
x:6; 6
Maxima
Donde quiera que aparezca x, Maxima la reemplaza por su valor 6.
( %i7) ( %o7)
x^3-25 191
Maxima
Esto asigna un nuevo valor para x.
( %i8) ( %o8)
x:11+5 16
Maxima
pi es inicializada con el valor numrico de
40
Maxima
Aqu esta el valor de
sqrt(pi).
( %i11) ( %o11)
sqrt(pi) 1.7724538509055160273b0
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.
de usarlos.
Un principio til al usar Maxima.
Maxima
Inicializando el valor de la variable y con 9.
( %i12) ( %o12)
y:9; 9
41
Maxima
Aqu se muestran todas las variables que tienen un valor asignado.
( %i13) ( %o13)
Maxima
Sentencia para quitar el valor asignado a la variable x.
( %i14) ( %o14)
kill(x); done
Maxima
Sentencia para quitar el valor asignado a todas las variables.
( %i15) ( %o15)
kill(values); done
Las variables que el usuario dene pueden tener cualquier nombre. No hay lmite para la longitud de sus nombres. Un inconveniente, sin embargo, es que los nombres de las variables nunca pueden empezar con nmeros. Por ejemplo,
x3
Maxima.
3x
Maxima
He aqu cuatro variables diferentes.
42
Maxima
Con
values visualizamos las nuevas variables a las que se les ha asignado un valor.
( %i20) ( %o20)
Maxima
Es posible realizar operaciones diversas con estas variables.
( %i21) ( %o21)
Maxima
Con
kill(all)
( %i22) ( %o22)
kill(all); done
Maxima
Esta vez
values
( %i23) ( %o23)
values; []
Maxima,
una secuencia de pasos. Si el usuario desea puede realizar cada paso en una lnea separada. A veces, sin embargo, es conveniente ingresar varios pasos en una misma lnea. Es posible hacer esto simplemente separando cada una de las partes ingresadas con punto y coma (si
43
quiere verse las salidas en pantalla) o con signo de dolar (si no quiere verse salida alguna).
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
Maxima
Esto realiza tres operaciones en una misma lnea y muestra todos los resultados.
x:3;y:4;z:x+y; 3 4 7
Maxima
Esto realiza tres operaciones en una misma lnea sin mostrar resultados.
( %i27)
Maxima
Esto realiza tres operaciones en una misma lnea y muestra el resultado de la ltima operacin.
( %i30) ( %o32)
Maxima
44
de hacer que
Maxima
muestre la salida.
expr $
Inhibiendo la salida.
Maxima
Aadiendo un signo de dolar al nal de la lnea se le indica a Maxima que no muestre la salida.
( %i33)
x:47+5$
Maxima
Usando
( %i34) ( %o34)
% 52
Maxima
Esto asigna valores a las variables a y b.
( %i35)
a:45$ b:56$
45
evita la evaluacin de la funcin , pero no de sus argumentos evita la evaluacin de todos los smbolos y llamadas a funciones que hayan en la expresin
a f
expr
Evitando la evaluacin.
Maxima
El operador comilla simple (') aplicado a la variable a evita la evaluacin de sta.
( %i37) ( %o37)
'a a
Maxima
El operador ' aplicado a la funcin
integrate
( %i38) ( %o38)
'integrate(x^3,x);
x3 dx
Maxima
Un uso interesante del operador '.
( %i39) ( %o39)
'integrate(x^3,x)=integrate(x^3,x); x4 x3 dx = 4
Maxima
El operador ' no evita la evaluacin de los argumentos de una funcin.
( %i40) ( %o40)
'integrate((2+3)*x^3,x);
5 x3 dx
46
Maxima
El operador ' aplicado a una expresin.
( %i41) ( %o41)
'(2*sqrt(a)+b*integrate(x^3,x)); b x3 dx + 2 a
Maxima
Otro uso interesante del operador '.
( %i42) ( %o42)
Maxima
es que puede
Maxima
He aqu un tpico clculo numrico.
( %i1) ( %o1)
4 + 36 1; 39
Maxima
Este es un clculo simblico.
( %i2) ( %o2)
7 x 3 x + 6; 4x+6
4 + 36 1 39 7x 3x + 6 4x + 6
47
48
Maxima
El usuario puede digitar cualquier expresin algebraica en Maxima.
( %i3) ( %o3)
x3 + 2 x 1; x3 + 2 x 1
Maxima
Maxima realiza automticamente simplicaciones algebraicas bsicas. Aqu combina a x2 y a 4x2 para dar 3x2 .
( %i4) ( %o4)
x2 + x 4 x2; x 3 x2
Es posible digitar cualquier expresin algebraica usando los operadores enumerados en la seccin 4.1. No debe olvidarse ingresar el asterisco para el producto, por ejemplo:
x y, de lo contrario Maxima
Maxima
Maxima reordena y combina trminos usando las reglas estndares del lgebra.
( %i5) ( %o5)
x y + 2 x2 y + y2 x2 2 y x; x2 y2 + 2 x2 y x y
Maxima
He aqu otra expresin algebraica.
( %i6) ( %o6)
(x + 2 y + 1) (x 2)2;; (x 2)2 (2 y + x + 1)
Maxima
La funcin
expand
( %i7) ( %o7)
49
Maxima
factor
hace lo inverso de
expand.
( %i8) ( %o8)
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
x(4y).
interpretar como
x4 y .
Maxima
He aqu una frmula ms complicada, que requiere de varios parntesis.
( %i9) ( %o9)
sqrt(2)/9801 (4 n)! (1103 + 26390 n)/(n!4 + 1); 2 (26390 n + 1103) (4 n)! 9801 (n!4 + 1)
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
Maxima utiliza reglas estndares del lgebra para sustituir
( x + 1)4
por
(x+1)2 .
( %i10) ( %o10)
sqrt(x + 1)4; 2 (x + 1)
Maxima
Maxima no conoce ninguna regla para esta expresin, as que deja expresin en
la forma original que usted le dio.
( %i11) ( %o11)
50
Maxima
x+x
en
2 x,
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
Maxima
Esto realiza la regla de sustitucin
x=3
en la expresin
1 + 2x.
( %i12) ( %o12)
1 + 2 x, x = 3; 7
Maxima
Tambin es posible sustituir es sustituida por
2 y.
( %i13) ( %o13)
1 + x + x2, x = 2 y; 2 y + (2 y) + 3
51
Maxima
Maxima trata las reglas de sustitucin como cualquier otra expresin simblica.
( %i14) ( %o14)
x = y + 3; x=y+3
Maxima
Esto aplica la regla de sustitucin ltima a la expresin
x2 9.
( %i15) ( %o15)
x2 9, %; (y + 3)2 9
Maxima
Es posible aplicar varias reglas de sustitucin juntas.
( %i16) ( %o16)
(x + y) (x y)2, x = 3, y = 1 a; 2 (4 a) (a + 2)
La funcin
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.
Maxima
Esto asigna el valor de
x.
( %i17) ( %o17)
x : 3; 3
Maxima
Ahora
( %i18)
x2 1;
52
( %o18)
Maxima
Esto asigna la expresin
1+a
x.
( %i19) ( %o19)
x : a + 1; a+1
Maxima
Ahora
es reemplazado por
a + 1.
( %i20) ( %o20)
x2 1; 2 (a + 1) 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
( %i21) ( %o21)
x + 5 2 x; 2 (a + 1) + a + 6
53
Maxima
Esto quita el valor que asign a
x.
( %i22) ( %o22)
kill(x) done
Maxima
Ahora
no tiene ningn valor denido, as que puede ser utilizado como variable
puramente simblica.
( %i23) ( %o23)
x + 5 2 x; 5x
Los lenguajes de programacin tradicionales que no soportan el clculo simblico permiten que las variables sean utilizadas solamente como nombres para objetos, tpicamente nmeros, que se han asignado como valores para ellos. En
Maxima,
sin embargo,
se puede
tambin tratar como variable puramente formal, a la cual se le puede aplicar varias reglas de transformacin. Por supuesto, si el usuario da explcitamente una denicin, por ejemplo sustituida siempre por
x : 3,
entonces
ser
3,
Debe recordarse que las deniciones explcitas por ejemplo tienen un efecto global. Por otra parte, un reemplazo tal como
x:3
expr , x = 3
afecta solamente a la expresin especca
expr.
Es posible mezclar siempre reemplazos con asignaciones. Con asignaciones, se puede dar nombres a las expresiones en las cuales se desea hacer reemplazos, o a las reglas que se desea utilizar para hacer los reemplazos.
Maxima
Esto asigna un valor al smbolo
t.
( %i24) ( %o24)
t : x2 + 1; x2 + 1
54
Maxima
Esto asigna un valor al smbolo
t.
( %i25) ( %o25)
t : x = 2; 5
Maxima
Esto encuentra el valor de
x.
( %i26) ( %o26)
t, x = 5 a; 25a2 + 1
Maxima
Esto encuentra el valor de resultado numricamente.
cuando
es sustituido por
%pi,
y luego evala el
( %i27) ( %o27)
x + 2x + 1. Maxima
2
(x + 1)2
puede ser
de funciones para hacer conversiones entre las diferentes formas de expresiones algebraicas.
Maxima
expand
da la forma expandida de una expresin, con los productos y las potencias desarrolladas.
( %i28) ( %o28)
expand((x + 1)2); x2 + 2 x + 1
55
expand(expr )
equivale a escribe
expand(expr )
como un producto de fac-
expr
factor(expr )
Maxima
factor
recupera la forma original.
( %i29) ( %o29)
Maxima
Es fcil generar expresiones complicadas con
expand.
( %i30) ( %o30)
Maxima
factor
a menudo le da expresiones ms simples.
( %i31) ( %o31)
%, factor; 4 (3 y + x + 1)
Maxima
Hay algunos casos donde
factor
( %i32) ( %o32)
56
Maxima
En este caso,
expand
( %i33) ( %o33)
%, expand; x8 1
rat(expr ) ratsimp(expr )
convierte cional
expr
simplica la expresin
expr
y todas
equivale a aplica
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
( %i34)
57
( %o34)
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.
( %i35) ( %o35)
Maxima
ratsimp
permite volver a la forma original de la expresin.
( %i36) ( %o36)
ratsimp( %); 1 41 x
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.
( %i37) ( %o37)
sin(x/(x2 + x)) = exp((log(x) + 1)2 log(x)2); 2 2 x sen = %e(log x+1) log x 2+x x
Maxima
ratsimp
simplica los argumentos de tales funciones.
( %i38) ( %o38)
58
Ante expresiones no racionales, una llamada a sern necesarias ms de una llamada a precisamente
ratsimp
puede no
fullratsimp.
ratsimp,
Maxima
Esto dene la variable
expresion.
( %i39) ( %o39)
Maxima
En general,
( %i40) ( %o40)
rat(expresion); xa/2
4
2 xa/2 xa 1
+1
Maxima
Con
ratsimp
( %i41) ( %o41)
ratsimp(expresion); x2 a 2 xa + 1 xa 1
Maxima
Con
fullratsimp
( %i42) ( %o42)
fullratsimp(expresion); xa 1
59
Maxima
funciones para convertir expresiones de una forma a otra. Los ms comunes de estas funciones son
expand, factor
ratsimp.
Sin em-
bargo, 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.
( %i43) ( %o43)
Maxima
expandwrt
expande el numerador de la expresin, pero deja el denominador en forma factorizada.
( %i44) ( %o44)
expandwrt(e, x); x3 3x 2 + 2 2 2 (x 3) (x + 1) (x 3) (x + 1) (x 3) (x + 1)
60
Maxima
expand
expande todo, incluyendo el denominador.
( %i45) ( %o45)
expand(e); x3 3x + x3 5 x2 + 3 x + 9 x3 5 x2 + 3 x + 9 2 x3 5 x2 + 3 x + 9
Maxima
partfrac
separa la expresin en trminos con denominadores simples.
( %i46) ( %o46)
Maxima
factor
factoriza todo, en este caso reproduce la forma original.
( %i47) ( %o47)
factor( %); 2 (x 1) (x + 2) 2 (x 3) (x + 1)
collectterms(expr,var )
var
Maxima
He aqu una expresin algebraica en dos variables.
( %i48) ( %o48)
61
Maxima
Esto agrupa los trminos de
x.
( %i49) ( %o49)
Maxima
Esto agrupa juntas las potencias de
y.
( %i50) ( %o50)
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,
Maxima
arbitrarios de reglas de transformacin para hacer diversas conversiones . Sin embargo, hay algunas funciones incorporadas adicionales de
Maxima
trigexpand(expr )
expr
tan, sec,
1 Para
scsimp
defrule
en la ayuda de Maxima.
62
trigreduce(expr,var )
combina productos y potencias de senos y cosenos trigonomtricos e hiperblicos de otros que son mltiplos de
trigreduce(expr )
si no se de
expr
equivale a
devuelve una forma cannica simplicada cuasi-lineal de una expresin trigonomtrica convierte las funciones trigonomtricas e hiperblicas de
expr
a exponenciales
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 )
rectform(expr )
r %e %i
reales
equivalente a
expr,
con
equivale a
polarform(expr )
simplica la expresin
expr,
que pue-
radcan(expr )
n, se extraen
4x2 2x)
63
logcontract(expr )
analiza do ma en
la
expresin de
expr
la
refor-
transforman-
a1*log(b1)+a2*log(b2)+c
de la forma
expr ,logcontract
Maxima
Esto expande la expresin trigonomtrica, escribindola de modo que todas las funciones tengan argumento x.
( %i51) ( %o51)
Maxima
Esto reduce la expresin usando ngulos mltiples.
( %i52) ( %o52)
Maxima
Esto expande el seno asumiendo que
son reales.
( %i53) ( %o53)
Maxima
Con
logcontract
( %i54) ( %o54)
64
expand y factor
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
radcan
radexpand:all.
Maxima
Maxima no expande automticamente potencias no enteras de productos y cocientes.
( %i55) ( %o55)
sqrt(x5 y/w3); x5 y w3
Maxima
radcan
hace la expansin.
( %i56) ( %o56)
%, radcan; 5 x2 y w2
3
Maxima
En este caso Maxima aplica una equivalencia matemtica.
( %i57) ( %o57)
Maxima
Utilizando la variable opcional
pasa
( %i58) ( %o58)
65
pred1 , . . . , predn
assume
Maxima
assume
devuelve una lista con los predicados que han sido aadidos al contexto.
( %i59) ( %o59)
Maxima
Maxima realiza simplicaciones asumiendo los predicados ingresados.
( %i60) ( %o60)
[sqrt(x2), sqrt(y)]; x, y
Maxima
Otra simplicacin asumiendo los predicados ingresados.
( %i61) ( %o61)
sqrt(x2 y2 ); x y
Maxima
forget
borra los predicados previamente establecidos.
( %i62) ( %o62)
66
xn
en
expr
puede omitirse si es
hipow
en
expr
(si
no aparece en
expr,
devuelve 0)
expr
que se especi-
n2
sucesivamente)
Comandos para seleccionar partes de polinomios.
Maxima
He aqu una expresin algebraica.
( %i63) ( %o63)
e : expand((1 + 3 x + 4 y2)2); 16 y4 + 24 x y2 + 8 y2 + 9 x2 + 6 x + 1
Maxima
Esto da el coeciente de
en
e.
( %i64) ( %o64)
coeff(e, x); 24 y2 + 6
Maxima
hipow(expr ,y)
da la mayor potencia de
( %i65) ( %o65)
hipow(e, y); 4
67
Maxima
Esto da el cuarto trmino en
e.
( %i66) ( %o66)
part(e, 4); 9 x2
num(expr ) denom(expr )
devuelve el numerador de
expr
Maxima
He aqu una expresin racional.
( %i67) ( %o67)
Maxima
denom
selecciona el denominador.
( %i68) ( %o68)
denom(r); 2 (2 y)
Maxima
denom
da 1 para las expresiones que no son cocientes.
( %i69) ( %o69)
denom(1/x + 1/y); 1
xx0
l f m l f m l f m
xx+ 0
xx 0
Maxima
He aqu la expresin
sen x . x
( %i1) ( %o1)
f : sin(x)/x; sin(x) x
Maxima
Si se sustituye x por 0, la expresin se hace 0/0, y se obtiene un mensaje de error.
( %i2)
f, x = 0;
68
69
Maxima
Si se evala
sen(x) x
( %i3) ( %o3)
f, x = 0,01; 0,99998333341667
Maxima
Esto encuentra el lmite de
sen(x) x
cuando x tiende a 0.
( %i4) ( %o4)
limit(f, x, 0); 1
+
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
Esto da un resultado para
1 .
( %i5) ( %o5)
limit(1 minf);
70
Maxima
He aqu la simplicacin de una expresin que incluye un innitesimal mayor que cero.
( %i6) ( %o6)
limit(x + zeroa); x
7.2 Diferenciacin
diff(f,x ) diff(f,x,n ) diff(f,x1 , n1 , . . . , xm , nm ) diff(f )
Diferenciacin con Maxima.
res-
n -esima derivada de f f
res-
con
Maxima
He aqu la derivada
xn
con respecto a
x.
( %i7) ( %o7)
Maxima
Maxima conoce las derivadas de todas las funciones matemticas estndar.
( %i8) ( %o8)
71
Maxima
La tercera derivada con respecto a
x.
( %i9) ( %o9)
Maxima
diff(f,x )
es como
d dx f , mientras
diff(f )
df .
d(xn ).
del(x) y del(n) son los diferenciales
Maxima
Esto da la diferencial total respectivamente.
dx
dn,
( %i10) ( %o10)
As como se trata variables simblicamente, tambin es posible tratar funciones simblicamente en forma explcita para la funcin
ma
f.
Maxi-
depends.
Maxima
Esto declara la dependencia
f (x2 ).
( %i11) ( %o11)
Maxima
Ahora Maxima puede utilizar la regla de cadena para simplicar la derivada.
( %i12) ( %o12)
diff(2 x f, x); d 4 f x2 + 2 f d x2
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
Esto declara las dependencias
u(x)
v(x).
( %i13) ( %o13)
Maxima
Aqu se obtiene una frmula para
d dx
(uv ),
donde
u = u(x)
v = v(x).
( %i14) ( %o14)
d dx
u v
Maxima
Esto permite apreciar todas las dependencias declaradas hasta el momento.
( %i15)
dependencies;
73
( %o15)
Maxima
Con esta sentencia se borran todas las dependencias.
( %i16) ( %o16)
7.3 Integracin
integrate(f,x ) integrate(f,x,a,b ) integrate(f=g,x )
la integral indenida la integral denida
f dx f dx
b a
f dx =
gdx
por que
changevar('expr,(x, y), hace el cambio de variable dado y,x ) (x, y) = 0 en la expresin expr
depende de
y)
Integracin.
%c
Maxima
Para calcular la integral
xn dx,
Maxima, pregunta si
n + 1 = 0 o n + 1 = 0. En n + 1 = 0, es decir, n = 1.
( %i17)
Is
n+1
integrate(xn , x);
zero or nonzero? n;
74
( %o17)
xn+1 n+1
Maxima
He aqu la integral
xn dx,
cuando
n = 1.
( %i18)
Is
n+1
zero or nonzero? z;
( %o18)
Maxima
Este es un ejemplo ligeramente ms complicado.
( %i19) ( %o19)
x a
Maxima
Recurdese que
logcontract
( %i20) ( %o20)
+ 2 arctan 4 a3
x a
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
He aqu una integral simple.
( %i21)
75
( %o21)
x log 1 x2 2 + log
x+1 x1
Maxima
Esta integral puede ser expresada slo en trminos de una funcin dilogartmica1 .
( %i22) ( %o22)
Maxima
Esta integral involucra la funcin
erf2 .
( %i23) ( %o23)
Maxima
Esta integral simplemente no puede ser expresada en trminos de funciones matemticas estndares. Por consiguiente, Maxima la deja como est.
( %i24) ( %o24)
integrate(xx , x); xx dx
Maxima
b
He aqu la integral denida
( %i25) ( %o25)
1 La
innita
2 erf(z)
lis (z) =
s=2
z = 1 x2 . erf (z) =
z 0
et dt
76
Maxima
He aqu otra integral denida.
( %i26) ( %o26)
integrate(exp(x2 ), x, 0, inf);
2
Maxima
Maxima no puede darle una frmula para esta integral denida.
( %i27) ( %o27)
integrate(xx , x, 0, 1);
1
xx dx
0
Maxima
1
Esto evala la integral mltiple
x 0
(x2 + y 2 ) dy dx.
( %i28) ( %o28)
Cuando una constante de integracin se crea durante la integracin denida de una ecuacin, el nombre de la constante se construye concatenando
integration_constant y integration_constant_counter.
Maxima
Esto calcula la integral denida de una ecuacin.
( %i29) ( %o29)
Maxima
A
integration_constant
( %i30) ( %o30)
integration_constant : 'K; K
77
Maxima
Esto calcula la integral denida de una ecuacin a la que se le ha reiniciado la constante de integracin por defecto.
( %i31) ( %o31)
Maxima
Es posible reiniciar el contador de
integration_constant_counter.
( %i32) ( %o32)
Maxima
Aqu se aprecia que el contador ha sido reiniciado.
( %i33) ( %o33)
Es posible realizar un cambio de variable en una integral indenida o denida usando la funcin
changevar.
Para que
Maxima
pueda
Maxima
He aqu una integral clsica sin evaluar.
( %i34) ( %o34)
%e
dy
Maxima
Esto realiza un cambio de variable en una integral indenida.
( %i35)
78
( %o36)
%e
dy
Maxima
Esto realiza un cambio de variable en una integral denida.
( %i37) ( %o37)
2
2
z %ez dz
la suma
imax imin
en
Maxima
7
Esto construye la suma
i=1
xi . i
( %i38) ( %o38)
sum(xi/i, i, 1, 7); x7 x6 x5 x4 x3 x2 + + + + + +x 7 6 5 4 3 2
Maxima
n
Esto devuelve la suma
i2
i=1
( %i39) ( %o39)
sum(i2, i, 1, n);
n
i2
i=1
79
Maxima
Agregando
simpsum
n.
( %i40) ( %o40)
Maxima
Combinando
simpsum
con
factor
( %i41) ( %o41)
Maxima
Maxima tambin puede dar un resultado exacto para esta suma innita.
( %i42) ( %o42)
Maxima
3
Esta es la suma mltiple
xi y j .
i=1 j=1
( %i43) ( %o43)
Maxima
Esta es una suma para la cual los valores del ndice de variacin no estn equiincrementados.
( %i44) ( %o44)
80
producto
imax imin
f (i)
Maxima
Los productos se obtienen en forma similar a las sumas.
( %i45) ( %o45)
prod(x + i, i, 1, 4); (x + 1) (x + 2) (x + 3) (x + 4)
Maxima
Agregando de
simpproduct
n.
( %i46) ( %o46)
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
He aqu una suma nita con ndice
j.
( %i47) ( %o47)
f (j + 2) xj
j=2
Maxima
Esto realiza el cambio
j =i2
en la suma anterior.
( %i48)
changevar( %, j i + 2, i, j);
81
n+2
( %o48)
i=0
f (i) xi2
Maxima
Aqu se hace el cambio
i=k2
en un producto innito.
( %i49) ( %o49)
f (i + 2) xi+2
i=2
( %i50) ( %o50)
changevar( %, i k + 2, k, i);
f (k) xk
k=0
equal notequal
Operadores relacionales.
compare(x,y )
compara
devuelve
82
Maxima
Esto prueba si 10 es menor que 7.
( %i51) ( %o51)
Maxima
Esto prueba si 10 es diferente que 7.
( %i52) ( %o52)
Maxima
Ya que los entes involucrados son numricas, Maxima puede determinar que esto es verdadero.
( %i53) ( %o53)
Maxima
Puesto que los entes a comparar son constantes, Maxima no sabe si esto es verdadero o falso.
( %i54) ( %o54)
Maxima
He aqu dos comparaciones.
83
Maxima
Una diferencia notable entre
equal.
El usuario debe tener presente que, los operadores relacionales son todos operadores binarios.
Maxima
a < b < c.
Maxima
Al pretender evaluar una desigualdad como la siguiente, Maxima devuelve un mensaje de error.
( %i59)
expected 2<3<4 ^
cond
es
es
true, y expr2
Maxima
Una forma de ingresar expresiones del estilo operador lgico
a < b < c,
en Maxima, es usando el
and.
( %i60) ( %o60)
84
Maxima
Mientras no se hayan hecho asignaciones adecuadas a esto es verdadero o falso.
q,
Maxima no sabe si
( %i61) ( %o61)
p and q; pq
7.6 Ecuaciones
En
Maxima,
con el smbolo
=.
representa una ecuacin devuelve devuelve
expr1 = expr2
expr1 expr2
Maxima
Una ecuacin por s misma no es evaluada.
( %i62) ( %o62)
x4 5 x2 3 = x; x = x4 5 x2 3
Es muy importante que el usuario no confunda seccin 5.2). Mientras que gina una asignacin,
x=y
x:y con x=y (ver x:y es una declaracin imperativa que ori-
Maxima
Con
lhs3
( %i63) ( %o63)
3 Las
lhs(x = x4 5 x2 3); x
lhs
y
funciones
rhs
85
Maxima
Con
rhs
( %i64) ( %o64)
rhs(x = x4 5 x2 3); x4 5 x2 3
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 siempre puede solucionar ecuaciones algebraicas en una variable cuando
la potencia ms alta es menor que cinco.
( %i65) ( %o65)
Maxima
Tambin puede solucionar algunas ecuaciones que involucran potencias ms altas.
( %i66)
solve(x6 = 1, x);
86
( %o66)
x= x=
= 1, x =
3 %i+1 , 2
Maxima
Hay algunas ecuaciones, sin embargo, para las cuales es matemticamente imposible encontrar frmulas explcitas para las soluciones.
( %i67) ( %o67)
solve(2 4 x + x5 = 0, x); [0 = x5 4 x + 2]
Maxima
Maxima
Hay algunas ecuaciones, sin embargo, para las cuales es matemticamente imposible encontrar frmulas explcitas para las soluciones. Despus de la impresin de una advertencia, Maxima devuelve una solucin para esta ecuacin.
( %i68)
solve(sin(x) = a, x);
solve: using arc-trig functions to get a solution. Some solutions will be lost.
( %o68)
[x = asin(a)]
Es importante comprender que una ecuacin tal como caso que se diferencian por mltiplos de que pueden existir otras soluciones.
sen(x) = a
2 .
Sin embargo,
solve
por
Maxima
No hay ninguna solucin explcita para una ecuacin trascendental como esta.
( %i69) ( %o69)
87
Maxima
Maxima
He aqu una lista de dos ecuaciones simultneas, para que sean resueltas en las variables x e y.
( %i70) ( %o70)
Maxima
He aqu algunas ecuaciones simultneas ms complicadas.
( %i71) ( %o71)
Maxima
Con
rectform
( %i72) ( %o72)
%, rectform; [x = 2, y = 0] , x =
11 %i 2
x=
3, y = 2
11 %i 3, y = 2 2 11 %i 2 3 , [x 2
11 %i 2
3 2
= 0, y = 2]
aprecia, por ejemplo, al aplicar esta funcin para obtener la derivada de una funcin dada en forma implcita.
88
Maxima
Esto asigna la ecuacin
y 3 3 x y + x3 = 0
a la variable
e.
( %i73) ( %o73)
e : x3 3 x y + y3 = 0; y3 3 x y + x3 = 0
Maxima
Aqu se dene la dependencia
y(x).
( %i74) ( %o74)
Maxima
Ahora se deriva
( %i75) ( %o75)
d dx
y 3 y + 3 x2 = 0
Maxima
Finalmente se resuelve la ecuacin para la variable
d dx
y.
( %i76) ( %o76)
89
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
Maxima
He aqu la solucin de la ecuacin diferencial
y '(x) = ay(x) + 1.
En esta solucin
%c
( %i77) ( %o77)
ode2('diff(y, x) = a y + 1, y, x); ea x y = %c ea x a
Maxima
Si se incluye una condicin inicial apropiada, entonces no hay ninguna constante en la solucin.
( %i78) ( %o78)
ic1( %, x = 0, y = 0); ea x 1 y= a
Maxima
He aqu la solucin de la ecuacin diferencial cin
y ''(x) + y y '(x) = 0.
En esta solu-
%k1
%k2
valores de frontera.
( %i79) ( %o79)
90
Maxima
Si se incluyen las condiciones iniciales apropiadas desaparecen las constantes.
( %i80) ( %o80)
Maxima
Si se incluyen los valores de frontera apropiados tambin desaparecen las constantes.
( %i81) ( %o81)
desolve
ordinarias 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 (usada en la seccin 7.8), debe usarse la forma
y (x ),
tomando a
dependiente resuelve sistemas de ecuaciones diferenciales ordinarias lineales permite aadir la condicin inicial
(x0 ) = val
lineales
a un determinado sistema
91
Maxima
He aqu la solucin de la ecuacin diferencial
( %i82) ( %o82)
desolve('diff(y(x), x, 2) + y(x) = 2 x, y(x)); y (x) = sin(x) ddx y (x) x=0 2 + y (0) cos(x) + 2 x
Maxima
Esto resuelve el sistema
( %i83) ( %o83)
desolve(['diff(x(t), t) = y(t), 'diff(y(t), t) = x(t)] , [x(t), y(t)]); (y (0) + x (0)) %et (y (0) x (0)) %et x (t) = , 2 2 t t (y (0) + x (0)) %e (y (0) x (0)) %e y (t) = + 2 2
Maxima
De esta manera se aaden las las condiciones iniciales ma anterior.
x(0) = 1, y(0) = 0
al siste-
Maxima
Al volver a resolver el sistema se obtienen las soluciones con las condiciones iniciales dadas.
( %i86) ( %o86)
desolve(['diff(x(t), t) = y(t), 'diff(y(t), t) = x(t)] , [x(t), y(t)]); %et %et %et %et x (t) = + , y (t) = 2 2 2 2
92
expr
en un desa-
a,
(x a)n
en todas las va-
taylor(expr, [x1 , x2 , . . .] , a, n)
x1 , x2 , . . . (a, a, . . .)
riables
n1 , n2 , . . .
taylor(expr, [x1 , x2 , . . .] , equivale a taylor(expr, [x1 , a1 , n1 ] , [a1 , a2 , . . .] , [n1 , n2 , . . .] , [x2 , a2 , n2 ] , . . .) . . .) taylor(expr, [x, a, n, desarrolla expr en potencias negativas 'asymp]) de x a (el trmino de mayor orden es (x a)n )
Obtencin de series de potencias.
Las operaciones matemticas de las que se ha hablado hasta ahora son exactas. Considerando la entrada exacta, sus resultados son frmulas exactas. En muchas situaciones, sin embargo, no se necesita un resultado exacto. Puede ser suciente, por ejemplo, encontrar una frmula aproximada que es vlida, digamos, cuando la cantidad pequea.
es
Maxima
Esto da una aproximacin en serie de potencias para alrededor de 0, hasta los trminos de orden 3.
( %i87) ( %o87)
93
Maxima
Maxima conoce las expansiones en serie de potencias para una gran cantidad funciones matemticas.
( %i88) ( %o88)
Maxima
Si se da una funcin no conocida, de derivadas.
( %i89) ( %o89)
d f (t) dt t3
t+
t=0
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
todos los casos mantiene el orden apropiado o el grado de precisin para las series de potencias resultantes.
Maxima
He aqu una serie de potencias simple, de orden 3.
( %i90) ( %o90)
94
Maxima
Cuando se hacen operaciones en una serie de potencias, el resultado es calculado slo en el orden apropiado en x.
( %i91) ( %o91)
%2 (1 + %); 2 2 + 5 x + 132x +
35 x3 6
Maxima
Al copiar los tres primeros trminos del desarrollo anterior se tiene una expresin ordinaria.
( %i92) ( %o92)
Maxima
Ahora el cuadrado es calculado exactamente.
( %i93) ( %o93)
%2;
35 x3 6
13 x2 2
+ 5x + 2
Maxima
Al aplicar
expand
( %i94) ( %o94)
1225 x6 36
%, expand; 5 + 455 x + 6
1207 x4 12
265 x3 3
+ 51 x2 + 20 x + 4
Maxima
He aqu una serie de potencias doble de orden 3.
( %i95) ( %o95)
+ + 1
y 12
2
y2 2
x + y + 2
y3 12
x2 +
1 6 +
x3 +
95
powerseries(expr, x, a)
expr
para
Maxima
He aqu una conocida frmula.
( %i96) ( %o96)
Maxima
Esta es una frmula ms elaborada.
( %i97) ( %o97)
i2
(1) 2 x4 i2 (2 i2 )! =0
Maxima
Una forma de eliminar los subndices de los ndices, en las sumas, es usando la funcin
niceindices.
( %i98) ( %o98)
niceindices(powerseries(cos(x2 1), x, 0)); i i (1) x2 (2 i+1) (1) x4 i sin(1) + cos(1) (2 i + 1)! (2 i)! i=0 i=0
96
expr t.
con respecto de
y pa-
Maxima
Esto calcula la transformada de Laplace.
( %i99) ( %o99)
Maxima
He aqu la transformada inversa.
( %i100) ( %o100)
ecu1 , . . . , ecum x1 , . . . , x n
ecu
para la variable
ecu
en
[a, b]
Maxima
solve
devuelve la ecuacin ingresada.
( %i1) ( %o1)
solve(2 4 x + x5 = 0, x); [0 = x5 4 x + 2]
Maxima
algsys
proporciona una lista con soluciones aproximadas.
( %i2)
98
( %o2)
Maxima
La opcin
realonly:true
( %i3) ( %o3)
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) ( %o4)
Maxima
Variando el extremo izquierdo del intervalo de aislamiento se obtiene una solucin aproximada.
( %i5) ( %o5)
99
Maxima
La ecuacin tiene varias soluciones. Si se da un intervalo de aislamiento diferente,
find_root
( %i6) ( %o6)
b a
f dx
numricamente la integral
calcula
f dx
numricamente la integral
calcula
f dx
la integral
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
100
2 3 4 5 6
si se encontr un nmero excesivo de errores de redondeo; 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
tegracin. puede manejar singularidades en los puntos nales de la regin de in-
( %i7) ( %o7)
Maxima
Para resolver integrales numricas sobre regiones innitas se usa
quad_qagi.
( %i8) ( %o8)
Maxima.
Hasta aqu, se ha visto muchos ejemplos de funciones incorporadas En esta seccin, se mostrar la forma en que el usuario
Maxima.
Maxima
Esto dene la funcin
f.
( %i1) ( %o1)
Maxima
f
eleva al cuadrado su argumento.
( %i2) ( %o2)
f(a + 1); 2 (a + 1)
Maxima
El argumento puede ser un nmero.
( %i3) ( %o3)
f(4); 16
101
102
Maxima
O puede ser una expresin ms complicada.
( %i4) ( %o4)
Maxima
Puede usarse
en un clculo.
( %i5) ( %o5)
expand(f(x + y + 1)); y2 + 2 x y + 2 y + x2 + 2 x + 1
Maxima
Esto muestra la denicin hecha para
f.
f(x) := x2
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
Las funciones en Maxima pueden tener cualquier nmero de argumentos
( %i7) ( %o7)
103
Maxima
Puede usarse la funcin
hump
( %i8) ( %o8)
Maxima
Esto da una nueva denicin para
hump,
( %i9) ( %o9)
Maxima
Slo es mostrada la nueva denicin.
Maxima
Esto limpia todas las deniciones para
hump.
( %i11) ( %o11)
remfunction(hump); [hump]
f1 , . . . , fn
de
deniciones
f1 , . . . , f n
muestra las deniciones de todas la funciones denidas por el usuario borra todas las deniciones de todas la funciones denidas por el usuario
Vista y borrado de varias funciones.
104
Maxima
Ahora se dene la funcin
g.
( %i12) ( %o12)
Maxima
Estro muestra la denicin de todas las funciones (en este caso
g).
Maxima
Esto borra la denicin de todas las funciones (en este caso
g).
( %i15) ( %o15)
remfunction(all); [f, g]
Maxima
Ya no hay funciones denidas por el usuario.
( %i16) ( %o16)
dispfun(all); [ ]
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 ).
105
dene la funcin
gumentos es variable dene la funcin array mento es una lista dene la funcin array lista cuyo argu-
Maxima
Aqu se dene la funcin
( %i17) ( %o17)
F([x]) := x2 + 4; F([ x ]) := x2 + 4
Maxima
Esto evala
en un solo argumento.
( %i18) ( %o18)
F(2); 8
Maxima
Esto evala
en dos argumentos.
( %i19) ( %o19)
Maxima
He aqu la denicin de la funcin array
G.
( %i20) ( %o20)
106
Maxima
Aqu se evala
en la lista
[2, 3]
( %i21) ( %o21)
G [2, 3] ; 13
Maxima
Esto dene la funcin array
( %i22) ( %o22)
H [x, y] := [2 x, 3 y, x y] ; Hx,y := [2 x, 3 y, x y]
Maxima
Aqu se evala la funcin
en la lista
[4, 3].
( %i23) ( %o23)
Para visualizar la denicin de este tipo de funciones puede usarse la funcin usarse la funcin
F F1 , . . . , F n
Maxima
Esto la denicin de todas las funciones array, hasta ahora, denidas.
107
( %t26) ( %o26)
Maxima
Esto borra la denicin de la funcin
denida en
( %i17)
( %i27) ( %o27)
remfunction(F); [F]
Maxima
Esto borra la denicin de todas las funciones array denidas por el usuario.
( %i28) ( %o28)
remarray(all); [G, H]
Adems,
Maxima
annimas
que son de mucha utilidad en algunos contextos en los que sea necesario un nombre de funcin y que generalmente est vinculado 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.
108
Maxima
O puede aplicarse directamente.
( %i31) ( %o31)
lambda([ x ] , x2 )(a); a2
Maxima
No obstante, no es reconocida por
dispfun.
( %i32) ( %o32)
dispfun(all); [ ]
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
Esto construye un producto de tres trminos, y expande el resultado.
( %i33) ( %o33)
expand(product(x + i, i, 1, 3)); x3 + 6 x2 + 11 x + 6
Maxima
Esto hace lo mismo, pero con cuatro trminos.
( %i34) ( %o34)
expand(product(x + i, i, 1, 4)); x4 + 10 x3 + 35 x2 + 50 x + 24
Maxima
Esto dene una funcin lo expande.
exprod
( %i35)
109
Maxima
Siempre que usa la funcin, ejecutar las operaciones
product
expand.
( %i36) ( %o36)
Maxima
dimientos que ejecutan las sentencias dadas por el usuario. Es posible incluir varios pasos en los procedimientos, separados por comas.
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.
( %i37)
Maxima
Esto corre el procedimiento.
( %i38) ( %o38)
cex(5, 3); 85
(expr1 , expr2 , . . .)
block([a, b, . . .] , proc)
a, b, . . .
Construccin de procedimientos.
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.
110
Maxima
La funcin
t escapa,
( %i39) ( %o39)
Maxima
Esta funcin es denida como un bloque con variable local
u.
( %i40)
Maxima
La funcin devuelve el mismo resultado que la anteriormente denida.
( %i41) ( %o41)
ncex(5, 3); 85
Maxima
Ahora, sin embargo, el valor de u no se escapa de la funcin.
( %i42) ( %o42)
u 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
111
de un bloque, su valor es el que le corresponde en el bloque superior. Este criterio se conoce con el nombre de alcance dinmico.
Maxima
Denicin de la regla de transformacin que reemplaza
por
3.
( %i43) ( %o43)
Maxima
Aplicacin de la regla de transformacin
regtran1
( %i44) ( %o44)
Maxima
Puede denirse una regla de transformacin para
defrule(regtran2, f(x), p); regtran2 : f (x) p apply1(1 + f(x) + f(y), regtran2); f (y) + p + 1
Maxima
Esto dene un patrn
f(t)
112
Maxima
Aqu se aplica el patrn previamente denido.
( %i49) ( %o49)
Maxima
Esto muestra todas las reglas, hasta aqu, denidas.
Maxima
Con esta sentencia se borran todas las deniciones de las reglas y
regtran1, regtran2
patron.
( %i54) ( %o54)
clear_rules(); false
Maxima
Esto indica que todas las deniciones de las reglas han sido borradas.
( %i55) ( %o55)
disprule(all); [ ]
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
113
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.
prodp(expr) := not atom(expr) and op(expr) = ; prodp(expr) := atom(expr) op(expr) = matchdeclare(p, prodp); done
Maxima
Ahora se dene una regla que transforme una funcin aplicada a un producto como la suma de los factores a los cuales se les ha aplicado la funcin.
( %i58) ( %o58)
defrule( reg, f(p), apply( + , map(f, args(p)) ) ); reg : f (p) apply (+, map (f, args (p)))
Maxima
Luego, al aplicar la regla recin denida se aprecia el efecto producido.
( %i59) ( %o59)
Maxima
Esto aplica la regla sin limitar el nmero de los factores en el argumento de
f.
( %i60) ( %o60)
114
Maxima
Esto combina la regla denida por el usuario con la funcin
expand
de Maxima.
( %i61) ( %o61)
apply1(f(a) f(a b c) f(c), reg), expand; f (a) f2 (c) + f (a) f (b) f (c) + f2 (a) f (c)
ev
x1 , . . . , x n
y cuerpo
f con expr
f con expr
argumentos
x1 , . . . , x n
y cuerpo
Maxima
Esto almacena la expresin
x2 + 1
en la variable
ex.
( %i62) ( %o62)
ex : x2 + 1; x2 + 1
Maxima
Aqu se pretende denir la funcin
a partir de
ex.
f(x) := ex $ f(8); x2 + 1
115
Maxima
Por otra parte, al utilizar
define
a partir de
ex
si se
Maxima
He aqu la denicin de la funcin
f = x2 + 1 .
( %i67)
f(x) := x2 + 1 $
Maxima
Ahora, a partir de
f,
se dene
f
como
f =
df . dx
( %i68)
f (x) := diff(f(x), x) $
Maxima
La evaluacin somblica de
f
( %i69) ( %o69)
f (t); 2t
Maxima
No obstante, la evaluacin numrica no esta permitida para dicha funcin.
( %i70) #0:
f (8);
di: second argument must be a variable; found 8 f '(x=8) - - an error. To debug this try: debugmode(true);
116
Maxima
Aqu se vuelve a denir
f ,
define
(re-
( %i71)
Maxima
La evaluacin simblica es idntica.
( %i72) ( %o72)
f (t); 2t
Maxima
Sin embargo, ya no hay dicultad en la evaluacin numrica.
( %i73) ( %o73)
f (8); 16
Captulo 10 Listas
10.1 Juntar objetos
Las listas son bloques de construccin bsica para Maxima y Lisp 1 . Todos los tipos de datos diferentes a los arreglos, tablas mixtas o nmeros son representados como listas en Lisp. Puede decirse que, en un nivel bsico, lo que esencialmente hace una lista en
Maxima
Maxima
He aqu una lista de nmeros.
( %i1) ( %o1)
[2, 3, 4] ; [2, 3, 4]
Maxima
Esto da una lista de expresiones simblicas.
( %i2) ( %o2)
x % 1; [x2 1, x3 1, x4 1]
117
118
Maxima
Es posible derivar estas expresiones.
( %i3) ( %o3)
diff( %, x); [2 x, 3 x2 , 4 x3 ]
Maxima
Y luego encontrar los valores cuando
es reemplazado por
3.
( %i4) ( %o4)
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
119
Maxima
Esto da una lista de los valores de
i2 ,
con
variando de
6.
( %i5) ( %o5)
Maxima
He aqu una lista de los valores de
sen
n 5
para
variando de
4.
( %i6) ( %o6)
4 5
Maxima
Esto da los valores numricos de la tabla generada en
( %i6)
( %i7) ( %o7)
Maxima
Tambin puede hacerse tablas de frmulas.
( %i8) ( %o8)
Maxima
create_list usa exactamente la misma notacin para el iterador nes sum y product que fueron mencionadas en la seccin 7.4.
que las funcio-
( %i9) ( %o9)
120
Maxima
Esto hace una lista con valores de
variando desde
hasta
en pasos de
0,25
create_list(i/4, i, 1, 4), numer; [0,25, 0,5, 0,75, 1] create_list(sqrt(x), x, %); [0,5, 0,70710678118655, 0,86602540378444, 1]
Maxima
Es posible realizar otras operaciones en las listas que se obtienen con
create_list.
( %i12) ( %o12)
Maxima
Esto hace una lista de
xi + y j
con
variando desde
hasta
variando desde
hasta
2.
( %i13) ( %o13)
Maxima
Esto crea una lista conteniendo cuatro copias del smbolo
x.
( %i14) ( %o14)
Maxima
Esto da una lista de cuatro nmeros seudo aleatorios.
( %i15) ( %o15)
121
Maxima
1.
mediante su ndice.
part.
part(list, i)
list [ i ]
el
i-simo
elemento de
list
(el primer
elemento es
list [ 1 ])
part(list, [ i, j, . . . ]) part(list, i1 , . . . , ik )
i, j, . . .
de
list list
Maxima
Esto extrae el tercer elemento de la lista.
( %i16) ( %o16)
part([4, 1, 8, 6] , 3); 8
Maxima
Esto extrae una lista de elementos.
( %i17) ( %o17)
122
Maxima
Esto asigna una lista en la variable
u.
( %i18) ( %o18)
u : [7, 2, 4, 6] ; [7, 2, 4, 6]
Maxima
Puede extraerse elementos de
u.
( %i19) ( %o19)
u [3] ; 4
Maxima
Pueden realizarse operaciones diversas con
u.
( %i20) ( %o20)
(u + 1)/(u 6); 3 1 , , 6, 8 4 6
Maxima
Esto crea una lista
2 2,
y le da el nombre
m.
( %i21) ( %o21)
Maxima
Esto extrae la primera sublista de la lista de listas,
( %i22) ( %o22)
m [1] ; [0, 1]
123
Maxima
Esto extrae el segundo elemento de aquella sublista.
( %i23) ( %o23)
%[2]; 1
Maxima
Esto hace las dos operaciones juntas.
( %i24) ( %o24)
part(m, 1, 2); 1
Maxima
Esto genera una lista tridimensional de
2 2 2.
( %i25) ( %o25)
create_list(create_list(create_list(i j2 k3, k, 1, 2), j, 1, 2), i, 1, 2); [[[1, 8] , [4, 32]] , [[2, 16] , [8, 64]]]
Maxima
Si no se anida
create_list
( %i26) ( %o26)
Al asignar una lista a una variable, puede usarse las listas en Maxima de modo similar a los arrays en otros lenguajes de programacin. De esta manera, por ejemplo, es posible resetear un elemento de una lista asignando un valor a
u [ i ].
part(u, i) u [ i ] u [ i ] : valor
Operando listas como arrays.
i -simo
elemento de la lista
124
Maxima
Aqu hay una lista.
( %i27) ( %o27)
u : [2, 1, 5, 7] ; [2, 1, 5, 7]
Maxima
Esto resetea el segundo elemento de la lista.
( %i28) ( %o28)
u [2] : 0; 0
Maxima
Ahora la lista asignada a
se ha modicado.
( %i29) ( %o29)
u; [2, 0, 5, 7]
de la
P (x)
es verdadero
P (x)
es verdadero
elem
en la lista
L list
f orm
es un elemento de
125
prueba si parte
f orm
no ocurre en ninguna
list
equivale a
Maxima
Esto da una lista de todos los elementos, de la lista simblico.
[a, 1, 3, b, 7],
( %i30) ( %o30)
Maxima
Esto da una lista de todas posiciones, de la lista tran elementos de tipo simblico.
[a, 1, 3, b, 7],
( %i31) ( %o31)
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],
( %i32) ( %o32)
Maxima
Esto muestra que
es un elemento de
[11, 1, 2, 4, 5, 5].
( %i33) ( %o33)
126
Maxima
Por otra parte
3,
no lo es.
( %i34) ( %o34)
Maxima
Esto muestra que
( %i35) ( %o35)
join(list1 , list2 )
Combinar listas.
list1
list2
alternados
Maxima
He aqu dos listas, de igual longitud, combinadas.
( %i36) ( %o36)
Maxima
He aqu la combinacin de dos listas de diferente longitud (join ignora los elementos sobrantes de la lista de mayor longitud).
( %i37) ( %o37)
127
Maxima.
en forma
list
list de acuerdo
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.
( %i38) ( %o38)
Maxima
Esto ordenada los elementos de la lista en forma descendente.
( %i39) ( %o39)
Maxima
Esto invierte el orden de los elementos de la lista.
( %i40) ( %o40)
128
Maxima
Aqu se tienen todas las permutaciones de
[a, b, c].
( %i41) ( %o41)
Maxima
De esta forma se eliminan los elementos repetidos en una lista.
( %i42) ( %o42)
list1
seguidos de los de
list2 , . . . , listn
agrega agrega borra
elem elem
list
list
elem
de la lista
list
list
borra el
n -simo
list
Agregar y quitar elementos de una lista.
Maxima
Aqu se genera una lista con los elementos de dos listas dadas.
( %i43) ( %o43)
129
Maxima
Aqu se inserta
( %i44) ( %o44)
Maxima
Esto devuelve una lista dada con los dos primeros elementos borrados.
( %i45) ( %o45)
Maxima
Esto devuelve una lista dada con los dos ltimos elementos borrados.
( %i46) ( %o46)
x,
Maxima
He aqu una lista a la que se le eliminan todos los niveles.
( %i47) ( %o47)
130
Maxima
Esto particiona la lista
[a, b, a2 + 1, c].
( %i48) ( %o48)
expr list
es una lista
list
f (an , bn , . . .)]
aplica la funcin los elementos del producto cartesiano
Maxima
Con la funcin
length
( %i49) ( %o49)
length([7, 9, 0]); 3
Maxima
Aqu se usa la funcin
apply
( %i50) ( %o50)
131
Maxima
He aqu un ejemplo en el que se usa la funcin
map.
( %i51) ( %o51)
Maxima
Este es otro ejemplo en el que se usa la funcin
map.
( %i52) ( %o52)
Maxima
He aqu un ejemplo en el que se usa la funcin
outermap.
( %i53) ( %o53)
Captulo 11 Arrays
n, que debe
crea un array con sus elementos del tipo especicado (el tipo puede ser
fixnum
flonum)
A
rellena el array
B,
Algunas funciones para arrays.
otro array
Maxima
Esto dene el array
de dimensin
2.
( %i1) ( %o1)
array(u, 2); u
132
133
Maxima
Esto indica que el array no tiene valores asignados.
( %i2) ( %o2)
Maxima
Esto asigna valores, a partir de una lista, al array.
( %i3) ( %o3)
Maxima
Esto permite visualizar los valores asignados.
( %i4) ( %o4)
listarray(u); [1, 7, 8]
Maxima
Aqu se dene el array
( %i5) ( %o5)
array(phi, 1, 2);
Maxima
Esto asigna valores a
( %i6)
Maxima
Aqu se tiene una lista con los valores asignados a
( %i12)
listarray(phi);
134
( %o12)
[1, 1, 4, 4, 7, 5]
Maxima
Esto da informacin acerca de
( %i13) ( %o13)
Si el usuario asigna un valor a una variable subindicada antes de declarar el array correspondiente, entonces se construye un array no declarado. Los arrays no declarados, tambin conocidos por el nombre de arrays de claves (hashed arrays), son ms generales que los arrays declarados. El usuario no necesita declarar su tamao mximo y pueden ir creciendo de forma dinmica. Los subndices de los arrays no declarados no necesariamente deben ser nmeros.
Maxima
Esto asigna un valor a la variable
subindicada con
hola.
( %i14) ( %o14)
t [hola] : a; a
Maxima
Esto asigna un valor a la variable
subindicada con
adios.
( %i15) ( %o15)
t [adios] : b; b
Maxima
Ahora se muestran los valores asignados al array no declarado
t.
( %i16) ( %o16)
listarray(t); [b, a]
135
Maxima
Y tambin se muestra informacin con respecto a
t.
( %i17) ( %o17)
Captulo 12 Matrices
12.1 Generacin de Matrices
Las matrices en rador
matrix
Maxima
indica que
Maxima
y cuyos argumentos son listas (ver seccin 17.2). Esto tiene establecida una diferencia entre una matriz
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 a
f m n,
n
devuelve una matriz rectangular
mn
con todos sus elementos iguales a cero devuelve una matriz diagonal de orden
n
Funciones para generar matrices.
elem
136
137
d1 , d2 , . . . , dn
devuelve una matriz sima la es
Maxima
He aqu la denicin de una matriz.
( %i1) ( %o1)
Maxima
Una lista de listas no es interpretada como matriz.
( %i2) ( %o2)
Maxima
Con
apply
( %i3) ( %o3)
Maxima
Aqu se genera una matriz
( %i4) ( %i5)
138
( %o5)
1 0 1
3 2 1
5 4 3
Maxima
Esto genera una matriz de Vandermonde simblica.
( %i6) ( %o6)
Maxima
Esto genera una matriz de Vandermonde numrica.
( %i7) ( %o7)
vandermonde_matrix([2, 3, 5]); 1 2 4 1 3 9 1 5 25
Maxima
He aqu una matriz de Hilbert de orden
3.
( %i8) ( %o8)
hilbert_matrix(3); 1 1 1 2 3 1 1 1
2 1 3 3 1 4 4 1 5
devuelve el elemento
M
Funciones para elegir elementos de matrices.
139
Maxima
Esto genera la matriz
( %i9) ( %o9)
Maxima
Aqu se selecciona el elemento
A1,2 .
( %i10) ( %o10)
A [1, 2] ; 1
Maxima
Esto devuelve una matriz identidad de orden
3.
( %i11) ( %o11)
ident(3); 1 0 0 0 1 0 0 0 1
Maxima
Esto selecciona la segunda la de la matriz identidad.
( %i12) ( %o12)
%[2]; [0, 1, 0]
140
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 )
M
devuelve la traza de la matriz cuadrada
M
aade la(s) columna(s) dada(s) por la(s) lista(s) (o matrices) a la matriz
M
aade la(s) la(s) dada(s) por la(s) lista(s) (o matrices) a la matriz devuelve la triz
M.
una sola columna devuelve la -sima la de la matriz la calcula el rango de la matriz asigna el valor to de la matriz actualizada
M.
submatrix(i1 , . . . , im , devuelve una nueva matriz formada a M, j1 , . . . , jn ) partir de la matriz M pero cuyas las submatrix(i1 , . . . , im , M ) i1 , . . . , 1m y columnas j1 , . . . , jn han sisubmatrix(M, j1 , . . . , jn ) do eliminadas echelon(M ) devuelve la forma escalonada de la matriz M , obtenida por eliminacin gaussiana
triangularize(M )
M,
cin gaussiana
Algunas operaciones matriciales.
141
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)
de la
M A
y
Maxima
He aqu una matriz
22
de variables simblicas.
( %i13) ( %o13)
Maxima
He aqu la transpuesta de
A.
( %i14) ( %o14)
transpose(A); a c b d
Maxima
Esto da la inversa de
en forma simblica.
( %i15) ( %o15)
invert(A);
d adbc c adbc b adbc a adbc
142
Maxima
Esto da el determinante de
A.
( %i16) ( %o16)
determinant(A); ad bc
Maxima
He aqu una matriz racional
3 3.
( %i17) ( %o17)
Maxima
Esto da su inversa.
( %i18) ( %o18)
30 180 180
Maxima
Multiplicando la inversa con la matriz original se obtiene como resultado la matriz identidad.
( %i19) ( %o19)
%.B; 1 0 0 1 0 0
0 0 1
Maxima
Aqu se dene una matriz
de orden
4 5.
( %i20)
143
( %o20)
2 2 1 1
1 2 1 2 3 3 1 1 0 1 4 3
8 20 2 4
Maxima
Esto efecta el intercambio de las las resultante.
de la matriz
y devuelve la matriz
( %i21) ( %o21)
rowswap(M, 2, 1); 2 2 3 3 2 1 2 1 1 1 1 0 1 1 4 3
20 8 2 4
Maxima
Esto realiza la transformacin resultante.
F2 F2 + F1
en la matriz
y devuelve la matriz
( %i22) ( %o22)
rowop(M, 2, 1, 1); 2 1 2 1 8 4 3 5 4 28 1 1 1 0 2 1 1 4 3 4
Maxima
He aqu el producto de Kronecker de dos matrices.
( %i23)
( %o23)
kronecker_product( matrix([a, b], [c, d]), matrix([1, 2, 3], [4, 5, 6], [7, 8, 9]) ); a 2a 3a b 2b 3b 4a 5a 6a 4b 5b 6b 7a 8a 9a 7b 8b 9b c 2c 3c d 2d 3d 4c 5a 6a 4d 5d 6d 7c 8c 9c 7d 8d 9d
144
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 )
si
a cada uno de
M 1 M 2 . . . Mn
Ms funciones para matrices.
Maxima
He aqu la matriz
D.
Maxima
Esto devuelve una lista con el nmero de las y columnas de la matriz
D.
( %i26) ( %o26)
matrix_size(D); [3, 4]
145
Maxima
Utilizando la funcin tricial.
matrixp
( %i27) ( %o27)
matrixp(D); true
Maxima
He aqu la norma de frobenius de la matriz
B.
( %i28) ( %o28)
mat_norm(D, frobenius); 2 6
Maxima
A continuacin se denen las matrices xados.
A, B
A : genmatrix(a, 2, 3); a1,1 a1,2 a1,3 a2,1 a2,2 a2,3 B : genmatrix(b, 2, 3); b1,1 b1,2 b1,3 b2,1 b2,2 b2,3 C : genmatrix(c, 2, 3); c1,1 c1,2 c1,3 c2,1 c2,2 c2,3
Maxima
Este es el resultado obtenido al aplicar matrices
mediante la funcin
addmatrices
a las
A, B
C.
( %i32) ( %o32)
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 ) f (a2,1 , b2,1 , c2,1 ) f (a2,2 , b2,2 , c2,2 ) f (a2,3 , b2,3 , c2,3 )
146
Maxima
Si
es +, el resultado es
A + B + C.
( %i33) ( %o33)
addmatrices( + , A, B, C); c1,1 + b1,1 + a1,1 c1,2 + b1,2 + a1,2 c2,1 + b2,1 + a2,1 c2,2 + b2,2 + a2,2
Maxima
Tambin puede utilizarse una funcin annima para
f.
obtenido es el mismo que el que se obtuvo al aplicar como ste es mejor el uso de
+.
+
( %i34) ( %o34)
addmatrices(lambda([x, y, z], x + y + z), A, B, C); c1,1 + b1,1 + a1,1 c1,2 + b1,2 + a1,2 c1,3 + b1,3 + a1,3 c2,1 + b2,1 + a2,1 c2,2 + b2,2 + a2,2 c2,3 + b2,3 + a2,3
Maxima
Con
outermap
mat_unblocker
( %i35)
( %o35)
outermap( , matrix([a, b], [c, d]), matrix([1, 2, 3], [4, 5, 6], [7, 8, 9]) ); a 2a 3a b 2b 3b 4a 5a 6a 4b 5b 6b 7a 8a 9a 7b 8b 9b c 2c 3c d 2d 3d 4c 5c 6c 4d 5d 6d 7c 8c 9c 7d 8d 9d mat_unblocker( %); a 2a 3a b 4a 5a 6a 4b 7a 8a 9a 7b c 2c 3c d 4c 5a 6a 4d 7c 8c 9c 7d 2b 3b 5b 6b 8b 9b 2d 3d 5d 6d 8d 9d
( %i36)
( %o36)
147
eq1 , . . . , eqm
Funciones para generar matrices asociadas a sistemas de ecuaciones.
Maxima
He aqu la matriz de coecientes del sistema de ecuaciones lineales, dado.
( %i37) ( %o37)
Maxima
Esta es la matriz aumentada del mismo sistema anterior.
( %i38) ( %o38)
Maxima
Aqu se hace la transformacin
F2 F2 1 F1 2
y
A partir de ste ltimo resultado se deduce que la solucin del sistema de ecuaciones lineales, dado, ser
y=1
x = 2.
( %i39) ( %o39)
rowop( %, 2, 1, 1/2); 2 3 1 5 5 0 2 2
148
M,
en trminos de
devuelve una lista con dos sublistas, la primera de stas conteniendo los valores propios de la matriz tes multiplicidades
y la se-
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 uno o ms vectores propios en cada lista
Obtencin de autovalores y autovectores asociados a una matriz dada.
Maxima
He aqu una matriz
3 3.
Maxima
ste es el polinomio caracterstico, en trminos de la variable x, asociado a la matriz
C.
( %i42) ( %o42)
149
Maxima
Aqu se tienen los valores propios, y su respectiva multiplicidad, asociados a la matriz
C.
( %i43) ( %o43)
eigenvalues(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.
( %i44) ( %o44)
eigenvectors(C);
Captulo 13 Conjuntos
Maxima
set
Maxima
tos y 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, f
siendo y
vars una
lista de variables de
un conjunto
150
151
Maxima
He aqu un conjunto formado por los elementos
a, b, c, d.
( %i1) ( %o1)
{a, b, c, d} ; {a, b, c, d}
Maxima
Al ingresar un conjunto cuyos elementos estn desordenados y repetidos, stos son ordenados y unicados de forma automtica.
( %i2) ( %o2)
{c, e, f, f, a, b, c, d, a} ; {a, b, c, d, e, f}
Maxima
La funcin
makeset
( %i3) ( %o3)
Maxima
He aqu otro conjunto generado con
makeset.
( %i4) ( %o4)
makeset(x/2, [ x ] , {[ 1 ] , [ 2 ] , [ 3 ] , [ 4 ] , [ 5 ]}); 1 3 5 , 1, , 2, 2 2 2
Maxima
Las operaciones aritmticas son listables.
( %i5) ( %o5)
x [1, 2, 3] ; [x, x2 , x3 ]
152
Maxima
Sin embargo, las operaciones aritmticas no son conjuntables.
( %i6) ( %o6)
x {1, 2, 3} ; x{1,2,3}
Maxima
La sustitucin si es conjuntable, aunque siempre respetando la unicacin.
( %i7) ( %o7)
list
conj
listify(conj) full_listify(conj)
forma
un
conjunto
partir
de
los
conj
conj
por operadores de
Maxima
Esto convierte una lista en conjunto.
( %i8) ( %o8)
153
Maxima
Esto convierte un conjunto en lista.
( %i9) ( %o9)
Maxima
Esto sustituye todos los operadores de conjuntos a operadores de listas.
( %i10) ( %o10)
fullsetify([a, [b, c] , [e, [f, g]] , k]); {a, {b, c} , {e, {f, g}} , k}
Maxima
Esto sustituye todos los operadores de listas a operadores de conjuntos.
( %i11) ( %o11)
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 ordenamiento
conj conj
154
Maxima
Aqu se obtiene el primer elemento de un conjunto que ha sido ordenado y unicado internamente.
( %i12) ( %o12)
part({b, c, c, d, a} , 1); a
Maxima
El quinto elemento no existe.
( %i13)
part({b, c, c, d, a} , 5);
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
155
Maxima
Aqu se extrae, del conjunto
tales que
t < 4.
( %i14) ( %o14)
Maxima
Aqu se extrae, del conjunto
tales que
mod(t, 3) = 1.
( %i15) ( %o15)
Maxima
Esto verica una contencin de conjuntos.
( %i16) ( %o16)
Maxima
Esto verica que el elemento
pertenece al conjunto
{2, 4, 5, 7}.
( %i17) ( %o17)
Maxima
La funcin genrica
member
( %i18) ( %o18)
156
Maxima
La funcin genrica
f reeof
indica que
{2, 4, 5, 7}.
( %i19) ( %o19)
Maxima
La funcin genrica
f reeof
indica que
( %i20) ( %o20)
Maxima.
conj conj
con el ele-
x x
Maxima
Aqu se unen
{2}
{1, 4, 7}.
( %i21) ( %o21)
Maxima
Esto elimina el elemento
de
{1, 4, 7}.
( %i22) ( %o22)
157
conj
conj conj
en
n conjun-
Maxima
He aqu un conjunto al que se le eliminan todos los niveles.
( %i23) ( %o23)
Maxima
Esto da todas las particiones del conjunto
{a, b, c}.
( %i24) ( %o24)
set_partitions(a, b, c); {{{a} , {b} , {c}} , {{a} , {b, c}} , {{a, b} , {c}} , {{a, b, c}} , {{a, c} , {b}}}
Maxima
He aqu todas las descomposiciones del conjunto cos disjuntos.
{a, b, c}
( %i25) ( %o25)
Maxima.
158
union(conj1 , . . . , conjn ) intersection(conj1 , . . . , conjn ) setdifference(conj1 , conj2 ) powerset(conj) subsetp(conj1 , conj2 ) setequalp(conj1 , conj2 ) symmdifference(conj1 , conj2 ) cartesian_product( conj1 , . . . , conjn ) disjointp(conj1 , conj2 ) equiv_classes(conj, F )
devuelve
la
unin
de
los
conjuntos
conj1 , . . . , conjn
devuelve la interseccin de los conjuntos
conj1 , . . . , conjn
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
Operaciones con conjuntos.
Maxima
Aqu se denen los conjuntos
B.
( %i26) ( %i27)
A : {a, b, c, d} $ B : {c, d, e, f, g} $
Maxima
Esto da la unin de
B.
( %i28) ( %o28)
159
Maxima
Y esto la interseccin.
( %i29) ( %o29)
Maxima
La diferencia
AB
se calcula as.
( %i30) ( %o30)
Maxima
Esto devuelve la diferencia simtrica
A.
( %i31) ( %o31)
Maxima
He aqu el conjunto potencia del conjunto
A.
( %i32) ( %o32)
powerset(A); {{} , {a} , {a, b} , {a, b, c} , {a, b, c, d} , {a, b, d} , {a, c} , {a, c, d} , {a, d} , {b} , {b, c} , {b, c, d} , {b, d} , {c} , {c, d} , {d}}
Maxima
Esto da el producto cartesiano
A B.
( %i33) ( %o33)
cartesian_product(A, B); {[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]}
160
Maxima
Esto indica que los conjuntos
no son disjuntos.
( %i34) ( %o34)
Maxima
En este ejemplo, las clases de equivalencia son nmeros que dieren en un mltiplo de
3.
( %i35) ( %o35)
devuelve
true
conjunto de devuelve
Maxima
si y slo si
expr
es un
es el con-
{f (a1 , b1 , . . .),
que los
. . . , f (an , bn , . . .)},
siempre
Maxima
He aqu el cardinal de un conjunto.
( %i36) ( %o36)
cardinality({a, b, c, a}); 4
161
Maxima
Para conjuntos bien ordenados, al aplicar la funcin acorde con el ordenamiento de tales conjuntos.
map,
se obtiene un resultado
( %i37) ( %o37)
map(f, {a, b, c} , {x, y, z}); {f(a, x), f(b, y), f(c, z)}
Maxima
En este caso primero son ordenados los conjuntos y luego devuelve un resultado que coincide con el de
( %o37)
( %i38) ( %o38)
map(f, {c, a, b} , {y, x, z}); {f(a, x), f(b, y), f(c, z)}
Captulo 14 Grcos
Maxima
deseado y
cos, de modo que alternativamente utiliza un programa externo que realiza esta tarea. El usuario se limita a ordenar el tipo de grco
Maxima
que est activo en ese momento, que por defecto ser aplicacin grca que utiliza Las funciones
Maxima
es
plot2d y plot3d2
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 15) est orientado exclusivamente a Gnuplot. draw2d y draw3d, las cuales dan resultados similares plot3d. Adems incorpora funciones para gracar funciones denidas
implcitamente.
162
163
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 con
. . . , y = fn (x),
y = f (x),
con
xmin x xmax ,
trabajo actual muestra un
en el cuaderno de
grco con
. . . , y = fn (x),
Maxima
Esto traza un grco de hasta
sen(x)
x.
Para
variando desde
2 .
( %i1) ( %t1)
( %o1)
164
Maxima
Puede darse una lista de funciones para que sean trazadas. Por defecto, a cada funcin se le asigna un color especco.
( %i2) ( %t2)
( %o2)
Maxima
Aqu se utiliza la funcin Bessel,
create_list
1
Jn (x),
con
variando desde
4.
dichas funciones.
( %i3) ( %t3)
( %o3)
165
14.2 Opciones
Hay muchas opciones para escoger en el trazado de grcos. La mayora de las veces, la aplicacin grca invocada por
Maxima
pro-
bablemente 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
Algunas de las opciones de
de
la
plot2d (wxplot2d).
166
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 selecciona el terminal a utilizar minal cin mente por Gnuplot; algunos valores posibles para el terinstrucciones de
son: dumb, png, jpg, eps, pdf, gif, etc. (la op-
gnuplot_term
puede
nicacon
plot_realpart run_viewer
false true
plot2d) si plot_realpart
utilizarse
vale
true,
se representar la parte real de un valor complejo controla si el visor apropiado para la salida grca debe ejecutarse o no
Algunas de las opciones de
plot2d (wxplot2d).
167
Maxima
He aqu un grco para el cual todas las opciones tienen asignados sus valores por defecto.
( %i4) ( %t5)
( %o4)
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.
( %i5) ( %t5)
( %o5)
168
Maxima
Esto especica el estilo del grco y la etiqueta para el eje y.
( %i6) ( %t6)
( %o6)
Maxima
Las expresiones que se dan como etiquetas puede ser cualquier porcin de texto, pero sta debe ponerse entre comillas.
( %i7)
wxplot2d(sin(x2), [x, 0, 3] , [xlabel, Porcin de texto para x] , [ylabel, Porcin de texto para y]);
( %t7)
( %o7)
169
Maxima
Es posible trazar funciones que tienen singularidades. Para este efecto resulta bastante til la opcin
( %i8) ( %t8)
( %o8)
plot2d (wxplot2d)
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 )
170
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
De esta forma se graca una lista de puntos aislados.
pts : create_list([i, sin(i)] , i, 0, 5); [[0, 0] , [1, sin(1)] , [2, sin(2)] , [3, sin(3)] , [4, sin(4)] , [5, sin(5)]] wxplot2d([discrete, pts] , [style, points]);
( %o10)
points
lines
points),
segundo,
[points n1 , n2 , n3 ]
(en el caso de
[lines n1 , n2 ] lines). En ambos casos el primer valor, n1 , correspon azul, 2 rojo, 3 verde, 4 violeta, 5 points est el tercer valor, n3 ,
negro, 6 celeste ).
n2 ,
al color (1
Finalmente para
171
que corresponde a la forma en que se visualiza el punto (1 disco, 2 crculo, 3 cruz, 4 aspa, 5 asterisco, 6 cuadrado relleno, 7 cuadrado sin rellenar, 8 tringulo relleno, 9 tringulo sin rellenar, 10 tringulo relleno invertido, 11 tringulo sin rellenar invertido, 12 rombo relleno, 13 rombo sin rellenar ).
Maxima
Aqu se muestran los puntos de la salida o, color y forma de los mismos.
%o9
( %i11) ( %t11)
( %o11)
Maxima
Aqu se muestran los puntos de la salida
%o9
( %i12) ( %t12)
( %o12)
172
plot2d(f (t), [t, tmin , tmax ] , [gnuplot_preamble, set polar]) plot2d([f (t), g(t), . . .] [t, tmin , tmax ] , [gnuplot_preamble, set polar])
Maxima
Esto devuelve la grca de la curva
t (cos(t), sen(t))
para
t [0, 2].
( %i13) ( %t13)
( %o13)
173
Maxima
Utilizando las opciones adecuadas es posible mejorar la presentacin de la salida
%o12.
( %i14)
wxplot2d( [parametric, cos(t), sin(t), [t, 0, 2 %pi]] , [gnuplot_preamble, set size ratio 1] , [nticks, 100] );
( %t14)
( %o14)
Maxima
Esto devuelve la grca de
= sen(2t).
( %i15) ( %t15)
( %o15)
174
plot2d (wxplot2d)
permite combinar
Maxima
Aqu se combinan varios tipos de grcos.
( %i16) ( %i17)
pts : create_list([i, sin(i)] , i, 0, 5) $ wxplot2d([ [parametric, cos(t), sin(t)] , [t, 0, 2 %pi] , sin(x2), [discrete, pts]] , [x, 2, 6] , [y, 2, 6] , [style, lines, lines, points] , [gnuplot_preamble, set size ratio 1]);
( %t17)
( %o17)
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,
175
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
Esto traza un grco de la funcin
f (x, y) = sen(xy).
( %i18) ( %t18)
( %o18)
176
Opcin
grid transform_xy gnuplot_term
Descripcin
establece el nmero de puntos de la retcula a utilizar en las direcciones
false default
permite que se realicen transformaciones en los grcos de tres dimensiones selecciona el terminal a utilizar por Gnuplot; algunos valores posibles son:
dumb, png,
gnuplot_term plot3d)
gnuplot
introduce dibujo
instrucciones
de
plot3d (wxplot3d)
Maxima
Esto traza un grco de
f (x, y) = sen(xy)
openmath.
( %i19) ( %o19)
177
Maxima
Esto traza un grco tridimensional de la supercie denida por coordenadas cilndricas4
r033 cos( th ) 3
en
( %i20)
wxplot3d(r 33 cos(th/3), [r, 0, 1] , [th, 0, 6 %pi] , [grid, 12, 80] , [transform_xy, polar_to_xy]);
( %t20)
( %o20)
plot3d (wxplot3d)
car curvas en
R3 .
traza el grco de una supercie paramtrica en una ventana independiente, siendo posible la interaccin en tiempo real con dicho grco
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 el cuaderno de trabajo actual, siendo imposible la interaccin en tiempo real con dicho grco
4 En
El
este
caso puede
se
ha
realizado sus
una
transformacin
de
coordenadas. la funcin
make_transform(vars, fx , fy , fz ).
cin
usuario
denir
propias
transformaciones
usando
178
Maxima
Esto devuelve la grca de la esfera unitaria denida paramtricamente mediante
. 2
( %i21) ( %t21)
wxplot3d([cos(u) cos(v), sin(u) cos(v), sin(v)] , [u, 0, 2 %pi] , [v, %pi/2, %pi/2]);
( %o21)
Maxima
Utilizando las opciones adecuadas es posible mejorar la presentacin de la salida
%o21.
( %i22)
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]);
( %t22)
( %o22)
179
igualmente
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
rectngulo
[xmin , xmax ]
dibuja de
las
curvas
de
nivel
f (x, y) en el rectngulo [xmin , xmax ] [ymin , ymax ] (cualesquiera otros argumentos adicionales se tratan como en
plot3d)
Grcos de contornos.
Maxima
Esto traza un grco de densidad de la funcin
f (x, y) = sen(xy)
en el rectngulo
( %i23) ( %t23)
( %o23)
180
Maxima
He aqu un grco de contorno de
f (x, y) = x2 + y 2 1.
( %i24) ( %o24)
con la cual se genera un grco idntico al que se genera con do luego el botn
wxplot2d,
sin embargo dicho grco puede ser animado selecionndolo y pulsandel cuadro de controles, de la barra de herramientas.
Maxima
Cuadro de controles, ubicado en la barra de herramientas, para la animacin de grcos.
with_slider
funcin
wxplot2d
para
animar
grcos
de
5 Es
importante sealar que adicionalmente estan incluidas las funciones relacionadas con las funciones
draw
181
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 automticamente sta es generada. Para detenerla basta pulsar el botn
del mismo cuadro. Tambin es posible navegar a travs de cada cuadro de la animacin con tan slo arrastrar a voluntad el botn seleccionado el grco. , despus de haber
( %i25) ( %t25)
with_slider(a, [0, 1, 2, 3, 4, 5] , sin(x + a), [x, 2 %pi, 2 %pi] , [y, 1,5, 1,5], [color, red]);
( %o25)
Maxima
He aqu otro grco listo para animar.
( %i26) ( %t26)
( %o26)
182
Maxima
Este es un grco ms listo para animar.
( %i27)
with_slider(a, [0, 1, 2, 3, 4, 5], [parametric, sin(t), sin(2 (t + a)), [t, 0, 2 %pi]], [x, 1 5, 1 5], [y, 1 5, 1 5], [color, red], [nticks, 50]);
( %t27)
( %o27)
El paquete con
Gnuplot.
Maxima
y cons-
funciones y opciones que permiten obtener la representacin de un amplio nmero 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
draw
183
184
draw
puntos bidimensionales
puntos bidimensionales
equivale a
puntos bidimensionales
polgono
polgono
(x1 , y1 )
(x2 , y2 )
con punto de aplicacin
ang1 y trazando un arco de amplitud ang2 f cuya variable x xmin hasta xmax E
to-
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 )
expresin implcita
a ser represen-
tada en el rectngulo
[xmin , xmax ]
[ymin , ymax ]
curva paramtrica bidimensional, cuyo parmetro hasta
tmin
toma
185
Las funciones
draw, draw2d
Gnuplot,
draw3d
wxMaxima
wxdraw3d,
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
draw3d,
Maxima
Aqu se genera una lista de listas. Los elementos de la misma, generados aleatoriamente, representan las coordenadas de puntos del plano.
( %i1) ( %o1)
p : create_list([random(20), random(50)], k, 1, 10); [[9, 9], [3, 39], [6, 26], [16, 3], [0, 21], [12, 9], [9, 18], [6, 45], [13, 43], [7, 28]]
Maxima
Despus de aplicar la funcin
points
a la variable
p,
draw2d.
( %i2) ( %t2)
wxdraw2d( points(p) );
( %o2)
[gr2d(points)]
186
draw
Maxima
Con
gr2d
draw
draw2d.
( %i3) ( %t3)
wxdraw( gr2d(points(p)) );
( %o3)
[gr2d(points)]
draw no cuenta con una funcin especca, como line, para denir true a la opcin points_joined para unir los puntos dados mediante segmenel objeto geomtrico lnea; simplemente se asigna el valor tos.
Maxima
Grca de los puntos
( %i4)
( %t4)
( %o4)
[gr2d(points)]
187
Maxima
As se visualiza la grca de un hexgono.
( %i5)
wxdraw2d( polygon([ [1/2, sqrt(3)/2], [1/2, sqrt(3)/2], [1, 0], [1/2, sqrt(3)/2], [1/2, sqrt(3)/2], [1, 0] ])
( %t5)
( %o5)
[gr2d(polygon)]
Maxima
Y as, la grca de un rectngulo.
( %i6)
( %t6)
( %o6)
[gr2d(rectangle)]
188
draw
Maxima
De esta manera se obtiene la grca del vector es el origen.
(10, 10),
( %i7)
( %t7)
( %o7)
[gr2d(vector)]
Maxima
Para insertar texto en un punto cualquiera de un grco se utiliza la funcin
label.
(0, 0 3).
( %i8)
( %t8)
( %o8)
[gr2d(label)]
189
Maxima
Esto devuelve la grca de un sector elptico, de origen, su semieje horizontal es
1,
su semieje vertical es
360 , 2.
cuyo centro es el
( %i9)
( %t9)
( %o9)
[gr2d(ellipse)]
Maxima
De esta manera se obtiene la grca de la funcin
x x2 ,
con
1 x 1.
( %i10)
wxdraw2d( explicit(x2, x, 1, 1) );
( %t10)
( %o10)
[gr2d(explicit)]
190
draw
Maxima
Esto muestra la grca de la ecuacin
x3 + y 3 3xy = 0
en el rectngulo
( %i11)
wxdraw2d( implicit(x3 + y3 3 x y = 0, x, 1, 2, y, 1, 2) );
( %t11)
( %o11)
[gr2d(implicit)]
Maxima
Aqu se muestra la grca de la curva denida en forma paramtrica mediante
t (sin(t), sin(2t)),
con
0 t 2 .
( %i12)
( %t12)
( %o12)
[gr2d(parametric)]
191
Maxima
Aqu se muestra la grca de la funcin denida en coordenadas polares mediante
t sen(t),
tal que
0 t 2 .
( %i13)
( %t13)
( %o13)
[gr2d(polar)]
Maxima
Combinar objetos grcos bidimensionales es sencillo con
draw2d.
( %i14)
( %t14)
( %o14)
[gr2d(parametric, polar)]
192
draw
Opcin
point_size point_type point_joined
Descripcin
establece el tamao de los puntos dibujados (debe ser un nmero no negativo)
false
Opciones de
draw2d
points.
Opcin
nticks border transparent fill_color
Opciones de
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
rectangle.
draw2d
polygon
193
Opcin
head_both head_length head_angle head_type unit_vectors
Opciones de
Descripcin
indica si el vector ser bidireccional o no indica, en las unidades del eje
45
filled false
para el objeto grco
especica cmo se habrn de dibujar las echas de los vectores especica si los vectores se dibujan con mdulo unidad
draw2d
vector.
Opcin
label_ alignment label_ orientation
Opciones de
Descripcin
especica el color que tendr el vector especica el color que tendr el vector
draw2d
label.
Opcin
nticks adapt_depth
Descripcin
indica el nmero de puntos a utilizar para generar las grcas
10
Opciones de
draw2d
explicit.
194
draw
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
Opciones de
draw2d
explicit.
Opcin
ip_grid ip_grid_in
Opciones de
Descripcin
establece la rejilla del primer muestreo para la grca establece la rejilla del segundo muestreo para la grca
draw2d
implicit.
Opcin
nticks
Descripcin
indica el nmero de puntos a utilizar para generar las grcas
Opciones de y
polar.
draw2d
parametric
point
grco
label. Tampoco la opcin color es relevante con el objeto label, esto constituye una falla que ser corregida cuando se
incorpore, a
195
Opcin
color line_width line_type key
Descripcin
especica el color para dibujar lneas, puntos y bordes de polgonos
solid solid
draw2d.
solid
dots)
Opcin
proportional_ axes
Descripcin
indica si una escena bidimensional se dibujar con los ejes proporcionales a sus longitudes relativas (valores posibles:
xy)
(valores posibles:
[xmin , xmax ])
(valores posibles:
[ymin , ymax ])
draw2d.
196
draw
Opcin
logy terminal
Descripcin
permite especicar si el eje rtmica selecciona a utilizar (valores el por posibles terminal
Gnuplot
son:
screen, png, jpg, eps, eps_color, pdf, pdfcairo, gif, animated_gif, wxt y aquaterm) file_name maxima_out
en el que los terminales png, jpg, eps, eps_color, pdf, pdfcairo, etc. guardarn el grco indica el nombre del chero
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.
197
Opcin
xtics_axis
Descripcin
indica si las marcas y sus etiquetas se dibujan sobre el propio eje largo del borde del grco
x, o se colocan a lo
xtics pero con el xtics_axis
pero
ytics ytics_axis xaxis xaxis_width xaxis_type xaxis_color yaxis yaxis_width yaxis_type yaxis_color file_bgcolor delay
solid
el eje
dots)
(valores admisibles:
y
pero
xaxis_type
y
gif
png, jpg
rgb ) para
y
gif
ani-
eps_width
12
cm )
eps
del y
generado
eps_color
eps_height
12
draw2d.
cm ) del ar-
198
draw
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
jpg
640
draw2d.
inserta cdigo
Gnuplot
Maxima
Aqu se usa
user_preamble
xy
a la opcin
proportional_axes.
( %i15)
( %t15)
( %o15)
[gr2d(parametric)]
199
Maxima
He aqu la regin encerrada por las parbolas
y = x2
y = 1 x2 .
( %i16)
wxdraw2d( filled_func = x2, fill_color = yellow, explicit(1 x2, x, sqrt(2)/2, sqrt(2)/2), filled_func = false, line_width = 3, key = 1 x2 , color = blue, explicit(1 x2, x, sqrt(2)/2, sqrt(2)/2), key = x2 , color = red, explicit(x2, x, sqrt(2)/2, sqrt(2)/2) );
( %t16)
( %o16)
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.
( %i17) ( %o17)
sol : solve([x2 + y2 = 1, y 2 x2 + 3/2 = 0], [x, y]); 5+5 5+5 x= , y = 51 , x = , y = 51 , 3 3 4 4 22 22 x = 5 5 , y = 5+1 , x = 5 5 , y = 5+1 3 3 4 4
22 22
200
draw
Maxima
Esto almacena las coordenadas de los puntos de interseccin, previamente calculados, en la variable
pts.
( %i18) ( %o18)
pts : map(lambda([h], subst(h, [x, y])), sol); 5+5 5+5 , 51 , , 51 , 5 5 , 5+1 , 3 3 3 4 4 4 22 22 22 5 5 , 5+1 3 4
22
Maxima
He aqu un grco de las curvas denidas por los respectivos puntos de interseccin.
x2 + y 2 = 1
y 2x2 +
3 2
=0
( %i19)
wxdraw2d( line_width = 2, color = blue, implicit(x2 + y2 = 1, x, 1 5, 1 5, y, 1 5, 1 5), color = red, implicit(y 2 x2 + 3/2 = 0, x, 1 5, 1 5, y, 1 5, 1 5) color = black point_size = 1,5, point_type = 7, points(pts), );
( %t19)
( %o19)
[gr2d(parametric)]
201
Maxima
Aqu se dene la curva paramtrica
a.
( %i20)
Maxima
Esto dene el campo vectorial tangente asociado a la curva
a.
( %i21)
Maxima
Aqu se construyen la lista
y la lista
de
t0 ,
t0.
Maxima
Este grco muestra la curva
( %i25)
wxdraw2d( title = Campo vectorial tangente, color = red, parametric(t, sin(t), t, 0, 2 %pi), color = blue, head_length = 0 2, head_angle = 10, unit_vectors = true, T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9], color = green, point_type = 7, points(P) );
202
draw
( %t25)
( %o25)
[gr2d(parametric, vector, vector, vector, vector, vector, vector, vector, vector, vector, points)]
Maxima
A continuacin se construye la lista
a.
( %i26) ( %i27)
Maxima
Este grco muestra la curva
a,
la curva, un conjunto de vectores unitarios normales a la misma y los puntos de aplicacin de los vectores.
( %i28)
wxdraw2d( title = Campos vectoriales tangente y normal, color = red, parametric(t, sin(t), t, 0, 2 %pi), color = blue, head_length = 0 2, head_angle = 10, unit_vectors = true, T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9], color = yellow, N[1], N[2], N[3], N[4], N[5], N[6], N[7], N[8], N[9], color = green, point_type = 7, points(P), proportional_axes = xy )$
203
( %t28)
Maxima
He aqu un grco polar mejorado.
( %i29) ( %t29)
( %o29)
[gr2d(polar)]
puntos tridimensionales
draw.
204
draw
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
vector cin
(v1 , v2 , v3 ) (p1 , p2 , p3 )
y ymax
expresin implcita da en el paraleleppedo
satisface
tmin t
tmax
supercie denida paramtricamente, cuyos parmetros satisfacen
umin
u umax
tisfacen
vmin v vmax
funcin cilndrica
max
funcin esfrica facen
max
dene un grco tridimensional de la matriz
m (los valores z se toman de m, las abscisas van desde x0 hasta x0 + ancho y las ordenadas desde y0 hasta y0 + largo)
supercie tubular de radio
fr ,
genera-
t satis-
tmin t tmax
draw.
205
Maxima
Aqu se genera, en forma aleatoria, un conjunto de puntos tridmensionales. Luego se muestra la grca de los dichos puntos.
( %o31)
[gr3d(points)]
Maxima
Asignando el valor
true
a la opcin
plot_joined
p.
( %i32)
( %t32)
( %o32)
[gr3d(points)]
206
draw
Maxima
Aqu se muestra la grca del vector cuyo punto de aplicacin es el origen y cuya parte vectorial es
(1, 1, 1).
( %i33)
( %t33)
( %o33)
[gr3d(vector)]
Maxima
He aqu un texto insertado en el punto
(0, 0, 1).
( %i34)
( %t34)
( %o34)
[gr3d(label)]
207
Maxima
Esto muestra la grca de la funcin
con
0 x 2
0 y 2 .
( %i35)
( %t35)
( %o35)
[gr3d(explicit)]
Maxima
Aqu se muestra la grca de la supercie generada a partir de la ecuacin
x2 + y 2 4)2 + z 2 = 4,
con
6 x 6, 6 y 6
2 z 2.
( %i36)
( %t36)
( %o36)
[gr3d(implicit)]
208
draw
Maxima
Esta es la grca de la curva
t t (cos t, sen t, 8 ),
con
0 t 4 .
( %i37)
( %t37)
( %o37)
[gr3d(parametric)]
Maxima
Aqu se muestra la grca de la supercie denida por
con
0 u 2
0 v 2 .
( %i38)
( %t38)
( %o38)
[gr3d(parametric_surface)]
209
Maxima
Esta es la grca de la supercie denida en coordenadas cilndricas mediante
(z, t) cos z ,
con
2 z 2
0 t 2 .
( %i39)
( %t39)
( %o39)
[gr3d(cylindical)]
Maxima
He aqu la grca de la supercie denida en coordenadas esfricas mediante
(a, t) 1,
con
0 a 2
0 t .
( %i40)
( %t40)
( %o40)
[gr3d(spherical)]
210
draw
Maxima
Esta es la grca de un objeto geomtrico tridimensional de tipo
mesh.
( %o41)
[gr3d(mesh)]
Maxima
He aqu la grca de la supercie tubular, de radio curva
cos
t 2 , generada por la 10
t (cos t, t, 0),
con
0 t 4 .
( %i42)
( %t42)
( %o42)
[gr3d(tube)]
211
Opcin
xu_grid yv_grid
Descripcin
indica el nmero de coordenadas de
de puntos muestrales
30
de puntos muestrales
Opciones de
spherical
draw3d tube.
para
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
Opciones de
draw3d
para
implicit.
212
draw
Opcin
nticks
Descripcin
indica el nmero de puntos a utilizar para generar las grcas
Opciones de
draw3d
para
parametric.
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 nivel)
a ese
rot_vertical
60
x)
(al-
para si-
tuar el punto del observador en las escenas tridimensionales (el ngulo debe pertenecer al intervalo
Algunas opciones globales de
[0, 180])
draw3d.
213
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
= gray palette = color son atajos para palette = [3,3,3] y palette = [7,5,15], resy pectivamente)
enhanced3d
false
si
enhanced3d
Si
vale
true,
los de ex-
Gnuplot.
presin
pm3d
una
cepto en
se
da
draw3d.
214
draw
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: y
both contour_levels 5
controla cmo se dibujarn las lneas de nivel (valores posibles: n, [inicio, inc, f in] {n1 , n2 , . . .} y
draw3d.
Maxima
Aqu se han cambiado los valores por defecto de dos opciones de tado se aprecia al mostrar los puntos generados en
draw3d. El resul-
( %i30)
( %i43)
( %t43)
( %o43)
[gr3d(points)]
215
Maxima
Esto dene una curva, algunos puntos sobre sta y algunos vectores tangentes a la misma.
a(t) := [cos(t), sin(t), t/8] $ define( a (t), diff(a(t), t) ) $ t0 : create_list(i %pi/4, i, 0, 8) $ T : create_list(vector(a(i), a (i)), i, t0) $ P : map(a, t0) $
Maxima
He aqu la grca de todos los objetos grcos tridimensionales previamente denidos.
( %i49)
wxdraw3d( color = red, parametric(t, sin(t), t/8, t, 0, 2 %pi), color = blue, head_angle = 10, unit_vectors = true, T[1], T[2], T[3], T[4], T[5], T[6], T[7], T[8], T[9], color = green, point_type = 7, points(P) );
( %t49)
( %o49)
[gr3d(parametric, vector, vector, vector, vector, vector, vector, vector, vector, vector, points)]
216
draw
Maxima
Esta es la grca de
( %t35)
( %i50)
wxdraw3d( xu_grid = 150, yv_grid = 150, enhanced3d = cos(x y), explicit(sin(x) + sin(x y), x, 0, 2 %pi, y, 0, 2 %pi) );
( %t50)
( %o50)
[gr3d(explicit)]
Maxima
Esta es la grca de
( %t35)
( %i51)
wxdraw3d( xu_grid = 150, yv_grid = 150, palette = [6, 5, 15], enhanced3d = sin(x y), explicit(sin(x) + sin(x y), x, 0, 2 %pi, y, 0, 2 %pi) );
( %t51)
( %o51)
[gr3d(explicit)]
217
Maxima
He aqu la supercie obtenida en
( %t36)
( %i52)
wxdraw3d( x_voxel = 17, y_voxel = 17, z_voxel = 15, palette = [12, 5, 27], enhanced3d = true, implicit((sqrt(x2 + y2 ) 4)2 + z2 = 4, x, 6, 6, y, 6, 6, z, 2, 2) );
( %t52)
( %o52)
[gr3d(implicit)]
draw
ja los valores para las opciones grcas del usuario (llamando a la funcin sin argumentos se borran las opciones jadas por el usuario)
218
draw
Maxima
Aqu se jan los valores de algunas opciones.
( %i53)
Maxima
A continuacin se graca una parbola sin especicaciones para ninguna opcin.
( %i54)
wxdraw2d( explicit(x2 , x, 2, 2) );
( %t54)
( %o54)
[gr2d(explicit)]
Descripcin
indica el nmero de columnas a considerar cuando se realizan grcos mltiples
219
Maxima
Esto dene dos escenas una bidimensional y otra tridmensional.
( %i55) ( %i56)
Maxima
Con
draw
( %i57) ( %t57)
wxdraw(f1, f2) $
Maxima
Con la opcin
columns
( %i58) ( %t58)
220
draw
Maxima
De esta manera se borran las opciones que fueron jadas en
( %i51)
( %i59)
set_draw_defaults() $
Maxima
El aspecto de las grcas luce ahora diferente, pues se han restituido los valores por defecto de las opciones.
( %i60) ( %t60)
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.
Maxima
Cuadro de controles, ubicado en la barra de herramientas, para la animacin de grcos.
221
with_slider_draw with_slider_draw3d
funcin
wxdraw2d
funcin
para
animar
grcos
de
wxdraw3d
draw.
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 automticamente sta es generada. Para detenerla basta pulsar el botn
del mismo cuadro. Tambin es posible navegar a travs de cada cuadro de la animacin con tan slo arrastrar a voluntad el botn seleccionado el grco. , despus de haber
( %i61)
with_slider_draw( a, [0, 1, 2, 3, 4, 5], color = red, line_width = 2, yrange = [1,5, 1,5], explicit(sin(x + a), x, 2 %pi, 2 %pi) );
( %t61)
( %o61)
Maxima
A continuacin se dene la funcin inja
( %i62) ( %i63)
infix(/ ) $ / (a, b) := [a[2] b[3] b[2] a[3], b[1] a[3] a[1] b[3], a[1] b[2] b[1] a[2]] $
222
draw
Maxima
Esto dene la curva
a,
a(t) := [cos(t), sin(t), t/8] $ define( a (t), diff(a(t), t) ) $ define( a (t), diff(a(t), t, 2) ) $
Maxima
Al animar la siguiente secuencia de cuadros se visualiza el tiedro de Frenet recorriendo la curva
a.
( %i67)
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);
( %t67)
( %o67)
223
Maxima
Esta es la animacin de un morsmo entre la esfera y el toro.
( %i68)
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) );
( %t68)
( %o68)
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
He aqu una expresin, impresa en forma estndar de Maxima.
( %i1) ( %o1)
(x + y)2/sqrt(x y); 2 (y + x) xy
224
225
Maxima
He aqu la expresin previa en forma de entrada para T X. E
( %i2) ( %o2)
tex( %);
false
Maxima
Esto aade la expresin cado en
d:/maximatex/.
(y + x)2 , xy
traducida a T X, al archivo E
ejemplo.tex
ubi-
( %i3) ( %o3)
mo
op
op
despus )
devuelve el entorno T Xque se aplica E a expresiones para las cuales el operador de mayor rango no tiene entorno T Xasignado E
despus )
226
Maxima
De esta forma se asigna cdigo T Xpara una variable. E
( %i4) ( %o4)
Maxima
Ahora puede usarse la asignacin anterior para generar ms cdigo T X. E
( %i5) ( %o5)
tex(s + 1/2);
false
Maxima
El entorno T X aplicado, por defecto, a expresiones, en Maxima, es $$ $$. E
( %i6) ( %o6)
tex(3/4);
false
Maxima
Con la funcin set_tex_environment_default es posible cambiar el entorno T X. E En este caso se ha anulado todo entorno.
( %i7) ( %o7)
set_tex_environment_default( , ); []
Maxima
He aqu el resultado del nuevo cdigo T X. E
( %i8) ( %o8)
tex(3/4);
false
227
Adems de traducir expresiones individuales a T X, tamE A bin traduce cuadernos completos a documentos pdf L T X. Para ello E el usuario debe digitar el nombre que asignar al archivo resultante, as como la respectiva extensin, ventana men
Maxima
tex, en la casilla Nombre de la Exportar que aparece despus de elegir la opcin Exportar del Archivo.
Maxima
Primer paso para exportar un cuaderno.
Maxima
A E Exportando un cuaderno como documento pdf L T X
228
Maxima
html.
dernos completos a pginas web. El proceso que debe seguirse para la traduccin es el mismo que se sigui en la pgina 227, pero en este caso la extensin ser
expr
para Fortran
Maxima
Aqu se obtienen expresiones para Lisp y Fortran.
( %i9) x2 + 2 x + 1; ( %o9) x2 + 2 x + 1 ( %i10) : lisp $ %i7; ( %i11) fortran(x2 + 2 x + 1); x 2 + 2 x + 1 ( %o11) done
Maxima
Maxima
La elaboracin de programas con el lenguaje de programacin de permite al usuario denir sus propias funciones. De esta ma-
nera se hace posible la automatizacin de secuencias de operaciones que son tiles para abordar la solucin de un determinado tipo de problema. 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.
Maxi-
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
229
230
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
< <= = # equal notequal >= > and or not
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 Descripcin
if for
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
unless
for, while
231
Maxima
He aqu un ejemplo sencillo en el que se muestra la sintaxis de
if.
Maxima
En este ejemplo se aade el resultado ha obtener en caso de que la condicin sea falsa.
( %i3) ( %o3)
if 2 = 3 then 1 else 3; 3
Tngase en cuenta que las expresiones consideradas en los ejemplos 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).
( %i4) ( %o4)
Maxima
Mediante este otro ejemplo se muestra la sintaxis de
for.
( %i5) 1 3 5 ( %o5)
done
232
Maxima
Si no se indica el paso (incremento) se asume uno, por defecto.
( %i6) 1 2 3 ( %o6)
done
Maxima
Para inicializar el contador en
while
se utiliza
for.
( %i7) 1 2 3 ( %o7)
done
Maxima
Para inicializar el contador en
unless
tambin se utiliza
for.
( %i8) 1 2 3 ( %o8)
done
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
233
op(expr) args(expr)
expr
permite obtener una lista cuyos elementos son los argumentos de la expresin
expr
Maxima
Aqu se dene la expresin
a + b,
expr.
( %i9) ( %o9)
expr : a + b; b+a
Maxima
A continuacin, con la primera operacin se obtiene el operador de la expresin previamente denida; y en la segunda, se obtiene una lista con los argumentos de dicha expresin.
Maxima
Es posible reconstruir la expresin usando la funcin
apply.
( %i12) ( %o12)
Maxima
Esto dene otra expresin.
( %i13) ( %o13)
234
Maxima
Aqu, nuevamente, se obtienen el operador y los argumentos de la expresin.
Maxima
Tambin es posible reconstruir la ltima expresin usando la funcin
apply.
( %i16) ( %o16)
Maxima
Algunas expresiones (plot2d,
integrate,
( %i17) ( %o17)
Maxima
Ahora si es posible obtener el operador y los argumentos de la expresin.
Maxima
Tambin las listas y los conjuntos son objetos de la forma fun(a1 , . . . , an ). Aqu se almacena una lista cualquiera en la variable
expr.
( %i20) ( %o20)
235
Maxima
Del mismo modo que en los ejemplos anteriores se obtienen el operador y una lista con los argumentos.
map, lambda
funcional.
programacin funcional es la programacin que pone nfasis en Maxima incluye las funciones predenidas apply,
que permiten apreciar la potencia de la programacin
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
236
Maxima
Aqu se dene la funcin
G,
G.
Maxima
En este caso se aplica la funcin predenida
min.
( %i25) ( %o25)
Maxima
Esto dene la funcin
Maxima
Aqu se muestra la denicin de una funcin lambda argumentos.
f,
Maxima
Ahora se dene una funcin lambda con argumento opcional.
ejemplo
237
( %i32) ( %o32)
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.
triangulo
triangulo.
ejemplo, circunferencia.
que incor-
Maxima
Aqu se dene la funcin Esta funcin permite calcular el rea de un tringulo y el baricentro de un conjunto de puntos de
R2
( %i36)
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, , u2), sconcat(Baricentro, : , b)]) )$
238
Maxima
Dado el conjunto de puntos del plano cin
no colineales, la fun-
triangulo
p : [ [1, 2], [3, 1], [2, 3] ] $ triangulo(p); [ Area : 5/2 u2, Baricentro : [2, 4/3] ]
Maxima
Para visualizar los grcos se utilizar el paquete
draw.
( %i39)
load(draw) $
Maxima
Esto muestra la grca del tringulo previamente analizado, conjuntamente con el punto que corresponde al baricentro del mismo.
( %i40)
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 );
( %t40)
( %o40)
[gr2d(polygon,points)]
ejemplo
239
Maxima
Puesto que, en este caso, los puntos del conjunto les, la funcin
son colinea-
triangulo
p : [ [1, 1], [2, 2], [3, 3] ] $ triangulo(p); Los puntos son colineales
Maxima
Aqu se dene la funcin
circunferencia
( %i43)
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, x2)) = 0) )$
Maxima
Dado el conjunto de puntos del plano cin
no colineales, la fun-
circunferencia
puntos.
240
Maxima
Esto muestra la grca de la circunferencia previamente analizada, conjunatmente con los puntos que la denen.
( %i46)
wxdraw2d( implicit(circunferencia(p), x, 0, 6, y, 2, 4), point_type = 6, color = red, point_size = 1, points(p), user_preamble = set size ratio 1 );
( %t46)
( %o46)
[gr2d(polygon,points)]
Maxima
Igual que con la funcin
triangulo,
{(1, 1),
(2, 2), (3, 3)}, la funcin circunferencia devuelve un mensaje indicando que stos
son colineales.
p : [ [1, 1], [2, 2], [3, 3] ] $ circunferencia(p); 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
ejemplo
241
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 usario, en este caso ste es:
d:/maximapackages.
( %i49)
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
Esto inicializa el paquete
ejemplo.lisp
( %i1)
load(d : /maximapackages/ejemplo.lisp) $
Maxima
Ahora es posible ejecutar cualquiera de las funciones incorporadas en el paquete
ejemplo.lisp
p : [ [0, 0], [2, 0], [1, sqrt(3)] ] $ triangulo(p); [ Area : sqrt(3) u2, Baricentro : [1, 1/sqrt(3)] ]
Bibliografa
[1] Fokker,
J.
PROGRAMACIN
FUNCIONAL.
LIBRE
AULA
MATEMTICAS.
http://knuth.uca.es/repos/maxima (2007). [3] Rodrguez, M. y Villate, J. MANUAL DE MAXIMA ver. 5.18. (2009). [4] Rodrguez, M. PRIMEROS PASOS EN MAXIMA. http://maxima.sourceforge.net/es/documentation.html
www.telefonica.net/web2/biomates/maxima/max.pdf (2008). [5] Rodrguez, M. SOFTWARE MATEMTICO BSICO: MAXIMA. www.telefonica.net/web2/biomates/maxima/i-math.pdf (2008). [6] Rodrguez, M. MAXIMA: UNA HERRAMIENTA DE CLCULO. (2006). http://softwarelibre.uca.es/cursos/maxima/cadiz.pdf