~ubuntu-branches/debian/squeeze/maxima/squeeze

« back to all changes in this revision

Viewing changes to doc/info/es/simplifications.texi

  • Committer: Bazaar Package Importer
  • Author(s): Camm Maguire
  • Date: 2006-10-18 14:52:42 UTC
  • mto: (1.1.5 upstream)
  • mto: This revision was merged to the branch mainline in revision 4.
  • Revision ID: james.westby@ubuntu.com-20061018145242-vzyrm5hmxr8kiosf
ImportĀ upstreamĀ versionĀ 5.10.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
@c english version 1.3
 
2
@menu
 
3
* Introducci@'on a simplification::
 
4
* Definiciones para simplification::
 
5
@end menu
 
6
 
 
7
@node Introducci@'on a simplification, Definiciones para simplification, simplification, simplification
 
8
@section Introducci@'on a simplification
 
9
 
 
10
El directorio @code{maxima/share/simplification} contiene programas que
 
11
implementan algunas reglas y funciones para simplificar expresiones, 
 
12
as@'{@dotless{i}} como ciertas funciones no relacionadas con la simplificaci@'on.
 
13
 
 
14
 
 
15
@node Definiciones para simplification,  , Introducci@'on a simplification, simplification
 
16
@section Definiciones para simplification
 
17
 
 
18
@c Adapted from absimp.usg ----------------------
 
