Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Segunda Edicin
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
2
1.5
1
0.5
0
-0.5
0 0.5
1 1.5
2 2.5
3 0
0.5
R. Ipanaqu
e upublicaciones t
med ne
1.5
2.5
Departamento de Matemtica
Universidad Nacional de Piura
https://sites.google.com/site/ripanaque
robertchero@hotmail.com
http://www.gnu.org/copyleft/gpl.html
http://www.eumed.net
Hecho el depsito legal en la Biblioteca Nacional de Espaa
con Registro N 10/101865
ISBN-13: 978-84-693-7160-2
En memoria de mi padre,
Juan A. Ipanaqu Vargas
ndice general
Prlogo
xi
1. Obtencin de
Maxima
1.1.
Descarga . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.
Instalacin . . . . . . . . . . . . . . . . . . . . . . . . .
2. Funcionamiento de
Maxima
2.1.
Interfaz de cuaderno
. . . . . . . . . . . . . . . . . . .
2.2.
10
Maxima
12
Maxima
3.1.
La estructura de
3.2.
. . . . . . . . . . . . . .
14
3.3.
17
3.4.
Bsqueda de ayuda . . . . . . . . . . . . . . . . . . . .
20
3.5.
Reinicio
. . . . . . . . . . . . . . . . . . . . . . . . . .
23
3.6.
Comentarios . . . . . . . . . . . . . . . . . . . . . . . .
23
3.7.
Paquetes en
. . . . . . . . . . . . . . . . . . .
24
3.8.
Advertencias y mensajes . . . . . . . . . . . . . . . . .
25
3.9.
Interrupcin de clculos
25
Maxima
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
12
ndice
vi
4. Clculos numricos
26
4.1.
Aritmtica . . . . . . . . . . . . . . . . . . . . . . . . .
26
4.2.
. . . . . . . . . . .
27
4.3.
30
4.4.
. . . . . . . . . . . .
33
4.5.
Nmeros complejos . . . . . . . . . . . . . . . . . . . .
35
5. Generacin de clculos
37
5.1.
37
5.2.
Denicin de variables . . . . . . . . . . . . . . . . . .
39
5.3.
Secuencia de operaciones . . . . . . . . . . . . . . . . .
42
5.4.
44
. . . . . . . . . .
6. Clculos algebraicos
47
6.1.
Clculo simblico . . . . . . . . . . . . . . . . . . . . .
47
6.2.
. . . . . . . . . . . . . . . . . .
50
6.3.
54
6.4.
56
6.5.
58
6.6.
. . . . . . . . . . . . . .
64
6.7.
66
7. Matemticas simblicas
68
7.1.
Lmites
. . . . . . . . . . . . . . . . . . . . . . . . . .
68
7.2.
Diferenciacin . . . . . . . . . . . . . . . . . . . . . . .
70
7.3.
Integracin
. . . . . . . . . . . . . . . . . . . . . . . .
73
7.4.
Sumas y Productos . . . . . . . . . . . . . . . . . . . .
78
7.5.
. . . . . . . . . . . .
81
7.6.
Ecuaciones
. . . . . . . . . . . . . . . . . . . . . . . .
84
ndice
vii
7.7.
85
7.8.
. . . . . . . .
87
7.9.
92
94
. . . . . . . . . . .
95
97
99
. . . . . . . . . . . . . . . .
102
103
8. Matemticas numricas
105
8.1.
. . . . . . . . . . . .
105
8.2.
Integrales numricas
. . . . . . . . . . . . . . . . . . .
107
9. Funciones y programas
109
9.1.
Denicin de funciones . . . . . . . . . . . . . . . . . .
109
9.2.
118
9.3.
121
9.4.
124
10.Listas
10.1. Juntar objetos
129
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . .
129
130
133
. . . . .
136
. . . . . . . . . . . . . . . . . .
137
. . . . . . . . . . . . . . . .
138
. . . . . . . .
140
. . . . . . . . . . . . . . . . .
141
. . . . . . . . . . . .
142
ndice
viii
11.Arrays
144
12.Matrices
147
. . . . . . . . . . . . . . . . .
147
150
151
. . . . . . . . . . . . . . . . .
. . . . . . . . . .
155
158
159
. . . . . . . . . . . . . . .
13.Conjuntos
161
161
163
164
. . . . . . . . .
. . .
165
. . . . . .
167
168
168
171
14.Grcos
173
174
14.2. Opciones . . . . . . . . . . . . . . . . . . . . . . . . . .
176
. . . . . . . . . . . . . . .
180
183
185
185
190
191
. . . . . . . . . . . . . . . . . . . .
ndice
Archivo
15.2. El men
ix
wxMaxima
194
. . . . . . . . . . . . . . . . . . . . .
194
Editar
. . . . . . . . . . . . . . . . . . . . . .
197
15.3. El men
Celda
. . . . . . . . . . . . . . . . . . . . . .
200
15.4. El men
Maxima
15.5. El men
Ecuaciones
15.6. El men
lgebra
15.7. El men
Anlisis
15.8. El men
Simplificar
15.9. El men
Grficos
15.10.El men
Numrico
15.11.El men
Ayuda
. . . . . . . . . . . . . . . . . . . .
203
. . . . . . . . . . . . . . . . . .
204
. . . . . . . . . . . . . . . . . . . .
207
. . . . . . . . . . . . . . . . . . . . .
211
. . . . . . . . . . . . . . . . . . .
214
. . . . . . . . . . . . . . . . . . . .
216
. . . . . . . . . . . . . . . . . . .
219
. . . . . . . . . . . . . . . . . . . . .
220
222
. . . . . . . . . . . .
223
. .
234
. . . . . . . . . . . . . . . . .
234
237
238
241
. . . . . . . . . . . .
246
254
. . . . . . . . . . . . . . . . .
254
255
255
257
260
. . . . . . . . . . . . . . . . . . . .
261
. . . . . . . . . . . . . . . . . . . .
263
ndice
267
271
271
274
. . . . . . . . . . . . .
19.Programacin con
. . . . . . .
Maxima
276
275
. . . . . . . . . . . .
276
. . . . . . . . . . . . . . . .
279
. . . . . . . . . . . . . . . . .
282
ejemplo
. . . . . . . . .
284
Prlogo
Maxima v5.25.1,
Maxima
xi
Prlogo
xii
tes que son de gran utilidad. Adems, en el ltimo captulo se dan los
lineamientos generales para la elaboracin de paquetes de funciones.
Esto con la nalidad que el usuario obtenga el mximo provecho en
el uso de
Maxima.
xima,
Ma-
R. Ipanaqu
Piura, Per
CAPTULO
Obtencin de
Maxima
Maxima
Maxima
en el sistema
1.1 Descarga
Maxima
sourceforge
software privativo ).
Maxima
es la siguiente:
http://sourceforge.net/projects/maxima/files
1 Cdigo
Figura 1.1:
Maxima-5.25.1.exe.
Maxima
Maxima-5.25.1.exe que es
MB de espacio en memoria.
Una vez descargado el instalador se ver un icono, como el que se
aprecia en la gura 1.2, en la carpeta donde ste se haya descargado.
1.2 Instalacin
Despus de la descarga se procede a instalar
Maxima,
lo cual debe
Figura 1.2:
Maxima-5.25.1.exe.
Ejecutar .
Figura 1.3:
3. Seleccionar el idioma
(g. 1.4).
Figura 1.4:
Cuadro de vericacin.
Espaol y hacer clic sobre el botn Aceptar
Siguiente del
al asistente de instalacin de Maxima
5. Seleccionar la opcin
do de Licencia.
Bienvenido
(g. 1.5).
Acepto el acuerdo
Acuer
Siguiente del
del cuadro
1.7).
cuadro
Siguiente del cuadro Informacin (g.
7. Seleccionar la carpeta en la cual se quiere instalar Maxima (generalmente se deja la carpeta que aparece por defecto) y luego
Figura 1.5:
Cuadro
xima.
Figura 1.6:
Cuadro
Carpeta de Destino
Acuerdo de Licencia.
Siguiente del
cuadro
Seleccione la
(g. 1.8).
8. En el cuadro
casillas
remos
Figura 1.7:
Figura 1.8:
Cuadro
Cuadro
Informacin.
Maxima
10.
Siguiente del cuadro Seleccione la Carpeta del Men Ini
cio (g. 1.10).
Hacer clic en el botn Siguiente del cuadro seleccione las
Tareas Adicionales para que el asistente cree un icono de acceso directo a
Maxima
Instalar del
cuadro
Figura 1.9:
Figura 1.10:
Cuadro
Cuadro
(g. 1.12).
12. Hacer clic en el botn
1.13).
Siguiente del cuadro Informacin (g.
Finalizar del cuadro Completando la Instalacin de Maxima (g. 1.14).
Maxima
Figura 1.11:
Cuadro
Figura 1.12:
Cuadro
XMaxima
wxMaxima )
usuarios de habla hispana. Adems, debe haberse creado automticamente, en el escritorio de su ordenador (computadora), el icono de
acceso directo al entorno grco
wxMaxima
(g. 1.15).
Figura 1.13:
Figura 1.14:
Cuadro
Figura 1.15:
Cuadro
Informacin.
CAPTULO
Funcionamiento de
Maxima
Maxima
men de Inicio
nalizar
texto
con
Shift
Enter
entrada para
salir de
Maxima
Maxima
men
wxMaxima,
Maxima,
a travs
wxMaxima,
despus
Shift Enter y Maxima
( %in )
, la procesa y devuelve la
( %on )
10
Maxima
El usuario digita
( %i1) 1+1;
( %o1) 2
Debe recordarse que los cuadernos corresponden al entorno grco
wxMaxima.
El ncleo de
Maxima
Maxima
entrada para Maxima
inicializar
Enter
quit();
salir de
Maxima
xima
Maxima
maxima
( %i1),
Ma-
esta lista para que el usuario haga su entrada. ste puede entonces
Maxima
etiquetar con
( %o1).
cuaderno de
11
CAPTULO
Maxima
3.1 La estructura de
Maxima
Maxima
ncleo responsable de todos los clculos
wxMaxima
XMaxima
wxMaxima )
Maxima
XMaxima
wxMaxima.
XMaxima
Maxima.
En
Windows se instala automticamente. Presenta algunas ventajas como la integracin en formato HTML de manuales de ayuda. Sin em12
Figura 3.1:
13
bargo, tambin tiene algunas desventajas con respecto a otras interfaces ms modernas.
wxMaxima 1 ,
wxwidgets,
gracias
1 wxMaxima
http://wxmaxima.sourceforge.net
14
Figura 3.2:
documentos interactivos
wxMaxima
wxMaxima
Figura 3.3:
15
cuadernos extensos, es comn tener los captulos, secciones etc., representados cada uno en grupos de celdas. La extensin de estos grupos
de celdas es indicada por el botn asociado a la celda dominante que
es una celda de estilo ttulo, seccin o subseccin.
Un grupo de celdas puede estar abierto o cerrado. Cuando est
abierto se puede ver todas sus celdas explcitamente. Pero cuando est
cerrado, slo puede verse la celda que encabeza el grupo de celdas.
Los cuadernos extensos son a menudo distribuidos con muchos
grupos de celdas cerradas, para que cuando sean vistos por primera
vez el cuaderno muestre solamente una lista de su contenido. Es posible abrir las partes en las que el usuario est interesado haciendo clic
sobre el botn apropiado.
A cada celda dentro de un cuaderno se le asigna un estilo en
particular que indica su rol dentro del cuaderno.
La interfaz de
wxMaxima
de teclas para insertar celdas con diferentes estilos todos ellos estn
disponibles en el ltimo bloque del men
Cell.
16
Figura 3.4:
Haciendo clic sobre el botn que corresponde a la celda dominante se cierra el grupo, dejando slo la primera
celda visible.
Figura 3.5:
Figura 3.6:
Figura 3.7:
17
Figura 3.8:
mientras que el que se entiende para ser ledo como solamente de texto
est en estilo Text (texto).
wxMaxima
para los estilos de los ttulos, secciones, etc. Sin embargo, es posible
cambiar algunos aspectos de dicha conguracin haciendo clic en la
opcin
Preferencias
del men
Editar.
Preferencias se desplega la
Configuracin de wxMaxima que incorpora dos pestaas:
Opciones y Estilo.
Despus de hacer clic en la opcin
ventana
18
Figura 3.9:
Cuadro 3.1:
Fuentes
Tipo
Fuente predeterminada
Fuente matemtica
la pestaa
Aceptar ,
wxMaxima
Estilo
Cuadro 3.2:
19
Estilos
Nombre de funciones
Color
Fuente
Aspecto
Tam.
rgb(0,0,0)
Courier New
Gruesa,
12
Itlica
Celda de texto
Celda de subseccin
Celda de seccin
Celda de ttulo
Fondo de celda
de texto
Fondo
Figura 3.10:
rgb(0,0,0)
Tahoma
Normal
12
rgb(188,73,18)
Tahoma
Gruesa
16
rgb(188,73,18)
Tahoma
Gruesa
18
rgb(54,95,145)
Tahoma
Gruesa
24
rgb(252,250,245)
rgb(252,250,245)
20
Figura 3.11:
ndice
de la
Ayuda
de Maxima
Maxima
estn descritas en el
Maxima.
?.
2 describe
describe2
false
o tambin el smbolo
describe
devuelve
en caso contrario.
true
si en-
describe(string )
21
string
describe(string,exact )
describe(string,inexact )
equivale a
describe(string )
string
en sus
ttulos
?name
??name
equivale a
describe("name")
equivale a
describe("name",inexact)
Maxima
max.
( %i1) describe("max");
un
valor
expresiones
simplicado
desde
<x_1>
de
hasta
la
mayor
de
<x_n>.
Si
( %o1)
true
22
Maxima
true
false
"plus"
ciones que desee consultar (aqu las opciones disponibles son: 0,1,2,3, all y none).
( %i2) describe("plus",inexact);
0: doscmxplus (Funciones y variables para las matrices
y el lgebra lineal).
1: poisplus (Series de Poisson)
2: region_boundaries_plus (Funciones y variables para
worldmap)
3:
metra)
Enter space-separated numbers, `all' or `none':
Maxima
Una vez elegidas las opciones (en este caso 0 y 2) la sentencia devuelve
true.
( %i3) describe("plus",inexact);
0: doscmxplus (Funciones y variables para las matrices
y el lgebra lineal).
1: poisplus (Series de Poisson)
2: region_boundaries_plus (Funciones y variables para
worldmap)
3:
metra)
Enter space-separated numbers, `all' or `none': 0 2:
- -Variable opcional: doscmxplus
Valor por defecto: `false'.
Cuando `doscmxplus' vale `true', las operaciones entre escalares
y matrices dan como resultado una matriz.
- -Funcin : region_boundaries_plus(<x1>,<y1>,<x2>,<y2>)
23
Detecta los segmentos poligonales almacenados en la variable global `boundaries_array' con al menos un vrtice dentro del rectngulo denido por los extremos
(<x1>,<y1>) -superior izquierdo- y (<x2>,<y2>) inferior derecho-.
Ejemplo.
( %i1) load(worldmap)$;
( %i2) region_boundaries(10.4,41.5,20.7,35.4);
( %o2) [1846, 1863, 1864, 1881, 1888, 1894]
( %i3) draw2d(geomap( %))$
( %o3) true
3.5 Reinicio
La forma brusca de reiniciar
Maxima
wxMaxima. No
Maxima sin salir de
wxMaxima se elige la
es saliendo de
wxMaxima.
opcin
Para reiniciar
Reiniciar Maxima
Figura 3.12:
Maxima
sin salir de
del men
Maxima.
3.6 Comentarios
Los comentarios son toda una serie de caracteres que no afectan los
clculos. En
y
/.
Maxima
24
/comentario /
comentario
es inter-
Escribiendo comentarios.
Maxima
3.7 Paquetes en
Maxima
Maxima
es que es un
Maxima
Maxima,
Maxima
Maxima.
En tales casos, podra ser factible encontrar (o elaborar) un package (paquete) de funciones de
Maxima
load(paquete )
lee un paquete de
Maxima
Maxima.
Maxima
( %i1) load(simplex)$
25
( %i2) minimize_lp(x+y,[3*x+2*y>2,x+4*y>3]);
9
7
( %o2) [ 10
, [y = 10
, x = 15 ]]
El hecho de que
Maxima
Maxima
Maxima.
Maxima
se perca-
( %i1) sqrt(4,5);
sqrt: wrong number of arguments. - - an error. To debug
this try: debugmode(true);
Maxima
Maxima
Maxima
Clic en el botn
Ctrl +C
interfaz de cuaderno
interfaz basada en texto
CAPTULO
Clculos numricos
4.1 Aritmtica
Los clculos aritmticos se realizan con nmeros literales (enteros,
racionales, decimales ordinarios y decimales grandes). Excepto en el
caso de la exponenciacin, todas las operaciones aritmticas con nmeros dan lugar a resultados en forma de nmeros.
El usuario puede hacer aritmtica con
Maxima
( %i1) 5.6+3.7;
( %o1) 9.3
Maxima
Con
( %i2) 5.6*3.7;
( %o2) 20.72
Maxima
( %i3) (2+3)^3-4*(6+7);
26
27
( %o3) 73
x ^y
x y
x
x /y
x y z
x +y +z
potencia
menos
divisin
producto
suma
2+3/7,
2+(3/7), y no (2+3)/7. El usuario siempre pue-
Maxima,
2300 .
( %i1) 2^300;
( %o1) 20370359763344860862684456884093781610514683936
65936250636140449354381299763336706183397376
El usuario puede pedir a
mado, tal como lo dara una calculadora, para ello puede usar la funcin
float
o la variable
numer
Maxima
( %i2) 2^300,float;
( %o2) 2.0370359763344861 1090
28
float(expr )
expr , float
expr , numer
float(expr )
float(expr ), numer
expr
equivale a
expr
expr
tante
Maxima
( %i3) float(2^300);
( %o3) 2.0370359763344861 1090
Maxima
numer
no es til.
( %i4) 2^300,numer;
( %o4) 20370359763344860862684456884093781610514683936
65936250636140449354381299763336706183397376
Maxima
( %i5) 1/3+2/7;
( %o5) 13
21
Maxima
float
como con
aproximado.
( %i6) 1/3+2/7,float;
( %o6) 0.61904761904762
numer,
29
( %i7) 1/3+2/7,numer;
( %o7) 0.61904761904762
Maxima
asume que es
Maxima
Maxima
( %i8) 26/78;
( %o8) 13
Maxima
( %i9) 26.7/78;
( %o9) 0.34230769230769
Maxima
Aqu, la presencia del punto decimal seguido del cero hace que Maxima d un
resultado numrico aproximado.
( %i10) 26.0/78;
( %o10) 0.33333333333333
Maxima
( %i11) 5.0+9/78-5/8;
( %o11) 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 )
n!
( x)
(ex )
raz cuadrada
exponencial
logaritmo neperiano
(loge x)
factorial de
1, 2, . . . , n)
n !!
13. . .n (n
(
abs(x )
round(x )
mod(n,m )
impar)
24. . .n
par)
valor absoluto
redondeo
mdulo
entre
m)
(resto de la divisin de
floor(x )
ceiling(x )
random(x )
ifactor(n )
r, tal que 0
0 < r < x, si x R+
r < x,
max(x,y , . . .),
min(x,y , . . .)
si
xN
mximo, mnimo de
factores primos de
x,y,. . .
Maxima
se colocan
entre parntesis.
Maxima
empie-
31
Maxima
Esto da
loge 15.7.
( %i1) log(15.7);
( %o1) 2.753660712354262
Maxima
Maxima no incluye una funcin para el logaritmo de base 10 u otras bases. Para
loge x
salvar esta dicultad el usuario puede hacer uso de la frmula logb x =
. As,
loge b
por ejemplo, lo siguiente devuelve un resultado numrico para
log2 1024.
( %i2) log(1024)/log(2),numer;
( %o2) 10.0
Maxima
Esto devuelve
64
( %i3) sqrt(64);
( %o3) 8
Maxima
6.
( %i4) sqrt(6),numer;
( %o4) 2.449489742783178
Maxima
( %i5) sqrt(6.0);
( %o5) 2.449489742783178
Maxima
( %i6) sqrt(6);
32
( %o6)
Maxima
40 39 . . . 1.
( %i7) 40!;
( %o7) 815915283247897734345611269596115894272000000000
Maxima
( %i8) float(40!);
( %o8) 8.1591528324789768 1047
%e
%i
inf
minf
infinity
und
%pi
e 2.718281828459045
i = 1
representa al innito real positivo
representa al innito real negativo
representa al innito complejo
representa un resultado indenido
3.141592653589793
2 .
( %i9) %pi^2,numer;
( %o9) 9.869604401089358
Maxima
sen(/2).
33
float, numer
Maxima
devuelve el resultado
Maxima
Maxima
con cualquier
grado de precisin.
fpprec :n $ bfloat(expr )
valor numrico de
expr
calculado con
fecto es 16)
Maxima
Maxima
Esto devuelve
con 50 dgitos.
34
Maxima
La cantidad
21000
Maxima
de la opcin
Tngase presente que el algoritmo de salida matemtica, previamente seleccionado (ascii), prevalecer hasta que el usuario vuelva a
seleccionar como algoritmo de salida matemtica a
xml.
Maxima
con
Figura 4.1:
Seleccionando
ascii
35
%i,
igual a
variable llamada
i,
pero
1
. Note
no
1.
x + %iy
realpart(z )
imagpart(z )
conjugate(z )
cabs(z )
carg(z )
Maxima
que una
el nmero complejo
x+iy
parte real
parte imaginaria
complejo conjugado
mdulo de
el argumento
en
Maxima
( %i1) sqrt(-4);
( %o1) 2 %i
Maxima
2i.
|z|ei
36
( %o2) 6 %i 2
Maxima
Maxima
CAPTULO
Generacin de clculos
Maxima,
_ y % siempre hacen
%in
la expresin de la entrada
%on
la expresin de la salida
%th(i )
la expresin de la
%in
%on
i -sima salida ante-
rior
Maxima
(sec. 3.5).
Maxima
( %i1) 5^3;
( %o1) 125
37
38
Maxima
( %i2) %+6;
( %o2) 131
Maxima
( %i3) 5+ %o1+ %;
( %o3) 261
Maxima
( %o3)
( %o2)
( %o1)
( %i5) %o2^2;
( %o5) 17161
Si se utiliza una interfaz basada en texto en
Maxima
( %on)
39
variables
Maxima
( %i1) x:6;
( %o1) 6
Maxima
( %i2) x^3-25
( %o2) 191
Maxima
( %i3) x:11+5
( %o3) 16
Maxima
( %i4) fpprec:20$
( %i5) pi: %pi,bfloat;
( %o5) 3.1415926535897932385b0
Maxima
sqrt(pi).
( %i6) sqrt(pi)
( %o6) 1.7724538509055160273b0
40
x : valor
x : y : valor
kill(x )
kill(x ,y )
values
x
quita cualquier valor asignado a x
quita cualquier valor asignado a
Manipulacin de variables.
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
usarlos.
Maxima
( %i7) y:9;
( %o7) 9
Maxima
( %i8) values;
( %o8) [x, , y]
41
Maxima
( %i9) kill(x);
( %o9) done
Maxima
( %i10) kill(values);
( %o10) done
Las variables que el usuario dene pueden tener cualquier nombre. No hay lmite para la longitud de sus nombres. Un inconveniente,
sin embargo, es que los nombres de las variables nunca pueden empezar con nmeros. Por ejemplo,
x3
Maxima.
3x
Maxima
( %i11) EstoEsUnaVariable:4/3;
4
( %o11)
3
( %i12) Esto_Es_Una_Variable:5^3;
( %o12) 125
( %i13) estoesunavariable:8;
( %o13) 8
( %i14) esto_es_una_variable:sqrt(7);
( %o14) 7
Maxima
Con
values visualizamos las nuevas variables a las que se les ha asignado un valor.
( %i15) values;
( %o15) [EstoEsUnaVariable,
Esto_Es_Una_Variable,
estoesunavariable, esto_es_una_variable]
42
Maxima
( %i16) (Esto_Es_Una_Variable^2+esto_es_una_variable*
estoesunavariable)/EstoEsUnaVariable;
3(8 7 + 15625)
( %o16)
4
Maxima
Con
kill(all)
( %i17) kill(all);
( %o17) done
Maxima
Esta vez
values
( %i18) values;
( %o18) [ ]
43
expr1 $ expr2 $ . . . $
exprn $
expr1 $ expr2 $ . . . $
exprn ;
ningn resultado
Esto realiza tres operaciones en una misma lnea y muestra todos los resultados.
Esto realiza tres operaciones en una misma lnea sin mostrar resultados.
Maxima
Maxima
muestre la salida.
expr $
Inhibiendo la salida.
44
Maxima
( %i11) x:47+5$
Maxima
Usando
( %i12) %
( %o12) 52
'a
'f (x )
a
evita la evaluacin de la funcin f, pero
evita la evaluacin del smbolo
no de sus argumentos
'(expr )
Evitando la evaluacin.
expr
45
Maxima
( %i3) 'a
( %o3) a
Maxima
integrate
( %i4) 'integrate(x^3,x);
Z
( %o4) x3 dx
Maxima
( %i5) 'integrate(x^3,x)=integrate(x^3,x);
Z
x4
( %o5) x3 dx =
4
Maxima
( %i6) 'integrate((2+3)*x^3,x);
Z
( %o6) 5 x3 dx
Maxima
( %i7) '(2*sqrt(a)+b*integrate(x^3,x));
Z
( %o7) b x3 dx + 2 a
46
Maxima
( %i8) '(2*sqrt(a)+b*integrate(x^3,x))=(2*sqrt(a)+
b*integrate(x^3,x));
Z
( %o8) b x3 dx + 2 a = 14x4 + 6 5
CAPTULO
Clculos algebraicos
Maxima
Maxima
( %i1) 4+36-1;
( %o1) 39
Maxima
( %i2) 7*x-3*x+6;
( %o2) 4 x + 6
Clculo numrico
4 + 36 1 39
Clculo simblico
7x 3x + 6 4x + 6
48
Maxima
( %i3) x^3+2*x-1;
( %o3) x3 + 2 x 1
Maxima
Maxima realiza automticamente simplicaciones algebraicas bsicas. Aqu combina a x2 y a 4x2 para dar 3x2 .
( %i4) x^2+x-4*x^2;
( %o4) x 3 x2
Es posible digitar cualquier expresin algebraica usando los operadores enumerados en la seccin 4.1. No debe olvidarse ingresar el
asterisco para el producto, por ejemplo:
x y, de lo contrario Maxima
Maxima
Maxima reordena y combina trminos usando las reglas estndares del lgebra.
( %i5) x*y+2*x^2*y+y^2*x^2-2*y*x;
( %o5) x2 y 2 + 2 x2 y x y
Maxima
( %i6) (x+2*y+1)*(x-2)^2;
( %o6) (x 2)2 (2 y + x + 1)
Maxima
La funcin
expand
49
Maxima
factor
hace lo inverso de
expand.
x4y
en la forma
interpretar como
x4 y .
Maxima
( %i9) sqrt(2)/9801*(4*n)!*(1103+26390*n)/(n!^4+1);
( %o9)
Maxima
aplica autom-
ticamente su gran repertorio de reglas para transformar las expresiones. Estas reglas incluyen las reglas estndares del lgebra, tales como
x x = 0,
Maxima
( x + 1)4
por
(x+1)2 .
( %i10) sqrt(x+1)^4;
( %o10) (x + 1)2
Maxima
Maxima no conoce ninguna regla para esta expresin, as que deja expresin en
la forma original que usted le dio.
( %i11) log(cos(x)+1);
( %o11) log (cos x + 1)
50
Maxima
tales casos,
x + x en 2 x,
x en forma puramente simblica o formal. En
x,
1 + 2x,
ev o
ev(expr, x=valor )
ev(expr, x=valor,
y=valor )
expr, x=valor
expr, x=valor, y=valor
reemplaza
exp
por
valor
en la expresin
reemplaza
exp
por
valor
en la expresin
x=3
en la expresin
1 + 2x.
( %i1) 1+2*x,x=3;
( %o1) 7
Maxima
2 y.
( %i2) 1+x+x^2,x=2-y;
( %o2) y + (2 y)2 + 3
Maxima
Maxima trata las reglas de sustitucin como cualquier otra expresin simblica.
( %i3) x=y+3;
51
( %o3) x = y + 3
Maxima
x2 9.
( %i4) x^2-9, %;
( %o4) (y + 3)2 9
Maxima
( %i5) (x+y)*(x-y)^2,x=3,y=1-a;
( %o5) (4 a) (a + 2)2
ev o su sintaxis alternativa, permiten aplicar reglas de
La funcin
x,
usando
x : 3.
3,
x : 3, x
cuando aparezca.
Maxima
x.
( %i6) x:3;
( %o6) 3
Maxima
Ahora
( %i7) x^2-1;
( %o7) 8
Maxima
( %i8) x:a+1;
1+a
x.
52
( %o8) a + 1
Maxima
Ahora
es reemplazado por
a + 1.
( %i9) x^2-1;
( %o9) (a + 1)2 1
Maxima.
x:valor
zado siempre
kill(x )
Maxima
El smbolo
( %i10) x+5-2*x;
( %o10) 2 (a + 1) + a + 6
Maxima
( %i11) kill(x)
( %o11) done
x.
53
Maxima
Ahora
no tiene ningn valor denido, as que puede ser utilizado como variable
puramente simblica.
( %i12) x+5-2*x;
( %o12) 5 x
Los lenguajes de programacin tradicionales que no soportan el
clculo simblico permiten que las variables sean utilizadas solamente
como nombres para objetos, tpicamente nmeros, que se han asignado como valores para ellos. En
Maxima,
sin embargo,
se puede
x : 3,
ser
x:3
3,
entonces
expr , x = 3
afecta solamente a la expresin especca
expr.
Es posible mezclar siempre reemplazos con asignaciones. Con asignaciones, se puede dar nombres a las expresiones en las cuales se desea
hacer reemplazos, o a las reglas que se desea utilizar para hacer los
reemplazos.
Maxima
t.
( %i13) t:x^2+1;
( %o13) x2 + 1
Maxima
( %i14) t,x=2;
( %o14) 5
x.
54
Maxima
x.
( %i15) t,x=5*a;
( %o15) 25a2 + 1
Maxima
cuando
es sustituido por
%pi,
y luego evala el
resultado numricamente.
Maxima
No obstante, el smbolo
( %i17) t;
( %o17) x2 + 1
x + 2x + 1. Maxima
2
(x + 1)2
puede ser
Maxima
desarrolladas.
( %i1) expand((x+1)^2);
( %o1) x2 + 2 x + 1
expand(expr )
55
expr ,expand
factor(expr )
equivale a
escribe
expand(expr )
expr
tores mnimos
expr ,factor
equivale a
factor(expr )
Maxima
factor
Maxima
expand.
( %i3) (x+3*y+1)^4,expand;
( %o3) 81 y 4 + 108 x y 3 + 108 y 3 + 54 x2 y 2 + 108 x y 2 + 54 y 2 +
12 x3 y + 36 x2 y + 36 x y + 12 y + x4 + 4 x3 + 6 x2 + 4 x + 1
Maxima
factor
( %i4) %,factor;
( %o4) (3 y + x + 1)4
Maxima
factor
( %i5) x^8-1,factor;
( %o5) (x 1) (x + 1) x2 + 1 x4 + 1
56
Maxima
En este caso,
expand
( %i6) %,expand;
( %o6) x8 1
rat(expr )
convierte
expr
cional
ratsimp(expr )
simplica la expresin
expr
y todas
expr ,ratsimp
fullratsimp(expr )
equivale a
ratsimp(expr )
ratsimp
aplica repetidamente
a una
expr ,fullratsimp
equivale a
fullratsimp(expr )
ratsimp
Maxima
He aqu la integral de
1
.
x4 1
( %i1) integrate(1/(x^4-1),x);
( %o1) log(x+1)
arctan x
2
57
log(x1)
4
Maxima
1
4 (x1)
Maxima
ratsimp
Las expresiones pueden incluir funciones no racionales y los argumentos de tales funciones son tambin racionalmente simplicados.
Maxima
He aqu una expresin que incluye funciones no racionales cuyos argumentos admiten ser racionalmente simplicados.
( %i4) sin(x/(x^2+x))=exp((log(x)+1)^2-log(x)^2);
2
2
( %o4) sen x2x+x = %e(log x+1) log x
Maxima
ratsimp
( %i5) %,ratsimp;
1
= %e x2
( %o5) sen x+1
ratsimp
puede no
58
fullratsimp.
ratsimp,
Maxima
expresion.
Maxima
En general,
( %i7) rat(expresion);
4
2
(xa/2 ) 2 (xa/2 ) +1
( %o7)
xa 1
Maxima
Con
ratsimp
( %i8) ratsimp(expresion);
( %o8)
x2 a 2 xa +1
xa 1
Maxima
Con
fullratsimp
( %i9) fullratsimp(expresion);
( %o9) xa 1
Maxima
ciones para convertir expresiones de una forma a otra. Los ms comunes de estas funciones son
expand, factor
ratsimp.
Sin embargo,
59
expandwrt(expr,var1 , . . . ,
varn )
expande la expresin
to a las variables
expr
con respec-
var1 , . . . , varn
y por
expand(expr )
factor(expr )
partfrac(expr,var )
expr
expr
expresin expr
expande la expresin
factoriza la expresin
expande la
en fraccio-
var
Maxima
He aqu una expresin racional, la cual puede ser escrita en varias formas diferentes.
( %i1) e:(x-1)^2*(2+x)/((1+x)*(x-3)^2);
( %o1)
(x1)2 (x+2)
(x3)2 (x+1)
Maxima
expandwrt
forma factorizada.
( %i2) expandwrt(e,x);
( %o2)
x3
(x3)2 (x+1)
3x
(x3)2 (x+1)
2
(x3)2 (x+1)
Maxima
expand
( %i3) expand(e);
( %o3)
x3
x3 5 x2 +3 x+9
3x
x3 5 x2 +3 x+9
2
x3 5 x2 +3 x+9
60
Maxima
partfrac
5
(x3)2
+1
Maxima
factor
(x1)2 (x+2)
(x3)2 (x+1)
collectterms(expr,var )
var
Maxima
( %i6) v:expand((3+2*x)^2*(x+2*y)^2);
( %o6) 16 x2 y 2 +48 x y 2 +36 y 2 +16 x3 y+48 x2 y+36 x y+ 4 x4 +
12 x3 + 9 x2
Maxima
x.
( %i7) collectterms(v,x);
( %o7) x 48 y 2 + 36 y + x2 16 y 2 + 48 y + 9 + 6 y 2 +
x3 (16 y + 12) + 4 x4
Maxima
y.
( %i8) collectterms(v,y);
61
( %o8) 16 x2 + 48 x + 36 y 2 + 16 x3 + 48 x2 + 36 x y+ 4 x4 +
12 x3 + 9 x2
Maxima
Maxima
trigexpand(expr )
expr ,trigexpand
trigsimp(expr )
expr
trigexpand(expr )
utiliza
las
identidades
sen(x)2 +
2
2
cos(x) = 1 y cosh(x) senh(x)2 = 1
equivale a
trigreduce(expr,var )
tan, sec,
etc.
var,
transformndolos en
trigreduce(expr )
var
si no se introduce el argumento
var,
expr ,trigreduce
expr
equivale a
trigreduce(expr )
1 Para
en la ayuda de Maxima.
scsimp
defrule
62
trigrat(expr )
exponentialize(expr )
expr
a exponen-
ciales
expr ,exponentialize
demoivre(expr )
equivale a
exponentialize(expr )
expr ,demoivre
rectform(expr )
expr ,rectform
polarform(expr )
expr ,polarform
radcan(expr )
equivale a
demoivre(expr )
a+
b %i equivalente a expr, con a y b reales
equivale a
rectform(expr )
r %e %i
reales
equivalente a
equivale a
expr,
con
polarform(expr )
simplica la expresin
expr ,radcan
prod ,radexpand:all
equivale a
las races
producto
radcan(expr )
n, se extraen
ej.,
logcontract(expr )
4x2 2x)
analiza
la
do
ma
en
expr ,logcontract
expr
expresin
cursivamente,
re-
transforman-
subexpresiones
de
la
for-
a1*log(b1)+a2*log(b2)+c
expresiones
de
la
forma
log(ratsimp(b1^a1*b2^a2))+c
equivale a logcontract(expr )
63
Maxima
( %i9) tan(x)*cos(3*x),trigexpand;
( %o9) cos3 x 3 cos x sin2 x tan x
Maxima
( %i10) tan(x)*cos(2*x),trigreduce;
( %o10) tan x cos (3 x)
Maxima
son reales.
Maxima
Con
logcontract
( %i12) 2*(a*log(x)+2*a*log(y)),logcontract;
( %o12) a log x2 y 4
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
( %i13) sqrt(x^5*y/w^3);
64
( %o13)
x5 y
w3
Maxima
radcan
hace la expansin.
( %i14) %,radcan;
( %o14)
x2
w2
Maxima
( %i15) sqrt(x^6*y^2/w^10);
( %o15)
|x|3 |y|
|w|5
Maxima
pasa
( %i16) sqrt(x^6*y^2/w^10),radexpand:all;
( %o16)
x3 y
w5
pred1 , . . . , predn
al contexto actual
f orget(pred1 , . . . , predn )
f acts()
assume
Asuncin de predicados.
65
Maxima
assume
devuelve una lista con los predicados que han sido aadidos al contexto.
( %i1) assume(x>0,y<0);
( %o1) [x > 0, y < 0]
Maxima
( %i2) [sqrt(x^2),sqrt(y)];
( %o2) x, y
Maxima
( %i3) sqrt(x^2*y^2);
( %o3) x y
Maxima
facts
( %i4) facts();
( %o4) [x > 0, y < 0]
Maxima
forget
( %i5) forget(x>0,y<0);
( %o5) [x > 0, y < 0]
Maxima
( %i6) facts();
( %o6) [ ]
forget,
la llamada
facts()
devuelve una
66
devuelve el coeciente de
(el argumento
xn
en
expr
puede omitirse si es
igual a la unidad)
hipow(expr,x )
en
hipow
part(expr,n1 , . . . , nk )
expr
(si
no aparece en
expr,
devuelve 0)
devuelve la parte de
expr
que se espe-
n1 , . . . , nk (priparte n1 de expr,
n2
terior, y as sucesivamente)
Maxima
( %i1) e:expand((1+3*x+4*y^2)^2);
( %o1) 16 y 4 + 24 x y 2 + 8 y 2 + 9 x2 + 6 x + 1
Maxima
Esto da el coeciente de
en
e.
( %i2) coeff(e,x);
( %o2) 24 y 2 + 6
Maxima
hipow(expr ,y)
da la mayor potencia de
( %i3) hipow(e,y);
( %o3) 4
Maxima
( %i4) part(e,4);
e.
67
( %o4) 9 x2
num(expr )
devuelve el numerador de
denom(expr )
devuelve el
expr
Maxima
( %i5) r:(1+x)/(2*(2-y));
x+1
( %o5) 2 (2y)
Maxima
denom
selecciona el denominador.
( %i6) denom(r);
( %o6) 2 (2 y)
Maxima
denom
( %i7) denom(1/x+1/y);
( %o7) 1
1)
CAPTULO
Matemticas simblicas
La capacidad de
Maxima
7.1 Lmites
limit(f,x,x0 )
el lmite
limit(f,x,x0 ,plus)
el lmite
limit(f,x,x0 ,minus)
el lmite
lm f
xx0
lm f
xx+
0
lm f
xx
0
Lmites.
Maxima
He aqu la expresin
sen x
.
x
( %i1) f:sin(x)/x;
( %o1)
sin(x)
x
Maxima
( %i2) f,x=0;
68
( %o2)
69
Division by 0
- -an error. To debug this try: debugmode(true);
Maxima
Si se evala
sen(x)
para un
x
( %i3) f,x=0.01;
( %o3) 0.99998333341667
Maxima
sen(x)
cuando x tiende a 0.
x
( %i4) limit(f,x,0);
( %o4) 1
inf
minf
und
ind
zeroa
zerob
infinity
indenido
indenido pero acotado
innitesimal mayor que cero
innitesimal menor que cero
innito complejo
La funcin
para simplicar expresiones en las que aparecen los smbolos especiales para lmites.
Maxima
1 ().
( %i5) limit(1-minf);
( %o5)
70
Maxima
( %i6) limit(x+zeroa);
( %o6) x
7.2 Diferenciacin
diff(f,x )
res-
n -esima derivada de f
res-
con
diff(f,x,n )
devuelve la
pecto de
diff(f,x1 , n1 , . . . , xm , nm )
x1 , . . . , xm y equivale a
diff(. . .(diff(f,xm , nm . . .), x1 , n1 )
respecto de
diff(f )
Maxima
He aqu la derivada
xn
con respecto a
x.
( %i2) diff(atan(x),x);
( %o2) x21+1
Maxima
x.
71
( %o3) (n 2) (n 1) n xn3
Si no se indica la variable,
Maxima
diff(f )
es como
diff(f,x ) es como
d
dx f ,
df .
Maxima
d(xn ). delx
deln
dx
dn,
respectivamente.
ma
f.
f(x),
Maxi-
depends.
Maxima
f (x2 ).
( %i5) depends(f,x^2);
( %o5) f x2
Maxima
( %i6) diff(2*x*f,x);
( %o6) 4 d dx2 f x2 + 2 f
72
depends(, )
depends(1 , 1 , . . . , n ,
n )
depends([1 , . . . , n ] , )
la
dependencia
()
funcional
1 (1 ) , . . . , n (n )
declara
la
dependencia
funcional
1 () , . . . , n ()
depends(, [1 . . . , n ])
declara
la
dependencia
funcional
dependencia
funcional
(1 , . . . , n )
depends([1 , . . . , n ] ,
[1 , . . . , m ])
dependencies
declara
la
1 (1 , . . . , m ) , . . . , n (1 , . . . , m )
lista de tomos que tienen algn tipo
de dependencia funcional
remove(, dependency)
remove([1 , . . . , n ] ,
dependency)
remove(all, dependency)
1 , . . . , n
Maxima
u(x)
v(x).
d
dx
(uv ),
( %i7) depends([u,v],x);
( %o7) [u (x) , v (x)]
Maxima
d
dx
donde
u = u(x)
v = v(x).
u v
Maxima
( %i9) dependencies;
73
( %o9) f x2 , u (x) , v (x)
Maxima
( %i10) remove(all,dependency);
( %o10) done
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
changevar('expr,(x, y),
y,x )
Rb
f dx =
gdx
(x, y) = 0
depende de
y)
en la expresin
expr
que
Integracin.
integration_constant
integration_
constant_counter
%c
Maxima
Z
Para calcular la integral
xn dx,
Maxima, pregunta si
Is
n+1
zero or nonzero? n;
n+1 = 0
n + 1 = 0,
n + 1 6= 0.
es decir,
En
n 6= 1.
74
( %o1)
xn+1
n+1
Maxima
Z
He aqu la integral
xn dx,
cuando
n = 1.
Is
n+1
zero or nonzero? z;
( %o2) log(x)
Maxima
( %i3) integrate(1/(x^4-a^4),x);
arctan( x )
( %o3) log(x+a)
+ log(xa)
2 a3 a
4 a3
4 a3
Maxima
Recurdese que
logcontract
( %i4) integrate(1/(x^4-a^4),x),logcontract;
x+a
log( xa
)+2 arctan( xa )
( %o4)
4 a3
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
( %i5) integrate(log(1-x^2),x),logcontract;
x+1
( %o5) x log 1 x2 2 + log x1
75
Maxima
Esta integral puede ser expresada slo en trminos de una funcin dilogartmica1 .
( %i6) integrate(log(1-x^2)/x,x);
2
)
( %o6) log(x) log 1 x2 + li 2 (1x
2
Maxima
erf2 .
( %i7) integrate(exp(1-x^2),x);
( %o7)
e erf(x)
2
Maxima
Esta integral simplemente no puede ser expresada en trminos de funciones matemticas estndares. Por consiguiente, Maxima la deja como est.
Maxima
Z
He aqu la integral denida
( %i9) integrate(sin(x)^2,x,a,b);
( %o9)
sin(2 a)2 a
4
sin(2 b)2 b
4
Maxima
( %i10) integrate(exp(-x^2),x,0,inf);
( %o10)
76
Maxima
Maxima
(x2 + y 2 ) dy dx.
( %i12) integrate(integrate(x^2+y^2,y,0,x),x,0,1);
( %o12) 13
Cuando una constante de integracin se crea durante la integracin denida de una ecuacin, el nombre de la constante se construye
concatenando las variables (del sistema)
integration_constant_counter.
integration_constant
Maxima
( %i13) integrate(x^2=sin(x),x);
( %o13)
x3
3
= %c1 cos(x)
Maxima
integration_constant
Maxima
( %i15) integrate(x^2=sin(x),x);
( %o15)
x3
3
77
= K2 cos x
Maxima
integration_constant_counter.
( %i16) reset(integration_constant_counter);
( %o16) [integration _constant _counter ]
Maxima
x3
3
= K1 cos x
changevar.
Para que
Maxima
pueda
Maxima
( %o18)
%e y dy
Maxima
( %o19)
%e y dy
78
Maxima
la suma
Pimax
imin
representa la suma de
mento
en
Sumas.
Maxima
7
P
xi
.
i
i=1
x7
7
x6
6
x5
5
x4
4
x3
3
x2
2
+x
Maxima
n
X
i2
i=1
( %i2) sum(i^2,i,1,n);
n
X
( %o2)
i2
i=1
Maxima
Agregando
simpsum
( %i3) sum(i^2,i,1,n),simpsum;
n.
( %o3)
79
2 n3 +3 n2 +n
6
Maxima
Combinando
simpsum
con
factor
( %i4) sum(i^2,i,1,n),simpsum,factor;
( %o4)
n (n+1) (2 n+1)
6
Maxima
Maxima tambin puede dar un resultado exacto para esta suma innita.
( %i5) sum(1/i^4,i,1,inf),simpsum;
( %o5)
4
90
Maxima
3 X
i
X
xi y j .
i=1 j=1
Maxima
Esta es una suma para la cual los valores del ndice de variacin no estn equiincrementados.
el producto
Qimax
imin
Productos.
Maxima
( %i8) prod(x+i,i,1,4);
f (i)
80
( %o8) (x + 1) (x + 2) (x + 3) (x + 4)
Maxima
Agregando
de
simpproduct
n.
( %i9) product(k,k,1,n),simpproduct;
( %o9) n!
Maxima
( %i10) product(integrate(x^k,x,0,1),k,1,n);
( %o10)
n
Q
1
k+1
k=1
changevar
lizar para cambiar los ndices de una suma o producto. Sin embargo,
debe tenerse en cuenta que cuando se realiza un cambio en una suma
o producto, el mismo debe expresarse en trminos de sumas, como
i = j + . . .,
Maxima
j.
n
P
f (j + 2) xj
j=2
Maxima
j =i2
en la suma anterior.
( %o12)
n+2
P
81
f (i) xi2
i=0
Maxima
i=k2
en un producto innito.
( %i13) product(f(i+2)*x^(i+2),i,-2,inf);
( %o13)
f (i + 2) xi+2
i=2
f (k) xk
k=0
>
mayor que
>=
<
<=
equal
notequal
Operadores relacionales.
compare(x,y )
compara
devuelve
<
82
Maxima
( %i1) 10<7,pred;
( %o1) f alse
Maxima
( %i2) 10#7,pred;
( %o2) true
Maxima
( %i4) x>y,pred;
( %o4) x > y
Maxima
( %i5) compare(1,2);
( %o5) <
( %i6) compare(1/x,0);
( %o6) #
Maxima
equal.
( %i7) (x+1)^2=x^2+2*x+1,pred;
( %o7) f alse
83
( %i8) equal((x+1)^2,x^2+2*x+1),pred;
( %o8) true
El usuario debe tener presente que, los operadores relacionales son
todos operadores binarios.
Maxima
a < b < c.
Maxima
( %i9) 2<3<4,pred;
( %o9) incorrect syntax:
not
and
or
if cond then expr1 else
expr2
negacin
conjuncin
disyuncin
devuelve
expr2
si
expr1
cond
es
cond
si
false
es
true,
Operadores lgicos.
Maxima
a < b < c,
en Maxima, es usando el
and.
Maxima
( %i11) p and q;
q,
Maxima no sabe si
84
( %o11) p q
7.6 Ecuaciones
Maxima, una ecuacin consiste de dos expresiones vinculadas con
En
el smbolo
expr1 = expr2
lhs(expr1 = expr2 )
rhs(expr1 = expr2 )
expr1
devuelve
expr2
Ecuaciones en Maxima.
Maxima
( %i1) x^4-5*x^2-3=x;
( %o1) x = x4 5 x2 3
x:y con x=y (ver
x:y es una declaracin imperativa que ori-
x=y
Maxima
Con
lhs3
( %i2) lhs(x=x^4-5*x^2-3);
( %o2) x
Maxima
Con
rhs
( %i3) rhs(x=x^4-5*x^2-3);
( %o3) x4 5 x2 3
85
ecu
de
Solucin de ecuaciones.
Maxima
( %i1) solve(x^4-5*x^2-3=0,x);
37+5
375 %i
( %o1) x = 37+5
,
x
=
,
x
=
,
2
2
2
375 %i
x=
2
Maxima
( %i2) solve(x^6=1,x);
h
( %o2) x = 3 %i+1
,x =
2
3 %i1
,x
2
= 1, x =
3 %i+1
,
2
i
x = 3 %i1
,
x
=
1
2
Maxima
Hay algunas ecuaciones, sin embargo, para las cuales es matemticamente imposible encontrar frmulas explcitas para las soluciones.
( %i3) solve(2-4*x+x^5=0,x);
86
( %o3) 0 = x5 4 x + 2
Maxima
ciones simultneas.
solve([ecu1 , . . . , ecun ] ,
[x1 , . . . , xn ])
Maxima
He aqu una lista de dos ecuaciones simultneas, para que sean resueltas en las
variables x e y.
( %i4) solve([a*x+y=0,2*x+(1-a)*y=1],[x,y]);
ii
hh
1
a
( %o4) x = a2 a+2
, y = a2 a+2
Maxima
( %i5) solve([x^2+x*y+y^2=4,x+x*y+y=2],[x,y]);
h
h
i
%i+7
( %o5) [x = 2, y = 0] , x = 11 2%i+3 , y = 11
,
11 %i+1
h
i
i
%i7
x = 11 2%i3 , y = 11
, [x = 0, y = 2]
11 %i1
Maxima
Con
rectform
( %i6) %,rectform;
h
h
i
x = 112 %i 32 , y = 112 %i 32 , [x = 0, y = 2]
87
y 3 3 x y + x3 = 0
a la variable
e.
( %i7) e:x^3-3*x*y+y^3=0;
( %o7) y 3 3 x y + x3 = 0
Maxima
y(x).
( %i8) depends(y,x);
( %o8) [y (x)]
Maxima
Ahora se deriva
( %i9) diff(e,x);
( %o9) 3 y 2 ddx y 3 x
d
dx
y 3 y + 3 x2 = 0
Maxima
d
dx
y.
to_poly_solver4
Maxima
para solucionar
4 El
paquete
to_poly_solver
88
load(to_poly_solver)$
to_poly_solve(e, l,
[options])
inicializa el paquete
to_poly_solver
de in-
simpfuncs
etc.
parameters
use_grobner
to_poly_solver.
( %i1) load(to_poly_solver)$
Maxima
( %i2) to_poly_solve(2*x^2-3*x+5=0,x);
Maxima
( %i3) to_poly_solve(
[2*x-y=5,x+3*y=1],
[x,y]);
3
( %o3) %union [x = 16
7 , y = 7]
89
Maxima
( %i4) to_poly_solve(
[(x^2+1)*(y^2+1)=10,(x+y)*(x*y-1)=3],
[x,y]);
( %o4) %union ([x = 3, y = 0], [x = 2, y = 1],
[x = 0, y = 3], [x = 1, y = 2], [x = 1, y = 2],
[x = 2, y = 1])
Maxima
( %i5) to_poly_solve(
[x^2+y^2=2^2,(x-1)^2+(y-1)^2=2^2],
[x,y]);
( %o5) %union ()
Maxima
Al asignar el valor
true
a la opcin
use_grobner,
se obtiene la solucin.
( %i6) to_poly_solve(
[x^2+y^2=2^2,(x-1)^2+(y-1)^2=2^2],
[x,y],use_grobner=true);
7+1
7+1
71
( %o6) %union [x = 71
,
y
=
],
[x
=
,
y
=
]
2
2
2
2
Maxima
( %i7) to_poly_solve(a*x=x,x);
( %o7) %union ([x = 0])
Maxima
parameters
la solucin es formal.
( %i8) to_poly_solve(a*x=x,x,parameters=[a]);
90
Maxima
p
p
x+ x x x =
3
2
x
. Note
x+ x
( %i9) to_poly_solve(
sqrt(x+sqrt(x))-sqrt(x-sqrt(x))=
(3/2)*sqrt(x/(x+sqrt(x))),x);
( %o9) %union [x = 0], [x = 25
16 ]
Maxima
3 log( x+1+1)
log(x40)
= 3,
que involucra la
( %i10) to_poly_solve(
log(sqrt(x+1)+1)/log((x-40)^(1/3))=3,x);
( %o10) %union ([x = 48],
[x = 36.02856987347005 5.91047671912819 i],
[x = 5.910476719128112 i + 36.02856987347006])
Maxima
Para
convertir
cada
solucin
real
de
doble
precisin
hgase
uso
de
simpfunc=[dfloat].
( %i11) to_poly_solve(x^2+x+1=0,x,simpfuncs=[dfloat]);
( %o11) %union ([x = 0.86602540378444 i 0.5],
[x = 0.86602540378444 i 0.5])
Maxima
Solucin de la ecuacin
cos(x)
sin(x)+1
sin(x)+1
cos(x)
=4
( %i12) to_poly_solve(
cos(x)/(sin(x)+1)+(sin(x)+1)/cos(x)=4,x);
91
( %o12) %union [x = 2 %z60 3 ], [x = 2 %z62 + 3 ]
Maxima
Maxima
No obstante, la funcin
( %o12)
nicedummies
( %o14)
).
Maxima
sin x +
= cos x
( %i15) to_poly_solve(
sin(x+ %pi/6)=cos(x- %pi/4),x,
simpfuncs=[expand]);
( %o15) %union [x = %z65 + 724 ]
Maxima
tan x = cot x.
( %i16) to_poly_solve(tan(x)=cot(x),x,
simpfuncs=[expand,nicedummies]);
Maxima
sin x2 + 1 = cos (x).
( %i17) to_poly_solve(sin(x^2+1)=cos(x),x,
simpfuncs=[expand,nicedummies]);
.
4
con
92
( %o17) %union
3
3
[x = 12 8 %z02
], [x = 8 %z02
+ 12 ],
2
2
3
3
21 ], [x = 8 %z0+2
12 ]
[x = 8 %z0+2
2
2
Maxima
( %i18) to_poly_solve(exp(x^2-1)-1=0,x,
simpfuncs=[expand,nicedummies]);
Maxima
to_poly_solve.
( %i19) to_poly_solve(exp(x^2-1)-x=0,x);
Unable to solve
Unable to solve
Unable to solve
2
( %o19) %solve [ex 1 x = 0], [x]
Adems de la funcin
incluye la funcin
load(to_poly_solver)$
fourier_elim([ineq1 ,
ineq2 , . . .], [var1 , var2 , . . .])
inicializa el paquete
aplica
cin
el
de
sistema
to_poly_solver
algoritmo
Fourier
de
para
de
inecuaciones
elimina-
resolver
el
lineales
de
las
93
Maxima
(
Esto permite resolver el sistema
vale a
2 < x < ,
e < x < 4.
e < x < .
Maxima
Maxima
Maxima
< 0.
( %i6) fourier_elim([(x-1)^2*(x+4)*(x-2)/(x+3)<0],[x]);
( %o6) [3 < x, x < 1] [1 < x, x < 2] [x < 4]
Maxima
1
x
( %i7) fourier_elim([x-1/x>=0],[x]);
94
Maxima
|x+2|
|x1|
< 1.
( %i8) fourier_elim([abs((x+2)/(x-1))<1],[x]);
( %o8) [x < 2] [x = 2] [2 < x, x < 12 ]
Maxima
fourier_elim
de inecuaciones simplicadas.
( %i9) fourier_elim([(x^3-1)*(x+3)<0],[x]);
( %o9) [3 < x, x < 1, x2 + x + 1 > 0]
[1 < x, x2 + x + 1 >
0]
[x < 3, x2 + x + 1 > 0]
solve_rat_ineq.
load(solve_rat_ineq)$
solve_rat_ineq(ineq)
solve_rat_ineq
inecuacin racional ineq
inicializa el paquete
resuelve la
Maxima
( %i1) solve_rat_ineq((x^3-1)*(x+3)<0);
( %o1) [[x > 3, x < 1]]
95
Maxima
(y 3 1)(y + 3)2 0.
( %i2) solve_rat_ineq((y^3-1)*(y+3)^2>=0);
( %o2) [[y = 3], [y >= 1]]
Maxima
(x1)2 (x+4)(x2)
x+3
< 0.
( %i3) solve_rat_ineq((x-1)^2*(x+4)*(x-2)/(x+3)<0);
( %o3) [[x < 4], [x > 3, x < 1], [x > 1, x < 2]]
Maxima
x1>
1
.
x
( %i4) solve_rat_ineq(x-1>1/x);
( %o4) [[x >
51
2 ,x
5+1
2 ]]
variable independiente
y segundo orden
ic1(sol,x = x0 , y = y0 )
ic2(sol,x = x0 , y =
y0 , 'dif f (y, x) = dy0 )
bc2(sol,x = x0 , y =
y0 , x = x1 , y = y1 )
96
Maxima
%c
y '(x) = ay(x) + 1.
En esta solucin
( %i1) ode2('diff(y,x)=a*y+1,y,x);
a x
ea x
( %o1) y = %c e a
Maxima
Maxima
%k1
%k2
de frontera.
( %i3) ode2('diff(y,x,2)+y*'diff(y,x)^3=0,y,x);
( %o3)
y 3 +6 %k1 y
6
= x + %k2
Maxima
Maxima
y 3 +5 y
6
=x
97
'diff(y, x) (usada
'diff(y(x), x).
desolve(ecu,y (x ))
y (x ),
tomando a
como variable
independiente
desolve([ecu1 , . . . , ecun ] ,
[y1 (x), . . . , yn (x)])
atvalue((x), x = x0 , val)
aadir
(x0 ) = val
la
condicin
inicial
a un determinado sistema
Maxima
( %i1) desolve(diff(y(x),x,2)+y(x)=2*x,y(x));
( %o1) y (x) = sin(x) ddx y (x)x=0 2 + y (0) cos(x) + 2 x
Maxima
(
Esto resuelve el sistema
x'(t) = y(t),
y '(t) = x(t) .
( %i2) desolve([diff(x(t),t)=y(t),diff(y(t),t)=x(t)],
[x(t),y(t)]);
h
%et
%et
( %o2) x (t) = (y(0)+x(0))
(y(0)x(0))
,
2
2
i
t
t
%e
%e
y (t) = (y(0)+x(0))
+ (y(0)x(0))
2
2
98
Maxima
x(0) = 1, y(0) = 0
al
sistema anterior.
( %i3) atvalue(x(t),t=0,1);
( %o3) 1
( %i4) atvalue(y(t),t=0,0);
( %o4) 0
Maxima
Al volver a resolver el sistema se obtienen las soluciones con las condiciones iniciales dadas.
( %i5) desolve([diff(x(t),t)=y(t),diff(y(t),t)=x(t)],
[x(t),y(t)]);
h
i
t
%et
%et
%et
( %o5) x (t) = %e
+
,
y
(t)
=
2
2
2
2
Maxima
e x x2 ,
y(0)
y 0 (0)
00
y (0)
d3 y
dx3
dy
3 ddx2y + 3 dx
y =
=1
=0 .
= 2
( %i6) eq:diff(y(x),x,3)-3*diff(y(x),x,2)+3*diff(y(x),x)
-y(x)= %e^x*x^2;
2
3
( %o6) ddx3 y (x) 3 ddx2 y (x) + 3 ddx y (x) y (x) = x2 ex
( %i7) atvalue(diff(y(x),x,2),x=0,-2)$
atvalue(diff(y(x),x),x=0,0)$
atvalue(y(x),x=0,1)$
( %i10) desolve([eq],[y(x)]);
( %o10) y (x) =
x 5 ex
60
x 2 ex
2
x ex + ex
99
expande la expresin
expr
en un desa-
taylor(expr, [x1 , x2 , . . .] ,
a, n)
x1 , x2 , . . .
(a, a, . . .)
riables
taylor(expr, [x1 , a1 , n1 ] ,
[x2 , a2 , n2 ] , . . .)
x1 , x2 , . . . alrededor
(a1 , a2 , . . .); el truncamien-
da en las variables
del punto
taylor(expr, [x1 , x2 , . . .] ,
[a1 , a2 , . . .] , [n1 , n2 , . . .] ,
. . .)
taylor(expr, [x, a, n,
'asymp])
n1 , n2 , . . .
a taylor(expr, [x1 , a1 , n1 ] ,
[x2 , a2 , n2 ] , . . .)
equivale
desarrolla
de
es
Las operaciones matemticas de las que se ha hablado hasta ahora son exactas. Considerando la entrada exacta, sus resultados son
frmulas exactas. En muchas situaciones, sin embargo, no se necesita
un resultado exacto. Puede ser suciente, por ejemplo, encontrar una
frmula aproximada que es vlida, digamos, cuando la cantidad
es
pequea.
Maxima
3.
0,
hasta los
100
Maxima
Maxima conoce las expansiones en serie de potencias para una gran cantidad
funciones matemticas.
( %i2) taylor(exp(-a*t)*(1+sin(2*t)),t,0,4);
(a2 4 a) t2
(a3 6 a2 +8) t3
( %o2) 1 + (a + 2) t +
+
2
6
(a4 8 a3 +32 a) t4
24
Maxima
de derivadas.
( %i3) taylor(1+f(t),t,0,3);
( %o3) 1 + f (0) + ddt f (t)t=0 t +
d3
d t3
f (t)
t3
t=0
d2
d t2
f (t)
t=0
t2
Maxima
permite
realizar operaciones en series de potencias y en todos los casos mantiene el orden apropiado o el grado de precisin para las series de
potencias resultantes.
Maxima
( %i4) taylor(exp(x),x,0,3);
( %o4) 1 + x +
x2
2
x3
6
Maxima
( %o5) 2 + 5 x +
13 x2
2
35 x3
6
101
Maxima
Al copiar los tres primeros trminos del desarrollo anterior se tiene una expresin
ordinaria.
( %i6) 2+5*x+(13*x^2)/2+(35*x^3)/6;
( %o6)
35 x3
6
13 x2
2
+ 5x + 2
Maxima
( %i7) %^2;
3
( %o7) 356x +
13 x2
2
+ 5x + 2
2
Maxima
Al aplicar
expand
( %i8) %,expand;
( %o8)
1225 x6
36
455 x5
6
1207 x4
12
265 x3
3
+ 51 x2 + 20 x + 4
Maxima
( %i9) taylor(sin(y+x),[x,0,3],[y,0,3]);
3
2
( %o9) y y6 + + 1 y2 + x + y2 +
2
61 + y12 + x3 +
y3
12
x2 +
102
powerseries(expr, x, a)
expr
para
( %i10) powerseries(sin(x),x,0);
P
(1)i1 x2 i1 +1
( %o10)
i1 =0
(2 i1 +1)!
Maxima
( %i11) powerseries(cos(x^2-1),x,0);
P
P
(1)i2 x2 (2 i2 +1)
( %o11) sin(1)
+ cos(1) i2 =0
i2 =0
(2 i2 +1)!
(1)i2 x4 i2
(2 i2 )!
Maxima
Una forma de eliminar los subndices de los ndices, en las sumas, es usando la
funcin
niceindices.
( %i12) niceindices(powerseries(cos(x^2-1),x,0));
i 4i
P
P
(1)i x2 (2 i+1)
x
( %o12) sin(1)
+ cos(1) i=0 (1)
i=0
(2 i+1)!
(2 i)!
expr
parmetro de transformacin
ilt(expr, s, t)
Transformadas de Laplace.
expr
t.
con respecto de
y pa-
103
Maxima
( %i1) laplace(t^3*exp(a*t),t,s);
6
( %o1) (sa)
4
Maxima
solve_rec
coecientes polinomiales.
Maxima
solve_rec.
( %i1) load(solve_rec)$
Maxima
( %i2) solve_rec(a[n]=3*a[n-1]+1,a[n],a[1]=1);
n
( %o2) an = 32 12
Maxima
( %i3) solve_rec(a[n+1]=(a[n]+1)/(n+1),a[n],a[1]=0);
n1
P ( %j+1)!
( %o3) an =
%j=1
%j+1
n!
104
Maxima
( %i4) solve_rec(
a[n+2]=(3*a[n+1]-a[n])/2,
a[n],a[1]=0,a[2]=1);
( %o4) an = 2 22n
Maxima
( %i5) solve_rec(
2*x*(x+1)*y[x]-(x^2+3*x-2)*y[x+1]+(x-1)*y[x+2],
y[x],y[1]=1,y[3]=3);
( %o5) yx = 3 2x2 x!
2
Maxima
( %i6) solve_rec_rat(
(x+4)*a[x+3]+(x+3)*a[x+2]-x*a[x+1]+
(x^2-1)*a[x]=(x+2)/(x+1),
a[x]);
( %o6) ax = (x1)1(x+1)
CAPTULO
Matemticas numricas
allroots(ecu, x)
ecu1 , . . . , ecum
x1 , . . . , x n
linmicas
find_root(ecu, x, a, b)
ecu para
la variable
Maxima
solve
( %i1) solve(2-4*x+x^5=0,x);
( %o1) 0 = x5 4 x + 2
Maxima
algsys
ecu
[a, b]
( %i2) algsys([2-4*x+x^5=0],[x]);
105
en
106
Maxima
La opcin
realonly:true
( %i3) algsys([2-4*x+x^5=0],[x]),realonly:true;
( %o3) [[x = 1.243596445373759] , [x = 0.50849947534103] ,
[x = 1.518512140520062]]
find_root
Maxima
[0, 2];
y la funcin
find_root
log
evala los
( %i4) find_root(3*cos(x)=log(x),x,0,2);
( %o4) find_root (3 cos (x) = log (x) , x, 0.0, 2.0)
Maxima
( %i5) find_root(3*cos(x)=log(x),x,0.00001,2);
( %o5) 1.447258617277903
107
Maxima
find_root
( %i6) find_root(3*cos(x)=log(x),x,12,15);
( %o6) 13.10638768062491
calcula
Rb
a
quad_qagi(f, x, a, inf )
calcula
R
a
quad_qagi(f, x, minf, b)
numricamente
la
integral
numricamente
la
integral
numricamente
la
integral
la
integral
f dx
f dx
calcula
Rb
f dx
Integrales numricas.
Las funciones
tro elementos:
1. la aproximacin a la integral,
2. el error absoluto estimado de la aproximacin,
3. el nmero de evaluaciones del integrando,
4. un
El
cdigo de error.
cdigo de error
si no ha habido problemas;
108
fallo de convergencia;
Maxima
quad_qags
integracin.
( %i1) quad_qags(1/sqrt(x*(1-x)),x,0,1);
( %o1) 3.141592653589849, 6.2063554295832546 1010 , 567, 0
Maxima
quad_qagi.
( %i2) quad_qagi(exp(-x^2),x,minf,inf);
( %o2) 1.772453850905516, 1.420263678183091 108 , 270, 0
CAPTULO
Funciones y programas
Maxima.
f.
( %i1) f(x):=x^2;
( %o1) f (x) := x2
Maxima
( %i2) f(a+1);
( %o2) (a + 1)2
Maxima
( %i3) f(4);
( %o3) 16
109
Maxima.
110
Maxima
( %i4) f(x^2+3*x);
2
( %o4) x2 + 3 x
Maxima
Puede usarse
en un clculo.
( %i5) expand(f(x+y+1));
( %o5) y 2 + 2 x y + 2 y + x2 + 2 x + 1
Maxima
f.
( %i6) dispfun(f);
( %t6) f (x) := x2
( %o6) [ %t6]
f(x) := x2
dispfun(f)
remfunction(f)
functions
dene la funcin
muestra la denicin de
es una variable que contiene los nombres de las funciones denidas por el
usuario
Maxima
( %i7) hump(x,xmax):=(x-xmax)^2/xmax;
( %o7) hump (x, xmax) :=
(xxmax)2
xmax
111
Maxima
hump
( %i8) 2+hump(x,3.5);
( %o8) 0.28571428571429 (x 3.5)2 + 2
Maxima
hump,
( %i9) hump(x,xmax):=(x-xmax)^4;
( %o9) hump(x, xmax) := (x xmax)4
Maxima
( %i10) dispfun(hump);
( %t10) hump (x, xmax) :=
( %o10) [ %t10]
(xxmax)2
xmax
Maxima
hump.
( %i11) remfunction(hump);
( %o11) [hump]
dispfun(f1 , . . . , fn )
remfunction(f1 , . . . , fn )
dispfun(all)
fi
fi
remfunction(all)
112
Maxima
g.
( %i12) g(x):=sqrt(1-x);
( %o12) g(x) := 1 x
Maxima
g).
( %i13) dispfun(all);
x2
( %t13) f (x) :=
( %t13) g(x) := 1 x
( %o13) [ %t13, %t14]
Maxima
g).
( %i14) remfunction(all);
( %o14) [f, g]
Maxima
( %i15) dispfun(all);
( %o15) [ ]
Maxima
Maxima.
array ).
F ([L]) := (L)
dene la funcin
113
gumentos es variable
F [x1 , . . . , xn ] :=
(x1 , . . . , xn )
F [x1 , . . . , xn ] :=
[1 (x1 , . . . , xn ), . . . ,
m (x1 , . . . , xn )]
cuyo argu-
cuyo argu-
Maxima
( %i16) F([x]):=x^2+4;
( %o16) F ([ x ]) := x2 + 4
Maxima
Esto evala
en un solo argumento.
( %i17) F(2);
( %o17) 8
Maxima
Esto evala
en dos argumentos.
( %i18) F(2,3);
( %o18) [8, 13]
Maxima
( %i19) G[x,y]:=x^2+y^2;
( %o19) Gx,y := x2 + y 2
Maxima
Aqu se evala
en la lista
( %i20) G[2,3];
[2, 3]
G.
114
( %o20) 13
Maxima
( %i21) H[x,y]:=[2*x,3-y,x*y];
( %o21) Hx,y := [2 x, 3 y, x y]
Maxima
en la lista
[4, 3].
( %i22) H[4,3];
( %o22) [8, 0, 12]
Para visualizar la denicin de este tipo de funciones puede usarse
la funcin
usarse la funcin
remarray(F )
remarray(F1 , . . . , Fn )
remarray(all)
F1 , . . . , Fn
Maxima
( %i23) dispfun(all);
( %t23) F ([ x ]) := x2 + 4
( %t23) Gx,y := x2 + y 2
( %t23) Hx,y := [2 x, 3 y, x y]
( %o23) [ %t24, %t25, %t26]
Maxima
( %i24) remfunction(F);
denida en
( %i17)
115
( %o24) [F ]
Maxima
Esto borra la denicin de todas las funciones array denidas por el usuario.
( %i25) remarray(all);
( %o25) [G, H]
Adems,
Maxima
annimas
que son de mucha utilidad en contextos vinculados con la programacin. La funcin para denirlas es
lambda([x], expr)
lambda([x1 , . . . , xm ] ,
expr1 , . . . , exprn )
lambda.
Funcin annima
Maxima
Una funcin annima puede asignarse a una variable y ser evaluada como si fuese
una funcin ordinaria.
( %i29) dispfun(all);
dispfun.
116
( %o29) [ ]
mucha digitacin deniendo una funcin que contiene todas las sentencias de entrada.
Maxima
( %i30) expand(product(x+i,i,1,3));
( %o30) x3 + 6 x2 + 11 x + 6
Maxima
( %i31) expand(product(x+i,i,1,4));
( %o31) x4 + 10 x3 + 35 x2 + 50 x + 24
Maxima
exprod
lo expande.
( %i32) exprod(n):=expand(product(x+i,i,1,n)) $
Maxima
product
expand.
( %i33) exprod(5);
( %o33) x5 + 15 x4 + 85 x3 + 225 x2 + 274 x + 120
Maxima
117
Maxima
( %i34) cex(n,i):=(
t:exprod(n),coeff(t,x^i)
)$
Maxima
( %i35) cex(5,3);
( %o35) 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
Maxima
La funcin
( %i36) t;
( %o36) x5 + 15 x4 + 85 x3 + 225 x2 + 274 x + 120
t escapa,
118
Maxima
u.
( %i37) ncex(n,i):=block([u],
u:exprod(n),
coeff(u,x^ i) ) $
Maxima
( %i38) ncex(5,3);
( %o38) 85
Maxima
( %i39) u
( %o39) u
Es posible asignar un valor inicial a una o ms variables locales
dentro de la lista de las mismas. Tambin se puede denir una funcin
como bloque sin declarar variables locales, para lo cual debe omitirse
dicha lista.
Un bloque puede aparecer dentro de otro bloque. Las variables
locales se inicializan cada vez que se entra dentro de un nuevo bloque.
Las variables locales de un bloque se consideran globales dentro de
otro anidado dentro del primero. Si una variable es no local dentro
de un bloque, su valor es el que le corresponde en el bloque superior.
Este criterio se conoce con el nombre de alcance dinmico.
( %i1) defrule(regtran1,x,3);
por
3.
119
( %o1) regtran1 : x 3
Maxima
regtran1
( %i2) apply1(1+f(x)+f(y),regtran1);
( %o2) f (y) + f (3) + 1
Maxima
f(x).
sta no afecta a
( %i3) defrule(regtran2,f(x),p);
regtran2 : f (x) p
( %i4) apply1(1+f(x)+f(y),regtran2);
( %o4) f (y) + p + 1
Maxima
f(t)
( %i5) matchdeclare(t,true);
done
( %i6) defrule(patron,f(t),t^2);
( %o6) patron : f (t) t2
Maxima
( %i7) apply1(1+f(x)+f(y),patron);
( %o7) y 2 + x2 + 1
Maxima
f(y).
120
Maxima
regtran2
regtran1,
patron.
( %i9) clear_rules();
( %o9) f alse
Maxima
Esto indica que todas las deniciones de las reglas han sido borradas.
Maxima
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.
121
( %i12) matchdeclare(p,prodp);
( %o12) done
Maxima
Ahora se dene una regla que transforme una funcin aplicada a un producto
como la suma de los factores a los cuales se les ha aplicado la funcin.
Maxima
( %i14) apply1(f(a*b)+f(c*d),reg);
( %o14) f (d) + f (c) + f (b) + f (a)
Maxima
f.
( %i15) apply1(f(a)+f(a*b*c)+f(c),reg);
( %o15) 2 f (c) + f (b) + 2 f (a)
Maxima
expand
de Maxima.
( %i16) apply1(f(a)*f(a*b*c)*f(c),reg),expand;
( %o16) f (a) f 2 (c) + f (a) f (b) f (c) + f 2 (a) f (c)
122
ev
define(f (x1 , . . . , xn ),
expr)
define(f [x1 , . . . , xn ],
expr)
x1 , . . . , x n
y cuerpo
f con
expr
f con
expr
argumentos
x1 , . . . , x n
y cuerpo
Maxima
x2 + 1
en la variable
ex.
ex.
( %i1) ex:x^2+1;
( %o1) x2 + 1
Maxima
a partir de
( %i2) f(x):=ex $
( %i3) f(8);
( %o3) x2 + 1
Maxima
define
a partir de
ex
si se
( %i4) define(g(x),ex) $
( %i5) g(8);
( %o5) 65
123
Maxima
f = x2 + 1 .
( %i6) f(x):=x^2+1 $
Maxima
Ahora, a partir de
f,
se dene
f 0
como
f 0 =
df
.
dx
( %i7) f'(x):=diff(f(x),x) $
Maxima
La evaluacin simblica de
f 0
( %i8) f'(t);
( %o8) 2t
Maxima
( %i9) f'(8);
( %o9) di: second argument
#0: f '(x=8)
Maxima
f 0 ,
( %i10) define(f'(x),diff(f(x),x)) $
Maxima
( %i11) f'(t);
( %o11) 2t
define
(re-
124
Maxima
( %i12) f'(8);
( %o12) 16
cuadamente las funciones denidas a trozos. Una forma, bastante limitada, de superar esta carencia es utilizando el condicional
Maxima
f (x) =
(
x2 ,
x,
x < 2,
x 2.
( %i1) f(x):=block([],
if (x<2) then return(x^2),
if (x>=2) then return(sqrt(x))
)$
Maxima
( %i2) f(-2);
( %o2) 4
( %i3) f(9);
( %o3) 3
Maxima
( %i4) f(t);
( %o4) if t >= 2 then return
t
if.
125
Maxima
( %i5) diff(f(x),x);
d
( %o5)
if x >= 2 then return
x
dx
( %i6) integrate(f(x),x);
Z
( %o6)
if x >= 2 then return
x dx
Maxima
2,
g(x) =
x,
1 x,
2 < x < 2 ,
2 x < 3,
3 x < 5.
( %i7) g(x):=block([],
if (-2<x and x<2) then return(x^2),
if (2<=x and x<3) then return(sqrt(x)),
if (3<=x and x<5) then return(1-x) )$
Maxima
( %i8) f(x)+g(x);
Maxima
pw.
( %i9) load(pw)$
1 El paquete pw (cuya versin en la actualidad es 6.4)
http://sourceforge.net/projects/piecewisefunc/
126
Maxima
(
x2 ,
f (x) =
x,
x < 2,
x 2.
( %i10) f(x):=piecewise(
[minf,x^2,2,sqrt(x),2,sqrt(x),inf],
x,open)$
Maxima
( %i11) f(-2);
( %o11) 4
( %i12) f(2);
( %o12) 2
( %i13) f(9);
( %o13) 3
Maxima
Una evaluacin simblica nos deja ver las funciones utilizadas por el autor para
manipular las funciones denidas a trozos.
( %i14) f(t);
( %o14)
t (signum(t2)unit_spike(t2)+1)
+
2
t2 (signum(t2)unit_spike(t2)+1)
+
2
t unit_spike (t 2)
Maxima
Con la funcin
pwsimp
( %i15) pwsimp(f(x),x,array);
If x in ( , 2 ) then
x2
If x in [
2
, 2 ] then 2
If x in (
2
, ) then
x
( %o15) Done
127
Maxima
f 0 (2);
3 .
22
( %i16) pwsimp(
If x
If x
If x
diff(f(x),x), x,array);
in ( , 2 ) then
in [
2
, 2 ] then
in (
2
, ) then
2x
1
3
22
1
2 x
( %o16) Done
Maxima
He aqu integracin.
( %i17) pwsimp(pwint(f(x),x),x,array),expand;
3
x3
22
4
If x in ( , 2 ) then
+
3
3
3
If x in [
22
4
2
, 2 ] then
+
3
3
3
3
2x2
22
4
If x in (
2
, ) then
3 3 + 3
( %o17) Done
Maxima
2,
g(x) =
x,
1 x,
2 < x < 2 ,
2 x < 3,
3 x < 5.
( %i18) g(x):=piecewise(
[-2,x^2,2,sqrt(x),2,sqrt(x),3,1-x,3,1-x,5],
x,open)$
Maxima
( %i19) f(3)+g(3);
( %o19) 3 2
128
Maxima
No obstante, al calcular
f (x) + g(x)
se aprecia que
( %i20) pwsimp(f(x)+g(x),x,array);
If x in ( , 2
If x in [ 2 , 2
If x in ( 2 , 2
If x in [
2
, 2
If x in (
2
, 3
If x in [
3
, 3
If x in (
3
, 5
If x in [
5
, 5
If x in (
5
,
( %o20) Done
)
]
)
]
)
]
)
]
)
then
then
then
then
then
then
then
then
then
x2
4
2 x2
3
22
2 x
42 3
x + x + 1
pw,
Maxima
CAPTULO
10
Listas
Maxima
Lisp 1 .
Lisp.
Maxima
es
Maxima
( %i1) [2,3,4];
( %o1) [2, 3, 4]
Maxima
( %i2) x^ %-1;
( %o2) x2 1, x3 1, x4 1
1 Lisp (List Processing )
129
130
Maxima
Maxima
es reemplazado por
3.
( %i4) %,x=3;
( %o4) [6, 27, 108]
Maxima
han sido implementadas listables de modo que acten separadamente sobre cada elemento de una lista.
create_list(f, i, imin ,
imax )
create_list(f, i, list)
create_list.
imin
variando
variando
imax
create_list(f, i, imin ,
imax , j, jmin , jmax , . . .)
genera
una
lista
con
cada
list
ndice
create_list(f, i, list1 ,
j, list2 , . . .)
genera
una
lista
con
cada
ndice
131
Maxima
i2 ,
con
variando de
6.
( %i1) create_list(i^2,i,1,6);
( %o1) [1, 4, 9, 16, 25, 36]
Maxima
sen
n
5
para
variando de
4.
( %i2) create_list(sin(n/5),n,0,4);
( %o2) 0, sin 15 , sin 25 , sin 53 , sin 45
Maxima
( %i6)
( %i3) %,numer;
( %o3) [0, 0.19866933079506, 0.38941834230865,
0.56464247339504, 0.71735609089952]
Maxima
Maxima
create_list usa exactamente la misma notacin para el iterador que las funciones
sum y product que fueron mencionadas en la seccin 7.4.
Maxima
variando desde
( %i6) create_list(0.25*i,i,1,4)$
hasta
en pasos de
0.25
132
Maxima
create_list.
( %i8) %^2+3;
( %o8) [3.25, 3.5, 3.75, 4]
Maxima
hasta
xi + y j
con
variando desde
hasta
2.
Maxima
( %i10) create_list(x,i,1,4);
( %o10) [x, x, x, x]
Maxima
( %i11) create_list(random(1.0),i,1,4);
( %o11) [0.25223887668538, 0.41556272272148,
0.61257388925382, 0.84181265533592]
x.
variando desde
133
list [ i ]
el
i-simo
elemento de
elemento es
part(list, [ i, j, . . . ])
(el primer
i, j, . . .
part(list, i1 , . . . , ik )
list
list [ 1 ])
de
list
obtiene la parte de
ca por los ndices
se obtiene la parte
first(list),
second(list), . . . ,
tenth(list)
last(list)
list
Maxima
( %i1) part([4,-1,8,-6],3);
( %o1) 8
Maxima
( %i2) part([4,-1,8,-6],[2,3,1,2,3,4,1]);
( %o2) [1, 8, 4, 1, 8, 6, 4]
Maxima
( %i3) u:[7,2,4,6];
( %o3) [7, 2, 4, 6]
u.
list
134
Maxima
u.
( %i4) u[3];
( %o4) 4
Maxima
u.
( %i5) (u+1)/(u-6);
( %o5) 34 , 61 , 6, 8
Es posible crear listas multidimensionales mediante la anidacin
de listas en listas.
Maxima
2 2,
y le da el nombre
m.
( %i6) m:create_list(create_list(i-j,j,1,2),
i,1,2);
( %o6) [[0, 1] , [1, 0]]
Maxima
( %i7) m[1];
( %o7) [0, 1]
Maxima
( %i8) %[2];
( %o8) 1
Maxima
( %i9) part(m,1,2);
135
( %o9) 1
Maxima
2 2 2.
( %i10) create_list(create_list(create_list(i*j^2*k^3,
k,1,2),j,1,2),i,1,2);
( %o10) [[[1, 8] , [4, 32]] , [[2, 16] , [8, 64]]]
Maxima
Si no se anida
create_list
( %i11) create_list(i*j^2*k^3,i,1,2,j,1,2,k,1,2);
( %o11) [1, 8, 4, 32, 2, 16, 8, 64]
Al asignar una lista a una variable, puede usarse las listas en Maxima de modo similar a los arrays en otros lenguajes de programacin.
De esta manera, por ejemplo, es posible resetear un elemento de una
lista asignando un valor a
u [ i ].
part(u, i) u [ i ]
u [ i ] : valor
Maxima
( %i12) u:[2,1,5,7];
( %o12) [2, 1, 5, 7]
Maxima
( %i13) u[2]:0;
( %o13) 0
i -simo
elemento de la lista
136
Maxima
se ha modicado.
( %i14) u;
( %o14) [2, 0, 5, 7]
P (x)
es verdadero
P (x)
es verdadero
prueba si
elem
f orm es un
f orm
list
prueba si
parte de
freeof(f orm1 , . . . ,
f ormn , list)
de la
?position(elem, L)
en la lista
elemento de
list
no ocurre en ninguna
Maxima
[a, 1, 3, b, 7]
( %i1) sublist([a,1,3,b,7],symbolp);
( %o1) [a, b]
Maxima
[a, 1, 3, b, 7],
( %i2) sublist_indices([a,1,3,b,7],symbolp);
137
( %o2) [1, 4]
Maxima
En este caso se emplea una funcin annima para denir un predicado, el cual indica que se quiere obtener una lista de todos los elementos, de la lista
[1, 2, 4, 7, 6, 2],
( %i3) sublist([1,2,4,7,6,2],lambda([h],h>2));
( %o3) [4, 7, 6]
Maxima
es un elemento de
[11, 1, 2, 4, 5, 5].
( %i4) member(4,[11,1,2,4,5,5]);
( %o4) true
Maxima
3,
no lo es.
( %i5) member(3,[11,1,2,4,5,5]);
( %o5) f alse
Maxima
( %i6) freeof(0,[[1,2],[3,0]]);
( %o6) f alse
Combinar listas.
list1
list2
alternados
138
Maxima
( %i1) join([1,2],[a,b]);
( %o1) [1, a, 2, b]
Maxima
He aqu la combinacin de dos listas de diferente longitud (join ignora los elementos sobrantes de la lista de mayor longitud).
( %i2) join([1,2],[a,b,c,d]);
( %o2) [1, a, 2, b]
list
en forma
list
de acuer-
ascendente
sort(list, P )
reverse(list)
list
permutations(list)
unique(list)
list
devuelve
list
Ordenamiento de listas.
Maxima
Esto ordena los elementos de una lista en forma estndar. En casos simples como
ste el ordenamiento es alfabtico o numrico.
( %i1) sort([d,b,c,a]);
( %o1) [a, b, c, d]
139
Maxima
( %i2) sort([11,1,2,4,5,5],>);
( %o2) [11, 5, 5, 4, 2, 1]
Maxima
Aqu se ordenada los elementos de la lista segn sea la norma de cierto elemento
menor que la norma del posterior.
Maxima
( %i4) reverse([d,b,c,a]);
( %o4) [a, c, b, d]
Maxima
[a, b, c].
( %i5) permutations([a,b,c]);
( %o5) {[a, b, c] , [a, c, b] , [b, a, c] , [b, c, a] , [c, a, b] , [c, b, a]}
Maxima
( %i6) unique([11,1,2,2,4,5,5]);
( %o6) [1, 2, 4, 5, 11]
140
list1
seguidos de los de
list2 , . . . , listn
cons(elem, list)
endcons(elem, list)
delete(elem, list)
rest(list, n)
deleten(list, n)
agrega
elem
al inicio de la lista
agrega
elem
al nal de la lista
borra
elem
de la lista
list
n elementos (n > 0)
o los ltimos n elementos (n < 0) de
la lista list
borra el
n -simo
elemento de la lista
Maxima
Aqu se genera una lista con los elementos de dos listas dadas.
( %i1) append([1,2,3],[a,b,c]);
( %o1) [1, 2, 3, a, b, c]
Maxima
( %i2) cons(x,[a,b,c]);
( %o2) [x, a, b, c]
Maxima
list
list
Aqu se inserta
list
( %i3) endcons(x,[a,b,c]);
( %o3) [a, b, c, x]
141
Maxima
Esto devuelve una lista dada con los dos primeros elementos borrados.
( %i4) rest([a,g,f,c,x],2);
( %o4) [f, c, x]
Maxima
Esto devuelve una lista dada con los dos ltimos elementos borrados.
( %i5) rest([a,g,f,c,x],-2);
( %o5) [a, g, f ]
partition(list, x)
list
particiona la lista
list
en dos listas;
x,
Maxima
( %i1) flatten([7,2,[3,[5]],4]);
( %o1) [7, 2, 3, 5, 4]
Maxima
a, b, a2 + 1, c
( %i2) partition([a,b,a^2+1,c],a);
( %o2) [b, c] , a, a2 + 1
142
verica si
expr
verica si
list
es una lista
devuelve la longitud de
list
list1
list2
apply(f, [x1 , . . . , xn ])
map(f, [a1 , . . . , an ])
map(f, [a1 , . . . , an ] ,
[b1 , . . . , bn ] , . . .)
outermap(f, list1 ,
. . . , listn )
evala
f (x1 , . . . , xn )
devuelve la lista
devuelve
la
[f (a1 ), . . . , f (an )]
[f (a1 , b1 , . . .), . . . ,
lista
f (an , bn , . . .)]
aplica la funcin
a cada uno de
Maxima
Con la funcin
length
( %i1) length([7,9,0]);
( %o1) 3
Maxima
apply
( %i2) apply(max,[11,1,2,4,5,5]);
( %o2) 11
Maxima
( %i3) map(first,[[a,b],[c,d]]);
( %o3) [a, c]
map.
143
Maxima
map.
( %i4) map(+,[1,2,9],[-1,3,7]);
( %o4) [0, 5, 16]
Maxima
outermap.
( %i5) outermap(^,[a,b],[c,d,e]);
( %o5) [[ac , ad , ae ], [bc , bd , be ]]
Maxima
( %i26)
( %i28)
map
q.
( %i6) p:[x,y,z]$
q:[[a1,b1,c1],[a2,b2,c2],[a3,b3,c3]]$
( %i8) map(lambda([h],p.h),q);
( %o8) [c1 z + b1 y + a1 x, c2 z + b2 y + a2 x, c3 z + b3 y + a3 x]
CAPTULO
11
Arrays
array(nombre, dim1 ,
. . . , dimn )
array(nombre, tipo, dim1 ,
. . . , dimn )
n,
que de-
fixnum
flonum)
Creacin de arrays.
listarray(A)
arrayinfo(A)
fillarray(A, B)
rellena el array
Maxima
de dimensin
2.
( %i9) array(u,2);
( %o9) u
144
145
Maxima
( %i10) listarray(u);
( %o10) [#####, #####, #####]
Maxima
( %i11) fillarray(u,[1,-7,8]);
( %o11) u
Maxima
( %i12) listarray(u);
( %o12) [1, 7, 8]
Maxima
( %i13) array(phi,1,2);
( %o13)
Maxima
Maxima
( %i22) listarray(phi);
( %o22) [1, 1, 4, 4, 7, 5]
146
Maxima
( %i23) arrayinfo(phi);
( %o23) [declared , 2, [1, 2]]
Si el usuario asigna un valor a una variable subindicada antes de
declarar el array correspondiente, se construye un array no declarado.
Los arrays no declarados, tambin conocidos por el nombre de
arrays de claves (hashed arrays), son ms generales que los arrays
declarados. El usuario no necesita declarar su tamao mximo y pueden ir creciendo de forma dinmica. Los subndices de los arrays no
declarados no necesariamente deben ser nmeros.
Maxima
subindicada con
hola.
subindicada con
adios.
( %i24) t[hola]:a;
( %o24) a
Maxima
( %i25) t[adios]:b;
( %o25) b
Maxima
( %i26) listarray(t);
( %o26) [b, a]
Maxima
( %i27) arrayinfo(t);
( %o27) [hashed , 1, [adios] , [hola]]
t.
t.
CAPTULO
12
Matrices
matrix
que
Maxima
Maxima
lista de listas.
entermatrix(m, n)
mn
mn
generada
m n,
ident(n)
zeromatrix(m, n)
mn
diagmatrix(n, elem)
147
148
diag_matrix(d1 , d2 , . . . ,
dn )
de
la
diagonal
iguales
d1 , d2 , . . . , dn
vandermonde_matrix
([x1 , . . . , xn ])
hilbert_matrix (n)
n por n, cuya
(n1)
2
sima la es [1, xi , xi , . . . , xi
]
devuelve una matriz
Maxima
( %i1) matrix([3,1,0],[2,4,1],[1,7,2]);
3 1 0
( %o1) 2 4 1
1 7 2
Maxima
( %i2) [[3,1,0],[2,4,1],[1,7,2]];
( %o2) [[3, 1, 0], [2, 4, 1], [1, 7, 2]]
Maxima
apply
( %i3) apply(matrix,[[3,1,0],[2,4,1],[1,7,2]]);
3 1 0
( %o3) 2 4 1
1 7 2
Maxima
( %i4) a[i,j]:=i-2*j $
por
un mensaje de error)
Con
i-
( %i5) genmatrix(a,3,3);
1 3 5
( %o5) 0 2 4
1 1 3
Maxima
( %i6) vandermonde_matrix([x[0],x[1],x[2]]);
1 x0 x20
( %o6) 1 x1 x21
1 x2 x22
Maxima
( %i7) vandermonde_matrix([2,3,5]);
1 2 4
( %o7) 1 3 9
1 5 25
Maxima
( %i8) hilbert_matrix(3);
1 12 13
( %o8) 1 1 1
2
1
3
3
1
4
4
1
5
3.
149
150
part(M, i)
part(M, i, j)
Mi,j
Maxima
( %i1) A:genmatrix(lambda([i,j],i-j),3,3);
0 1 2
( %o1) 1 0 1
2 1
0
Maxima
A1,2 .
( %i2) A[1,2];
( %o2) 1
Maxima
3.
( %i3) ident(3);
1 0 0
( %o3) 0 1 0
0 0 1
Maxima
( %i4) %[2];
( %o4) [0, 1, 0]
de
151
invert(M )
M p
producto matricial
devuelve la inversa de la matriz
determinant(M )
mat_trace(M )
transpose(M )
minor(M, i, j)
devuelve el menor
(i, j)
de la matriz
adjoint(M )
col(M, i)
devuelve la
triz
M.
row(M, i)
devuelve la
M.
i -sima
la de la matriz
sola la
rank(M, i, j)
setelmx(x, i, j, M )
actualizada
submatrix(i1 , . . . , im ,
M, j1 , . . . , jn )
submatrix(i1 , . . . , im , M )
submatrix(M, j1 , . . . , jn )
Algunas operaciones matriciales.
i1 , . . . , 1m
y columnas
sido eliminadas
j1 , . . . , j n
han
152
echelon(M )
siana
triangularize(M )
de la matriz
cin gaussiana
rowop(M, i, j, )
rowswap(M, i, j)
Fi
Fj
Fi Fi Fj
M
de la matriz
de la matriz
columnop(M, i, j, )
Ci
Ci Ci Cj
Cj de la matriz
columnswap(M, i, j)
kronecker_product(A,
B)
las matrices
Maxima
22
de variables simblicas.
( %i1) A:matrix([a,b],[c,d]);
a b
( %o1)
c d
Maxima
He aqu la transpuesta de
A.
( %i2) transpose(A);
a c
( %o2)
b d
de la
M
A
153
Maxima
Esto da la inversa de
en forma simblica.
( %i3) invert(A);
d
b
adbc
adbc
( %o3)
a
c
adbc
adbc
Maxima
Esto da el determinante de
A.
( %i4) determinant(A);
( %o4) a d b c
Maxima
3 3.
1 12 13
( %o5) 12 13 14
1
3
1
4
1
5
Maxima
Esto da su inversa.
( %i6) invert(B);
9
36
30
( %o6) 36 192 180
30 180 180
Maxima
( %i7) %.B;
1 0 0
( %o7) 0 1 0
0 0 1
154
Maxima
de orden
4 5.
( %i8) M:matrix([2,-1,2,-1,-8],[2,-2,3,-3,-20],
[1,1,1,0,-2],[1,-1,4,3,4]);
2 1 2 1 8
2 2 3 3 20
( %o8)
1 1 1 0
2
1 1 4 3
4
Maxima
de la matriz
y devuelve la matriz
F2 F2 + F1
en la matriz
y devuelve la matriz
resultante.
( %i9) rowswap(M,2,1);
2 2 3 3 20
2 1 2 1 8
( %o9)
1 1 1 0
2
1 1 4 3
4
Maxima
( %i10) rowop(M,2,1,-1);
2 1 2 1 8
4 3 5 4 28
( %o10)
1 1 1 0
2
1 1 4 3
4
Maxima
( %o11)
a
4a
7a
c
4c
7c
2a
5a
8a
2c
5a
8c
3a
6a
9a
3c
6a
9c
b 2b 3b
4b 5b 6b
7b 8b 9b
d 2d 3d
4d 5d 6d
7d 8d 9d
155
M,
columnas de la matriz
respectiva-
mente
matrixp(expr)
mat_norm(M, p)
verica si
expr
devuelve la
es una matriz
p -norma
de la matriz
inf
addmatrices(f, A, B, . . .)
frobenius
devuelve
la
M.
1,
son
matriz
donde
m n
mat_unblocker(M )
A, B, . . .
si M es una matriz de bloques, deshace
los bloques de un nivel
outermap(f, M1 , . . . , Mn )
aplica la funcin
a cada uno de
M1 M2 . . . Mn
Ms funciones para matrices.
Maxima
He aqu la matriz
D.
156
2
( %o3) 0
2
0
2
0
2
0
2
0
2
0
Maxima
D.
( %i4) matrix_size(D);
( %o4) [3, 4]
Maxima
Utilizando la funcin
matrixp
tricial.
( %i5) matrixp(D);
( %o5) true
Maxima
B.
( %i6) mat_norm(D,frobenius);
( %o6) 2 6
Maxima
( %i7) A:genmatrix(a,2,3);
a1,1 a1,2 a1,3
( %o7)
a2,1 a2,2 a2,3
( %i8) B:genmatrix(b,2,3);
b1,1 b1,2 b1,3
( %o8)
b2,1 b2,2 b2,3
( %i9) C:genmatrix(c,2,3);
A, B
( %o9)
c1,1
c2,1
c1,2
c2,2
c1,3
c2,3
157
Maxima
A, B
mediante la funcin
addmatrices
a las
C.
( %i10) addmatrices(f,A,B,C);
f (a1,1 , b1,1 , c1,1 ) f (a1,2 , b1,2 , c1,2 ) f (a1,3 , b1,3 , c1,3 )
( %o10)
f (a2,1 , b2,1 , c2,1 ) f (a2,2 , b2,2 , c2,2 ) f (a2,3 , b2,3 , c2,3 )
Maxima
Si
es +, el resultado es
A + B + C.
( %i11) addmatrices(+,A,B,C);
c1,1 + b1,1 + a1,1 c1,2 + b1,2 + a1,2
( %o11)
c2,1 + b2,1 + a2,1 c2,2 + b2,2 + a2,2
Maxima
Con
outermap
mat_unblocker
7a 8a 9a 7b 8b 9b
( %o12)
c 2c 3c
d 2d 3d
4c 5c 6c 4d 5d 6d
7c 8c 9c
7d 8d 9d
( %i13) mat_unblocker( %);
158
( %o13)
a
4a
7a
c
4c
7c
2a
5a
8a
2c
5a
8c
3a
6a
9a
3c
6a
9c
b 2b 3b
4b 5b 6b
7b 8b 9b
d 2d 3d
4d 5d 6d
7d 8d 9d
x1 , . . . , xn del sistema
eq1 , . . . , eqm
de
ecuaciones lineales
augcoefmatrix([eq1 , . . . ,
eqm ], [x1 , . . . , xn ])
sistema
de
x1 , . . . , x n
ecuaciones
lineales
eq1 , . . . , eqm
Funciones para generar matrices asociadas a sistemas de ecuaciones.
Maxima
( %i1) coefmatrix([2*x-3*y=1,x+y=3],[x,y]);
2 3
( %o1)
1 1
Maxima
( %i2) augcoefmatrix([2*x-3*y=1,x+y=3],[x,y]);
2 3 1
( %o2)
1 1 3
159
Maxima
F2 F2 12 F1
partir de ste ltimo resultado se deduce que la solucin del sistema de ecuaciones
lineales, dado, ser
y=1
x = 2.
0
2
2
eigenvalues(M )
M,
en trminos de
y la segun-
eigenvectors(M )
el
primero
eigenvalues(M ),
est
formado
por
el segundo es una
Maxima
3 3.
3 4 5
( %o1) 4 5 6
5 6 7
160
Maxima
C.
( %i2) charpoly(C,x),expand;
( %o2) x3 + 15 x2 + 6 x
Maxima
C.
( %i3) eigenvalues(C);
hh
i
i
( %o3) 24915
, 249+15
, 0 , [1, 1, 1]
2
2
Maxima
C.
( %i4) eigenvectors(C);
hhh
i
i
( %o4)
24915
, 249+15
, 0 , [1, 1, 1] ,
2
2
hhh
ii
3 835
1, 24919
,
,
28
14
hh
ii
ii
3 83+5
,
,
[[1,
2,
1]]
1, 249+19
28
14
CAPTULO
13
Conjuntos
Los conjuntos en
dor
Maxima
set y cuyos argumentos son los elementos del mismo (ver seccin
Maxima
Maxima
{a1 , . . . , an }
set()
{}
makeset(f, vars, s)
a1 , . . . , an
equivale a
set(a1 , . . . , an )
set()
lista de variables de
o lista de listas
162
Maxima
a, b, c, d.
( %i1) {a,b,c,d};
( %o1) {a, b, c, d}
Maxima
( %i2) {c,e,f,f,a,b,c,d,a};
( %o2) {a, b, c, d, e, f }
Maxima
La funcin
makeset
( %i3) makeset(i/j,[i,j],[[1,a],[2,b],[3,c],[4,d]]);
( %o3) a1 , 2b , 3c , d4
Maxima
makeset.
( %i4) makeset(x/2,[x],{[1],[2],[3],[4],[5]});
( %o4) 12 , 1, 32 , 2, 52
Maxima
( %i5) x^[1,2,3];
( %o5) x, x2 , x3
Maxima
( %i6) x^{1,2,3};
163
( %o6) x{1,2,3}
Maxima
( %i7) {x,x^2,x^3,x+1},x=1;
( %o7) {1, 2}
fullsetify(list)
list
conj
juntos
listify(conj)
full_listify(conj)
conj
Maxima
( %i1) setify([a,c,d,e]);
( %o1) {a, c, d, e}
Maxima
( %i2) listify({a,b,c,d});
conj
por operadores de
164
( %o2) [a, b, c, d]
Maxima
( %i3) fullsetify([a,[b,c],[e,[f,g]],k]);
( %o3) {a, {b, c} , {e, {f, g}} , k}
Maxima
create_list
devuelve el
junto
conj
i -simo
respetando el ordenamien-
to y la unicacin internos
first(conj),
second(conj), . . . ,
tenth(conj)
last(conj)
conj
conj
Maxima
Aqu se obtiene el primer elemento de un conjunto que ha sido ordenado y unicado internamente.
( %i1) part({b,c,c,d,a},1);
165
( %o1) a
Maxima
( %i2) part({b,c,c,d,a},5);
part: fell o the end.
- - an error. To debug this try: debugmode(true);
subset(conj, P )
conj
subsetp(conj1 , conj2 )
elementp(x, conj)
devuelve
true
si y slo si
con1 conj2
devuelve
true
si y slo si
x es elemento
del conjunto
member(x, conj)
devuelve
true
del conjunto
freeof(x, conj)
prueba si
conj
si y slo si
x es miembro
conj
conj
freeof(x1 . . . , xn , conj)
Maxima
{1, 2, 3, 4, 5, 7}
( %i1) subset({1,2,3,4,5,7},evenp);
, el subconjunto de todos
166
( %o1) {2, 4}
Maxima
tales que
t < 4.
( %i2) subset({1,2,3,4,5,7},lambda([t],is(t<4)));
( %o2) {1, 2, 3}
Maxima
tales que
mod(t, 3) = 1.
( %i3) subset({1,2,3,4,5,7},
lambda([t],is(mod(t,3)=1)));
( %o3) {1, 4, 7}
Maxima
( %i4) subsetp({1,2},{5,6,7,9,1,2});
( %o4) true
Maxima
pertenece al conjunto
( %i5) elementp(2,{2,4,5,7});
( %o5) true
Maxima
La funcin genrica
member
( %i6) member(2,{2,4,5,7});
( %o6) true
{2, 4, 5, 7}.
167
Maxima
La funcin genrica
f reeof
indica que
{2, 4, 5, 7}.
( %i7) freeof(2,{2,4,5,7});
( %o7) f alse
Maxima
La funcin genrica
f reeof
indica que
( %i8) freeof(6,5,{1,2,3});
( %o8) true
adjoin(x, conj)
Maxima.
devuelve el conjunto
mento
disjoin(x, conj)
devuelve el conjunto
mento
Maxima
en el conjunto
( %i1) adjoin(2,{1,4,7});
( %o1) {1, 2, 4, 7}
Maxima
de
{1, 4, 7}.
( %i2) disjoin(4,{1,4,7});
( %o2) {1, 7}
conj
con el ele-
conj
sin el ele-
insertado
{1, 4, 7}.
168
set_partitions(conj, n)
conj
conj
conj en n conjun-
Maxima
( %i1) flatten({4,{1,3},{4,{7,8}},10});
( %o1) {1, 3, 4, 7, 8, 10}
Maxima
{a, b, c}
{a, b, c};
( %i2) set_partitions({a,b,c});
( %o2) {{{a} , {b} , {c}} , {{a} , {b, c}} , {{a, b} , {c}} ,
{{a, b, c}} , {{a, c} , {b}}}
( %i3) set_partitions({a,b,c},2);
( %o3) {{{a} , {b, c}} , {{a, b} , {c}} , {{a, c} , {b}}}
Maxima.
union(conj1 , . . . , conjn )
169
conj1 , . . . , conjn
intersection(conj1 ,
. . . , conjn )
setdifference(conj1 ,
conj2 )
powerset(conj)
subsetp(conj1 , conj2 )
conj1 , . . . , conjn
conj1 , conj2
devuelve el conjunto potencia de
devuelve
conj1
setequalp(conj1 , conj2 )
true
conj1
symmdifference(conj1 ,
conj2 )
cartesian_product(
conj1 , . . . , conjn )
si y slo si el conjunto
es un subconjunto de
true
devuelve
y
conj2
conj
conj2
conj1 , conj2
conj1 , . . . , conjn
en forma
de listas
disjointp(conj1 , conj2 )
devuelve
conj1
equiv_classes(conj, F )
true
conj2
conj
respec-
to de la relacin de equivalencia
Maxima
B.
Maxima
Esto da la unin de
B.
( %i3) union(A,B);
( %o3) {a, b, c, d, e, f, g}
170
Maxima
Y esto la interseccin.
( %i4) intersection(A,B);
( %o4) {c, d}
Maxima
La diferencia
AB
se calcula as.
( %i5) setdifference(A,B);
( %o5) {a, b}
Maxima
A B
B A
son iguales.
( %i6) symmdifference(A,B);
( %o6) {a, b, e, f, g}
Maxima
A.
( %i7) powerset(A);
( %o7) {{} , {a} , {a, b} , {a, b, c} , {a, b, c, d} , {a, b, d} , {a, c} ,
{a, c, d} , {a, d} , {b} , {b, c} , {b, c, d} , {b, d} , {c} , {c, d} ,
{d}}
Maxima
A B.
( %i8) cartesian_product(A,B);
( %o8) {[a, c] , [a, d] , [a, e] , [a, f ] , [a, g] , [b, c] , [b, d] , [b, e] , [b, f ] ,
[b, g] , [c, c] , [c, d] , [c, e] , [c, f ] , [c, g] , [d, c] , [d, d] , [d, e] ,
[d, f ] , [d, g]}
171
Maxima
no son disjuntos.
( %i9) disjointp(A,B);
( %o9) f alse
Maxima
En este ejemplo, las clases de equivalencia son nmeros que dieren en un mltiplo
de
3.
( %i10) equiv_classes({1,2,3,4,5,6,7},lambda([s,t],
mod(s-t,3)=0));
( %o10) {{1, 4, 7} , {2, 5} , {3, 6}}
devuelve
true
conjunto de
emptyp(conj)
devuelve
si y slo si
Maxima
true
si y slo si
expr
conj
es un
es el
conjunto vaco
cardinality(conj)
map(f, {a1 , . . . , an })
map(f, {a1 , . . . , an } ,
{b1 , . . . , bn } , . . .)
conj
devuelve
{f (a1 ), . . . , f (an )}
devuelve el conjunto
. . . , f (an , bn , . . .)},
{f (a1 , b1 , . . .),
siempre
que
Maxima
( %i1) cardinality({a,b,c,a});
( %o1) 4
los
172
Maxima
map,
se obtiene un resultado
( %i2) map(f,{a,b,c},{x,y,z});
( %o2) {f (a, x), f (b, y), f (c, z)}
Maxima
En este caso primero son ordenados los conjuntos y luego devuelve un resultado
que coincide con el de
( %o37)
( %i3) map(f,{c,a,b},{y,x,z});
( %o3) {f (a, x), f (b, y), f (c, z)}
CAPTULO
14
Grcos
Maxima
Maxima
Maxima
es
plot2d y plot3d2
Maxima
(tngase pre-
draw3 ).
plot2d
plot3d
wxMaxima
wx
plot2d
plot3d,
1 Tanto Gnuplot
2 Con plot2d
plot3d
Openmath sin que sea necesario tener conocimiento alguno de la sintaxis de estos
programas.
3 El
paquete
plot2d
implcitamente.
173
174
wxMaxima ;
sin embargo,
todos estos ejemplos pueden ser ejecutados sin ningn problema con
las funciones estndar de
Maxima.
muestra un grco de
xmin x xmax ,
y = f (x),
con
dependiente
plot2d([f1 , . . . , fn ] ,
[x, xmin , xmax ])
y = f1 (x),
xmin x xmax ,
muestra un grco de
. . . , y = fn (x),
con
muestra un grco de
xmin x xmax ,
y = f (x),
con
en el cuaderno de
trabajo actual
wxplot2d([f1 , . . . , fn ] ,
[x, xmin , xmax ])
y = f1 (x),
xmin x xmax ,
muestra un grco de
. . . , y = fn (x),
con
Maxima
sen(x)
2 .
( %t1)
( %o1)
x.
Para
variando desde
175
Maxima
Puede darse una lista de funciones para que sean trazadas. Por defecto, a cada
funcin se le asigna un color especco.
( %i2) wxplot2d([sin(x),sin(2*x),sin(3*x)],
[x,0,2* %pi]);
( %t2)
( %o2)
Maxima
Jn (x),
con
create_list
variando desde
4.
dichas funciones.
( %i3) wxplot2d(create_list(bessel_j(n,x),n,1,4),
[x,0,10]);
( %t3)
( %o3)
176
14.2 Opciones
Hay muchas opciones para escoger en el trazado de grcos. La mayora de las veces, la aplicacin grca invocada por
Maxima
proba-
Opcin
y
nticks
Descripcin
no presenta
29
adapt_depth
10
xlabel
ylabel
nombre
de
la
funcin , dada
Opcin
logx
177
Descripcin
no presenta
logy
no presenta
legend
nombre
de
la
funcin , dada
style
lines,1,1
gnuplot_
preamble
introduce
instrucciones
de
plot_format
gnuplot
gnuplot_term
default
dumb, png,
jpg, eps, pdf, gif, svg, etc. (eslores posibles son:
plot2d, y no
wxplot2d)
plot_realpart vale true,
utilizarse con
con
plot_realpart
false
si
run_viewer
true
178
Maxima
He aqu un grco para el cual todas las opciones tienen asignados sus valores por
defecto.
( %i1) wxplot2d(sin(x^2),[x,0,3]);
( %t1)
( %o1)
Maxima
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.
La instruccin
cin
( %i2) wxplot2d(sin(x^2),[x,0,3],[gnuplot_preamble,
set size ratio 1; set grid]);
( %t2)
( %o2)
179
Maxima
( %i3) wxplot2d(sin(x^2),[x,0,3],[style,[points,3,2,7]],
[ylabel,y]);
( %t3)
( %o3)
Maxima
Las expresiones que se dan como etiquetas puede ser cualquier porcin de texto,
pero sta debe ponerse entre comillas.
( %i4) wxplot2d(sin(x^2),[x,0,3],
[xlabel,Porcin de texto para x],
[ylabel,Porcin de texto para y]);
( %t4)
( %o4)
180
Maxima
Es posible trazar funciones que tienen singularidades. Para este efecto resulta
bastante til la opcin
( %i5) wxplot2d(tan(x),[x,-3,3],[y,-10,10]);
plot2d: some values were clipped.
( %t5)
( %o5)
plot2d([ discrete,
[[x1 , y1 ] , . . . , [xn , yn ]] ] ,
[style, points])
plot2d([ discrete,
[x1 , . . . , xn ] , [y1 , . . . , yn ] ] ,
[style, points])
plot2d([ discrete,
[[x1 , y1 ] , . . . , [xn , yn ]] ] ,
[style, lines])
(x1 , y1 ), . . . (xn , yn )
(x1 , y1 ), . . . (xn , yn )
(x1 , y1 ), . . . (xn , yn )
plot2d([ discrete,
[x1 , . . . , xn ] , [y1 , . . . , yn ] ] ,
[style, lines])
plot2d([ discrete,
[[x1 , y1 ] , . . . , [xn , yn ]] ] )
plot2d([ discrete,
[x1 , . . . , xn ] , [y1 , . . . , yn ] ]
)
181
(x1 , y1 ), . . . (xn , yn )
(x1 , y1 ), . . . (xn , yn )
(x1 , y1 ), . . . (xn , yn )
Maxima
( %i1) pts:create_list([i,sin(i)],i,0,5);
( %o1) [[0, 0] , [1, sin(1)] , [2, sin(2)] , [3, sin(3)] , [4, sin(4)] ,
[5, sin(5)]]
( %i2) wxplot2d([discrete,pts],[style,points]);
( %t2)
( %o2)
Cabe destacar que los estilos
points
lines
tambin aceptan
opciones. stas deben ingresarse como una secuencia de tres nmeros enteros positivos de la forma
points),
[points n1 , n2 , n3 ]
(en el caso de
[lines n1 , n2 ]
lines). En ambos casos el primer valor, n1 , correspon-
(en el caso de
n2 ,
al color (1
negro, 6 celeste ).
Finalmente para
182
Maxima
( %i3) wxplot2d([discrete,pts],[style,[points,3,2,5]]);
( %t3)
( %o3)
Maxima
%o9
( %i4) wxplot2d([discrete,pts],[style,lines]);
( %t4)
( %o4)
183
plot2d(f (t),
[t, tmin , tmax ] ,
[gnuplot_preamble,
set polar])
plot2d([f (t), g(t), . . .]
[t, tmin , tmax ] ,
[gnuplot_preamble,
set polar])
Maxima
t (cos(t), sen(t))
para
t [0, 2].
( %t1)
( %o1)
184
Maxima
( %t1)
( %i2) wxplot2d(
[parametric,cos(t),sin(t),[t,0,2* % pi]],
[gnuplot_preamble,set size ratio 1],
[nticks,100]
);
( %t2)
( %o2)
Maxima
= sen(2t).
( %t3)
( %o3)
185
Maxima
( %i1) pts:create_list([i,sin(i)] , i, 0, 5) $
( %i2) wxplot2d([
[parametric,cos(t),sin(t)],[t,0,2* %pi]
sin(x^2),
[discrete,pts]]
[x,-2,6],[y,-2,6],
[style,lines,lines,points]
[gnuplot_preamble,set size ratio 1]);
plot2d:
expression
evaluates
to
non-numeric
value
( %t2)
( %o2)
resultante ser mostrado en el cuaderno de trabajo actual; no obstante, se pierde la interaccin en tiempo real con el grco. Esto no
sucede si se utiliza la funcin
plot3d,
186
hacer clic sobre la gura y, sin soltar el botn del mouse, arrastrarlo
para que la supercie gire en tiempo real.
wxplot3d(f,
[x, xmin , xmax ] ,
[y, ymin , ymax ])
muestra un grco de
xmin x xmax
Al igual que
plot2d (wxplot2d),
la funcin
plot3d (wxplot3d)
tambin incluye una serie de opciones para obtener los mejores dibujos
posibles.
Maxima
f (x, y) = sen(xy).
( %i1) wxplot3d(sin(x*y),[x,0,3],[y,0,3]);
( %t1)
( %o1)
187
Opcin
Descripcin
grid
30, 30
transform_xy
false
gnuplot_term
gnuplot_
preamble
plot_format
default
similar a
plot2d
plot2d
similar a
plot2d
similar a
gnuplot
(pg. 177)
(pg. 177)
(pg. 177)
Maxima
f (x, y) = sen(xy)
( %i2) plot3d(sin(x*y),[x,0,3],[y,0,3],
[plot_format,openmath]);
( %o2)
Figura 14.1:
( %i2)
openmath.
188
Maxima
r033 cos( th
)
3
en
coordenadas cilndricas. En este caso se ha realizado una transformacin de coordenadas. El usuario puede denir sus propias transformaciones usando la funcin
( %i3) wxplot3d(r^.33*cos(th/3),
[r,0,1],[th,0,6* %pi],
[grid,12,80],
[transform_xy,polar_to_xy]);
( %t3)
( %o3)
plot3d (wxplot3d)
R3 .
traza el grco de una supercie paramtrica en una ventana independiente, siendo posible la interaccin en
tiempo real con dicho grco
189
Maxima
.
2
( %i4) wxplot3d([cos(u)*cos(v),sin(u)*cos(v),sin(v)],
[u,0,2* %pi],[v,- %pi/2, %pi/2]);
( %t4)
( %o4)
Maxima
%o21.
( %i5) wxplot3d([cos(u)*cos(v),sin(u)*cos(v),sin(v)],
[u,0,2* %pi],[v,- %pi/2, %pi/2],
[gnuplot_preamble,set size ratio 1]);
( %t5)
( %o5)
190
traza
un
igualmente espaciados.
grco
de
densidad
de
dibuja
las
curvas
de
nivel
f (x, y)
en
el
rectngulo
[xmin , xmax ] [ymin , ymax ] (cualesde
plot3d)
Grficos de contornos.
Maxima
f (x, y) = sen(xy)
( %i1) wxplot3d(sin(x*y),[x,0,3],[y,0,3],
[gnuplot_preamble,set pm3d map]);
( %t1)
( %o1)
en el rectngulo
191
Maxima
f (x, y) = x2 + y 2 1.
( %i2) contour_plot(x^2+y^2-1,[x,-1,1],[y,-1,1]);
( %t2)
( %o2)
wxMaxima.
with_slider4
con la cual se genera un grco idntico al que se genera con wxplot2d,
torno de
sin embargo dicho grco puede ser animado selecionndolo y pulsando luego el botn
Comenzar animacin,
de la barra de herramientas.
Figura 14.2:
with_slider
funcin
wxplot2d
para
animar
grcos
de
4 Es
with_slider_draw y with_slider_draw3d
draw3d del paquete draw.
draw
192
Maxima
Esto genera un grco listo para ser animado. Para conseguir la animacin primero
se selecciona el grco y luego se pulsa el botn
, del
el grco.
( %i1) with_slider(a,[0,1,2,3,4,5],sin(x+a),
[x,-2* %pi,2* %pi],[y,-1.5,1.5],[color,red]);
( %t1)
( %o1)
Maxima
( %i2) with_slider(f,[x,x^2,x^3,x^4],f,[x,-2,2]);
( %t2)
( %o2)
193
Maxima
( %i3) with_slider(a,[0,1,2,3,4,5],
[parametric,sin(t),sin(2*(t+a)),[t,0,2* %pi]],
[x,-1.5,1.5],[y,-1.5,1.5],[color,red],
[nticks,50]);
( %t3)
( %o3)
CAPTULO
wxMaxima
15
wxMaxima
Maxima.
caractersticas de
En este captulo repasaremos las principales opciones de los menes incorporados en la barra de menes de
wxMaxima.
Abrir
Archivo
dada,
Guardar
Guardar como
Cargar paquete
cin,
Figura 15.1:
Figura 15.2:
Exportar
Archivo
195
Eleccin de la opcin
Archivo.
Cargar paquete.
18),
Imprimir
Salir
Abrir . En
1 El
autor
de
ste
paquete
es
Ziga
Lenarcic
table.lisp.1
puede
descargarse
des-
http://sourceforge.net/apps/phpbb/maxima/viewtopic.php?f=3&t=5&sid=
716969b0736cc8416d959fdc5aded01e
de:
196
Figura 15.3:
Maxima
Abrir .
table.lisp
( %i1) load(D:/maximapackages/table.lisp)$
Maxima
variando de
y un incremento de
.
4
Maxima
( %i3) table(i^2,[i,5]);
( %o3) [1, 4, 9, 16, 25]
1.
Editar
197
Editar
Deshacer
Cortar
Copiar
AT X,
junto de celdas) como cdigo L
E
Pegar
actual,
Buscar
Seleccionar todo
Ampliar
actual,
Disminuir
derno actual,
Establecer aumento
Pantalla completa
Preferencias
198
Figura 15.4:
Editar.
(%i1) load("D:/maximapackages/table.lisp")$
(%i2) table(sin(t),[t,0,2*%pi,%pi/4]);
( %o2)
1
1
1
1
[0, , 1, , 0, , 1, , 0]
2
2
2
2
(%i3) table(i^2,[i,5]);
( %o3)
Figura 15.5:
Figura 15.6:
199
Figura 15.7:
Editar
Editar.
del
Guardar selec-
200
Editar
Evaluar celdas
tual,
actual,
actual,
Autocompletar
Mostrar plantilla
actual,
Insertar imagen
Instruccin anterior
Figura 15.8:
Celda
201
Figura 15.9:
Siguiente instruccin
Activando la opcin
Celda.
Autocompletar.
cos(x) dx
y no se recuerda el
Autocompletar
int, entonces
202
Figura 15.10:
int.
Figura 15.11:
int.
Figura 15.12:
Maxima
203
Paneles
Maxima
Interrumpir
Reiniciar Maxima
Limpiar memoria
Reinicia
Maxima
sin salir de
wxMaxima
riables,
Aadir ruta
la funciones
load, demo
Mostrar funciones
y algunas otras,
Mostrar denicin
especca,
Mostrar variables
usuario ha creado,
Borrar funcin
Borrar variable
Cambiar pantalla 2D
204
Figura 15.13:
Figura 15.14:
Maxima.
Matemticas generales
elegi-
15.14 y 15.15)
Ecuaciones
Resolver
Resolver (to_poly)
2 Eso
de Maxima.
Figura 15.15:
Calcular raz
Ecuaciones
205
Races de un polinomio
lineales,
ciones algebraicas,
Eliminar variable
Resolver EDO
206
Figura 15.16:
Figura 15.17:
Uso de la opcin
la ecuacin diferencial
Problema de contorno
Ecuaciones.
y0 = y.
Condicin inicial
y0 = y,
y(0) = 1;
Maxima
Resultados obtenidos al seguir los procesos indicados en las guras 15.17 y 15.18.
( %i1) ode2('diff(y,x)=y,y,x);
( %o1) y = %c %ex
Figura 15.18:
Uso de la opcin
lgebra
207
y(0) = 1
a la ecuacin
lgebra
Generar matriz
Introducir matriz
i, j ,
Invertir matriz
mente denida,
Polinomio caracterstico
Determinante
Valores propios
Vectores propios
Matriz adjunta
208
Figura 15.19:
Trasponer matriz
Construir lista
lgebra.
Aplicar a lista
Maxima
( %i1) lambda([i,j],1/(i+j-1))$
Maxima
Generar matriz
1 12 13
( %o2) 12 31 14
1
3
1
4
1
5
lgebra
209
Figura 15.20:
Ge-
Figura 15.21:
Ge-
Figura 15.22:
narar matriz.
troducir matriz.
In-
Maxima
( %i3) B:genmatrix(lambda([i,j],1/(i+j-1)),3,3);
1 12 13
( %o3) 12 13 14
1
3
1
4
1
5
210
Figura 15.23:
Figura 15.24:
Maxima
Eligiendo la opcin
Introducir matriz
denir una matriz (15.22) es posible introducir, en tiempo real, cada uno de los
elementos de dicha matriz (15.23).
( %i4) C: matrix(
[-1,5,2],
[1,0,4],
[-2,-3,1]
);
1 5 2
0 4
( %o4) 1
2 3 1
Anlisis
211
Maxima
Si se quiere aplicar una funcin a cada uno de los elementos de la matriz actual, por
ejemplo la matriz
C,
x5 + 1 x2 + 1
x +1
2
x4 + 1
( %o5) x + 1
1
1
x+1
x2 + 1
x3 + 1
Anlisis
Integrar
expresin,
Integracin Risch
Cambiar variable
Derivar
Calcular lmite
n-sima
de una expresin,
Calcular mnimo
Calcular serie
Taylor,
Aproximacin de Pad
Calcular suma
212
Calcular producto
Transformada de Laplace
mios dados,
mios dados,
Dividir polinomios
Figura 15.25:
Maxima
( %i1) 'integrate(sin(x)^2*cos(x),x);
Z
( %o1) cos (x) sin (x)2 dx
Anlisis.
Anlisis
Figura 15.26:
Figura 15.27:
213
Cambiar variable.
Calcular suma.
Maxima
Cambiar variable
resultado:
Maxima
tado:
( %i3) sum(1/k^2,k,1,inf),simpsum;
( %o3)
2
6
214
Simplificar
Simplicar expresin
Simplicar radicales
Factorizar expresin
contener cualquier nmero de variables o funciones, en factores irreducibles respecto de los enteros,
Factorizar complejo
a + ib
donde
Expandir expresin
Expandir logaritmos
Activa el valor
Contraer logaritmos
logexpand,
super
de la variable opcional
tual logartmica,
Factoriales y gamma
Permite mostrar u ocultar paneles para Convertir a factoriales, Convertir a gamma, Simplicar factoriales
y Combinar factoriales,
Simplicacin trigonomtrica
para
Simplicacin compleja
Convertir a forma cartesiana, Convertir a forma polar, Calcular parte real, Calcular parte imaginaria, Demoivre y Exponencializar,
Sustituir
Figura 15.28:
Simplificar
215
Simplificar.
Conmutar lgebra
opcional
Maxima
Maxima
Usando la opcin
( %i1) tellrat(a+1/a=sqrt(3));
( %o1) [a2 3 a + 1]
216
Figura 15.29:
Maxima
Ahora, es preciso incluir la siguiente sentencia para poder arribar al resultado que
se desea mostrar.
( %i2) algebraic:true;
( %o2) true
Maxima
1
a4
a+
1 2
a
2
1
. Tngase presente que
a4
2
= ( 3 2)2 2 = 1.
a4 +
a+
1
a
( %i3) ratsimp(a^4+1/a^4);
( %o3) 1
Grficos
Grcos 2D
Grcos 3D
Formato de grcos
Figura 15.30:
Figura 15.31:
Grficos
217
Grficos.
Grficos.
Maxima
( %i1) wxplot2d([x*sin(x)],[x,-5,5])$
( %t1)
x x sen(x).
218
Figura 15.32:
openmath.
Maxima
Si se elije el formato
openmath
x x sen(x)
openmath
Fig. 15.33).
( %i2) wxplot2d([x*sin(x)],[x,-5,5])$
Figura 15.33:
( %i2)
(ver
Numrico
219
Numrico
Activa la variable
resultado numricos,
A real
Establecer precisin
Figura 15.34:
Numrico.
Maxima
( %i1) sqrt(2)+sqrt(3);
( %o1) 3 + 2
Maxima
220
Maxima
( %i3) sqrt(2)+sqrt(3);
( %o3) 3.146264369941973
Figura 15.35:
Ayuda.
Ayuda
Ayuda de Maxima
Maxima
que
Ejemplo
ma,
A propsito
Muestra funciones de
Mostrar sugerencias
wxMaxima,
Tutoriales
Maxima
Informacin de compilacin
wxMaxima,
Maxi-
Maxima
que se
Informar de error
Ayuda
221
Maxima
y de
Lisp
Maxima,
Comprueba actualizaciones
wxMaxima,
Acerca de...
CAPTULO
16
El paquete
draw
la me-
load(draw) $
draw(gr2d, . . . ,
gr3d, . . . , opciones)
draw
gr2d
y/o
gr3d,
draw2d(opciones,
objeto_grco, . . .)
draw3d(opciones,
objeto_grco, . . .)
esta
funcin
es
un
atajo
para
esta
funcin
es
un
atajo
para
draw(gr2d(opciones, objeto_grco,
. . .))
draw(gr3d(opciones, objeto_grco,
. . .))
222
223
puntos bidimensionales
puntos bidimensionales
puntos bidimensionales
xi ,
polygon([[x1 , y1 ], [x2 , y2 ],
. . .])
polygon([x1 , x2 , . . .],
[y1 , y2 , . . .])
rectangle([x1 , y1 ],
[x2 , y2 ])
quadrilateral([x1 , y1 ],
[x2 , y2 ], [x3 , y3 ], [x4 , y4 ])
triangle([x1 , y1 ],
[x2 , y2 ], [x3 , y3 ])
image(im, x0 , y0 , width,
height)
vector([p1 , p2 ], [v1 , v2 ])
label([cadena, x, y], . . .)
equivale a
de alturas
hi
wi
y anchos
polgono
polgono
rectngulo
(x1 , y1 )
de
vrtices
opuestos
(x2 , y2 )
cuadriltero
tringulo
imagen
im
en la regin rectangular
(x0 , y0 )
width, y0 + height)
desde el vrtice
hasta
(x0 +
vector
ellipse(xc , yc , a, b,
ang1 , ang2 )
(xc , yc ) con
a y b,
comenzando
en
el
224
draw
funcin explcita
ma valores desde
a ser represen-
tada en el rectngulo
[xmin , xmax ]
expresin implcita
[ymin , ymax ]
curva paramtrica bidimensional, cu-
t
tmax
yo parmetro
tmin
polar(r(), ,
min , max )
region(expr, x, xmin ,
xmax , y, ymin , ymax )
hasta
funcin polar
valores desde
r cuya variable
min hasta max
toma
Las funciones
draw, draw2d
Gnuplot,
draw3d
wxdraw, wxdraw2d
wxMaxima
wxdraw3d
wxdraw, wxdraw2d
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) p:create_list([random(20),random(50)],k,1,10);
( %o1) [[9, 9], [3, 39], [6, 26], [16, 3], [0, 21], [12, 9], [9, 18], [6, 45],
[13, 43], [7, 28]]
225
Maxima
points
a la variable
p,
draw2d.
( %t2)
( %o2)
Maxima
Con
gr2d
draw
draw2d.
( %t3)
( %o3)
draw no cuenta con una funcin especca, como line, para denir
true a la opcin
points_joined para unir los puntos dados mediante segmentos.
el objeto grco lnea; simplemente se asigna el valor
226
draw
Maxima
( %i4) wxdraw2d(
points_joined=true,
points( p ) );
( %t4)
( %o4)
Maxima
( %i5) wxdraw2d(
bars([0.8,5,0.4],[1.8,7,0.4],[2.8,-4,0.4])
);
( %t5)
( %o5)
Maxima
( %i6) wxdraw2d(
polygon([
[1/2,sqrt(3)/2],[-1/2,sqrt(3)/2],[-1,0],
[-1/2,-sqrt(3)/2],[1/2,-sqrt(3)/2],[1,0]
])
);
( %t6)
( %o6)
Maxima
( %i7) wxdraw2d(
rectangle([0,0],[1,2])
);
( %t7)
( %o7)
227
228
draw
Maxima
( %i8) wxdraw2d(
quadrilateral([1,1],[2,2],[3,-1],[2,-2])
);
( %t8)
( %o8)
Maxima
( %i9) wxdraw2d(
triangle([1,1],[2,2],[3,-1])
);
( %t9)
( %o9)
229
Maxima
( %i10) im:apply(matrix,
makelist(makelist(random(200),i,1,30),i,1,30))$
( %i11) wxdraw2d(
image(im,0,0,30,30)
);
( %t11)
( %o11)
Maxima
( %i12) wxdraw2d(
vector([0,0],[10,10])
);
( %t12)
( %o12)
(10, 10),
230
draw
Maxima
label.
(0, 0 3).
( %i13) wxdraw2d(
label([Etiqueta,0,0.3])
);
( %t13)
( %o13)
Maxima
1,
( %o14)
su semieje vertical es
( %i14) wxdraw2d(
ellipse(0,0,1,2,0,360)
);
( %t14)
360 ,
2.
cuyo centro es el
231
Maxima
x x2 ,
con
1 x 1.
( %i15) wxdraw2d(
explicit(x^2,x,-1,1)
);
( %t15)
( %o15)
Maxima
x3 + y 3 3xy = 0
en el rectngulo
[1, 2].
( %i16) wxdraw2d(
implicit(x^3+y^3-3*x*y=0,x,-1,2,y,-1,2)
);
( %t16)
( %o16)
[1, 2]
232
draw
Maxima
t (sin(t), sin(2t)),
con
0 t 2 .
( %i17) wxdraw2d(
parametric(sin(t),sin(2*t),t,0,2* %pi)
);
( %t17)
( %o17)
Maxima
t sen(t),
tal que
0 t 2 .
( %i18) wxdraw2d(
polar(sin(2*t),t,0,2* %pi)
);
( %t18)
( %o18)
233
Maxima
1
2
1 x 1, 1 y 1
< x2 + y 2 < 1.
( %i19) wxdraw2d(
region(1/2<x^2+y^2 and x^2+y^2<1,
x,-1,1,y,-1,1)
);
( %t19)
( %o19)
Maxima
( %i20) wxdraw2d(
parametric(t,t^2-1/2,t,-1,1),
polar(sin(2*t),t,0,2* %pi)
);
( %t20)
( %o20)
draw2d.
que
234
draw
Opcin
Descripcin
point_size
point_type
points_joined
false
Opcin
Descripcin
fill_color
red
fill_density
del polgono
especica
la
transparencia
1,
incluidos)
235
Opcin
Descripcin
nticks
29
border
true
transparent
false
fill_color
red
Opcin
Descripcin
palette
[7, 5, 15]
36
+36
Opcin
Descripcin
head_both
false
head_length
head_angle
45
head_type
filled
unit_vectors
false
236
draw
Opcin
Descripcin
label_
alignment
label_
orientation
center
horizontal
Opcin
Descripcin
nticks
29
adapt_depth
10
Opcin
Descripcin
filled_func
false
fill_color
red
Opcin
Descripcin
ip_grid
[50, 50]
ip_grid_in
[5, 5]
237
Opcin
Descripcin
nticks
29
Opcin
Descripcin
fill_color
red
x_voxel
10
del polgono
es el nmero de particiones
en la direccin
a utilizar
y_voxel
10
es el nmero de particiones
en la direccin
a utilizar
line_width
line_type
que, por
point
label.
238
draw
Opcin
Descripcin
color
black
line_width
line_type
solid
key
solid
dots)
Opcin
Descripcin
proportional_
axes
none
sus
longi-
xrange
auto
none
auto
auto
(valores posibles:
auto
false
[xmin , xmax ])
valo para
logx
xy)
yrange
(valores posibles:
[ymin , ymax ])
239
Opcin
Descripcin
logy
false
terminal
screen
selecciona
el
por
utilizar
(valores
terminal
Gnuplot
posibles
son:
maxima_out
png,
jpg, eps, eps_color, pdf,
pdfcairo, etc. guardarn el
en el que los terminales
grco
font
font_size
12
grid
false
title
xlabel
xy
ylabel
xtics
auto
auto, none,
[inicio, inc, f in], {n1 , n2 , . . .}
y tambin {[label1, n1 ],
[label1, n1 ], . . .})
(valores posibles:
240
draw
Opcin
Descripcin
xtics_axis
false
x, o se colocan a lo
ytics
auto
similar que
eje
ytics_axis
false
similar que
con el eje
pero
xaxis
false
xaxis_width
xaxis_type
dots
el eje
solid
(valores admisibles:
dots)
xaxis_color
yaxis
black
false
yaxis_width
yaxis_type
dots
similar que
black
xffffff
xaxis_type
pero
delay
con el eje
yaxis_color
file_bgcolor
gif
rgb )
png, jpg
gif
ani-
cm )
del
mados
eps_width
12
los
terminales
eps_color
eps_height
12
eps
cm ) del ar-
241
Opcin
Descripcin
pdf_width
21 0
cm )
pdfcairo
pdf_height
29 7
cm ) del
documento PDF
pic_width
640
especica la anchura del chero de imagen de bits generado por los terminales
jpg
pic_height
640
user_preamble
png y
Gnuplot
Aqu se usa
user_preamble
xy
a la opcin
proportional_axes.
( %i1) wxdraw2d(
parametric(cos(t),sin(t),t,0,2* %pi),
user_preamble=set size ratio 1
);
( %t1)
( %o1)
242
draw
Maxima
y = x2
y = 1 x2 .
( %i2) wxdraw2d(
fill_color=yellow,
region(x^2<y and y<1-x^2,x,-1,1,y,0,1),
line_width=3,
key=1-x^2,
explicit(1-x^2,x,-sqrt(2)/2,sqrt(2)/2),
key=x^2,
color=red,
explicit(x^2,x,-sqrt(2)/2,sqrt(2)/2)
);
( %t2)
( %o2)
Maxima
x2 + y 2 = 1
y 2x2 +
3
2
= 0.
( %i3) sol:solve([x^2+y^2=1,y-2*x^2+3/2=0],[x,y]);
5+5
5+5
51
51
( %o3) x =
,y = 4
, x=
,y = 4
,
3
3
22
22
5 5
5 5
5+1
5+1
x=
,y = 4
, x=
,y = 4
3
3
22
22
243
Maxima
Esto almacena las coordenadas de los puntos de interseccin, previamente calculados, en la variable
pts.
( %i4) pts:map(lambda([h],subst(h,[x,y])),sol);
5+5
5+5
5 5
51
51
5+1
( %o4)
, 4
,
, 4
,
, 4
,
3
3
3
22
22
2 2
5 5
, 5+1
3
4
22
Maxima
x2 + y 2 = 1
y 2x2 +
3
2
( %i5) wxdraw2d(
line_width=2,
color=blue,
implicit(x^2+y^2=1,x,-1.5,1.5,y,-1.5,1.5),
color=red,
implicit(y-2*x^2+3/2=0,x,-1.5,1.5,
y,-1.5,1.5)
color=black
point_size=1.5,
point_type=7,
points(pts),
);
( %t5)
( %o5)
=0
244
draw
Maxima
a.
( %i6) a(t):=[t,sin(t)] $
Maxima
a.
Maxima
t0 ,
y la lista
de
t0.
Maxima
a,
un conjunto de vectores
( %i11) objetos: [
color=red,
apply( parametric,append(a(t),[t,0,2* %pi]) ),
color=blue,head_length=0.2,
head_angle=10,
unit_vectors=true,T,
color=green,
point_type=7,points(P),
proportional_axes=xy,
title=Campo vectorial tangente
]$
245
Maxima
( %i12) wxdraw2d(objetos);
( %t12)
( %o12)
Maxima
a.
( %i13) J(v):=[-last(v),first(v)] $
( %i14) N:create_list( vector(a(i),J(a0 (i))),i,t0 ) $
Maxima
a,
un conjunto de vectores
( %i15) objetos: [
color=red,
apply(parametric,append(a(t),[t,0,2* %pi])),
head_length=0.2,head_angle=10,
unit_vectors=true,
color=blue,T, color=yellow,N,
color=green,point_type=7,points(P),
proportional_axes=xy,
title=Campos vectoriales tangente y normal
]$
246
draw
Maxima
( %i16) wxdraw2d(objetos);
( %t16)
( %o16)
Maxima
( %i17) wxdraw2d(color=blue,nticks=100,
polar(sin(2*t),t,0,2* %pi)) $
( %t17)
puntos tridimensionales
points([x1 , x2 , . . .],
[y1 , y2 , . . .], [z1 , z2 , . . .])
points(matrix(
[x1 , y1 , z1 ], [x2 , y2 , z2 ],
. . .)
vector([p1 , p2 , p3 ],
[v1 , v2 , v3 ])
label([cadena, x, y, z],
. . .)
explicit(f (x, y),
x, xmin , xmax ,
y, ymin , ymax )
implicit(E(x, y, z),
x, xmin , xmax ,
y, ymin , ymax )
z, zmin , zmax )
parametric(fx , fy , fz
t, tmin , tmax )
247
puntos tridimensionales
puntos tridimensionales
vector
cin
funcin explcita
tisfacen
y ymax
expresin implcita
a ser representa-
[xmin , xmax ]
[ymin , ymax ] [zmin , zmax ]
da en el paraleleppedo
satisface
tmin t
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)
u umax
funcin cilndrica
tisfacen
max
r cuyas variables samin max y min
funcin esfrica
tisfacen
max
dene un grco tridimensional de la
matriz
tube(fx , fy , fz ,
fr , t, tmin , tmax )
umin
vmin v vmax
fr
248
draw
Maxima
( %i1) p:create_list(map(random,[20,50,30]),k,1,10) $
( %i2) wxdraw3d(
points( p )
);
( %t2)
( %o2)
Maxima
Asignando el valor
true
a la opcin
plot_joined
p.
( %i3) wxdraw3d(
points_joined=true,
points( p )
);
( %t3)
( %o3)
249
Maxima
Aqu se muestra la grca del vector cuyo punto de aplicacin es el origen y cuya
parte vectorial es
(1, 1, 1).
( %i4) wxdraw3d(
vector([0,0,0],[1,1,1])
);
( %t4)
( %o4)
Maxima
(0, 0, 1).
( %i5) wxdraw3d(
label([Etiqueta,0,0,1])
);
( %t5)
( %o5)
250
draw
Maxima
con
0 x 2
0 y 2 .
( %i6) wxdraw3d(
explicit(sin(x)+sin(x*y),x,0,2* %pi,y,0,2* %pi)
);
( %t6)
( %o6)
Maxima
p
x2 + y 2 4)2 + z 2 = 4,
con
6 x 6, 6 y 6
2 z 2.
( %i7) wxdraw3d(
implicit((sqrt(x^2+y^2)-4)^2+z^2=4,x,-6,6,
y,-6,6,z,-2,2) );
( %t7)
( %o7)
251
Maxima
t (cos t, sen t, 8t ),
con
0 t 4 .
( %i8) wxdraw3d(
parametric(cos(t),sin(t),t/8,t,0,4* %pi)
);
( %t8)
( %o8)
Maxima
Aqu
se
muestra
la
grca
de
la
con
supercie
denida
0 u 2
( %i9) wxdraw3d(
parametric_surface((2+cos(v))*cos(u),
(2+cos(v))*sin(u),sin(v),
u,0,2* %pi,v,0,2* %pi) );
( %t9)
( %o9)
252
draw
Maxima
(z, t) cos z ,
con
2 z 2
0 t 2 .
( %i10) wxdraw3d(
cylindrical(cos(z),z,-2,2,t,0,2* %pi)
);
( %t10)
( %o10)
Maxima
(a, t) 1,
con
0 a 2
0 t .
( %i11) wxdraw3d(
spherical(1,a,0,2* %pi,t,0, %pi)
);
( %t11)
( %o11)
253
Maxima
mesh.
( %i12) m:apply(matrix,create_list(create_list(k^2+i^2,
k,-5,5),i,-5,5)) $
( %i13) wxdraw3d(
mesh(m,0,0,-5,5)
);
( %t13)
( %o13)
Maxima
t (cos t, t, 0),
con
cos
t 2
, generada por la
10
0 t 4 .
( %i14) wxdraw3d(
tube(cos(t),t,0,cos(t/10)^2,t,0,4* %pi)
);
( %t14)
( %o14)
254
draw
Opcin
Descripcin
xu_grid
30
yv_grid
30
Opcin
Descripcin
x_voxel
10
a utilizar por el
algoritmo implementado
y_voxel
10
a utilizar por el
algoritmo implementado
z_voxel
10
a utilizar por el
algoritmo implementado
255
Opcin
Descripcin
nticks
29
Opcin
Descripcin
xyplane
false
coloca el plano
xy
en escenas
false, el plano xy
se colo-
ese nivel)
rot_vertical
60
x)
para situar
[0, 180])
256
Opcin
rot_horizontal 30
draw
Descripcin
indica el ngulo (en grados)
de la rotacin horizontal (al-
z)
para si-
axis_3d
true
[0, 360])
x, y
z, tra-
palette
color
36
go
desde
da
valor
ra
seleccionar
es
+36;
ca-
ndice
pa-
un
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
vale
true,
los
Gnuplot.
presin
cepto en
pm3d
de
Si se da una ex-
257
Opcin
Descripcin
surface_hide
false
contour
none
posibles:
surface, both
contour_levels 5
none, base,
map)
( %i1) wxdraw2d(
enhanced3d=true,
point_type=7,point_size=2,
points( p )
);
( %t1)
( %o1)
( %i30)
draw3d. El resul-
258
draw
Maxima
Esto dene una curva, algunos puntos sobre sta y algunos vectores tangentes a
la misma.
( %i2)
( %i3)
( %i4)
( %i5)
( %i6)
a(t):=[cos(t),sin(t),t/8] $
define( a0 (t),diff(a(t),t) ) $
t0:create_list(i* %pi/4,i,0,16) $
T:create_list( vector(a(i),a0 (i)),i,t0 ) $
P:map(a,t0) $
Maxima
( %i7) objetos: [
nticks=100,color=red,
apply(parametric, append(a(t),[t,0,4* %pi]) ),
color=blue,unit_vectors=true,T,
color=green,point_type=7,points(P),
user_preamble=set size ratio 1,
title=Campo vectorial tangente
xyplane=0,axis_3d=false,
xtics=false,ytics=false,ztics=false,
xaxis=true,yaxis=true,zaxis=true,
xlabel=x,ylabel=y,zlabel=z
]) $
( %i8) wxdraw3d(objetos);
( %t8)
( %o8)
259
Maxima
Esta es la grca de
( %t35)
( %i9) wxdraw3d(
xu_grid=150, yv_grid=150,
enhanced3d=cos(x*y),
explicit(sin(x)+sin(x*y),x,0,2* %pi,y,0,2* %pi)
);
( %t9)
( %o9)
Maxima
Esta es la grca de
( %t35)
( %i10) wxdraw3d(
xu_grid=150,yv_grid=150,
palette=[6,5,15],enhanced3d=sin(x*y),
explicit(sin(x)+sin(x*y),x,0,2* %pi,y,0,2* %pi)
);
( %t10)
( %o10)
260
draw
Maxima
( %t36)
( %i11) wxdraw3d(
x_voxel=17,y_voxel=17,
z_voxel=15,
palette=[12,5,27],
enhanced3d=true,
implicit((sqrt(x^2+y^2)-4)^2+z^2=4,x,-6,6,
y,-6,6,z,-2,2)
);
( %t11)
( %o11)
draw
set_draw_defaults(
opcin grca,...,
opcin grca,...)
ja los valores para las opciones grcas del usuario (llamando a la funcin
sin argumentos se borran las opciones
jadas por el usuario)
261
Maxima
( %i1) set_draw_defaults(
surface_hide=true,
color=blue,
grid=true,
line_width=2
);
Maxima
( %i2) wxdraw2d(
explicit(x^2,x,-2,2)
);
( %t2)
( %o2)
Descripcin
columns
262
draw
Maxima
Maxima
Con
draw
( %i3) wxdraw(f1,f2) $
( %t3)
( %o3)
Maxima
Con la opcin
columns
( %i4) wxdraw(f1,f2,columns=2) $
( %t4)
( %o4)
263
Maxima
( %i51)
( %i5) set_draw_defaults() $
Maxima
El aspecto de las grcas luce ahora diferente, pues se han restituido los valores
por defecto de las opciones.
( %i6) wxdraw(f1,f2,columns=2) $
( %t6)
( %o6)
wxMaxima.
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.
las funciones
Figura 16.1:
264
draw
with_slider_draw
funcin
para
animar
grcos
de
with_slider_draw3d
funcin
para
animar
grcos
de
wxdraw2d
wxdraw3d
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
el grco.
( %i1) with_slider_draw(
a,[0,1,2,3,4,5],
color=red,line_width=2,yrange=[-1.5,1.5],
explicit(sin(x+a),x,-2* %pi,2* %pi)
);
( %t1)
( %o1)
Maxima
( %i2) infix(/*) $
( %i3) /*(a,b):=[a[2]*b[3]-b[2]*a[3],
b[1]*a[3]-a[1]*b[3],a[1]*b[2]-b[1]*a[2]] $
265
Maxima
a,
( %i4) a(t):=[cos(t),sin(t),t/8] $
( %i5) define( a0 (t),diff(a(t),t) ) $
( %i6) define( a00 (t),diff(a(t),t,2) ) $
Maxima
a.
( %i7) with_slider_draw3d(
t,create_list(i* %pi/4,i,0,16),
color=dark-red,nticks=50,
parametric(cos(u),sin(u),u/8,u,0,4* %pi),
unit_vectors=true,
color=blue,
vector(a(t),a0 (t)),
color=yellow,
vector(a(t),a0 (t)/*a00 (t)),
color=red,
vector(a(t),(a0 (t)/*a00 (t))/*a0 (t)),
color=green,point_type=7,
points([a(t)]),
xrange=[-1.5,1.5],yrange=[-1.5,1.5],
zrange=[0,3],
user_preamble=set size ratio 1);
( %t7)
( %o7)
266
draw
Maxima
( %i8) with_slider_draw3d(
a,create_list(i/8,i,0,8),
surface_hide=true,
user_preamble=set size ratio 1,
xtics=false,ytics=false,ztics=false,
axis_3d=false,
rot_vertical=80,rot_horizontal=100,
parametric_surface(
(1-a)*cos(t)*sin(u/2)-(a*sin(u))/3,
(a*sin(t)*(2-cos(u)))/3+
(1-a)*sin(t)*sin(u/2),
(a*cos(t)*(2-cos(u)))/3+(1-a)*cos(u/2),
t,0,2* %pi,u,0,2* %pi)
);
( %t8)
( %o8)
CAPTULO
17
El paquete
plotdf
Xmaxima
load(plotdf).
Tambin es ne-
Maxima
wxMaxima
wxplotdf).
Maxima
plotdf.
( %i9) load(plotdf)$
Maxima
y 0 = ex + y
y la solucin que
(2, 0.1).
( %i10) plotdf(exp(-x)+y,[trajectory_at,2,-0.1]);
( %o10) 0
267
268
Figura 17.1:
plotdf
( %i10)
Maxima
y0 = x y2
y la solucin de
y(1) = 3.
( %i11) plotdf(x-y^2,[xfun,sqrt(x);-sqrt(x)],
[trajectory_at,-1,3], [direction,forward],
[yradius,5],[xcenter,6]);
( %o11) 0
Maxima
dx
dt
=y
(x, y) = (6, 0), con una barra de
deslizamiento que permitir cambiar el valor de m interactivamente (k permanece
jo a 2.)
Campo de direcciones de un oscilador armnico, denido por las ecuaciones
dy
y
dt
kx
, y la curva integral que pasa por
m
( %i12) plotdf([y,-k*x/m],[parameters,m=2,k=2],
[sliders,m=1:5], [trajectory_at,6,0]);
( %o12) 0
269
Figura 17.2:
( %i11)
Figura 17.3:
( %i12)
270
Figura 17.4:
plotdf
( %i13)
Maxima
CAPTULO
18
Maxima
tex(expr )
tex(expr ,false)
expr
tex(expr,destino )
Maxima
( %i1) (x+y)^2/sqrt(x*y);
( %o1)
(y+x)2
xy
271
destino
272
Maxima
Maxima
d:/maximatex/.
(y + x)2
,
xy
ejemplo.tex
ubi-
( %i3) tex((x+y)^2/sqrt(x*y),
d:/maximatex/ejemplo.tex);
( %o3) f alse
texput(a,f )
el nombre de un operador
get_tex_
environment(op )
op
set_tex_
environment(op,antes,
op
despus )
get_tex_environment_
default( )
set_tex_environment_
default(antes,
despus )
273
Maxima
( %i4) texput(s,\\sqrt{2});
( %o4) \sqrt{2}
Maxima
( %i5) tex(s+1/2);
$$\sqrt{2}+{{1}\over{2}}$$
( %o5) f alse
Maxima
( %i6) tex(3/4);
$${{3}\over{4}}$$
( %o6) f alse
Maxima
Maxima
( %i8) tex(3/4);
{{3}\over{4}}
( %o8) f alse
Maxima
274
Exportar que
men Archivo.
ventana
del
Figura 18.1:
Figura 18.2:
tex,
en la casilla
Nombre de la
Exportar
ATEX
Exportando un cuaderno como documento pdf L
Maxima
html.
275
Maxima e insertarlas
Maxima permite convertir
:lisp $ %in
fortran(expr )
expr
para Fortran
Maxima
( %i1) x^2+2*x+1;
( %o1) x2 + 2 x + 1
( %i2) :lisp $ %i9;
((MPLUS) ((MEXPT) $X 2) ((MTIMES) 2 $X) 1)
( %i3) fortran(x^2+2*x+1);
x 2 + 2 x + 1
( %o3) done
CAPTULO
Programacin con
Maxima
19
xima
Ma-
paquete 1
de funciones.
Maxima
incluye operadores relacionales y lgicos, as como estructuras de control (que se utilizan para controlar el ujo del programa en una rutina).
En
1 Del
q.
and
cuya sintaxis es
p and q ,
Lisp.
lisp
276
277
aquel que debe escribirse antes del operando, por ejemplo el operador
not
cuya sintaxis es
not p,
Maxima,
p.
Operador
Smbolo
Tipo
menor que
<
<=
=
igualdad (sintctica)
negacin de
equal
equal
notequal
>=
>=
and
or
not
Controlador
Descripcin
if
permite, mediante una condicin, que se ejecute o no se ejecute determinada tarea o lnea de
cdigo
for
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
unless
for, while
278
Maxima
if.
Maxima
de las entradas
respectivamente.
Maxima
Aqu se obtiene el valor ligado a la expresin verdadera ms prxima (en este caso
3 = 3). Si todas las expresiones fuesen falsas, entonces se obtendra el ltimo valor
(en este caso 4).
Maxima
for.
279
Maxima
Maxima
while
se utiliza
for.
Maxima
unless
tambin se utiliza
for.
Maxima
es un objeto de la forma
fun(a1 , . . . , an ),
es decir, una expresin que comprende un operador como
argumentos de ste,
a1 , . . . , an .
Las funciones
op
args
fun
y los
permiten
280
op(expr)
args(expr)
expr
permite obtener una lista cuyos elementos son los argumentos de la expresin
expr
Maxima
a + b,
expr.
( %i1) expr:a+b;
( %o1) b + a
Maxima
( %i2) op(expr);
( %o2) +
( %i3) args(expr);
( %o3) [b, a]
Maxima
( %i4) apply(op(expr),args(expr));
( %o4) b + a
Maxima
( %i5) expr:ejemplo(x,y,z);
( %o5) ejemplo(x, y, z)
apply.
281
Maxima
( %i6) op(expr);
( %o6) ejemplo
( %i7) args(expr);
( %o7) [x, y, z]
Maxima
apply.
( %i8) apply(op(expr),args(expr));
( %o8) ejemplo(x, y, z)
Maxima
integrate,
( %i9) expr:'plot2d(x^2,[x,-1,1]);
( %o9) plot2d(x2 , [x, 1, 1])
Maxima
( %i10) op(expr);
( %o10) plot2d
( %i11) args(expr);
( %o11) x2 , [x, 1, 1]
Maxima
( %i12) expr:[a,b,c,d];
( %o12) [a, b, c, d]
expr.
fun(a1 , . . . , an ). Aqu
282
Maxima
( %i13) op(expr);
( %o13) [
( %i14) args(expr);
( %o14) [a, b, c, d]
programacin funcional
Maxima
uso de funciones.
map, lambda
apply,
funcional.
apply(f, [expr1 , . . . ,
exprn ])
map(f, expr1 , . . . , exprn )
construye
evala
la
expresin
f (arg1 , . . . , argn )
devuelve una expresin cuyo operador
principal es el mismo que aparece en
las expresiones
expr1 , . . . , exprn
pero
de las expresiones
lambda([x1 , . . . , xm ] ,
expr1 , . . . , exprn )
dene y devuelve una expresin lambda (es decir, una funcin annima) con
x1 , . . . , xm ; la cual devuelexprn
argumentos
ve el valor
lambda([ [L] ] ,
expr1 , . . . , exprn )
lambda([ x1 , . . . , xm , [L] ] ,
expr1 , . . . , exprn )
L;
la cual
exprn
exprn
L;
x1 , . . . , x m ,
argu-
la cual devuelve el
283
Maxima
G,
G.
( %i1) G(x,y,z):=x^2+y^2+z^2 $
( %i2) apply(G,[x-y,a+b,u]);
( %o2) (x y)2 + u2 + (b + a)2
Maxima
min.
( %i3) apply(min,[7,9,3,4]);
( %o3) 3
Maxima
( %i4) F(x):=x^3-1 $
( %i5) map(F,[2,3,5,a]);
( %o5) 7, 26, 124, a3 1
Maxima
f,
argumentos.
( %i6) f:lambda([x,y],x+y) $
( %i7) f(a,b);
( %o7) b+a
Maxima
284
( %o10) p2 , q 2 , r2 , s2 , t2
Maxima
En este ejemplo se dene una funcin lambda con dos argumentos y un argumento
opcional. Luego esta funcin es evaluada en tres argumentos y se obtiene una lista
con el resultado esperado, no obstante al evaluar la funcin en ms argumentos
se obtiene una lista con tantos elementos como argumentos adicionales hay.
triangulo
Maxima
triangulo.
R2
( %i1) triangulo(pts):=
block([f:lambda([h],endcons(1,h)),pts1,M,d,a],
pts1:map(f,pts),
M:apply(matrix,pts1),
d:determinant(M),
a:abs(d/2),
if d=0 then string(Los puntos son colineales)
else
(b:apply(+,pts)/3,
[sconcat(Area,: ,a, ,u^2),
sconcat(Baricentro,: ,b)])
)$
ejemplo
285
Maxima
triangulo
no colineales, la fun-
Maxima
draw.
( %i4) load(draw) $
Maxima
( %i5) wxdraw2d(
color=red,fill_color=white,line_width=2,
polygon(p),
point_type=6,color=blue,
points([ [2,4/3] ]),
user_preamble=set size ratio 1
);
( %t5)
( %o5)
286
Maxima
triangulo
son colinea-
Maxima
circunferencia
( %i8) circunferencia(pts):=
block([f:lambda([h],endcons(1,h)),
g:lambda([h],cons(h[1]^2+h[2]^2,h)),
pts1,M,d,eq],
pts1:map(f,pts),
M:apply(matrix,pts1),
d:determinant(M),
if d=0 then string(Los puntos son colineales),
else
(aux:map(g,cons([x,y,1],pts1)),
M:apply(matrix,aux),
d:determinant(M),
eq:expand(d),
expand(eq/coeff(eq,x^2))=0)
)$
Maxima
circunferencia
no colineales, la fun-
puntos.
ejemplo
287
Maxima
( %i11) wxdraw2d(
implicit(circunferencia(p),x,0,6,y,-2,4),
point_type=6,color=red,point_size=1,
points(p),
user_preamble=set size ratio 1
);
( %t11)
( %o11)
Maxima
son colineales.
Hasta aqu se han denido, y se ha vericado el correcto funcionamiento de, las funciones
triangulo
circunferencia.
Seguida-
ejemplo
y de extensin
288
Maxima
Esto
guarda
todas
las
funciones
denidas
por
el
usuario
en
el
archivo
( %i14) save(d:/maximapackages/ejemplo.lisp,
functions) $
Maxima.
ejemplo.lisp.
Maxima
ejemplo.lisp
(vea 15.1).
( %i15) load(d:/maximapackages/ejemplo.lisp) $
Maxima
ejemplo.lisp
Bibliografa
[1] Fokker,
J.
PROGRAMACIN
FUNCIONAL.
//people.cs.uu.nl/jeroen/courses/fpsp.pdf
http:
(1996).
uca.es/repos/maxima
http://knuth.
(2007).
html
http://maxima.sourceforge.net/es/documentation.
(2009).
[4] Rodrguez,
M.
PRIMEROS
PASOS
EN
MAXIMA.
telefonica.net/web2/biomates/maxima/max.pdf
www.
(2008).
www.telefonica.net/web2/biomates/maxima/i-math.
(2008).
http://softwarelibre.uca.es/cursos/maxima/cadiz.
(2006).
289