19
 
 
20
@c @defvr {Add-on package} (WITH HYPHEN) CONFUSES DESCRIBE (CAN'T FIND END OF ITEM)
 
21
@c SAME WITH OTHER "ADD-ON PACKAGES" HERE (FACEXP, INEQ)
 
22
@subsection Paquete absimp
 
23
 
 
24
El paquete @code{absimp} contiene reglas para aplicar patrones que extienden
 
25
el sistema de reglas nativo de Maxima para las funciones @code{abs} y
 
26
@code{signum}, respetando las relaciones establecidas con la funci@'on
 
27
@code{assume} o con declaraciones tales como @code{modedeclare (m, even, n, odd)}
 
28
para enteros pares o impares.
 
29
 
 
30
En el paquete @code{absimp} se definen las funciones @code{unitramp} y
 
31
@code{unitstep} en t@'erminos de @code{abs} y @code{signum}.
 
32
 
 
33
La instrucci@'on @code{load (absimp)} carga este paquete y @code{demo (absimp)}
 
34
desarrolla una demostraci@'on sobre el uso del mismo.
 
35
 
 
36
Ejemplos:
 
37
 
 
38
@c ===beg===
 
39
@c load (absimp)$
 
40
@c (abs (x))^2;
 
41
@c diff (abs (x), x);
 
42
@c cosh (abs (x));
 
43
@c ===end===
 
44
@example
 
45
(%i1) load (absimp)$
 
46
(%i2) (abs (x))^2;
 
47
                                       2
 
48
(%o2)                                 x
 
49
(%i3) diff (abs (x), x);
 
50
                                      x
 
51
(%o3)                               ------
 
52
                                    abs(x)
 
53
(%i4) cosh (abs (x));
 
54
(%o4)                               cosh(x)
 
55
@end example
 
56
 
 
57
@c disol.usg: "disolate" already in doc/info/Expressions.texi
 
58
 
 
59
@c elim.usg: "eliminate" already in doc/info/Polynomials.texi
 
60
 
 
61
@c Adapted from facexp.usg ----------------------
 
62
@c ALL OF THE TEXT IN FACEXP.USG IS VERY VAGUE.
 
63
@c I HAVE NO IDEA WHAT THESE FUNCTIONS DO.
 
64
@c ALL OF THESE ITEMS NEED TO BE HEAVILY REVISED
 
65
@c (ASSUMING THIS PACKAGE IS SOMETHING WE WANT TO INVEST TIME IN)
 
66
@subsection Paquete facexp
 
67
 
 
68
@c THIS IS VERY VAGUE. JUST WHAT DOES THIS DO?
 
69
El paquete @code{facexp} contiene varias funciones que le aportan al
 
70
usuario la posibilidad de estructurar expresiones controlando su
 
71
expansi@'on. Esta capacidad es especialmente @'util cuando la 
 
72
expresi@'on contiene variables con significado f@'{@dotless{i}}sico,
 
73
ya que se suele dar el caso de que la forma m@'as sencilla para estas
 
74
expresiones se obtiene cuando se expanden respecto de estas variables
 
75
y luego se factoriza respecto de sus coeficientes. Si bien es cierto que
 
76
este procedimiento no es dif@'{@dotless{i}}cil de llevar a cabo con las 
 
77
funciones est@'andar de Maxima, pueden ser necesarios algunos retoques
 
78
adicionales que s@'{@dotless{i}} pueden ser m@'as dif@'{@dotless{i}}ciles
 
79
de hacer.
 
80
 
 
81
La funci@'on @code{facsum} y sus formas relacionadas proporcionan un 
 
82
m@'etodo para controlar la estructura de expresiones. La funci@'on 
 
83
@code{collectterms} puede usarse para a@~nadir dos o m@'as 
 
84
expresiones que ya hayan sido simplificadas de la forma indicada,
 
85
sin necesidad de volver a simplificar la expresi@'on completa.
 
86
Esta funci@'on puede ser @'util cuando las expresiones sean
 
87
largas.
 
88
 
 
89
@c CAN'T FIND ANY SUCH FILE "DIAGEVAL".
 
90
@c THERE ARE COMMENTED-OUT DEFNS OF FACTENEXPAND, FACEXPTEN, AND FACTORFACEXPTEN
 
91
@c IN FACEXP (AND NOWHERE ELSE).
 
92
@c COMMENTING OUT THIS TEXT FOR NOW.
 
93
@c Note:  @code{factenexpand}, @code{facexpten}, and @code{factorfacexpten}  are available  only
 
94
@c after loading @code{diageval}. They are special functions used for  tensor
 
95
@c manipulation.
 
96
 
 
97
La instrucci@'on @code{load (facexp)} carga este paquete y @code{demo (facexp)}
 
98
hace una demostraci@'on sobre su uso.
 
99
 
 
100
@c THIS IS VERY VAGUE. JUST WHAT DOES THIS DO?
 
101
@c SOME EXAMPLES WOULD HELP HERE
 
102
 
 
103
 
 
104
@deffn {Funci@'on} facsum (@var{expr}, @var{arg_1}, ..., @var{arg_n})
 
105
 
 
106
Devuelve una expresi@'on equivalente a @var{expr}, la cual
 
107
depende de los argumentos @var{arg_1}, ..., @var{arg_n}, y 
 
108
@'estos pueden ser de cualquiera de las formas aceptables
 
109
para @code{ratvars}, o listas de estas formas. Si los
 
110
argumentos no son listas, la forma devuelta se expande
 
111
completamente con respecto de los argumentos, siendo los
 
112
coeficientes de tales argumentos factorizados. Estos
 
113
coeficientes no contienen a ninguno de los argumentos,
 
114
excepto quiz@'as de una forma no racional.
 
115
 
 
116
En caso de que cualquiera de los argumentos sea una lista, entonces
 
117
todos ellos se combinan en una @'unica lista, y en lugar de llamar
 
118
a @code{factor} para los coeficientes de los argumentos, @code{facsum}
 
119
se llama a s@'{@dotless{i}} misma utilizando esta nueva lista @'unica
 
120
como lista de argumentos.
 
121
 
 
122
Es posible que se quiera utilizar @code{facsum} con respecto a
 
123
expresiones m@'as complicadas, tales como @code{log (x + y)}. Estos
 
124
argumentos son tambi@'en admisibles. Si no se especifican variables,
 
125
como en @code{facsum (@var{expr})}, el resultado devuelto es el mismo
 
126
que el conseguido mediante @code{ratsimp (@var{expr})}.
 
127
 
 
128
En ocasiones puede ser necesario obtener cualquiera de las formas
 
129
anteriores especificadas por sus operadores principales. Por ejemplo,
 
130
se puede querer aplicar @code{facsum} con respecto a todos los 
 
131
@code{log}; en este caso, se puede incluir entre los argumentos bien
 
132
los @code{log} espec@'{@dotless{i}}ficos que se quieran tratar de esta
 
133
manera, bien la expresi@'on @code{operator (log)} o @code{'operator (log)}.
 
134
Si se quiere aplicar @code{facsum} a @var{expr} con respecto a los 
 
135
operadores @var{op_1}, ..., @var{op_n}, se debe evaluar 
 
136
@code{facsum (@var{expr}, operator (@var{op_1}, ..., @var{op_n}))}.
 
137
La forma @code{operator} puede aparecer tambi@'en dentro de las
 
138
listas de argumentos.
 
139
 
 
140
Adem@'as, d@'andole valores a las variables opcionales @code{facsum_combine}
 
141
y @code{nextlayerfactor} se puede controlar el resultado de @code{facsum}.
 
142
@end deffn
 
143
 
 
144
@defvr {Variable global} nextlayerfactor
 
145
Valor por defecto: @code{false}
 
146
 
 
147
Si @code{nextlayerfactor} vale @code{true}, las llamadas recursivas de
 
148
@code{facsum} se aplican a los factores de la forma factorizada de los
 
149
coeficientes de los argumentos.
 
150
 
 
151
Si vale @code{false}, @code{facsum} se aplica a cada coeficiente como
 
152
un todo cada vez que se efect@'uen llamadas recursivas a @code{facsum}.
 
153
 
 
154
La inclusi@'on del @'atomo @code{nextlayerfactor} en la lista de 
 
155
argumentos de @code{facsum} tiene el mismo efecto que 
 
156
@code{nextlayerfactor: true}, pero @i{solamente} para el siguiente
 
157
nivel de la expresi@'on. Puesto que @code{nextlayerfactor} toma
 
158
siempre uno de los valores @code{true} o  @code{false}, debe aparecer
 
159
comentado (comilla simple) cada vez que aparezca en la lista de 
 
160
argumentos de @code{facsum}.
 
161
@end defvr
 
162
 
 
163
@defvr {Variable global} facsum_combine
 
164
Valor por defecto: @code{true}
 
165
 
 
166
La variable @code{facsum_combine} controla la forma del resultado final
 
167
devuelto por @code{facsum} si su argumento es un cociente de polinomios.
 
168
Si @code{facsum_combine} vale @code{false}, el resultado ser@'a una suma
 
169
completamente expandida, pero si vale @code{true}, la expresi@'on devuelta
 
170
es un cociente de polinomios.
 
171
 
 
172
@c aqu'i falta un p'arrafo.
 
173
 
 
174
@end defvr
 
175
 
 
176
@deffn {Funci@'on} factorfacsum (@var{expr}, @var{arg_1}, ... @var{arg_n})
 
177
Devuelve una expresi@'on equivalente a @var{expr} obtenida aplicando
 
178
@code{facsum} a los factores de @var{expr}, de argumentos
 
179
@var{arg_1}, ... @var{arg_n}. Si alguno de los factores de @var{expr} se 
 
180
eleva a una potencia, tanto el factor como el exponente se procesar@'an de
 
181
esta manera.
 
182
@end deffn
 
183
 
 
184
@deffn {Funci@'on} collectterms (@var{arg_1}, ..., @var{arg_n})
 
185
Si algunas expresiones fueron ya simplificadas con @code{facsum}, @code{factorfacsum},
 
186
@code{factenexpand},  @code{facexpten} o @code{factorfacexpten}, debiendo ser 
 
187
luego sumadas, puede ser conveniente combinarlas utilizando la funci@'on
 
188
@code{collecterms}, la cual admite como argumentos todos aqu@'ellos que se
 
189
puedan pasar a las anteriormente citadas funciones, con la excepci@'on de
 
190
@code{nextlayerfactor}, que no tiene efecto alguno sobre @code{collectterms}.
 
191
La ventaja de @code{collectterms} es que devuelve una forma similar a la de
 
192
@code{facsum}, pero debido a que suma expresiones que ya han sido previamente
 
193
procesadas, no necesita repetir esta operaci@'on, lo cual 
 
194
resulta ser especialmente @'util cuando las expresiones a sumar son muy
 
195
grandes.
 
196
@end deffn
 
197
 
 
198
@c Adapted from functs.usg ----------------------
 
199
 
 
200
@c conjugate already described in doc/info/Matrices.texi
 
201
 
 
202
@subsection Paquete functs
 
203
 
 
204
@deffn {Funci@'on} rempart (@var{expr}, @var{n})
 
205
Elimina la parte @var{n} de la expresi@'on @var{expr}.
 
206
 
 
207
Si @var{n} es una lista de la forma @code{[@var{l}, @var{m}]}, entonces
 
208
las partes desde @var{l} a @var{m} ser@'an eliminadas.
 
209
 
 
210
Para hacer uso de esta funci@'on ejecutar @code{load(functs)}.
 
211
@end deffn
 
212
 
 
213
@deffn {Funci@'on} wronskian ([@var{f_1}, ..., @var{f_n}], @var{x})
 
214
Devuelve la matriz wronskiana de las funciones @var{f_1}, ..., @var{f_n}
 
215
dependeientes de la variable @var{x}.
 
216
 
 
217
Los argumentos @var{f_1}, ..., @var{f_n} pueden ser nombres de funciones
 
218
definidas por el usuario, o expresiones de variable @var{x}.
 
219
 
 
220
El determinante de la matriz wronskiana es el determinante wronskiano del
 
221
conjunto de funciones. Las funciones ser@'an linealmente dependientes si
 
222
este determinante es nulo.
 
223
 
 
224
Para hacer uso de esta funci@'on ejecutar @code{load(functs)}.
 
225
@end deffn
 
226
 
 
227
@c adjoint already described in doc/info/Matrices.texi
 
228
 
 
229
@deffn {Funci@'on} tracematrix (@var{M})
 
230
Devuelve la traza (suma de los elementos de la diagonal) de la matriz @var{M}.
 
231
 
 
232
Para hacer uso de esta funci@'on ejecutar @code{load(functs)}.
 
233
@end deffn
 
234
 
 
235
@deffn {Funci@'on} rational (@var{z})
 
236
Multiplica el numerador y denominador de @var{z} por el complejo conjugado
 
237
del denominador, racionalizando as@'{@dotless{i}} el denominador.
 
238
Devuelve la expresi@'on can@'onica racional (canonical rational expression,
 
239
CRE) si el argumento @var{z} es de esta forma, en caso contrario devuelve una
 
240
expresi@'on en formato com@'un.
 
241
 
 
242
Para hacer uso de esta funci@'on ejecutar @code{load(functs)}.
 
243
@end deffn
 
244
 
 
245
@deffn {Funci@'on} logand (@var{x},@var{y})
 
246
Devuelve el "y" l@'ogico binario de los argumentos @var{x} e @var{y}.
 
247
 
 
248
Para hacer uso de esta funci@'on ejecutar @code{load(functs)}.
 
249
@end deffn
 
250
 
 
251
@deffn {Funci@'on} logor (@var{x},@var{y})
 
252
Devuelve el "o" l@'ogico binario de los argumentos @var{x} e @var{y}.
 
253
 
 
254
Para hacer uso de esta funci@'on ejecutar @code{load(functs)}.
 
255
@end deffn
 
256
 
 
257
@deffn {Funci@'on} logxor (@var{x},@var{y})
 
258
Devuelve el "o-excusivo" l@'ogico binario de los argumentos @var{x} e @var{y}.
 
259
 
 
260
Para hacer uso de esta funci@'on ejecutar @code{load(functs)}.
 
261
@end deffn
 
262
 
 
263
@c uprobe calls ?uprobe and assumes file is a list => obsolete, not common lisp
 
264
 
 
265
@c kronecker superseded by kron_delta in src/nset.lisp
 
266
 
 
267
@deffn {Funci@'on} nonzeroandfreeof (@var{x}, @var{expr})
 
268
Devuelve @code{true} si @var{expr} es diferente de cero y 
 
269
@code{freeof (@var{x}, @var{expr})} devuelve @code{true}.
 
270
En caso contrario devuelve @code{false}.
 
271
 
 
272
Para hacer uso de esta funci@'on ejecutar @code{load(functs)}.
 
273
@end deffn
 
274
 
 
275
@deffn {Funci@'on} linear (@var{expr}, @var{x})
 
276
Si @var{expr} es una expresi@'on lineal respecto de la variable @var{x},
 
277
@code{linear} devuelve @code{@var{a}*@var{x} + @var{b}}, siendo @var{a}
 
278
no nula y, junto con @var{b}, no incluye a @var{x}. En otro caso, 
 
279
@code{linear} devuelve @var{expr}.
 
280
 
 
281
Para hacer uso de esta funci@'on ejecutar @code{load(functs)}.
 
282
@end deffn
 
283
 
 
284
@deffn {Funci@'on} gcdivide (@var{p}, @var{q})
 
285
Si @code{takegcd} vale @code{true}, @code{gcdivide} divide los 
 
286
polinomios @var{p} y @var{q} por su m@'aximo com@'un divisor y
 
287
devuelve el cociente de los resultados.
 
288
 
 
289
Si @code{takegcd} vale @code{false}, @code{gcdivide} devuelve
 
290
el cociente @code{@var{p}/@var{q}}.
 
291
 
 
292
Para hacer uso de esta funci@'on ejecutar @code{load(functs)}.
 
293
@end deffn
 
294
 
 
295
@c lcm already described in doc/info/Number.texi
 
296
 
 
297
@deffn {Funci@'on} arithmetic (@var{a}, @var{d}, @var{n})
 
298
Devuelve el @var{n}-@'esimo t@'ermino de la progresi@'on aritm@'etica
 
299
@code{@var{a}, @var{a} + @var{d}, @var{a} + 2*@var{d}, ..., @var{a} + (@var{n} - 1)*@var{d}}.
 
300
 
 
301
Para hacer uso de esta funci@'on ejecutar @code{load(functs)}.
 
302
@end deffn
 
303
 
 
304
@deffn {Funci@'on} geometric (@var{a}, @var{r}, @var{n})
 
305
Devuelve el @var{n}-@'esimo t@'ermino de la progresi@'on geom@'etrica
 
306
@code{@var{a}, @var{a}*@var{r}, @var{a}*@var{r}^2, ..., @var{a}*@var{r}^(@var{n} - 1)}.
 
307
 
 
308
Para hacer uso de esta funci@'on ejecutar @code{load(functs)}.
 
309
@end deffn
 
310
 
 
311
@deffn {Funci@'on} harmonic (@var{a}, @var{b}, @var{c}, @var{n})
 
312
Devuelve el @var{n}-@'esimo t@'ermino de la progresi@'on arm@'onica
 
313
@code{@var{a}/@var{b}, @var{a}/(@var{b} + @var{c}), @var{a}/(@var{b} + 2*@var{c}), ..., @var{a}/(@var{b} + (@var{n} - 1)*@var{c})}.
 
314
 
 
315
Para hacer uso de esta funci@'on ejecutar @code{load(functs)}.
 
316
@end deffn
 
317
 
 
318
@deffn {Funci@'on} arithsum (@var{a}, @var{d}, @var{n})
 
319
Devuelve la suma de la progresi@'on aritm@'etica desde hasta el @var{n}-@'esimo t@'ermino.
 
320
 
 
321
Para hacer uso de esta funci@'on ejecutar @code{load(functs)}.
 
322
@end deffn
 
323
 
 
324
@deffn {Funci@'on} geosum (@var{a}, @var{r}, @var{n})
 
325
Devuelve la suma de la sucesi@'on geom@'etrica hasta el @var{n}-@'esimo t@'ermino.
 
326
Si @var{n} es infinito (@code{inf}) la suma ser@'a finita s@'olo si el valor absoluto de 
 
327
@var{r} es menor que 1.
 
328
 
 
329
Para hacer uso de esta funci@'on ejecutar @code{load(functs)}.
 
330
@end deffn
 
331
 
 
332
@deffn {Funci@'on} gaussprob (@var{x})
 
333
Devuelve la funci@'on de densidad de probabilidad,
 
334
normal @code{%e^(-@var{x}^2/2) / sqrt(2*%pi)}.
 
335
 
 
336
Para hacer uso de esta funci@'on ejecutar @code{load(functs)}.
 
337
@end deffn
 
338
 
 
339
@deffn {Funci@'on} gd (@var{x})
 
340
Devuelve la funci@'on de Gudermann,
 
341
@code{2 * atan(%e^@var{x} - %pi/2)}.
 
342
 
 
343
Para hacer uso de esta funci@'on ejecutar @code{load(functs)}.
 
344
@end deffn
 
345
 
 
346
@deffn {Funci@'on} agd (@var{x})
 
347
Devuelve la inversa de la funci@'on de Gudermann,
 
348
@code{log (tan (%pi/4 + x/2)))}.
 
349
 
 
350
Para hacer uso de esta funci@'on ejecutar @code{load(functs)}.
 
351
@end deffn
 
352
 
 
353
@deffn {Funci@'on} vers (@var{x})
 
354
Devuelve @code{1 - cos (x)}.
 
355
 
 
356
Para hacer uso de esta funci@'on ejecutar @code{load(functs)}.
 
357
@end deffn
 
358
 
 
359
@deffn {Funci@'on} covers (@var{x})
 
360
Devuelve @code{1 - sin (@var{x})}.
 
361
 
 
362
Para hacer uso de esta funci@'on ejecutar @code{load(functs)}.
 
363
@end deffn
 
364
 
 
365
@deffn {Funci@'on} exsec (@var{x})
 
366
Devuelve @code{sec (@var{x}) - 1}.
 
367
 
 
368
Para hacer uso de esta funci@'on ejecutar @code{load(functs)}.
 
369
@end deffn
 
370
 
 
371
@deffn {Funci@'on} hav (@var{x})
 
372
Devuelve @code{(1 - cos(x))/2}.
 
373
 
 
374
Para hacer uso de esta funci@'on ejecutar @code{load(functs)}.
 
375
@end deffn
 
376
 
 
377
@c REDUNDANT WITH BINOMIAL COEFFICIENT; CUT IT ??
 
378
@deffn {Funci@'on} combination (@var{n}, @var{r})
 
379
Calcula el n@'umero de combinaciones de @var{n} objetos
 
380
tomados de @var{r} en @var{r}.
 
381
 
 
382
Para hacer uso de esta funci@'on ejecutar @code{load(functs)}.
 
383
@end deffn
 
384
 
 
385
@c REDUNDANT WITH PERMUTATIONS FUNCTION IN NSET; CUT IT ??
 
386
@deffn {Funci@'on} permutation (@var{n}, @var{r})
 
387
Calcula el n@'umero de permutaciones de @var{r}, seleccionados
 
388
de un conjunto de @var{n}.
 
389
 
 
390
Para hacer uso de esta funci@'on ejecutar @code{load(functs)}.
 
391
@end deffn
 
392
 
 
393
@c Adapted from ineq.usg ----------------------
 
394
@c THIS PACKAGE IS INTERESTING BUT THIS TEXT NEEDS WORK AND EXAMPLES
 
395
@subsection Paquete ineq
 
396
El paquete @code{ineq} contiene reglas de simplificaci@'on para desigualdades
 
397
 
 
398
Una sesi@'on de ejemplo:
 
399
 
 
400
@c ===beg===
 
401
@c load(ineq)$
 
402
@c a>=4;  /* a sample inequality */
 
403
@c (b>c)+%; /* add a second, strict inequality */
 
404
@c 7*(x<y); /* multiply by a positive number */
 
405
@c -2*(x>=3*z); /* multiply by a negative number */
 
406
@c (1+a^2)*(1/(1+a^2)<=1); /* Maxima knows that 1+a^2 > 0 */
 
407
@c assume(x>0)$ x*(2<3); /* assuming x>0 */
 
408
@c a>=b; /* another inequality */
 
409
@c 3+%; /* add something */
 
410
@c %-3; /* subtract it out */
 
411
@c a>=c-b; /* yet another inequality */
 
412
@c b+%; /* add b to both sides */
 
413
@c %-c; /* subtract c from both sides */
 
414
@c -%;  /* multiply by -1 */
 
415
@c (z-1)^2>-2*z; /* determining truth of assertion */
 
416
@c expand(%)+2*z; /* expand this and add 2*z to both sides */
 
417
@c %,pred;
 
418
@c ===end===
 
419
@example
 
420
(%i1) load(ineq)$
 
421
Warning: Putting rules on '+' or '*' is inefficient, and may not work.
 
422
Warning: Putting rules on '+' or '*' is inefficient, and may not work.
 
423
Warning: Putting rules on '+' or '*' is inefficient, and may not work.
 
424
Warning: Putting rules on '+' or '*' is inefficient, and may not work.
 
425
Warning: Putting rules on '+' or '*' is inefficient, and may not work.
 
426
Warning: Putting rules on '+' or '*' is inefficient, and may not work.
 
427
Warning: Putting rules on '+' or '*' is inefficient, and may not work.
 
428
Warning: Putting rules on '+' or '*' is inefficient, and may not work.
 
429
(%i2) a>=4;  /* a sample inequality */
 
430
(%o2)                               a >= 4
 
431
(%i3) (b>c)+%; /* add a second, strict inequality */
 
432
(%o3)                            b + a > c + 4
 
433
(%i4) 7*(x<y); /* multiply by a positive number */
 
434
(%o4)                              7 x < 7 y
 
435
(%i5) -2*(x>=3*z); /* multiply by a negative number */
 
436
(%o5)                           - 2 x <= - 6 z
 
437
(%i6) (1+a^2)*(1/(1+a^2)<=1); /* Maxima knows that 1+a^2 > 0 */
 
438
                                        2
 
439
(%o6)                             1 <= a  + 1
 
440
(%i7) assume(x>0)$ x*(2<3); /* assuming x>0 */
 
441
(%o7)                              2 x < 3 x
 
442
(%i8) a>=b; /* another inequality */
 
443
(%o8)                               a >= b
 
444
(%i9) 3+%; /* add something */
 
445
(%o9)                           a + 3 >= b + 3
 
446
(%i10) %-3; /* subtract it out */
 
447
(%o10)                              a >= b
 
448
(%i11) a>=c-b; /* yet another inequality */
 
449
(%o11)                            a >= c - b
 
450
(%i12) b+%; /* add b to both sides */
 
451
(%o12)                            b + a >= c
 
452
(%i13) %-c; /* subtract c from both sides */
 
453
(%o13)                         - c + b + a >= 0
 
454
(%i14) -%;  /* multiply by -1 */
 
455
(%o14)                          c - b - a <= 0
 
456
(%i15) (z-1)^2>-2*z; /* determining truth of assertion */
 
457
                                      2
 
458
(%o15)                         (z - 1)  > - 2 z
 
459
(%i16) expand(%)+2*z; /* expand this and add 2*z to both sides */
 
460
                                   2
 
461
(%o16)                            z  + 1 > 0
 
462
(%i17) %,pred;
 
463
(%o17)                               true
 
464
@end example
 
465
 
 
466
Debe tenerse cuidado con el uso de par@'entesis que incluyan desigualdades;
 
467
si se escribe @code{(A > B) + (C = 5)} el resultado es @code{A + C > B + 5},
 
468
pero @code{A > B + C = 5} es un error sint@'actico y @code{(A > B + C) = 5}
 
469
es una cosa completamente diferente.
 
470
 
 
471
Ejec@'utese @code{disprule (all)} para ver la lista completa de las
 
472
reglas definidas.
 
473
 
 
474
Maxima preguntar@'a al usuario cuando desconozca el signo de una cantidad que
 
475
multiplica a una desigualdad.
 
476
 
 
477
Los fallos m@'as comunes son:
 
478
 
 
479
@example
 
480
eq: a > b;
 
481
2*eq;
 
482
% - eq;
 
483
@end example
 
484
 
 
485
Otro problema es el producto de una desigualdad por cero.
 
486
Si se escribe @code{x*@var{some_inequality}} y Maxima pregunta por
 
487
el signo de @code{x} y se responde que vale @code{zero} (o @code{z}),
 
488
el programa devuelve @code{x*@var{some_inequality}} sin hacer uso de la
 
489
informaci@'on de que @code{x} es 0. En tal caso se deber@'{@dotless{i}}a
 
490
escribir @code{ev (%, x: 0)}, ya que la base de datos s@'olo ser@'a utilizada 
 
491
para fines comparativos y no para evaluar @code{x}.
 
492
 
 
493
El usuario puede apreciar que las respuestas son m@'as lentas al cargarse este paquete,
 
494
ya que el simplificador deber@'a examinar m@'as reglas que cuando no se hace uso del 
 
495
paquete, por lo que puede ser conveniente borrar estas reglas cuando ya no se haga
 
496
uso de ellas. Ejec@'utese @code{kill (rules)} para eliminar todas las reglas 
 
497
(incluidas las definidas por el usuario); tambi@'en es posible eliminar
 
498
parte de ellas o utilizar @code{remrule} sobre una reglas espec@'{@dotless{i}}fica.
 
499
 
 
500
N@'otese que si se carga este paquete despu@'es de haber definido otras reglas
 
501
de igual nombre,se borrar@'an las antiguas. Las reglas de este paquete son:
 
502
@code{*rule1}, ..., @code{*rule8},
 
503
@code{+rule1}, ..., @code{+rule18},
 
504
debi@'endose encerrar entre comillas el nombre de la reglas para referenciarse a ellas,
 
505
como en @code{remrule ("+", "+rule1")} para eliminar la primera regla sobre @code{"+"},
 
506
o @code{disprule ("*rule2")} para mostrar la definici@'on de la segunda regla
 
507
multiplicativa.
 
508
 
 
509
@c lrats.usg: "lratsubst" and "fullratsubst" already in doc/info/Polynomials.texi
 
510
 
 
511
@c Adapted from rducon.usg ----------------------
 
512
@c THIS IS AN INTERESTING FUNCTION BUT THIS TEXT NEEDS WORK AND EXAMPLES
 
513
@subsection Paquete rducon
 
514
 
 
515
@deffn {Funci@'on} reduce_consts (@var{expr})
 
516
Sustituye subexpresiones constantes de @var{expr} por @'atomos,
 
517
guardando la definici@'on de todos ellos en la lista de ecuaciones
 
518
 @code{const_eqns} y devolviendo el expresi@'on @var{expr} ya
 
519
modificada. Se consideran partes constantes de @var{expr} aquellas
 
520
que devuelven @code{true} cuando se les aplica la funci@'on @code{constantp},
 
521
por lo que antes de llamar a @code{reduce_consts} se debe ejecutar
 
522
 
 
523
@example
 
524
declare ([@var{objetos a los que se quiera dar la propiedad de ser constantes}], constant)$
 
525
@end example
 
526
 
 
527
para crear la base de datos de las cantidades constantes presentes en
 
528
la expresi@'on.
 
529
 
 
530
Si se pretende generar c@'odigo Fortran despu@'es de estos c@'alculos
 
531
simb@'olicos, una de las primeras secciones del c@'odigo debe ser el
 
532
c@'alculo de las constantes. Para generar este segmento de c@'odigo hacer
 
533
 
 
534
@example
 
535
map ('fortran, const_eqns)$
 
536
@end example
 
537
 
 
538
Junto a @code{const_eqns}, otras variables que afectan a @code{reduce_consts} son:
 
539
 
 
540
@code{const_prefix} (Valor por defecto: @code{xx}) es la cadena de caracteres utilizada como
 
541
prefijo para todos los s@'{@dotless{i}}mbolos generados por @code{reduce_consts} para
 
542
representar subexpresiones constantes.
 
543
 
 
544
@code{const_counter} (Valor por defecto: 1) es el @'{@dotless{i}}ndice entero utilizado
 
545
para generar los s@'{@dotless{i}}mbolos que representen a las subexpresiones
 
546
constantes encontradas por @code{reduce_consts}.
 
547
 
 
548
La instrucci@'on @code{load (rducon)} carga esta funci@'on y @code{demo (rducon)}
 
549
hace una demostraci@'on sobre su uso.
 
550
@end deffn
 
551
 
 
552
@c rncomb.usg: "rncombine" already in doc/info/Miscellaneous.texi
 
553
 
 
554
@c Adapted from scifac.usg ----------------------
 
555
@subsection Paquete scifac
 
556
 
 
557
@deffn {Funci@'on} gcfac (@var{expr})
 
558
Es una funci@'on de factorizaci@'on que intenta aplicar la misma heur@'{@dotless{i}}stica
 
559
que los humanos cuando tratan de hacer las expresiones m@'as simples, limit@'andose
 
560
a la factorizaci@'on de monomios. En caso de sumas, @code{gcfac} hace lo siguiente:
 
561
 
 
562
@enumerate
 
563
@item
 
564
Factoriza los enteros.
 
565
@item
 
566
Factoriza las potencias mayores de los t@'erminos que aparecen como
 
567
coeficientes, independientemente de su complejidad.
 
568
@item
 
569
Utiliza (1) y (2) en la factorizaci@'on de pares de t@'erminos adyacentes.
 
570
@item
 
571
Aplica estas t@'ecnicas repetida y recursivamente hasta que la
 
572
expresi@'on deje de sufrir cambios.
 
573
@end enumerate
 
574
 
 
575
En general, el apartado (3) no hace una factorizaci@'on @'optima debido a la
 
576
naturaleza combinatoria y compleja de encontrar cu@'al de todas las ordenaciones
 
577
posibles de los pares da lugar a la expresi@'on m@'as compacta.
 
578
 
 
579
La instrucci@'on @code{load (scifac)} carga esta funci@'on y @code{demo (scifac)}
 
580
hace una demostraci@'on sobre su uso.
 
581
@end deffn
 
582
 
 
583
@c Adapted from sqdnst.usg ----------------------
 
584
@c THIS FUNCTION IS INTERESTING BUT THIS TEXT NEEDS WORK. HOW DEEPLY CAN SQRT BE NESTED ??
 
585
@subsection Paquete sqdnst
 
586
 
 
587
@deffn {Funci@'on} sqrtdenest (@var{expr})
 
588
Reduce expresiones en las que se encuentren ra@'{@dotless{i}}ces cuadradas anidadas,
 
589
siempre que sea posible
 
590
 
 
591
Ejemplo:
 
592
 
 
593
@c ===beg===
 
594
@c load (sqdnst)$
 
595
@c sqrt(sqrt(3)/2+1)/sqrt(11*sqrt(2)-12);
 
596
@c sqrtdenest(%);
 
597
@c ===end===
 
598
@example
 
599
(%i1) load (sqdnst)$
 
600
(%i2) sqrt(sqrt(3)/2+1)/sqrt(11*sqrt(2)-12);
 
601
                                    sqrt(3)
 
602
                               sqrt(------- + 1)
 
603
                                       2
 
604
(%o2)                        ---------------------
 
605
                             sqrt(11 sqrt(2) - 12)
 
606
(%i3) sqrtdenest(%);
 
607
                                  sqrt(3)   1
 
608
                                  ------- + -
 
609
                                     2      2
 
610
(%o3)                            -------------
 
611
                                    1/4    3/4
 
612
                                 3 2    - 2
 
613
@end example
 
614
 
 
615
A veces conviene aplicar @code{sqrtdenest} m@'as de una vez, como en el caso
 
616
@code{(19601-13860 sqrt(2))^(7/4)}.
 
617
 
 
618
La sentencia @code{load (sqdnst)} carga esta funci@'on.
 
619
@end deffn
 
620
 
 
621
@c stopex.usg: "expandwrt", "expandwrt_denom", and "expandwrt_factored" already in doc/info/Simplification.texi